Browse Source

Fix warnings when deleting records that do not exist.

Fixes #3037
mark_story 13 years ago
parent
commit
a7c79e5da2

+ 5 - 3
lib/Cake/Model/Behavior/TreeBehavior.php

@@ -124,11 +124,13 @@ class TreeBehavior extends ModelBehavior {
  */
 	public function beforeDelete(Model $Model, $cascade = true) {
 		extract($this->settings[$Model->alias]);
-		$data = current($Model->find('first', array(
+		$data = $Model->find('first', array(
 			'conditions' => array($Model->alias . '.' . $Model->primaryKey => $Model->id),
 			'fields' => array($Model->alias . '.' . $left, $Model->alias . '.' . $right),
-			'recursive' => -1)));
-		$this->_deletedRow = $data;
+			'recursive' => -1));
+		if ($data) {
+			$this->_deletedRow = current($data);
+		}
 		return true;
 	}
 

+ 12 - 0
lib/Cake/Test/Case/Model/Behavior/TreeBehaviorNumberTest.php

@@ -915,6 +915,18 @@ class TreeBehaviorNumberTest extends CakeTestCase {
 	}
 
 /**
+ * Test deleting a record that doesn't exist.
+ *
+ * @return void
+ */
+	public function testDeleteDoesNotExist() {
+		extract($this->settings);
+		$this->Tree = new $modelClass();
+		$this->Tree->initialize(2, 2);
+		$this->Tree->delete(99999);
+	}
+
+/**
  * testRemove method
  *
  * @return void