From a03d1164adbe2a0a5a81958918e0bc2fe731ab2f Mon Sep 17 00:00:00 2001
From: Alexander Kochetov <creocoder@gmail.com>
Date: Fri, 10 May 2013 10:47:08 +0400
Subject: [PATCH] New condition hash format used where its possible

---
 framework/rbac/DbManager.php | 93 +++++++++++++++++++++++++++++++++++++++++----------------------------------------------------
 1 file changed, 41 insertions(+), 52 deletions(-)

diff --git a/framework/rbac/DbManager.php b/framework/rbac/DbManager.php
index 286c0b5..ea6e8ac 100644
--- a/framework/rbac/DbManager.php
+++ b/framework/rbac/DbManager.php
@@ -117,7 +117,7 @@ class DbManager extends Manager
 			$query = new Query;
 			$parents = $query->select(array('parent'))
 				->from($this->itemChildTable)
-				->where('child=:name', array(':name' => $itemName))
+				->where(array('child' => $itemName))
 				->createCommand($this->db)
 				->queryColumn();
 			foreach ($parents as $parent) {
@@ -144,7 +144,7 @@ class DbManager extends Manager
 		}
 		$query = new Query;
 		$rows = $query->from($this->itemTable)
-			->where('name=:name1 OR name=:name2', array(
+			->where(array('or', 'name=:name1', 'name=:name2'), array(
 				':name1' => $itemName,
 				':name2' => $childName
 			))
@@ -183,9 +183,9 @@ class DbManager extends Manager
 	public function removeItemChild($itemName, $childName)
 	{
 		return $this->db->createCommand()
-			->delete($this->itemChildTable, 'parent=:parent AND child=:child', array(
-				':parent' => $itemName,
-				':child' => $childName
+			->delete($this->itemChildTable, array(
+				'parent' => $itemName,
+				'child' => $childName
 			)) > 0;
 	}
 
@@ -200,9 +200,10 @@ class DbManager extends Manager
 		$query = new Query;
 		return $query->select(array('parent'))
 			->from($this->itemChildTable)
-			->where('parent=:parent AND child=:child', array(
-				':parent' => $itemName,
-				':child' => $childName))
+			->where(array(
+				'parent' => $itemName,
+				'child' => $childName
+			))
 			->createCommand($this->db)
 			->queryScalar() !== false;
 	}
@@ -215,21 +216,14 @@ class DbManager extends Manager
 	 */
 	public function getItemChildren($names)
 	{
-		if (is_string($names)) {
-			$condition = 'parent=' . $this->db->quoteValue($names);
-		} elseif (is_array($names) && !empty($names)) {
-			foreach ($names as &$name) {
-				$name = $this->db->quoteValue($name);
-			}
-			$condition = 'parent IN (' . implode(', ', $names) . ')';
-		}
 		$query = new Query;
 		$rows = $query->select(array('name', 'type', 'description', 'bizrule', 'data'))
 			->from(array(
 				$this->itemTable,
 				$this->itemChildTable
 			))
-			->where($condition . ' AND name=child')
+			->where(array('parent'=>$names))
+			->andWhere('name=child')
 			->createCommand($this->db)
 			->queryAll();
 		$children = array();
@@ -276,9 +270,9 @@ class DbManager extends Manager
 	public function revoke($userId, $itemName)
 	{
 		return $this->db->createCommand()
-			->delete($this->assignmentTable, 'itemname=:itemname AND userid=:userid', array(
-				':userid' => $userId,
-				':itemname' => $itemName
+			->delete($this->assignmentTable, array(
+				'userid' => $userId,
+				'itemname' => $itemName
 			)) > 0;
 	}
 
@@ -293,9 +287,9 @@ class DbManager extends Manager
 		$query = new Query;
 		return $query->select(array('itemname'))
 			->from($this->assignmentTable)
-			->where('itemname=:itemname AND userid=:userid', array(
-				':userid' => $userId,
-				':itemname' => $itemName
+			->where(array(
+				'userid' => $userId,
+				'itemname' => $itemName
 			))
 			->createCommand($this->db)
 			->queryScalar() !== false;
@@ -312,9 +306,9 @@ class DbManager extends Manager
 	{
 		$query = new Query;
 		$row = $query->from($this->assignmentTable)
-			->where('itemname=:itemname AND userid=:userid', array(
-				':userid' => $userId,
-				':itemname' => $itemName
+			->where(array(
+				'userid' => $userId,
+				'itemname' => $itemName
 			))
 			->createCommand($this->db)
 			->queryRow();
@@ -338,7 +332,7 @@ class DbManager extends Manager
 	{
 		$query = new Query;
 		$rows = $query->from($this->assignmentTable)
-			->where('userid=:userid', array(':userid' => $userId))
+			->where(array('userid' => $userId))
 			->createCommand($this->db)
 			->queryAll();
 		$assignments = array();
@@ -361,7 +355,7 @@ class DbManager extends Manager
 			->update($this->assignmentTable, array(
 				'bizrule' => $assignment->getBizRule(),
 				'data' => serialize($assignment->getData()),
-			), 'itemname=:itemname AND userid=:userid', array(
+			), array(
 				'userid' => $assignment->getUserId(),
 				'itemname' => $assignment->getItemName()
 			));
@@ -383,7 +377,7 @@ class DbManager extends Manager
 				->createCommand($this->db);
 		} elseif ($userId === null) {
 			$command = $query->from($this->itemTable)
-				->where('type=:type', array(':type' => $type))
+				->where(array('type' => $type))
 				->createCommand($this->db);
 		} elseif ($type === null) {
 			$command = $query->select(array('name', 'type', 'description', 't1.bizrule', 't1.data'))
@@ -391,7 +385,8 @@ class DbManager extends Manager
 					$this->itemTable . ' t1',
 					$this->assignmentTable . ' t2'
 				))
-				->where('name=itemname AND userid=:userid', array(':userid' => $userId))
+				->where(array('userid' => $userId))
+				->andWhere('name=itemname')
 				->createCommand($this->db);
 		} else {
 			$command = $query->select('name', 'type', 'description', 't1.bizrule', 't1.data')
@@ -399,10 +394,11 @@ class DbManager extends Manager
 					$this->itemTable . ' t1',
 					$this->assignmentTable . ' t2'
 				))
-				->where('name=itemname AND type=:type AND userid=:userid', array(
-					':userid' => $userId,
-					':type' => $type
+				->where(array(
+					'userid' => $userId,
+					'type' => $type
 				))
+				->andWhere('name=itemname')
 				->createCommand($this->db);
 		}
 		$items = array();
@@ -452,20 +448,13 @@ class DbManager extends Manager
 	{
 		if ($this->usingSqlite()) {
 			$this->db->createCommand()
-				->delete($this->itemChildTable, 'parent=:name1 OR child=:name2', array(
+				->delete($this->itemChildTable, array('or', 'parent=:name1', 'child=:name2'), array(
 					':name1' => $name,
 					':name2' => $name
 				));
-			$this->db->createCommand()
-				->delete($this->assignmentTable, 'itemname=:name', array(
-					':name' => $name,
-				));
+			$this->db->createCommand()->delete($this->assignmentTable, array('itemname' => $name));
 		}
-
-		return $this->db->createCommand()
-			->delete($this->itemTable, 'name=:name', array(
-				':name' => $name
-			)) > 0;
+		return $this->db->createCommand()->delete($this->itemTable, array('name' => $name)) > 0;
 	}
 
 	/**
@@ -477,7 +466,7 @@ class DbManager extends Manager
 	{
 		$query = new Query;
 		$row = $query->from($this->itemTable)
-			->where('name=:name', array(':name' => $name))
+			->where(array('name' => $name))
 			->createCommand($this->db)
 			->queryRow();
 
@@ -501,20 +490,20 @@ class DbManager extends Manager
 			$this->db->createCommand()
 				->update($this->itemChildTable, array(
 					'parent' => $item->getName(),
-				), 'parent=:whereName', array(
-					':whereName' => $oldName,
+				), array(
+					'parent' => $oldName,
 				));
 			$this->db->createCommand()
 				->update($this->itemChildTable, array(
 					'child' => $item->getName(),
-				), 'child=:whereName', array(
-					':whereName' => $oldName,
+				), array(
+					'child' => $oldName,
 				));
 			$this->db->createCommand()
 				->update($this->assignmentTable, array(
 					'itemname' => $item->getName(),
-				), 'itemname=:whereName', array(
-					':whereName' => $oldName,
+				), array(
+					'itemname' => $oldName,
 				));
 		}
 
@@ -525,8 +514,8 @@ class DbManager extends Manager
 				'description' => $item->getDescription(),
 				'bizrule' => $item->getBizRule(),
 				'data' => serialize($item->getData()),
-			), 'name=:whereName', array(
-				':whereName' => $oldName === null ? $item->getName() : $oldName,
+			), array(
+				'name' => $oldName === null ? $item->getName() : $oldName,
 			));
 	}
 
--
libgit2 0.27.1