|  |  |  | @ -146,10 +146,7 @@ class DbManager extends Manager | 
			
		
	
		
			
				
					|  |  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  |  | 		$query = new Query; | 
			
		
	
		
			
				
					|  |  |  |  | 		$rows = $query->from($this->itemTable) | 
			
		
	
		
			
				
					|  |  |  |  | 			->where(array('or', 'name=:name1', 'name=:name2'), array( | 
			
		
	
		
			
				
					|  |  |  |  | 				':name1' => $itemName, | 
			
		
	
		
			
				
					|  |  |  |  | 				':name2' => $childName | 
			
		
	
		
			
				
					|  |  |  |  | 			)) | 
			
		
	
		
			
				
					|  |  |  |  | 			->where(array('or', 'name=:name1', 'name=:name2'), array(':name1' => $itemName,	':name2' => $childName)) | 
			
		
	
		
			
				
					|  |  |  |  | 			->createCommand($this->db) | 
			
		
	
		
			
				
					|  |  |  |  | 			->queryAll(); | 
			
		
	
		
			
				
					|  |  |  |  | 		if (count($rows) == 2) { | 
			
		
	
	
		
			
				
					|  |  |  | @ -165,10 +162,7 @@ class DbManager extends Manager | 
			
		
	
		
			
				
					|  |  |  |  | 				throw new InvalidCallException("Cannot add '$childName' as a child of '$itemName'. A loop has been detected."); | 
			
		
	
		
			
				
					|  |  |  |  | 			} | 
			
		
	
		
			
				
					|  |  |  |  | 			$this->db->createCommand() | 
			
		
	
		
			
				
					|  |  |  |  | 				->insert($this->itemChildTable, array( | 
			
		
	
		
			
				
					|  |  |  |  | 					'parent' => $itemName, | 
			
		
	
		
			
				
					|  |  |  |  | 					'child' => $childName, | 
			
		
	
		
			
				
					|  |  |  |  | 				)); | 
			
		
	
		
			
				
					|  |  |  |  | 				->insert($this->itemChildTable, array('parent' => $itemName, 'child' => $childName)); | 
			
		
	
		
			
				
					|  |  |  |  | 			return true; | 
			
		
	
		
			
				
					|  |  |  |  | 		} else { | 
			
		
	
		
			
				
					|  |  |  |  | 			throw new Exception("Either '$itemName' or '$childName' does not exist."); | 
			
		
	
	
		
			
				
					|  |  |  | @ -185,10 +179,7 @@ class DbManager extends Manager | 
			
		
	
		
			
				
					|  |  |  |  | 	public function removeItemChild($itemName, $childName) | 
			
		
	
		
			
				
					|  |  |  |  | 	{ | 
			
		
	
		
			
				
					|  |  |  |  | 		return $this->db->createCommand() | 
			
		
	
		
			
				
					|  |  |  |  | 			->delete($this->itemChildTable, array( | 
			
		
	
		
			
				
					|  |  |  |  | 				'parent' => $itemName, | 
			
		
	
		
			
				
					|  |  |  |  | 				'child' => $childName | 
			
		
	
		
			
				
					|  |  |  |  | 			)) > 0; | 
			
		
	
		
			
				
					|  |  |  |  | 			->delete($this->itemChildTable, array('parent' => $itemName, 'child' => $childName)) > 0; | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	/** | 
			
		
	
	
		
			
				
					|  |  |  | @ -202,10 +193,7 @@ class DbManager extends Manager | 
			
		
	
		
			
				
					|  |  |  |  | 		$query = new Query; | 
			
		
	
		
			
				
					|  |  |  |  | 		return $query->select(array('parent')) | 
			
		
	
		
			
				
					|  |  |  |  | 			->from($this->itemChildTable) | 
			
		
	
		
			
				
					|  |  |  |  | 			->where(array( | 
			
		
	
		
			
				
					|  |  |  |  | 				'parent' => $itemName, | 
			
		
	
		
			
				
					|  |  |  |  | 				'child' => $childName | 
			
		
	
		
			
				
					|  |  |  |  | 			)) | 
			
		
	
		
			
				
					|  |  |  |  | 			->where(array('parent' => $itemName, 'child' => $childName)) | 
			
		
	
		
			
				
					|  |  |  |  | 			->createCommand($this->db) | 
			
		
	
		
			
				
					|  |  |  |  | 			->queryScalar() !== false; | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
	
		
			
				
					|  |  |  | @ -220,10 +208,7 @@ class DbManager extends Manager | 
			
		
	
		
			
				
					|  |  |  |  | 	{ | 
			
		
	
		
			
				
					|  |  |  |  | 		$query = new Query; | 
			
		
	
		
			
				
					|  |  |  |  | 		$rows = $query->select(array('name', 'type', 'description', 'bizrule', 'data')) | 
			
		
	
		
			
				
					|  |  |  |  | 			->from(array( | 
			
		
	
		
			
				
					|  |  |  |  | 				$this->itemTable, | 
			
		
	
		
			
				
					|  |  |  |  | 				$this->itemChildTable | 
			
		
	
		
			
				
					|  |  |  |  | 			)) | 
			
		
	
		
			
				
					|  |  |  |  | 			->from(array($this->itemTable, $this->itemChildTable)) | 
			
		
	
		
			
				
					|  |  |  |  | 			->where(array('parent' => $names, 'name' => new Expression('child'))) | 
			
		
	
		
			
				
					|  |  |  |  | 			->createCommand($this->db) | 
			
		
	
		
			
				
					|  |  |  |  | 			->queryAll(); | 
			
		
	
	
		
			
				
					|  |  |  | @ -257,7 +242,7 @@ class DbManager extends Manager | 
			
		
	
		
			
				
					|  |  |  |  | 				'user_id' => $userId, | 
			
		
	
		
			
				
					|  |  |  |  | 				'item_name' => $itemName, | 
			
		
	
		
			
				
					|  |  |  |  | 				'bizrule' => $bizRule, | 
			
		
	
		
			
				
					|  |  |  |  | 				'data' => serialize($data) | 
			
		
	
		
			
				
					|  |  |  |  | 				'data' => serialize($data), | 
			
		
	
		
			
				
					|  |  |  |  | 			)); | 
			
		
	
		
			
				
					|  |  |  |  | 		return new Assignment($this, $userId, $itemName, $bizRule, $data); | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
	
		
			
				
					|  |  |  | @ -271,10 +256,7 @@ class DbManager extends Manager | 
			
		
	
		
			
				
					|  |  |  |  | 	public function revoke($userId, $itemName) | 
			
		
	
		
			
				
					|  |  |  |  | 	{ | 
			
		
	
		
			
				
					|  |  |  |  | 		return $this->db->createCommand() | 
			
		
	
		
			
				
					|  |  |  |  | 			->delete($this->assignmentTable, array( | 
			
		
	
		
			
				
					|  |  |  |  | 				'user_id' => $userId, | 
			
		
	
		
			
				
					|  |  |  |  | 				'item_name' => $itemName | 
			
		
	
		
			
				
					|  |  |  |  | 			)) > 0; | 
			
		
	
		
			
				
					|  |  |  |  | 			->delete($this->assignmentTable, array('user_id' => $userId, 'item_name' => $itemName)) > 0; | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	/** | 
			
		
	
	
		
			
				
					|  |  |  | @ -288,10 +270,7 @@ class DbManager extends Manager | 
			
		
	
		
			
				
					|  |  |  |  | 		$query = new Query; | 
			
		
	
		
			
				
					|  |  |  |  | 		return $query->select(array('item_name')) | 
			
		
	
		
			
				
					|  |  |  |  | 			->from($this->assignmentTable) | 
			
		
	
		
			
				
					|  |  |  |  | 			->where(array( | 
			
		
	
		
			
				
					|  |  |  |  | 				'user_id' => $userId, | 
			
		
	
		
			
				
					|  |  |  |  | 				'item_name' => $itemName | 
			
		
	
		
			
				
					|  |  |  |  | 			)) | 
			
		
	
		
			
				
					|  |  |  |  | 			->where(array('user_id' => $userId,	'item_name' => $itemName)) | 
			
		
	
		
			
				
					|  |  |  |  | 			->createCommand($this->db) | 
			
		
	
		
			
				
					|  |  |  |  | 			->queryScalar() !== false; | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
	
		
			
				
					|  |  |  | @ -307,10 +286,7 @@ class DbManager extends Manager | 
			
		
	
		
			
				
					|  |  |  |  | 	{ | 
			
		
	
		
			
				
					|  |  |  |  | 		$query = new Query; | 
			
		
	
		
			
				
					|  |  |  |  | 		$row = $query->from($this->assignmentTable) | 
			
		
	
		
			
				
					|  |  |  |  | 			->where(array( | 
			
		
	
		
			
				
					|  |  |  |  | 				'user_id' => $userId, | 
			
		
	
		
			
				
					|  |  |  |  | 				'item_name' => $itemName | 
			
		
	
		
			
				
					|  |  |  |  | 			)) | 
			
		
	
		
			
				
					|  |  |  |  | 			->where(array('user_id' => $userId,	'item_name' => $itemName)) | 
			
		
	
		
			
				
					|  |  |  |  | 			->createCommand($this->db) | 
			
		
	
		
			
				
					|  |  |  |  | 			->queryRow(); | 
			
		
	
		
			
				
					|  |  |  |  | 		if ($row !== false) { | 
			
		
	
	
		
			
				
					|  |  |  | @ -358,7 +334,7 @@ class DbManager extends Manager | 
			
		
	
		
			
				
					|  |  |  |  | 				'data' => serialize($assignment->getData()), | 
			
		
	
		
			
				
					|  |  |  |  | 			), array( | 
			
		
	
		
			
				
					|  |  |  |  | 				'user_id' => $assignment->getUserId(), | 
			
		
	
		
			
				
					|  |  |  |  | 				'item_name' => $assignment->getItemName() | 
			
		
	
		
			
				
					|  |  |  |  | 				'item_name' => $assignment->getItemName(), | 
			
		
	
		
			
				
					|  |  |  |  | 			)); | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -382,23 +358,13 @@ class DbManager extends Manager | 
			
		
	
		
			
				
					|  |  |  |  | 				->createCommand($this->db); | 
			
		
	
		
			
				
					|  |  |  |  | 		} elseif ($type === null) { | 
			
		
	
		
			
				
					|  |  |  |  | 			$command = $query->select(array('name', 'type', 'description', 't1.bizrule', 't1.data')) | 
			
		
	
		
			
				
					|  |  |  |  | 				->from(array( | 
			
		
	
		
			
				
					|  |  |  |  | 					$this->itemTable . ' t1', | 
			
		
	
		
			
				
					|  |  |  |  | 					$this->assignmentTable . ' t2' | 
			
		
	
		
			
				
					|  |  |  |  | 				)) | 
			
		
	
		
			
				
					|  |  |  |  | 				->from(array($this->itemTable . ' t1', $this->assignmentTable . ' t2')) | 
			
		
	
		
			
				
					|  |  |  |  | 				->where(array('user_id' => $userId, 'name' => new Expression('item_name'))) | 
			
		
	
		
			
				
					|  |  |  |  | 				->createCommand($this->db); | 
			
		
	
		
			
				
					|  |  |  |  | 		} else { | 
			
		
	
		
			
				
					|  |  |  |  | 			$command = $query->select('name', 'type', 'description', 't1.bizrule', 't1.data') | 
			
		
	
		
			
				
					|  |  |  |  | 				->from(array( | 
			
		
	
		
			
				
					|  |  |  |  | 					$this->itemTable . ' t1', | 
			
		
	
		
			
				
					|  |  |  |  | 					$this->assignmentTable . ' t2' | 
			
		
	
		
			
				
					|  |  |  |  | 				)) | 
			
		
	
		
			
				
					|  |  |  |  | 				->where(array( | 
			
		
	
		
			
				
					|  |  |  |  | 					'user_id' => $userId, | 
			
		
	
		
			
				
					|  |  |  |  | 					'type' => $type, | 
			
		
	
		
			
				
					|  |  |  |  | 					'name' => new Expression('item_name'), | 
			
		
	
		
			
				
					|  |  |  |  | 				)) | 
			
		
	
		
			
				
					|  |  |  |  | 				->from(array($this->itemTable . ' t1', $this->assignmentTable . ' t2')) | 
			
		
	
		
			
				
					|  |  |  |  | 				->where(array('user_id' => $userId, 'type' => $type, 'name' => new Expression('item_name'))) | 
			
		
	
		
			
				
					|  |  |  |  | 				->createCommand($this->db); | 
			
		
	
		
			
				
					|  |  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  |  | 		$items = array(); | 
			
		
	
	
		
			
				
					|  |  |  | @ -434,7 +400,7 @@ class DbManager extends Manager | 
			
		
	
		
			
				
					|  |  |  |  | 				'type' => $type, | 
			
		
	
		
			
				
					|  |  |  |  | 				'description' => $description, | 
			
		
	
		
			
				
					|  |  |  |  | 				'bizrule' => $bizRule, | 
			
		
	
		
			
				
					|  |  |  |  | 				'data' => serialize($data) | 
			
		
	
		
			
				
					|  |  |  |  | 				'data' => serialize($data), | 
			
		
	
		
			
				
					|  |  |  |  | 			)); | 
			
		
	
		
			
				
					|  |  |  |  | 		return new Item($this, $name, $type, $description, $bizRule, $data); | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
	
		
			
				
					|  |  |  | @ -448,13 +414,12 @@ class DbManager extends Manager | 
			
		
	
		
			
				
					|  |  |  |  | 	{ | 
			
		
	
		
			
				
					|  |  |  |  | 		if ($this->usingSqlite()) { | 
			
		
	
		
			
				
					|  |  |  |  | 			$this->db->createCommand() | 
			
		
	
		
			
				
					|  |  |  |  | 				->delete($this->itemChildTable, array('or', 'parent=:name1', 'child=:name2'), array( | 
			
		
	
		
			
				
					|  |  |  |  | 					':name1' => $name, | 
			
		
	
		
			
				
					|  |  |  |  | 					':name2' => $name | 
			
		
	
		
			
				
					|  |  |  |  | 				)); | 
			
		
	
		
			
				
					|  |  |  |  | 			$this->db->createCommand()->delete($this->assignmentTable, array('item_name' => $name)); | 
			
		
	
		
			
				
					|  |  |  |  | 				->delete($this->itemChildTable, array('or', 'parent=:name', 'child=:name'), array(':name' => $name)); | 
			
		
	
		
			
				
					|  |  |  |  | 			$this->db->createCommand() | 
			
		
	
		
			
				
					|  |  |  |  | 				->delete($this->assignmentTable, array('item_name' => $name)); | 
			
		
	
		
			
				
					|  |  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  |  | 		return $this->db->createCommand()->delete($this->itemTable, array('name' => $name)) > 0; | 
			
		
	
		
			
				
					|  |  |  |  | 		return $this->db->createCommand() | 
			
		
	
		
			
				
					|  |  |  |  | 			->delete($this->itemTable, array('name' => $name)) > 0; | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	/** | 
			
		
	
	
		
			
				
					|  |  |  | @ -488,23 +453,11 @@ class DbManager extends Manager | 
			
		
	
		
			
				
					|  |  |  |  | 	{ | 
			
		
	
		
			
				
					|  |  |  |  | 		if ($this->usingSqlite() && $oldName !== null && $item->getName() !== $oldName) { | 
			
		
	
		
			
				
					|  |  |  |  | 			$this->db->createCommand() | 
			
		
	
		
			
				
					|  |  |  |  | 				->update($this->itemChildTable, array( | 
			
		
	
		
			
				
					|  |  |  |  | 					'parent' => $item->getName(), | 
			
		
	
		
			
				
					|  |  |  |  | 				), array( | 
			
		
	
		
			
				
					|  |  |  |  | 					'parent' => $oldName, | 
			
		
	
		
			
				
					|  |  |  |  | 				)); | 
			
		
	
		
			
				
					|  |  |  |  | 				->update($this->itemChildTable, array('parent' => $item->getName()), array('parent' => $oldName)); | 
			
		
	
		
			
				
					|  |  |  |  | 			$this->db->createCommand() | 
			
		
	
		
			
				
					|  |  |  |  | 				->update($this->itemChildTable, array( | 
			
		
	
		
			
				
					|  |  |  |  | 					'child' => $item->getName(), | 
			
		
	
		
			
				
					|  |  |  |  | 				), array( | 
			
		
	
		
			
				
					|  |  |  |  | 					'child' => $oldName, | 
			
		
	
		
			
				
					|  |  |  |  | 				)); | 
			
		
	
		
			
				
					|  |  |  |  | 				->update($this->itemChildTable, array('child' => $item->getName()), array('child' => $oldName)); | 
			
		
	
		
			
				
					|  |  |  |  | 			$this->db->createCommand() | 
			
		
	
		
			
				
					|  |  |  |  | 				->update($this->assignmentTable, array( | 
			
		
	
		
			
				
					|  |  |  |  | 					'item_name' => $item->getName(), | 
			
		
	
		
			
				
					|  |  |  |  | 				), array( | 
			
		
	
		
			
				
					|  |  |  |  | 					'item_name' => $oldName, | 
			
		
	
		
			
				
					|  |  |  |  | 				)); | 
			
		
	
		
			
				
					|  |  |  |  | 				->update($this->assignmentTable, array('item_name' => $item->getName()), array('item_name' => $oldName)); | 
			
		
	
		
			
				
					|  |  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		$this->db->createCommand() | 
			
		
	
	
		
			
				
					|  |  |  | 
 |