Removed overriding of recursive to 0 in Model::_findNeighbors() if 'recusive' option is not specified in find options. Closes #860

This commit is contained in:
ADmad 2011-01-30 04:13:01 +05:30
parent 01801a7777
commit 88d5db76fd
2 changed files with 14 additions and 10 deletions

View file

@ -331,9 +331,9 @@ class Model extends Object {
public $__backAssociation = array(); public $__backAssociation = array();
public $__backInnerAssociation = array(); public $__backInnerAssociation = array();
public $__backOriginalAssociation = array(); public $__backOriginalAssociation = array();
public $__backContainableAssociation = array(); public $__backContainableAssociation = array();
/** /**
@ -1067,7 +1067,7 @@ class Model extends Object {
} }
/** /**
* Check that a method is callable on a model. This will check both the model's own methods, its * Check that a method is callable on a model. This will check both the model's own methods, its
* inherited methods and methods that could be callable through behaviors. * inherited methods and methods that could be callable through behaviors.
* *
* @param string $method The method to be called. * @param string $method The method to be called.
@ -2156,7 +2156,7 @@ class Model extends Object {
if ($query['callbacks'] === true || $query['callbacks'] === 'before') { if ($query['callbacks'] === true || $query['callbacks'] === 'before') {
$return = $this->Behaviors->trigger( $return = $this->Behaviors->trigger(
'beforeFind', 'beforeFind',
array(&$this, $query), array(&$this, $query),
array('break' => true, 'breakOn' => array(false, null), 'modParams' => 1) array('break' => true, 'breakOn' => array(false, null), 'modParams' => 1)
); );
@ -2321,7 +2321,6 @@ class Model extends Object {
*/ */
protected function _findNeighbors($state, $query, $results = array()) { protected function _findNeighbors($state, $query, $results = array()) {
if ($state == 'before') { if ($state == 'before') {
$query = array_merge(array('recursive' => 0), $query);
extract($query); extract($query);
$conditions = (array)$conditions; $conditions = (array)$conditions;
if (isset($field) && isset($value)) { if (isset($field) && isset($value)) {

View file

@ -3504,11 +3504,14 @@ class ModelReadTest extends BaseModelTest {
$expected = array( $expected = array(
'prev' => null, 'prev' => null,
'next' => array( 'next' => array(
'Article' => array('id' => 2) 'Article' => array('id' => 2),
'Comment' => array(),
'Tag' => array()
)); ));
$this->assertEqual($result, $expected); $this->assertEqual($result, $expected);
$TestModel->id = 2; $TestModel->id = 2;
$TestModel->recursive = 0;
$result = $TestModel->find('neighbors', array( $result = $TestModel->find('neighbors', array(
'fields' => array('id') 'fields' => array('id')
)); ));
@ -3525,12 +3528,14 @@ class ModelReadTest extends BaseModelTest {
$this->assertEqual($result, $expected); $this->assertEqual($result, $expected);
$TestModel->id = 3; $TestModel->id = 3;
$TestModel->recursive = 1;
$result = $TestModel->find('neighbors', array('fields' => array('id'))); $result = $TestModel->find('neighbors', array('fields' => array('id')));
$expected = array( $expected = array(
'prev' => array( 'prev' => array(
'Article' => array( 'Article' => array('id' => 2),
'id' => 2 'Comment' => array(),
)), 'Tag' => array()
),
'next' => null 'next' => null
); );
$this->assertEqual($result, $expected); $this->assertEqual($result, $expected);
@ -4793,7 +4798,7 @@ class ModelReadTest extends BaseModelTest {
} }
/** /**
* test that calling unbindModel() with reset == true multiple times * test that calling unbindModel() with reset == true multiple times
* leaves associations in the correct state. * leaves associations in the correct state.
* *
* @return void * @return void