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'));
 }
 /**
  * @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;
 }