private function createTagWithCode($code, $title, $tagParentCode = null, $metatag = false)
 {
     if ($tag = $this->tagRepo->findOneByCod($code)) {
         throw new \Exception("Nothing done - Tag retrieved from DB id: " . $tag->getId() . " cod: " . $tag->getCod());
     }
     $tag = new Tag();
     $tag->setCod($code);
     $tag->setMetatag($metatag);
     $tag->setDisplay(true);
     $tag->setTitle($title, 'es');
     $tag->setTitle($title, 'gl');
     $tag->setTitle($title, 'en');
     if ($tagParentCode) {
         if ($parent = $this->tagRepo->findOneByCod($tagParentCode)) {
             $tag->setParent($parent);
         } elseif ('CHANNELS' === $tagParentCode) {
             $channelTag = $this->createTagWithCode('CHANNELS', 'CHANNELS', 'ROOT', true);
             $tag->setParent($channelTag);
         } elseif ('ROOT' === $tagParentCode) {
             throw new \Exception("Nothing done - There is no tag in the database with code " . $tagParentCode . " to be the parent tag. Please init Pumukit tags");
         }
     }
     $this->dm->persist($tag);
     $this->dm->flush();
     return $tag;
 }
예제 #2
0
 public function testGetterAndSetter()
 {
     $title = 'title';
     $description = 'description';
     $slug = 'slug';
     $cod = 23;
     $metatag = true;
     $created = new \DateTime("now");
     $updated = new \DateTime("now");
     $display = true;
     $youtubeProperty = "w7dD-JJJytM&list=PLmXxqSJJq-yUfrjvKe5c5LX_1x7nGVF6c";
     $properties = array('youtube' => $youtubeProperty);
     $tag = new Tag($title);
     $tag->setTitle($title);
     $tag->setDescription($description);
     $tag->setSlug($slug);
     $tag->setCod($cod);
     $tag->setMetatag($metatag);
     $tag->setCreated($created);
     $tag->setUpdated($updated);
     $tag->setDisplay($display);
     $tag->setProperties($properties);
     $tag_parent = new Tag("parent");
     $tag->setParent($tag_parent);
     $this->assertEquals($title, $tag->getTitle());
     $this->assertEquals($description, $tag->getDescription());
     $this->assertEquals($slug, $tag->getSlug());
     $this->assertEquals($cod, $tag->getCod());
     $this->assertEquals($metatag, $tag->getMetatag());
     $this->assertEquals($created, $tag->getCreated());
     $this->assertEquals($updated, $tag->getUpdated());
     $this->assertEquals($tag_parent, $tag->getParent());
     $this->assertEquals($display, $tag->getDisplay());
     $this->assertEquals($properties, $tag->getProperties());
     $this->assertEquals(null, $tag->getLockTime());
     $this->assertEquals('', $tag->getTitle('fr'));
     $this->assertEquals('', $tag->getDescription('fr'));
     $titleEs = 'título';
     $titleArray = array('en' => $title, 'es' => $titleEs);
     $descriptionEs = 'descripción';
     $descriptionArray = array('en' => $description, 'es' => $descriptionEs);
     $tag->setI18nTitle($titleArray);
     $tag->setI18nDescription($descriptionArray);
     $this->assertEquals($titleArray, $tag->getI18nTitle());
     $this->assertEquals($descriptionArray, $tag->getI18nDescription());
     $this->assertEquals($tag->getTitle(), $tag->__toString());
     $testProperty = 'test property';
     $tag->setProperty('test', $testProperty);
     $this->assertEquals($youtubeProperty, $tag->getProperty('youtube'));
     $this->assertEquals($testProperty, $tag->getProperty('test'));
     $testProperty = null;
     $tag->setProperty('test', $testProperty);
     $this->assertEquals($testProperty, $tag->getProperty('test'));
 }
 /**
  *
  */
 private function createTagFromCsvArray($csv_array, $tag_parent = null)
 {
     if ($tag = $this->tagsRepo->findOneByCod($csv_array[1])) {
         throw new \LengthException("Nothing done - Tag retrieved from DB id: " . $tag->getId() . " cod: " . $tag->getCod());
     }
     $tag = new Tag();
     $tag->setCod($csv_array[1]);
     $tag->setMetatag($csv_array[3]);
     $tag->setDisplay($csv_array[4]);
     if ($tag_parent) {
         $tag->setParent($tag_parent);
     }
     $tag->setTitle($csv_array[5], 'es');
     // NOTE Take care of csv language order!
     if (isset($csv_array[6])) {
         $tag->setTitle($csv_array[6], 'gl');
     }
     if (isset($csv_array[7])) {
         $tag->setTitle($csv_array[7], 'en');
     }
     $this->dm->persist($tag);
     return $tag;
 }
 public function testEmbeddedTag()
 {
     $locale = 'en';
     $title = 'title';
     $description = 'description';
     $slug = 'slug';
     $cod = 23;
     $metatag = true;
     $created = new \DateTime("now");
     $updated = new \DateTime("now");
     $display = true;
     $tag = new Tag($title);
     $tag->setLocale($locale);
     $tag->setTitle($title);
     $tag->setDescription($description);
     $tag->setSlug($slug);
     $tag->setCod($cod);
     $tag->setMetatag($metatag);
     $tag->setCreated($created);
     $tag->setUpdated($updated);
     $tag->setDisplay($display);
     $titleEs = 'título';
     $titleArray = array('en' => $title, 'es' => $titleEs);
     $descriptionEs = 'descripción';
     $descriptionArray = array('en' => $description, 'es' => $descriptionEs);
     $tag->setI18nTitle($titleArray);
     $tag->setI18nDescription($descriptionArray);
     $mm = new MultimediaObject();
     $mm->addTag($tag);
     // TEST GETTERS
     $this->assertEquals($locale, $mm->getTags()[0]->getLocale());
     $this->assertEquals($title, $mm->getTags()[0]->getTitle());
     $this->assertEquals($description, $mm->getTags()[0]->getDescription());
     $this->assertEquals($slug, $mm->getTags()[0]->getSlug());
     $this->assertEquals($cod, $mm->getTags()[0]->getCod());
     $this->assertEquals($metatag, $mm->getTags()[0]->getMetatag());
     $this->assertEquals($created, $mm->getTags()[0]->getCreated());
     $this->assertEquals($updated, $mm->getTags()[0]->getUpdated());
     $this->assertEquals($display, $mm->getTags()[0]->getDisplay());
     $this->assertEquals($tag->getPath(), $mm->getTags()[0]->getPath());
     $this->assertEquals($tag->getLevel(), $mm->getTags()[0]->getLevel());
     $this->assertEquals('', $mm->getTags()[0]->getTitle('fr'));
     $this->assertEquals('', $mm->getTags()[0]->getDescription('fr'));
     $this->assertEquals($titleArray, $mm->getTags()[0]->getI18nTitle());
     $this->assertEquals($descriptionArray, $mm->getTags()[0]->getI18nDescription());
     $this->assertEquals($mm->getTags()[0]->getTitle(), $mm->getTags()[0]->__toString());
     // TEST SETTERS
     $title = 'modified title';
     $description = 'modified description';
     $slug = 'modified slug';
     $cod = 'modcod';
     $metatag = false;
     $created = new \DateTime("now");
     $updated = new \DateTime("now");
     $display = false;
     $mm->getTags()[0]->setTitle($title);
     $mm->getTags()[0]->setDescription($description);
     $mm->getTags()[0]->setSlug($slug);
     $mm->getTags()[0]->setCod($cod);
     $mm->getTags()[0]->setMetatag($metatag);
     $mm->getTags()[0]->setCreated($created);
     $mm->getTags()[0]->setUpdated($updated);
     $mm->getTags()[0]->setDisplay($display);
     $titleEs = 'título modificado';
     $titleArray = array('en' => $title, 'es' => $titleEs);
     $descriptionEs = 'descripción modificada';
     $descriptionArray = array('en' => $description, 'es' => $descriptionEs);
     $mm->getTags()[0]->setI18nTitle($titleArray);
     $mm->getTags()[0]->setI18nDescription($descriptionArray);
     $this->assertEquals($title, $mm->getTags()[0]->getTitle());
     $this->assertEquals($description, $mm->getTags()[0]->getDescription());
     $this->assertEquals($slug, $mm->getTags()[0]->getSlug());
     $this->assertEquals($cod, $mm->getTags()[0]->getCod());
     $this->assertEquals($metatag, $mm->getTags()[0]->getMetatag());
     $this->assertEquals($created, $mm->getTags()[0]->getCreated());
     $this->assertEquals($updated, $mm->getTags()[0]->getUpdated());
     $this->assertEquals($display, $mm->getTags()[0]->getDisplay());
     $this->assertEquals('', $mm->getTags()[0]->getTitle('fr'));
     $this->assertEquals('', $mm->getTags()[0]->getDescription('fr'));
     $this->assertEquals($titleArray, $mm->getTags()[0]->getI18nTitle());
     $this->assertEquals($descriptionArray, $mm->getTags()[0]->getI18nDescription());
     $this->assertEquals($mm->getTags()[0]->getTitle(), $mm->getTags()[0]->__toString());
     $locale = 'es';
     $mm->getTags()[0]->setLocale($locale);
     $this->assertEquals($titleEs, $mm->getTags()[0]->getTitle());
     $this->assertEquals($descriptionEs, $mm->getTags()[0]->getDescription());
 }
 public function syncMmobj($parsedTerena, \MongoDate $lastSyncDate = null)
 {
     if (!isset($lastSyncDate)) {
         $lastSyncDate = new \MongoDate();
     }
     $factory = $this->factoryService;
     $mmobj = $this->mmobjRepo->createQueryBuilder()->field('properties.geant_id')->equals($parsedTerena['identifier'])->getQuery()->getSingleResult();
     $series = $this->seriesRepo->createQueryBuilder()->field('properties.geant_provider')->equals($parsedTerena['provider'])->getQuery()->getSingleResult();
     if (!isset($series)) {
         $series = $factory->createSeries();
         $series->setProperty('geant_provider', $parsedTerena['provider']);
         $series->setTitle($parsedTerena['provider']);
         $this->dm->persist($series);
         $this->dm->flush();
     }
     //We assume the 'provider' property of a feed won't change for the same Geant Feed Resource.
     //If it changes, the mmobj would keep it's original provider.
     if (!isset($mmobj)) {
         $mmobj = $factory->createMultimediaObject($series, false);
         $mmobj->setProperty('geant_id', $parsedTerena['identifier']);
         //Add 'provider' tag
         $providerTag = $this->tagRepo->findOneByCod($parsedTerena['provider']);
         if (!isset($providerTag)) {
             $providerTag = new Tag();
             $providerTag->setParent($this->providerRootTag);
             $providerTag->setCod($parsedTerena['provider']);
             $providerTag->setTitle($parsedTerena['provider']);
             $providerTag->setDisplay(true);
             $providerTag->setMetatag(false);
             $this->dm->persist($providerTag);
         }
         $this->tagService->addTagToMultimediaObject($mmobj, $providerTag->getId(), false);
     } else {
         $feedUpdatedDate = $mmobj->getProperty('feed_updated_date');
         //We will disable this 'improvement' for now. We can consider to add it with an optional parameter on the future.
         /*if (!$feedUpdatedDate || $feedUpdatedDate < $parsedTerena['lastUpdateDate']) {
                         $mmobj->setProperty('feed_updated_date', new \MongoDate($parsedTerena['lastUpdateDate']->getTimestamp()));
                     } else {
                         $mmobj->setProperty('last_sync_date', $lastSyncDate);
                         $series->setProperty('last_sync_date', $lastSyncDate);
                         $mmobj->setStatus(MultimediaObject::STATUS_PUBLISHED);
                         $this->dm->persist($mmobj);
         
                         return 0;
                     }*/
     }
     $mmobj->setProperty('last_sync_date', $lastSyncDate);
     $series->setProperty('last_sync_date', $lastSyncDate);
     //PUBLISH
     $mmobj->setStatus(MultimediaObject::STATUS_PUBLISHED);
     $this->tagService->addTagToMultimediaObject($mmobj, $this->webTVTag->getId(), false);
     //METADATA
     $this->syncMetadata($mmobj, $parsedTerena);
     //TAGS
     $this->syncTags($mmobj, $parsedTerena);
     //PEOPLE
     $this->syncPeople($mmobj, $parsedTerena);
     //TRACK
     $this->syncTrack($mmobj, $parsedTerena);
     //THUMBNAIL
     $this->syncThumbnail($mmobj, $parsedTerena);
     //Errors
     if ($parsedTerena['geantErrors']) {
         $mmobj->setProperty('geant_errors', $parsedTerena['geantErrors']);
     } else {
         $mmobj->setProperty('geant_errors', null);
     }
     //SAVE CHANGES
     $this->dm->persist($mmobj);
     $this->dm->persist($series);
 }