Exemple #1
0
 public function removeFlag($object, $flag, UserInterface $user = null)
 {
     parent::removeFlag($object, $flag, $user);
     /** remove recusivly to the childs */
     foreach ($object->getTopics() as $topic) {
         parent::removeFlag($topic, $flag, $user);
         foreach ($topic->getPosts() as $post) {
             parent::removeFlag($post, $flag, $user);
         }
     }
     // remove flag also from parent
     // but only if the parent has not the same flag for a other child
     $parent = $object->getParent();
     if (is_object($parent)) {
         $subforums = $parent->getChildren();
         $otherFlag = false;
         foreach ($subforums as $subforum) {
             $otherFlag = $this->findOne($flag, $subforum, $user);
             if ($otherFlag) {
                 break;
             }
         }
         if (!$otherFlag) {
             $this->removeFlag($parent, $flag, $user);
         }
     }
 }
Exemple #2
0
 /**
  * @param $object
  * @param $flag
  * @param UserInterface $user
  */
 public function removeFlag($object, $flag, UserInterface $user = null)
 {
     parent::removeFlag($object, $flag, $user);
     // remove from all posts (childs)
     foreach ($object->getPosts() as $subobject) {
         parent::removeFlag($subobject, $flag, $user);
     }
     // remove from parents if the child is the only one with that flag
     $parent = $object->getForum();
     do {
         if (is_object($parent)) {
             $topics = $parent->getTopics();
             $otherFlagFound = false;
             foreach ($topics as $topic) {
                 $otherFlagFound = $this->checkFlag($topic, $flag, $user);
                 if ($otherFlagFound) {
                     break;
                 }
             }
             if (!$otherFlagFound) {
                 parent::removeFlag($parent, $flag, $user);
             }
         } else {
             break;
         }
     } while ($parent = $parent->getParent());
 }