Browse Source

Merge pull request #76 from dereuromark/master-beh

behaviors
Mark 11 years ago
parent
commit
9d9141c7ef

+ 4 - 4
Model/Behavior/CaptchaBehavior.php

@@ -16,7 +16,7 @@ App::uses('Utility', 'Tools.Utility');
  */
 class CaptchaBehavior extends ModelBehavior {
 
-	protected $defaults = array(
+	protected $_defaultConfig = array(
 		'minTime' => CAPTCHA_MIN_TIME,
 		'maxTime' => CAPTCHA_MAX_TIME,
 		'log' => false, // Log errors
@@ -35,14 +35,14 @@ class CaptchaBehavior extends ModelBehavior {
 	 * @return void
 	 */
 	public function setup(Model $Model, $config = array()) {
-		$defaults = array_merge(CaptchaLib::$defaults, $this->defaults);
+		$defaults = $this->_defaultConfig + CaptchaLib::$defaults;
 		$this->Model = $Model;
 
 		// Bootstrap configs
 		$this->settings[$Model->alias] = $defaults;
-		$this->settings[$Model->alias] = array_merge($this->settings[$Model->alias], (array)Configure::read('Captcha'));
+		$this->settings[$Model->alias] = (array)Configure::read('Captcha') + $this->settings[$Model->alias];
 		if (!empty($config)) {
-			$this->settings[$Model->alias] = array_merge($this->settings[$Model->alias], $config);
+			$this->settings[$Model->alias] = $config + $this->settings[$Model->alias];
 		}
 
 		// Local configs in specific action

+ 1 - 1
Model/Behavior/KeyValueBehavior.php

@@ -39,7 +39,7 @@ class KeyValueBehavior extends ModelBehavior {
 	 * @param array $config
 	 */
 	public function setup(Model $Model, $config = array()) {
-		$config = array_merge($this->_defaultConfig, $config);
+		$config += $this->_defaultConfig;
 		$this->settings[$Model->alias] = $config;
 		if (!$this->KeyValue) {
 			$this->KeyValue = ClassRegistry::init('Tools.KeyValue');

+ 1 - 1
Model/Behavior/LogableBehavior.php

@@ -162,7 +162,7 @@ class LogableBehavior extends ModelBehavior {
 			 'limit' => 50,
 		);
 
-		$params = array_merge($defaults, $params);
+		$params += $defaults;
 		$options = array('order' => $params['order'], 'conditions' => $params['conditions'], 'fields' => $params['fields'], 'limit' => $params['limit']);
 		if ($params[$this->settings[$Model->alias]['classField']] === null) {
 			$params[$this->settings[$Model->alias]['classField']] = $Model->alias;

+ 1 - 1
Model/Behavior/MasterPasswordBehavior.php

@@ -47,7 +47,7 @@ class MasterPasswordBehavior extends ModelBehavior {
 		if (!isset($this->settings[$Model->alias])) {
 			$this->settings[$Model->alias] = $this->_defaultConfig;
 		}
-		$this->settings[$Model->alias] = array_merge($this->settings[$Model->alias], $config);
+		$this->settings[$Model->alias] = $config + $this->settings[$Model->alias];
 		// deactivate dynamically
 		if (Configure::read('MasterPassword.password') === false) {
 			$this->settings[$Model->alias]['before'] = '';

+ 5 - 9
Model/Behavior/MultipleDisplayFieldsBehavior.php

@@ -67,6 +67,10 @@ class MultipleDisplayFieldsBehavior extends ModelBehavior {
 		if (isset($config['defaults'])) {
 			$this->settings[$Model->alias]['defaults'] = $config['defaults'];
 		}
+		if (isset($config['displayField'])) {
+			$this->settings[$Model->alias]['displayField'] = $config['displayField'];
+		}
+		//$this->settings[$Model->alias] += $config;
 	}
 
 	/**
@@ -78,9 +82,6 @@ class MultipleDisplayFieldsBehavior extends ModelBehavior {
 	 * @return array Modified results
 	 */
 	public function afterFind(Model $Model, $results, $primary = false) {
-		if (empty($this->settings[$Model->alias]['multiple_display_fields'])) {
-			return $results;
-		}
 		// if displayFields is set, attempt to populate
 		foreach ($results as $key => $result) {
 			$displayFieldValues = array();
@@ -136,10 +137,7 @@ class MultipleDisplayFieldsBehavior extends ModelBehavior {
 	 * @return array Modified queryData
 	 */
 	public function beforeFind(Model $Model, $queryData) {
-		if (isset($queryData['list']) && !isset($this->settings[$Model->alias]['multiple_display_fields'])) {
-			// MOD 2009-01-09 ms (fixes problems with model related index functions - somehow gets triggered even on normal find queries...)
-			$this->settings[$Model->alias]['multiple_display_fields'] = 1;
-
+		if (isset($queryData['list'])) {
 			// substr is used to get rid of "{n}" fields' prefix...
 			array_push($queryData['fields'], substr($queryData['list']['keyPath'], 4));
 			foreach ($this->settings[$Model->alias]['fields'] as $mName => $mFields) {
@@ -147,8 +145,6 @@ class MultipleDisplayFieldsBehavior extends ModelBehavior {
 					array_push($queryData['fields'], $mName . '.' . $mField);
 				}
 			}
-		} else {
-			$this->settings[$Model->alias]['multiple_display_fields'] = 0;
 		}
 		return $queryData;
 	}

+ 1 - 2
Model/Behavior/NumberFormatBehavior.php

@@ -83,9 +83,8 @@ class NumberFormatBehavior extends ModelBehavior {
 				$loc['decimals'] => $this->settings[$Model->alias]['transform'][','],
 			);
 		}
-		//debug($this->settings[$Model->alias]);
 
-		$this->settings[$Model->alias] = array_merge($this->settings[$Model->alias], $config);
+		$this->settings[$Model->alias] = $config + $this->settings[$Model->alias];
 
 		$numberFields = array();
 		$schema = $Model->schema();

+ 2 - 2
Model/Behavior/PasswordableBehavior.php

@@ -236,9 +236,9 @@ class PasswordableBehavior extends ModelBehavior {
 	public function setup(Model $Model, $config = array()) {
 		$defaults = $this->_defaultConfig;
 		if ($configureDefaults = Configure::read('Passwordable')) {
-			$defaults = array_merge($defaults, $configureDefaults);
+			$defaults = $configureDefaults + $defaults;
 		}
-		$this->settings[$Model->alias] = array_merge($defaults, $config);
+		$this->settings[$Model->alias] = $config + $defaults;
 
 		// BC comp
 		if ($this->settings[$Model->alias]['allowEmpty']) {

+ 1 - 1
Model/Behavior/ResetBehavior.php

@@ -102,7 +102,7 @@ class ResetBehavior extends ModelBehavior {
 			}
 		}
 
-		$params = array_merge($defaults, $params);
+		$params += $defaults;
 		$count = $Model->find('count', compact('conditions'));
 		$max = ini_get('max_execution_time');
 		if ($max) {

+ 1 - 1
Model/Behavior/SluggedBehavior.php

@@ -399,7 +399,7 @@ class SluggedBehavior extends ModelBehavior {
 			'recursive' => $recursive,
 			'overwrite' => true,
 		);
-		$params = array_merge($defaults, $params);
+		$params += $defaults;
 		$count = $Model->find('count', compact('conditions'));
 		$max = ini_get('max_execution_time');
 		if ($max) {

+ 1 - 2
Model/Behavior/SortableBehavior.php

@@ -37,8 +37,7 @@ class SortableBehavior extends ModelBehavior {
 		if (!isset($this->settings[$Model->alias])) {
 			$this->settings[$Model->alias] = $this->_defaultConfig;
 		}
-		$this->settings[$Model->alias] = array_merge(
-		$this->settings[$Model->alias], (array)$config);
+		$this->settings[$Model->alias] = $config + $this->settings[$Model->alias];
 	}
 
 	/**

+ 1 - 1
Model/Behavior/TypographicBehavior.php

@@ -84,7 +84,7 @@ class TypographicBehavior extends ModelBehavior {
 		if (!isset($this->settings[$Model->alias])) {
 			$this->settings[$Model->alias] = $this->_defaultConfig;
 		}
-		$this->settings[$Model->alias] = array_merge($this->settings[$Model->alias], $config);
+		$this->settings[$Model->alias] = $config + $this->settings[$Model->alias];
 
 		if (empty($this->settings[$Model->alias]['fields'])) {
 			$schema = $Model->schema();

+ 18 - 3
Test/Case/Model/Behavior/MultipleDisplayFieldsBehaviorTest.php

@@ -20,11 +20,21 @@ class MultipleDisplayFieldsBehaviorTest extends MyCakeTestCase {
 		$this->Comment->displayField = 'comment';
 	}
 
+	/**
+	 * MultipleDisplayFieldsBehaviorTest::testObject()
+	 *
+	 * @return void
+	 */
 	public function testObject() {
 		$this->assertTrue(is_object($this->MultipleDisplayFieldsBehavior));
 		$this->assertInstanceOf('MultipleDisplayFieldsBehavior', $this->MultipleDisplayFieldsBehavior);
 	}
 
+	/**
+	 * MultipleDisplayFieldsBehaviorTest::testSimple()
+	 *
+	 * @return void
+	 */
 	public function testSimple() {
 		$this->Comment->Behaviors->load('Tools.MultipleDisplayFields');
 		$res = $this->Comment->find('first');
@@ -56,18 +66,23 @@ class MultipleDisplayFieldsBehaviorTest extends MyCakeTestCase {
 		$this->assertEquals('First Comment for First Article (Y)', $res[1]);
 	}
 
+	/**
+	 * MultipleDisplayFieldsBehaviorTest::testAdvanced()
+	 *
+	 * @return void
+	 */
 	public function testAdvanced() {
 		$config = array(
 			'fields' => array(
 				$this->Comment->alias . '.comment', $this->Comment->User->alias . '.user', $this->Comment->alias . '.published'
 			),
-			'displayField' => array('display_field'),
+			'displayField' => 'display_field',
 			'pattern' => '%s by %s (%s)',
 		);
 		$this->Comment->Behaviors->load('Tools.MultipleDisplayFields', $config);
-		$res = $this->Comment->find('list', array('contain' => array('User')));
+		$res = $this->Comment->find('all', array('order' => array(), 'contain' => array('User')));
 		$this->debug($res);
-		$this->assertEquals('First Comment for First Article by Y (nate)', $res[1]);
+		$this->assertEquals('First Comment for First Article by Y (nate)', $res[0]['Comment']['display_field']);
 	}
 
 }