ソースを参照

DRY containsBit() && containsNotBit()

ber clausen 12 年 前
コミット
15351967b6
1 ファイル変更12 行追加6 行削除
  1. 12 6
      Model/Behavior/BitmaskedBehavior.php

+ 12 - 6
Model/Behavior/BitmaskedBehavior.php

@@ -233,11 +233,7 @@ class BitmaskedBehavior extends ModelBehavior {
 	 * @return array sqlSnippet
 	 */
 	public function containsBit(Model $Model, $bits) {
-		$bits = (array)$bits;
-		$bitmask = $this->encodeBitmask($Model, $bits);
-
-		$field = $this->settings[$Model->alias]['field'];
-		return array('(' . $Model->alias . '.' . $field . ' & ? = ?)' => array($bitmask, $bitmask));
+		return $this->_containsBit($Model, $bits);
 	}
 
 	/**
@@ -245,11 +241,21 @@ class BitmaskedBehavior extends ModelBehavior {
 	 * @return array sqlSnippet
 	 */
 	public function containsNotBit(Model $Model, $bits) {
+		return $this->_containsBit($Model, $bits, false);
+	}
+
+	/**
+	 * @param mixed bits (int, array)
+	 * @param boolean contain
+	 * @return array sqlSnippet
+	 */
+	protected function _containsBit(Model $Model, $bits, $contain = true) {
 		$bits = (array)$bits;
 		$bitmask = $this->encodeBitmask($Model, $bits);
 
 		$field = $this->settings[$Model->alias]['field'];
-		return array('(' . $Model->alias . '.' . $field . ' & ? != ?)' => array($bitmask, $bitmask));
+		$contain = $contain ? ' & ? = ?' : ' & ? != ?';
+		return array('(' . $Model->alias . '.' . $field . $contain . ')' => array($bitmask, $bitmask));
 	}
 
 }