Browse Source

Refactor counter cache key retrieval into single method

ndm2 11 years ago
parent
commit
384bc31783
1 changed files with 7 additions and 23 deletions
  1. 7 23
      Model/Behavior/SoftDeleteBehavior.php

+ 7 - 23
Model/Behavior/SoftDeleteBehavior.php

@@ -392,39 +392,23 @@ class SoftDeleteBehavior extends ModelBehavior {
 	protected function _getCounterCacheKeys(Model $model, $id) {
 	protected function _getCounterCacheKeys(Model $model, $id) {
 		$keys = array();
 		$keys = array();
 		if (!empty($model->belongsTo)) {
 		if (!empty($model->belongsTo)) {
-			foreach ($model->belongsTo as $assoc) {
-				if (empty($assoc['counterCache'])) {
-					continue;
+			$fields = array();
+			foreach ($model->belongsTo as $alias => $assoc) {
+				if (!empty($assoc['counterCache']) && isset($assoc['foreignKey']) && is_string($assoc['foreignKey'])) {
+					$fields[$alias] = $assoc['foreignKey'];
 				}
 				}
+			}
 
 
+			if (!empty($fields)) {
 				$keys = $model->find('first', array(
 				$keys = $model->find('first', array(
-					'fields' => $this->_collectForeignKeys($model),
+					'fields' => $fields,
 					'conditions' => array($model->alias . '.' . $model->primaryKey => $id),
 					'conditions' => array($model->alias . '.' . $model->primaryKey => $id),
 					'recursive' => -1,
 					'recursive' => -1,
 					'callbacks' => false
 					'callbacks' => false
 				));
 				));
-				break;
 			}
 			}
 		}
 		}
 		return $keys;
 		return $keys;
 	}
 	}
 
 
-	/**
-	 * Collects foreign keys from `belongsTo` associations.
-	 *
-	 * @param Model $model
-	 * @return array
-	 */
-	protected function _collectForeignKeys(Model $model) {
-		$result = array();
-
-		foreach ($model->belongsTo as $assoc => $data) {
-			if (isset($data['foreignKey']) && is_string($data['foreignKey'])) {
-				$result[$assoc] = $data['foreignKey'];
-			}
-		}
-
-		return $result;
-	}
-
 }
 }