public function getAllTags($principalId, $objectId = null)
 {
     // All tags from principal
     if ($objectId === null) {
         $data = array(TagManager::KEY_PRINCIPALID => $principalId);
         $sqlQuery = 'SELECT ' . TagManager::KEY_TAGID . ', ' . TagManager::KEY_LABEL . ', ' . TagManager::KEY_COLOR . ' FROM ' . self::TAGS_TABLE_NAME . ' WHERE ' . TagManager::KEY_PRINCIPALID . ' = :' . TagManager::KEY_PRINCIPALID;
     } else {
         $data = array(TagManager::KEY_PRINCIPALID => $principalId, TagManager::KEY_TAGGABLEID => $objectId);
         $sqlQuery = 'SELECT ' . self::TAGS_TABLE_NAME . '.' . TagManager::KEY_TAGID . ', ' . TagManager::KEY_LABEL . ', ' . TagManager::KEY_COLOR . ' FROM ' . self::TAGS_TABLE_NAME . ', ' . self::TAGOBJECTASSIGNATIONS_TABLE_NAME . ' WHERE ' . TagManager::KEY_PRINCIPALID . ' = :' . TagManager::KEY_PRINCIPALID . ' AND ' . TagManager::KEY_TAGGABLEID . ' = :' . TagManager::KEY_TAGGABLEID . ' AND ' . self::TAGS_TABLE_NAME . '.' . TagManager::KEY_TAGID . ' = ' . self::TAGOBJECTASSIGNATIONS_TABLE_NAME . '.' . TagManager::KEY_TAGID;
     }
     try {
         $dbHandler = $this->getConnection();
         $stmt = $dbHandler->prepare($sqlQuery);
         $stmt->execute($data);
         $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
         $return = array();
         foreach ($results as $result) {
             $tag = new BasicTag($result[TagManager::KEY_LABEL], $result[TagManager::KEY_COLOR]);
             $tag->setId($result[TagManager::KEY_TAGID]);
             $return[] = $tag;
         }
         return $return;
     } catch (PDOException $e) {
         $this->destroyConnection();
         throw new EyeTagException('An error occured while retrieving tags from the database.', 0, $e);
     }
     $this->destroyConnection();
 }
 /**
  * Unassign tags from a file.
  *
  * @param array $params (
  * 		path => string,
  * 		tagIds => array(
  *			tagId1, tagId2, ...
  *		)
  * )
  */
 public function removeAllTags($params)
 {
     if ($params === null) {
         throw new EyeInvalidArgumentException('Missing $params');
     }
     if (!isset($params['path']) || !is_string($params['path'])) {
         throw new EyeInvalidArgumentException('Missing or invalid $params[\'path\']');
     }
     if (!isset($params['tagIds']) || !is_array($params['tagIds'])) {
         throw new EyeInvalidArgumentException('Missing or invalid $params[\'tagIds\']');
     }
     $file = FSI::getFile($params['path']);
     $TM = TagManager::getInstance();
     $tags = array();
     foreach ($params['tagIds'] as $tagId) {
         $tag = new BasicTag();
         $tag->setId($tagId);
         $TM->getTag($tag);
         $tags[] = $tag;
     }
     $TM->removeAllTags($file, $tags);
 }