public function testNumberMultimediaObjects() { $privateBroadcast = $this->createBroadcast(Broadcast::BROADCAST_TYPE_PRI); $publicBroadcast = $this->createBroadcast(Broadcast::BROADCAST_TYPE_PUB); $corporativeBroadcast = $this->createBroadcast(Broadcast::BROADCAST_TYPE_COR); $mm1 = new MultimediaObject(); $mm2 = new MultimediaObject(); $mm3 = new MultimediaObject(); $mm4 = new MultimediaObject(); $mm5 = new MultimediaObject(); $mm1->setStatus(MultimediaObject::STATUS_PROTOTYPE); $mm2->setStatus(MultimediaObject::STATUS_BLOQ); $mm3->setStatus(MultimediaObject::STATUS_PUBLISHED); $mm4->setStatus(MultimediaObject::STATUS_PUBLISHED); $mm5->setStatus(MultimediaObject::STATUS_HIDE); $mm1->setBroadcast($privateBroadcast); $mm2->setBroadcast($privateBroadcast); $mm3->setBroadcast($publicBroadcast); $mm4->setBroadcast($corporativeBroadcast); $mm5->setBroadcast($privateBroadcast); $this->assertEquals(2, $privateBroadcast->getNumberMultimediaObjects()); $this->assertEquals(1, $publicBroadcast->getNumberMultimediaObjects()); $this->assertEquals(1, $corporativeBroadcast->getNumberMultimediaObjects()); $publicBroadcast->setNumberMultimediaObjects(3); $this->assertEquals(3, $publicBroadcast->getNumberMultimediaObjects()); $privateBroadcast->setNumberMultimediaObjects(3); $privateBroadcast->decreaseNumberMultimediaObjects(); $this->assertEquals(2, $privateBroadcast->getNumberMultimediaObjects()); }
/** * Utilizando la libreria ffmpeg_php se genera un Pic que se asocia con el objeto * multimedia al que pertenece el archivo. * * @param MultimediaObject $multimediaObject * @param Track $track * @param integer $frame numero del frame donde se realiza la captura. * @return PIC o null si mal */ private function createPic(MultimediaObject $multimediaObject, Track $track, $frame = 25) { $currentDir = 'series/' . $multimediaObject->getSeries()->getId() . '/video/' . $multimediaObject->getId(); $absCurrentDir = $this->targetPath . "/" . $currentDir; $picFileName = date('ymdGis') . '.jpg'; $aux = null; @mkdir($absCurrentDir, 0777, true); $aspectTrack = $this->getAspect($track); if (0 !== $aspectTrack) { $newHeight = intval(1.0 * $this->width / $aspectTrack); if ($newHeight <= $this->height) { $newWidth = $this->width; } else { $newHeight = $this->height; $newWidth = intval(1.0 * $this->height * $aspectTrack); } } else { $newHeight = $this->height; $newWidth = $this->width; } $vars = array("{{ss}}" => intval($frame / 25), "{{size}}" => $newWidth . "x" . $newHeight, "{{input}}" => $track->getPath(), "{{output}}" => $absCurrentDir . '/' . $picFileName); $commandLine = str_replace(array_keys($vars), array_values($vars), $this->command); $process = new Process($commandLine); $process->setTimeout(60); $process->run(); if (!$process->isSuccessful()) { throw new \RuntimeException($process->getErrorOutput()); } //log $process->getOutput() if (file_exists($absCurrentDir . '/' . $picFileName)) { $multimediaObject = $this->mmsPicService->addPicUrl($multimediaObject, $this->targetUrl . '/' . $currentDir . '/' . $picFileName); } return true; }
/** * Remove Tag from Multimedia Object * * @param MultimediaObject $mmobj * @param string $tagId * @param boolean $executeFlush * @return Array[Tag] removed tags */ public function removeTagFromMultimediaObject(MultimediaObject $mmobj, $tagId, $executeFlush = true) { $removeTags = array(); $tag = $this->repository->find($tagId); if (!$tag) { throw new \Exception("Tag with id " . $tagId . " not found."); } do { $children = $tag->getChildren(); if (!$mmobj->containsAnyTag($children->toArray())) { $removeTags[] = $tag; $removed = $mmobj->removeTag($tag); if ($removed && !$mmobj->isPrototype()) { $tag->decreaseNumberMultimediaObjects(); } $this->dm->persist($tag); } else { break; } } while ($tag = $tag->getParent()); $this->dm->persist($mmobj); if ($executeFlush) { $this->dm->flush(); } return $removeTags; }
private function logView($when, MultimediaObject $multimediaObject, Track $track = null) { $log = new ViewsLog('/', '8.8.8.8', 'test', '', $multimediaObject->getId(), null); $log->setDate($when); $this->dm->persist($log); $this->dm->flush(); return $log; }
/** * Down Link in Multimedia Object * * @param MultimediaObject $multimediaObject * @param string $linkId * @return MultimediaObject */ public function downLinkInMultimediaObject(MultimediaObject $multimediaObject, $linkId) { $multimediaObject->downLinkById($linkId); $this->dm->persist($multimediaObject); $this->dm->flush(); // NOTE Workaround to fix embedded documents modifications $this->dm->clear(get_class($multimediaObject)); return $this->dm->find('PumukitSchemaBundle:MultimediaObject', $multimediaObject->getId()); }
/** * Get default url pic * * Get the default url pic * for a given resource checking if * it is Series, MultimediaObject of type * video or audio * * @param Series|MultimediaObject $object Object to get the url (using $object->getPics()) * @param boolean $absolute Returns absolute path * @param boolean $hd Returns pic in HD * * @return string */ public function getDefaultUrlPicForObject($object, $absolute = false, $hd = true) { if ($object instanceof Series) { return $this->getDefaultSeriesUrlPic($absolute); } elseif ($object instanceof MultimediaObject) { return $this->getDefaultMultimediaObjectUrlPic($absolute, $object->isOnlyAudio(), $hd); } return $this->getDefaultMultimediaObjectUrlPic($absolute, false, $hd); }
/** * Remove Pic from Multimedia Object */ public function removePicFromMultimediaObject(MultimediaObject $multimediaObject, $picId) { $pic = $multimediaObject->getPicById($picId); $picPath = $pic->getPath(); $multimediaObject->removePicById($picId); $this->dm->persist($multimediaObject); $this->dm->flush(); if ($this->forceDeleteOnDisk && $picPath) { $this->deleteFileOnDisk($picPath, $multimediaObject); } return $multimediaObject; }
private function checkMultimediaObject(MultimediaObject $multimediaObject) { if (!isset($this->profiles[$this->targetProfile])) { $this->logger->warning(sprintf('CMAR JobGeneratorListener profile "%s" doesn\'t exist', $this->targetProfile)); return; } $sbs = $multimediaObject->getTrackWithTag('sbs'); $publicTracks = $multimediaObject->getTracksWithTag('profile:' . $this->targetProfile); if ($sbs && !$publicTracks) { $this->logger->info(sprintf("CMAR JobGeneratorListener creates new job (%s) for SbS in multimedia object %s", $this->targetProfile, $multimediaObject->getId())); $jobs[] = $this->jobService->addUniqueJob($sbs->getPath(), $this->targetProfile, 2, $multimediaObject, $sbs->getLanguage()); } }
/** * TODO add doc */ private function generateJobs(MultimediaObject $multimediaObject, $pubChannelCod) { $jobs = array(); foreach ($this->profiles as $targetProfile => $profile) { $targets = $this->getTargets($profile['target']); if (in_array($pubChannelCod, $targets['standard']) && $multimediaObject->isOnlyAudio() == $profile['audio']) { if (!$multimediaObject->isOnlyAudio() && 0 != $profile['resolution_ver']) { $profileAspectRatio = $profile['resolution_hor'] / $profile['resolution_ver']; $multimediaObjectAspectRatio = $multimediaObject->getTrackWithTag("master")->getAspectRatio(); if (1.5 > $profileAspectRatio !== 1.5 > $multimediaObjectAspectRatio) { $this->logger->info(sprintf("JobGeneratorListener can't create a new job (%s) for multimedia object %s using standard target, " . "because a video profile aspect ratio(%f) is diferent to video aspect ratio (%f)", $targetProfile, $multimediaObject->getId(), $profileAspectRatio, $multimediaObjectAspectRatio)); continue; } } $master = $multimediaObject->getTrackWithTag("master"); $this->logger->info(sprintf("JobGeneratorListener creates new job (%s) for multimedia object %s using standard target", $targetProfile, $multimediaObject->getId())); $jobs[] = $this->jobService->addUniqueJob($master->getPath(), $targetProfile, 2, $multimediaObject, $master->getLanguage()); } if (in_array($pubChannelCod, $targets['force'])) { if ($multimediaObject->isOnlyAudio() && !$profile['audio']) { $this->logger->info(sprintf("JobGeneratorListener can't create a new job (%s) for multimedia object %s using forced target, because a video profile can't be created from an audio", $targetProfile, $multimediaObject->getId())); continue; } $master = $multimediaObject->getTrackWithTag("master"); $this->logger->info(sprintf("JobGeneratorListener creates new job (%s) for multimedia object %s using forced target", $targetProfile, $multimediaObject->getId())); $jobs[] = $this->jobService->addUniqueJob($master->getPath(), $targetProfile, 2, $multimediaObject, $master->getLanguage()); } } return $jobs; }
public function preExecute(MultimediaObject $multimediaObject, Request $request) { if ($multimediaObject->getProperty('iframeable') === true) { $this->dispatchViewEvent($multimediaObject); return $this->forward('PumukitGeantWebTVBundle:Iframe:index', array('request' => $request, 'multimediaObject' => $multimediaObject)); } else { if ($multimediaObject->getProperty('redirect') === true) { $this->dispatchViewEvent($multimediaObject); $redirectUrl = $multimediaObject->getProperty('redirect_url'); if (!$redirectUrl) { throw $this->createNotFoundException(); } return $this->redirect($redirectUrl); } } }
/** * @ParamConverter("multimediaObject", class="PumukitSchemaBundle:MultimediaObject", options={"id" = "mmId"}) * @Template */ public function updateAction(MultimediaObject $multimediaObject, Request $request) { $translator = $this->get('translator'); $locale = $request->getLocale(); $link = $multimediaObject->getLinkById($this->getRequest()->get('id')); $form = $this->createForm(new LinkType($translator, $locale), $link); if (($request->isMethod('PUT') || $request->isMethod('POST')) && $form->bind($request)->isValid()) { try { $multimediaObject = $this->get('pumukitschema.link')->updateLinkInMultimediaObject($multimediaObject, $link); } catch (\Exception $e) { $this->get('session')->getFlashBag()->add('error', $e->getMessage()); } return $this->render('PumukitNewAdminBundle:Link:list.html.twig', array('links' => $multimediaObject->getLinks(), 'mmId' => $multimediaObject->getId())); } return array('link' => $link, 'form' => $form->createView(), 'mm' => $multimediaObject); }
private function generatePic(MultimediaObject $multimediaObject, Track $track) { if ($multimediaObject->getPics()->isEmpty() && $this->autoExtractPic) { try { if ($multimediaObject->isOnlyAudio() || $track->isOnlyAudio()) { // TODO: Change return values when adding final default audio image //return $this->addDefaultAudioPic($multimediaObject, $track); return false; } else { return $this->generatePicFromVideo($multimediaObject, $track); } } catch (\Exception $e) { $this->logger->error(__CLASS__ . '[' . __FUNCTION__ . '] ' . 'There was an error in extracting a pic for MultimediaObject "' . $multimediaObject->getId() . '" from Track "' . $track->getId() . '". Error message: ' . $e->getMessage()); return false; } } return false; }
public function genSbs(MultimediaObject $multimediaObject, $opencastUrls = array()) { if (!$this->sbsProfile) { return false; } $tracks = $multimediaObject->getTracks(); if (!$tracks) { return false; } $track = $tracks[0]; $path = $this->getPath($track->getUrl()); $language = $multimediaObject->getProperty('opencastlanguage') ? strtolower($multimediaObject->getProperty('opencastlanguage')) : 'en'; $vars = $this->defaultVars; if ($opencastUrls) { $vars += array('ocurls' => $opencastUrls); } return $this->jobService->addJob($path, $this->sbsProfile, 2, $multimediaObject, $language, array(), $vars); }
private function createMultimediaObjectAssignedToSeries($title, Series $series) { $rank = 1; $status = MultimediaObject::STATUS_PUBLISHED; $record_date = new \DateTime(); $public_date = new \DateTime(); $subtitle = 'Subtitle'; $description = "Description"; $duration = 0; $mm = new MultimediaObject(); $mm->setStatus($status); $mm->setRecordDate($record_date); $mm->setPublicDate($public_date); $mm->setTitle($title); $mm->setSubtitle($subtitle); $mm->setDescription($description); $mm->setDuration($duration); $mm->setSeries($series); $this->dm->persist($mm); $this->dm->persist($series); $this->dm->flush(); return $mm; }
public function testAddJob() { $profiles = $this->getDemoProfiles(); $pathFile = $this->resourcesDir . 'test.txt'; $profile = 'MASTER_COPY'; $priority = 2; $language = 'es'; $description = array('en' => 'test', 'es' => 'prueba'); $series = new Series(); $multimediaObject = new MultimediaObject(); $multimediaObject->setSeries($series); $this->dm->persist($series); $this->dm->persist($multimediaObject); $this->dm->flush(); $this->jobService->addJob($pathFile, $profile, $priority, $multimediaObject, $language, $description); $this->assertEquals(1, count($this->repo->findAll())); $pathFile2 = $this->resourcesDir . 'test2.txt'; $profile2 = 'MASTER_VIDEO_H264'; $priority2 = 3; $language2 = 'en'; $description2 = array('en' => 'test2', 'es' => 'prueba2'); $this->jobService->addJob($pathFile2, $profile2, $priority2, $multimediaObject, $language2, $description2); $this->assertEquals(2, count($this->repo->findAll())); }
public function testBroadcast(MultimediaObject $multimediaObject, Request $request) { if (($broadcast = $multimediaObject->getBroadcast()) && Broadcast::BROADCAST_TYPE_PUB !== $broadcast->getBroadcastTypeId() && (!($broadcastName = $request->headers->get('PHP_AUTH_USER', false)) || $request->headers->get('PHP_AUTH_PW') !== $broadcast->getPasswd() || $broadcastName !== $broadcast->getName())) { $seriesUrl = $this->generateUrl('pumukit_webtv_series_index', array('id' => $multimediaObject->getSeries()->getId()), true); $redReq = new RedirectResponse($seriesUrl, 302); return new Response($redReq->getContent(), 401, array('WWW-Authenticate' => 'Basic realm="Resource not public."')); } if ($broadcast && Broadcast::BROADCAST_TYPE_PRI === $broadcast->getBroadcastTypeId()) { return new Response($this->render("PumukitWebTVBundle:Index:403forbidden.html.twig", array()), 403); } return true; }
public function testCountInSeries() { $series1 = new Series(); $series2 = new Series(); $this->dm->persist($series1); $this->dm->persist($series2); $this->dm->flush(); $mm11 = new MultimediaObject(); $mm12 = new MultimediaObject(); $mm13 = new MultimediaObject(); $mm21 = new MultimediaObject(); $mm22 = new MultimediaObject(); $mm23 = new MultimediaObject(); $mm24 = new MultimediaObject(); $mm11->setSeries($series1); $mm12->setSeries($series1); $mm13->setSeries($series1); $mm21->setSeries($series2); $mm22->setSeries($series2); $mm23->setSeries($series2); $mm24->setSeries($series2); $this->dm->persist($mm11); $this->dm->persist($mm12); $this->dm->persist($mm13); $this->dm->persist($mm21); $this->dm->persist($mm22); $this->dm->persist($mm23); $this->dm->persist($mm24); $this->dm->flush(); $this->assertEquals(3, $this->repo->countInSeries($series1)); $this->assertEquals(4, $this->repo->countInSeries($series2)); }
/** * @Template("PumukitNewAdminBundle:Material:list.html.twig") */ public function listAction(MultimediaObject $multimediaObject) { return array('mmId' => $multimediaObject->getId(), 'materials' => $multimediaObject->getMaterials()); }
public function syncThumbnail(MultimediaObject $mmobj, $parsedTerena) { $url = $parsedTerena['thumbnail']; $pics = $mmobj->getPics(); if (0 === count($pics)) { $mmobj = $this->mmsPicService->addPicUrl($mmobj, $url, false); } else { foreach ($pics as $pic) { break; } //Woraround to get the first element. $pic->setUrl($url); $this->dm->persist($pic); } }
/** * Delete relation of embedded person with role in multimedia object * * @param Person $person * @param Role $role * @param MultimediaObject $multimediaObject * @return boolean TRUE if this multimedia_object contained the specified person_in_multimedia_object, FALSE otherwise. */ public function deleteRelation(Person $person, Role $role, MultimediaObject $multimediaObject) { $flag = $multimediaObject->removePersonWithRole($person, $role); $role->decreaseNumberPeopleInMultimediaObject(); $this->dm->persist($multimediaObject); $this->dm->persist($role); $this->dm->flush(); return $multimediaObject; }
/** * Update relation * * @Template("PumukitNewAdminBundle:Person:updaterelation.html.twig") * @ParamConverter("multimediaObject", class="PumukitSchemaBundle:MultimediaObject", options={"id" = "mmId"}) * @ParamConverter("role", class="PumukitSchemaBundle:Role", options={"id" = "roleId"}) */ public function updateRelationAction(MultimediaObject $multimediaObject, Role $role, Request $request) { $personService = $this->get('pumukitschema.person'); $person = $personService->findPersonById($request->get('id')); $translator = $this->get('translator'); $locale = $request->getLocale(); $form = $this->createForm(new PersonType($translator, $locale), $person); if ($request->isMethod('PUT') || $request->isMethod('POST')) { if ($form->bind($request)->isValid()) { try { $person = $personService->updatePerson($person); } catch (\Exception $e) { $this->get('session')->getFlashBag()->add('error', $e->getMessage()); } $template = $multimediaObject->isPrototype() ? '_template' : ''; return $this->render('PumukitNewAdminBundle:Person:listrelation.html.twig', array('people' => $multimediaObject->getPeopleByRole($role, true), 'role' => $role, 'mm' => $multimediaObject, 'template' => $template)); } else { $errors = $this->get('validator')->validate($person); $textStatus = ''; foreach ($errors as $error) { $textStatus .= $error->getPropertyPath() . ' value ' . $error->getInvalidValue() . ': ' . $error->getMessage() . '. '; } return new Response($textStatus, 409); } } $template = $multimediaObject->isPrototype() ? '_template' : ''; return array('person' => $person, 'role' => $role, 'mm' => $multimediaObject, 'template' => $template, 'form' => $form->createView()); }
private function createNewMultimediaObjectWithTrack() { $track = new Track(); $track->addTag('profile:master'); $track->setPath('path/to/track.mp4'); $multimediaObject = new MultimediaObject(); $multimediaObject->setTitle('MultimediaObject test'); $multimediaObject->addTrack($track); $this->dm->persist($multimediaObject); $this->dm->flush(); return $multimediaObject; }
public function testGenerateJobsForAudio() { $track = new Track(); $track->addTag("master"); $track->setPath("path"); $track->setOnlyAudio(true); $mmobj = new MultimediaObject(); $mmobj->addTrack($track); $jobs = $this->invokeMethod($this->jobGeneratorListener, 'generateJobs', array($mmobj, 'TAGA')); $this->assertEquals(array('audio'), $jobs); $jobs = $this->invokeMethod($this->jobGeneratorListener, 'generateJobs', array($mmobj, 'TAGC')); $this->assertEquals(array('audio', 'audio2'), $jobs); $jobs = $this->invokeMethod($this->jobGeneratorListener, 'generateJobs', array($mmobj, 'TAGB')); $this->assertEquals(array('audio2'), $jobs); //generate a video2 from an audio has no sense. $jobs = $this->invokeMethod($this->jobGeneratorListener, 'generateJobs', array($mmobj, 'TAGP')); $this->assertEquals(array(), $jobs); //generate a video from an audio has no sense. $jobs = $this->invokeMethod($this->jobGeneratorListener, 'generateJobs', array($mmobj, 'TAGFP')); $this->assertEquals(array(), $jobs); //generate a video from an audio has no sense. }
/** * @Template("PumukitWebTVBundle:MultimediaObject:iframeplayer.html.twig") */ public function indexAction(MultimediaObject $multimediaObject, Request $request) { $iframeUrl = $multimediaObject->getProperty('iframe_url'); $this->updateBreadcrumbs($multimediaObject); return array('multimediaObject' => $multimediaObject, 'iframe_url' => $iframeUrl); }
public function testDurationInMinutesAndSeconds() { $duration = 120; $duration_in_minutes_and_seconds1 = array('minutes' => 2, 'seconds' => 0); $duration_in_minutes_and_seconds2 = array('minutes' => 5, 'seconds' => 30); $mm = new MultimediaObject(); $mm->setDuration($duration); $this->assertEquals($duration_in_minutes_and_seconds1, $mm->getDurationInMinutesAndSeconds()); $mm->setDurationInMinutesAndSeconds($duration_in_minutes_and_seconds2); $this->assertEquals($duration_in_minutes_and_seconds2, $mm->getDurationInMinutesAndSeconds()); }
/** * @Route("/listautocomplete/{mmId}/{roleId}", name="pumukit_ldap_person_listautocomplete") * @ParamConverter("multimediaObject", class="PumukitSchemaBundle:MultimediaObject", options={"id" = "mmId"}) * @ParamConverter("role", class="PumukitSchemaBundle:Role", options={"id" = "roleId"}) * @Template() */ public function listautocompleteAction(MultimediaObject $multimediaObject, Role $role, Request $request) { $template = $multimediaObject->isPrototype() ? '_template' : ''; return array('mm' => $multimediaObject, 'role' => $role, 'template' => $template); }
public function createTrack(MultimediaObject $multimediaObject, $pathEnd, $profileName, $language = null, $description = array()) { $profile = $this->profileService->getProfile($profileName); $track = new Track(); $track->addTag('profile:' . $profileName); if ($profile['master']) { $track->addTag('master'); } if ($profile['display']) { $track->addTag('display'); } foreach (array_filter(preg_split('/[,\\s]+/', $profile['tags'])) as $tag) { $track->addTag(trim($tag)); } if (!empty($description)) { $track->setI18nDescription($description); } $track->setLanguage($language); $track->setPath($pathEnd); if (isset($profile['streamserver']['url_out'])) { $track->setUrl(str_replace(realpath($profile['streamserver']['dir_out']), $profile['streamserver']['url_out'], $pathEnd)); } $this->inspectionService->autocompleteTrack($track); $track->setOnlyAudio($track->getWidth() == 0); $track->setHide(!$profile['display']); $multimediaObject->setDuration($track->getDuration()); $multimediaObject->addTrack($track); $this->dm->persist($multimediaObject); $this->dm->flush(); return $track; }
/** * Render iframe */ private function renderIframe(MultimediaObject $multimediaObject, Request $request) { if ($multimediaObject->getProperty('opencast')) { /* $this->incNumView($multimediaObject); */ /* $this->dispatch($multimediaObject); */ $userAgent = $this->getRequest()->headers->get('user-agent'); $mobileDetectorService = $this->get('mobile_detect.mobile_detector'); $mobileDevice = $mobileDetectorService->isMobile($userAgent) || $mobileDetectorService->isTablet($userAgent); $isOldBrowser = $this->getIsOldBrowser($userAgent); $track = $multimediaObject->getTrackWithTag('sbs'); return $this->render("PumukitMoodleBundle:Moodle:opencastiframe.html.twig", array("multimediaObject" => $multimediaObject, "track" => $track, "is_old_browser" => $isOldBrowser, "mobile_device" => $mobileDevice)); } else { $track = $request->query->has('track_id') ? $multimediaObject->getTrackById($request->query->get('track_id')) : $multimediaObject->getFilteredTrackWithTags(array('display')); } if (!$track) { throw $this->createNotFoundException(); } //$this->incNumView($multimediaObject, $track); //$this->dispatch($multimediaObject, $track); return $this->render("PumukitMoodleBundle:Moodle:iframe.html.twig", array('autostart' => $request->query->get('autostart', 'false'), 'intro' => false, 'multimediaObject' => $multimediaObject, 'track' => $track)); }
/** * Find similar multimedia objects to a given one * with same tags, from different series, * broadcast public, status normal, * maximum 20 and random * * @param MultimediaObject $multimediaObject * @param array $tags * @return ArrayCollection */ public function findRelatedMultimediaObjects(MultimediaObject $multimediaObject) { $qb = $this->createQueryBuilder()->field('_id')->notEqual($multimediaObject->getId())->field('series')->notEqual($multimediaObject->getSeries()->getId())->field('status')->equals(MultimediaObject::STATUS_PUBLISHED); // Broadcast public $broadcastRepo = $this->dm->getRepository('PumukitSchemaBundle:Broadcast'); $broadcast = $broadcastRepo->findPublicBroadcast(); $qb->field('broadcast')->references($broadcast); // Includes PUCHWEBTV code $tagRepo = $this->dm->getRepository('PumukitSchemaBundle:Tag'); $unescoTag = $tagRepo->findOneByCod('UNESCO'); $codes = array(); foreach ($multimediaObject->getTags() as $tag) { if ($unescoTag) { if ($tag->isDescendantOf($unescoTag)) { $codes[] = $tag->getCod(); } } } $qb->field('tags.cod')->in($codes); // Limit 20 and random order $qb->limit(20)->sort('rank', mt_rand(0, 1) ? 1 : -1); $aux = $qb->getQuery()->execute(); return $aux; }
/** * @Route("/mm/{id}", methods="GET", name="pumukit_encoder_mm") */ public function multimediaObjectAction(MultimediaObject $multimediaObject, Request $request) { return $this->redirect($this->generateUrl('pumukitnewadmin_mms_index', array('id' => $multimediaObject->getSeries()->getId(), 'mmid' => $multimediaObject->getId()))); }