/** * @param sfGuardUser $user * @param integer $element_id * @param string $name * @param string $type */ public static function removeTag($user, $element_id, $name, $type) { if ($type == 'decision') { $tagBridge = Doctrine_Core::getTable('TagDecision')->createQuery('td')->leftJoin('td.Tag t')->where('td.decision_id = ?', $element_id)->andWhere('t.name = ?', $name)->andWhere('t.user_id = ?', $user->id)->fetchOne(); } else { if ($type == 'release') { $tagBridge = Doctrine_Core::getTable('TagRelease')->createQuery('td')->leftJoin('td.Tag t')->where('td.release_id = ?', $element_id)->andWhere('t.name = ?', $name)->andWhere('t.user_id = ?', $user->id)->fetchOne(); } else { $tagBridge = Doctrine_Core::getTable('TagAlternative')->createQuery('ta')->leftJoin('ta.Tag t')->where('ta.alternative_id = ?', $element_id)->andWhere('t.name = ?', $name)->andWhere('t.user_id = ?', $user->id)->fetchOne(); } } if ($tagBridge) { $tagBridge->delete(); $tagDecision = TagDecisionTable::getInstance()->findOneByTagId($tagBridge->tag_id); if (!$tagDecision) { $tagAlternative = TagAlternativeTable::getInstance()->findOneByTagId($tagBridge->tag_id); if (!$tagAlternative) { TagTable::getInstance()->find($tagBridge->tag_id)->delete(); } } } return; }