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')); }
/** * @Route("/category/{category}", defaults={"category" = null}) * @Template("PumukitWebTVBundle:Search:index.html.twig") */ public function multimediaObjectsAction($category, $useBlockedTagAsGeneral = false, Request $request) { if (!array_key_exists($category, $this->categories)) { throw $this->createNotFoundException(sprintf('Category \'%s\' does not exist', $category)); } $title = $this->categories[$category]['title']; $this->get('pumukit_web_tv.breadcrumbs')->addList($title, 'pumukit_geant_webtv_channels_multimediaobjects', array('category' => $category)); // --- Get Tag Parent for Tag Fields --- $parentTag = $this->getParentTag(); // --- END Get Tag Parent for Tag Fields --- // --- Get Variables --- $searchFound = $request->query->get('search'); $tagsFound = $request->query->get('tags'); $typeFound = $request->query->get('type'); $durationFound = $request->query->get('duration'); $startFound = $request->query->get('start'); $endFound = $request->query->get('end'); $yearFound = $request->query->get('year'); $languageFound = $request->query->get('language'); // --- END Get Variables -- // --- Create QueryBuilder --- $mmobjRepo = $this->get('doctrine_mongodb')->getRepository('PumukitSchemaBundle:MultimediaObject'); $queryBuilder = $mmobjRepo->createStandardQueryBuilder(); $queryBuilder->field('tags.cod')->in($this->categories[$category]['map']); $queryBuilder = $this->searchQueryBuilder($queryBuilder, $searchFound); $queryBuilder = $this->typeQueryBuilder($queryBuilder, $typeFound); $queryBuilder = $this->durationQueryBuilder($queryBuilder, $durationFound); $queryBuilder = $this->dateQueryBuilder($queryBuilder, $startFound, $endFound, $yearFound); $queryBuilder = $this->languageQueryBuilder($queryBuilder, $languageFound); $queryBuilder = $this->tagsQueryBuilder($queryBuilder, $tagsFound); // --- END Create QueryBuilder --- // --- Execute QueryBuilder and get paged results --- $pagerfanta = $this->createPager($queryBuilder, $request->query->get('page', 1)); // --- Query to get existing languages --- $searchLanguages = $this->get('doctrine_mongodb')->getRepository('PumukitSchemaBundle:MultimediaObject')->createStandardQueryBuilder()->distinct('tracks.language')->getQuery()->execute(); // -- Init Number Cols for showing results --- $numberCols = 2; if ($this->container->hasParameter('columns_objs_search')) { $numberCols = $this->container->getParameter('columns_objs_search'); } $tag = new Tag(); $tag->setCod($this->categories[$category]['map'][0]); $tag->setTitle($title); /* Added search years for Geant search.*/ // --- Query to get oldest date --- $firstMmobj = $this->get('doctrine_mongodb')->getRepository('PumukitSchemaBundle:MultimediaObject')->createStandardQueryBuilder()->sort('record_date', 'asc')->limit(1)->getQuery()->getSingleResult(); $minRecordDate = $firstMmobj->getRecordDate()->format('m/d/Y'); $maxRecordDate = date('m/d/Y'); // --- Query to get years for the 'Year' select form. --- $searchYears = $this->getYears(); // --- RETURN --- return array('type' => 'multimediaObject', 'objects' => $pagerfanta, 'parent_tag' => null, 'parent_tag_optional' => $parentTag, 'tags_found' => $tagsFound, 'number_cols' => $numberCols, 'languages' => $searchLanguages, 'blocked_tag' => $tag, 'search_years' => $searchYears); }
public function testGetLast() { $series1 = $this->factoryService->createSeries(); $series2 = $this->factoryService->createSeries(); $this->dm->persist($series1); $this->dm->persist($series2); $this->dm->flush(); $mm11 = $this->factoryService->createMultimediaObject($series1); $mm12 = $this->factoryService->createMultimediaObject($series1); $mm21 = $this->factoryService->createMultimediaObject($series2); $mm22 = $this->factoryService->createMultimediaObject($series2); $this->dm->persist($mm11); $this->dm->persist($mm12); $this->dm->persist($mm21); $this->dm->persist($mm22); $this->dm->flush(); $tag = new Tag(); $tag->setCod('PUDENEW'); $tag->setTitle('PUDENEW'); $this->dm->persist($tag); $this->dm->flush(); $this->tagService->addTagToMultimediaObject($mm11, $tag->getId()); $this->assertEquals(array(), $this->announceService->getLast()); }
/** * */ 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); }
private function createTagWithTree($cod, $withROOT = true) { if ($withROOT) { $rootTag = $this->tagRepo->findOneByCod('ROOT'); if (null == $rootTag) { $rootTag = new Tag(); $rootTag->setCod('ROOT'); $this->dm->persist($rootTag); } } else { $rootTag = $this->tagRepo->findOneByCod('grandparent'); if (null == $rootTag) { $rootTag = new Tag(); $rootTag->setCod('grandparent'); $this->dm->persist($rootTag); } } $locale = 'en'; $parentTag = $this->tagRepo->findOneByCod('parent'); if (null == $parentTag) { $parentTag = new Tag(); $parentTag->setLocale($locale); $parentTag->setCod('parent'); $parentTag->setTitle('Parent'); $parentTag->setParent($rootTag); $this->dm->persist($parentTag); } $tag = new Tag(); $tag->setLocale($locale); $tag->setCod($cod); $tag->setTitle(ucfirst($cod)); $tag->setParent($parentTag); $this->dm->persist($tag); $broTag = $this->tagRepo->findOneByCod('brother'); if (null == $broTag) { $broTag = new Tag(); $broTag->setLocale($locale); $broTag->setCod('brother'); $broTag->setTitle('Brother'); $broTag->setParent($parentTag); $this->dm->persist($broTag); } $this->dm->flush(); return $tag; }