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; }
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); }