Ejemplo n.º 1
0
 protected function makeTagRec($data)
 {
     $tag = new Tag();
     $tag->setTagName($data['tag_name']);
     $tag->setVisible($data['visible']);
     $tag->setLocked($data['locked']);
     foreach ($data["tag_translation"] as $source) {
         $trans = new Translation();
         $trans->setLocale($source['translation']);
         $trans->setName(Translation::$availableLocales[$source['translation']]);
         $tagSource = new TagTranslation($tag, $trans);
         $tagSource->setName($source["title"]);
         $tagSource->setDescription($source["description"]);
         $tag->getTranslatedTags()->add($tagSource);
     }
     foreach ($data['children'] as $child) {
         $tmp = $this->makeTagRec($child);
         $tag->addChild($tmp);
     }
     return $tag;
 }
Ejemplo n.º 2
0
 /**
  * Find a tag according to the given path or create it.
  *
  * @param string $tagPath
  *
  * @return RZ\Roadiz\Core\Entities\Tag
  */
 public function findOrCreateByPath($tagPath)
 {
     $tagPath = trim($tagPath);
     $tags = explode('/', $tagPath);
     $tags = array_filter($tags);
     $tagName = $tags[count($tags) - 1];
     $parentName = null;
     $parentTag = null;
     if (count($tags) > 1) {
         $parentName = $tags[count($tags) - 2];
         $parentTag = $this->findOneByTagName($parentName);
         if (null === $parentTag) {
             $ttagParent = $this->_em->getRepository('RZ\\Roadiz\\Core\\Entities\\TagTranslation')->findOneByName($parentName);
             if (null !== $ttagParent) {
                 $parentTag = $ttagParent->getTag();
             }
         }
     }
     $tag = $this->findOneByTagName($tagName);
     if (null === $tag) {
         $ttag = $this->_em->getRepository('RZ\\Roadiz\\Core\\Entities\\TagTranslation')->findOneByName($tagName);
         if (null !== $ttag) {
             $tag = $ttag->getTag();
         }
     }
     if (null === $tag) {
         /*
          * Creation of a new tag
          * before linking it to the node
          */
         $trans = $this->_em->getRepository('RZ\\Roadiz\\Core\\Entities\\Translation')->findDefault();
         $tag = new Tag();
         $tag->setTagName($tagName);
         $translatedTag = new TagTranslation($tag, $trans);
         $translatedTag->setName($tagName);
         $tag->getTranslatedTags()->add($translatedTag);
         if (null !== $parentTag) {
             $tag->setParent($parentTag);
         }
         $this->_em->persist($translatedTag);
         $this->_em->persist($tag);
         $this->_em->flush();
     }
     return $tag;
 }