From a03d1164adbe2a0a5a81958918e0bc2fe731ab2f Mon Sep 17 00:00:00 2001 From: Alexander Kochetov 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, )); }