/** * Set a pic from an url into the event */ public function addPicFile(Event $event, UploadedFile $picFile) { if (UPLOAD_ERR_OK != $picFile->getError()) { throw new \Exception($picFile->getErrorMessage()); } if (!is_file($picFile->getPathname())) { throw new FileNotFoundException($picFile->getPathname()); } $path = $picFile->move($this->targetPath . "/" . $event->getId(), $picFile->getClientOriginalName()); $pic = new Pic(); $pic->setUrl(str_replace($this->targetPath, $this->targetUrl, $path)); $pic->setPath($path); $event->setPic($pic); $this->dm->persist($event); $this->dm->flush(); return $event; }
public function testGetRecommendedPics() { $pic1 = new Pic(); $url1 = 'http://domain.com/pic1.png'; $pic1->setUrl($url1); $pic2 = new Pic(); $url2 = 'http://domain.com/pic2.png'; $pic2->setUrl($url2); $pic3 = new Pic(); $url3 = 'http://domain.com/pic3.png'; $pic3->setUrl($url3); $pic4 = new Pic(); $pic4->setUrl($url3); $pic5 = new Pic(); $url5 = 'http://domain.com/pic5.png'; $pic5->setUrl($url5); $this->dm->persist($pic1); $this->dm->persist($pic2); $this->dm->persist($pic3); $this->dm->persist($pic4); $this->dm->persist($pic5); $this->dm->flush(); $broadcast = $this->createBroadcast(Broadcast::BROADCAST_TYPE_PRI); $series1 = $this->factoryService->createSeries(); $series2 = $this->factoryService->createSeries(); $series1 = $this->dm->find('PumukitSchemaBundle:Series', $series1->getId()); $series2 = $this->dm->find('PumukitSchemaBundle:Series', $series2->getId()); $mm11 = $this->factoryService->createMultimediaObject($series1); $mm12 = $this->factoryService->createMultimediaObject($series1); $mm21 = $this->factoryService->createMultimediaObject($series2); $mm11 = $this->mmsPicService->addPicUrl($mm11, $pic1); $mm11 = $this->mmsPicService->addPicUrl($mm11, $pic2); $mm11 = $this->mmsPicService->addPicUrl($mm11, $pic4); $mm12 = $this->mmsPicService->addPicUrl($mm12, $pic3); $mm21 = $this->mmsPicService->addPicUrl($mm21, $pic5); $this->dm->persist($mm11); $this->dm->persist($mm12); $this->dm->persist($mm21); $this->dm->flush(); $this->assertEquals(4, count($this->mmsPicService->getRecommendedPics($series1))); }
public function testSetterAndGetter() { $live = new Live(); $name = 'event name'; $place = 'event place'; $date = new \DateTime(); $duration = '60'; $display = 0; $create_serial = 0; $locale = 'en'; $schedule = array('date' => $date, 'duration' => $duration); $pic = new Pic(); $imagePath = '/path/to/image.jpg'; $pic->setPath($imagePath); $event = new Event(); $event->setLive($live); $event->setName($name); $event->setPlace($place); $event->setDate($date); $event->setDuration($duration); $event->setDisplay($display); $event->setCreateSerial($create_serial); $event->setPic($pic); $event->setLocale($locale); $event->setSchedule($schedule); $this->assertEquals($live, $event->getLive()); $this->assertEquals($name, $event->getName()); $this->assertEquals($place, $event->getPlace()); $this->assertEquals($date, $event->getDate()); $this->assertEquals($duration, $event->getDuration()); $this->assertEquals($display, $event->getDisplay()); $this->assertEquals($create_serial, $event->getCreateSerial()); $this->assertEquals($locale, $event->getLocale()); $this->assertEquals($pic, $event->getPic()); $this->assertEquals($schedule, $event->getSchedule()); }
/** * Set a pic from an url into the series */ public function addPicFile(Series $series, UploadedFile $picFile, $isBanner = false, $bannerTargetUrl = "") { if (UPLOAD_ERR_OK != $picFile->getError()) { throw new \Exception($picFile->getErrorMessage()); } if (!is_file($picFile->getPathname())) { throw new FileNotFoundException($picFile->getPathname()); } $path = $picFile->move($this->targetPath . "/" . $series->getId(), $picFile->getClientOriginalName()); $pic = new Pic(); $pic->setUrl(str_replace($this->targetPath, $this->targetUrl, $path)); $pic->setPath($path); if ($isBanner) { $pic->setHide(true); $pic->addTag('banner'); $series = $this->addBanner($series, $pic->getUrl(), $bannerTargetUrl); } // TODO: add pic the latest if it is banner $series->addPic($pic); $this->dm->persist($series); $this->dm->flush(); return $series; }
public function testPicsInSeries() { $broadcast = $this->createBroadcast(Broadcast::BROADCAST_TYPE_PRI); $series = $this->createSeries('Series'); $pic1 = new Pic(); $pic1->setUrl('http://domain.com/pic1.png'); $pic2 = new Pic(); $pic2->setUrl('http://domain.com/pic2.png'); $pic3 = new Pic(); $pic3->setUrl('http://domain.com/pic3.png'); $series->addPic($pic1); $series->addPic($pic2); $series->addPic($pic3); $this->dm->persist($series); $this->dm->flush(); $this->assertEquals(3, count($this->repo->find($series->getId())->getPics())); $this->assertEquals($pic2, $this->repo->find($series->getId())->getPicById($pic2->getId())); $arrayPics = array($pic1, $pic2, $pic3); $this->assertEquals($arrayPics, $this->repo->find($series->getId())->getPics()->toArray()); $series->upPicById($pic2->getId()); $this->dm->persist($series); $this->dm->flush(); $arrayPics = array($pic2, $pic1, $pic3); $this->assertEquals($arrayPics, $this->repo->find($series->getId())->getPics()->toArray()); $series->downPicById($pic1->getId()); $this->dm->persist($series); $this->dm->flush(); $arrayPics = array($pic2, $pic3, $pic1); $this->assertEquals($arrayPics, $this->repo->find($series->getId())->getPics()->toArray()); $this->assertTrue($series->containsPic($pic3)); $series->removePicById($pic3->getId()); $this->assertFalse($series->containsPic($pic3)); }
public function testTagCollection() { $pic = new Pic(); $this->assertFalse($pic->containsTag('t')); $pic->addTag('t'); $this->assertTrue($pic->containsTag('t')); $pic->removeTag('t'); $this->assertFalse($pic->containsTag('t')); //Repeat Tag $this->assertFalse($pic->containsTag('t')); $pic->addTag('t'); $pic->addTag('t'); $this->assertTrue($pic->containsTag('t')); $pic->removeTag('t'); $this->assertFalse($pic->containsTag('t')); $this->assertFalse($pic->removeTag('t')); //containsAllTag and containsAnyTag $pic->addTag('t1'); $pic->addTag('t2'); $pic->addTag('t3'); $this->assertTrue($pic->containsAnyTag(array('t0', 't2'))); $this->assertTrue($pic->containsAnyTag(array('t2', 't3'))); $this->assertFalse($pic->containsAnyTag(array('t0', 't4'))); $this->assertTrue($pic->containsAllTags(array('t1', 't2'))); $this->assertTrue($pic->containsAllTags(array('t1'))); $this->assertFalse($pic->containsAllTags(array('t0', 't2'))); $this->assertFalse($pic->containsAllTags(array('t0', 't1', 't2', 't3'))); }
public function testFindDistinctPics() { $pic1 = new Pic(); $url1 = 'http://domain.com/pic1.png'; $pic1->setUrl($url1); $pic2 = new Pic(); $url2 = 'http://domain.com/pic2.png'; $pic2->setUrl($url2); $pic3 = new Pic(); $url3 = 'http://domain.com/pic3.png'; $pic3->setUrl($url3); $pic4 = new Pic(); $pic4->setUrl($url3); $pic5 = new Pic(); $url5 = 'http://domain.com/pic5.png'; $pic5->setUrl($url5); $this->dm->persist($pic1); $this->dm->persist($pic2); $this->dm->persist($pic3); $this->dm->persist($pic4); $this->dm->persist($pic5); $this->dm->flush(); $broadcast = $this->createBroadcast(Broadcast::BROADCAST_TYPE_PRI); $series1 = $this->createSeries('Series 1'); $series2 = $this->createSeries('Series 2'); $series1 = $this->dm->find('PumukitSchemaBundle:Series', $series1->getId()); $series2 = $this->dm->find('PumukitSchemaBundle:Series', $series2->getId()); $mm11 = $this->factoryService->createMultimediaObject($series1); $mm12 = $this->factoryService->createMultimediaObject($series1); $mm21 = $this->factoryService->createMultimediaObject($series2); $mm11->setTitle('mm11'); $mm11 = $this->mmsPicService->addPicUrl($mm11, $pic1); $mm11 = $this->mmsPicService->addPicUrl($mm11, $pic2); $mm11 = $this->mmsPicService->addPicUrl($mm11, $pic4); $mm12->setTitle('mm12'); $mm12 = $this->mmsPicService->addPicUrl($mm12, $pic3); $mm21->setTitle('mm21'); $mm21 = $this->mmsPicService->addPicUrl($mm21, $pic5); $this->dm->persist($mm11); $this->dm->persist($mm12); $this->dm->persist($mm21); $this->dm->flush(); $this->assertEquals(3, count($mm11->getPics())); $this->assertEquals(3, count($this->repo->find($mm11->getId())->getPics())); $this->assertEquals(1, count($mm12->getPics())); $this->assertEquals(1, count($this->repo->find($mm12->getId())->getPics())); $this->assertEquals(1, count($mm21->getPics())); $this->assertEquals(1, count($this->repo->find($mm21->getId())->getPics())); $this->assertEquals(3, count($this->repo->findDistinctUrlPicsInSeries($series1))); $this->assertEquals(4, count($this->repo->findDistinctUrlPics())); // TODO Check sort by public date #6104 $mm11->setPublicDate(new \DateTime('2015-01-03 15:05:16')); $mm12->setPublicDate(new \DateTime('2015-01-03 15:05:20')); $mm21->setPublicDate(new \DateTime('2015-01-03 15:05:25')); $this->dm->persist($mm11); $this->dm->persist($mm12); $this->dm->persist($mm21); $this->dm->flush(); $arrayPics = array($pic1->getUrl(), $pic2->getUrl(), $pic3->getUrl(), $pic5->getUrl()); //$this->assertEquals($arrayPics, $this->repo->findDistinctUrlPics()->toArray()); $mm11->setPublicDate(new \DateTime('2015-01-13 15:05:16')); $mm12->setPublicDate(new \DateTime('2015-01-23 15:05:20')); $mm21->setPublicDate(new \DateTime('2015-01-03 15:05:25')); $this->dm->persist($mm11); $this->dm->persist($mm12); $this->dm->persist($mm21); $this->dm->flush(); $arrayPics = array($pic5->getUrl(), $pic1->getUrl(), $pic3->getUrl(), $pic3->getUrl()); //$this->assertEquals($arrayPics, $this->repo->findDistinctUrlPics()->toArray()); }
public function testGetFirstUrlPic() { // SERIES SECTION $series = $this->factoryService->createSeries(); $absolute = false; $this->assertEquals($this->defaultSeriesPic, $this->picService->getFirstUrlPic($series, $absolute)); $absolute = true; $this->assertEquals($this->localhost . $this->defaultSeriesPic, $this->picService->getFirstUrlPic($series, $absolute)); $seriesUrl1 = '/uploads/series1.jpg'; $seriesPic1 = new Pic(); $seriesPic1->setUrl($seriesUrl1); $series->addPic($seriesPic1); $this->dm->persist($series); $this->dm->flush(); $this->assertEquals($seriesUrl1, $this->picService->getFirstUrlPic($series)); $seriesUrl2 = '/uploads/series2.jpg'; $seriesPic2 = new Pic(); $seriesPic2->setUrl($seriesUrl2); $series->addPic($seriesPic2); $this->dm->persist($series); $series->upPicById($seriesPic2->getId()); $this->dm->persist($series); $this->dm->flush(); $this->assertEquals($seriesUrl2, $this->picService->getFirstUrlPic($series)); // MULTIMEDIA OBJECT SECTION // Workaround for detached Series document $this->dm->clear(get_class($series)); $series = $this->dm->find('PumukitSchemaBundle:Series', $series->getId()); $mm = $this->factoryService->createMultimediaObject($series); $mm->setSeries($series); $this->dm->persist($mm); $this->dm->flush(); $track = new Track(); $track->setOnlyAudio(false); $mm->addTrack($track); $this->dm->persist($mm); $this->dm->flush(); $absolute = false; $this->assertEquals($this->defaultVideoPic, $this->picService->getFirstUrlPic($mm, $absolute)); $absolute = true; $this->assertEquals($this->localhost . $this->defaultVideoPic, $this->picService->getFirstUrlPic($mm, $absolute)); $track->setOnlyAudio(true); $this->dm->persist($mm); $this->dm->flush(); $absolute = false; $hd = true; $this->assertEquals($this->defaultAudioHDPic, $this->picService->getFirstUrlPic($mm, $absolute, $hd)); $hd = false; $this->assertEquals($this->defaultAudioSDPic, $this->picService->getFirstUrlPic($mm, $absolute, $hd)); $absolute = true; $hd = true; $this->assertEquals($this->localhost . $this->defaultAudioHDPic, $this->picService->getFirstUrlPic($mm, $absolute, $hd)); $hd = false; $this->assertEquals($this->localhost . $this->defaultAudioSDPic, $this->picService->getFirstUrlPic($mm, $absolute, $hd)); $mmUrl1 = '/uploads/video1.jpg'; $mmPic1 = new Pic(); $mmPic1->setUrl($mmUrl1); $mm->addPic($mmPic1); $this->dm->persist($mm); $this->dm->flush(); $this->assertEquals($mmUrl1, $this->picService->getFirstUrlPic($mm)); $absolute = true; $this->assertEquals($this->localhost . $mmUrl1, $this->picService->getFirstUrlPic($mm, $absolute)); $mmUrl2 = '/uploads/video2.jpg'; $mmPic2 = new Pic(); $mmPic2->setUrl($mmUrl2); $mm->addPic($mmPic2); $this->dm->persist($mm); $mm->upPicById($mmPic2->getId()); $this->dm->persist($mm); $this->dm->flush(); $this->assertEquals($mmUrl2, $this->picService->getFirstUrlPic($mm)); $absolute = true; $this->assertEquals($this->localhost . $mmUrl2, $this->picService->getFirstUrlPic($mm, $absolute)); }
public function testRemovePicFromSeries() { $broadcast = $this->createBroadcast(Broadcast::BROADCAST_TYPE_PUB); $series = $this->factoryService->createSeries(); $this->assertEquals(0, count($series->getPics())); $pic = new Pic(); $url = 'http://domain.com/pic.png'; $pic->setUrl($url); $pic->addTag('tag1'); $pic->addTag('tag2'); $pic->addTag('tag3'); $pic->addTag('banner'); $this->dm->persist($pic); $this->dm->flush(); $series->addPic($pic); $this->assertEquals(1, count($series->getPics())); $series = $this->seriesPicService->removePicFromSeries($series, $pic->getId()); $this->assertEquals(0, count($series->getPics())); $picPath = realpath(__DIR__ . '/../Resources') . DIRECTORY_SEPARATOR . 'picCopy2.png'; if (copy($this->originalPicPath, $picPath)) { $picFile = new UploadedFile($picPath, 'pic2.png', null, null, null, true); $bannerTargetUrl = 'http://domain.com/banner'; $series = $this->seriesPicService->addPicFile($series, $picFile, true, $bannerTargetUrl); $series = $this->repo->find($series->getId()); $this->assertEquals(1, count($series->getPics())); $pic = $series->getPics()[0]; $this->assertTrue($series->containsPic($pic)); $series = $this->seriesPicService->removePicFromSeries($series, $pic->getId()); $this->assertEquals(0, count($series->getPics())); } }
public function importRecording($opencastId, $invert = false) { $mediaPackage = $this->opencastClient->getMediaPackage($opencastId); $seriesRepo = $this->dm->getRepository('PumukitSchemaBundle:Series'); if (isset($mediaPackage["series"])) { $series = $seriesRepo->findOneBy(array("properties.opencast" => $mediaPackage["series"])); } else { $series = $seriesRepo->findOneBy(array("properties.opencast" => "default")); } if (!$series) { $series = $this->importSeries($mediaPackage); } $multimediaobjectsRepo = $this->dm->getRepository('PumukitSchemaBundle:MultimediaObject'); $onemultimediaobjects = $multimediaobjectsRepo->findOneBy(array("properties.opencast" => $mediaPackage["id"])); if ($onemultimediaobjects == null) { $title = $mediaPackage["title"]; $properties = $mediaPackage["id"]; $recDate = $mediaPackage["start"]; $multimediaObject = $this->factoryService->createMultimediaObject($series); $multimediaObject->setSeries($series); $multimediaObject->setRecordDate($recDate); $multimediaObject->setProperty("opencast", $properties); $multimediaObject->setProperty("opencastinvert", boolval($invert)); $multimediaObject->setProperty("opencasturl", $this->opencastClient->getPlayerUrl() . "?id=" . $properties); $multimediaObject->setTitle($title); if (isset($mediaPackage["language"])) { $multimediaObject->setProperty("opencastlanguage", strtolower($mediaPackage["language"])); } else { $multimediaObject->setProperty("opencastlanguage", 'en'); } foreach ($this->otherLocales as $locale) { $multimediaObject->setTitle($title, $locale); } //Multiple tracks if (isset($mediaPackage["media"]["track"][0])) { for ($i = 0; $i < count($mediaPackage["media"]["track"]); $i++) { $tags = $mediaPackage["media"]["track"][$i]["tags"]; $url = $mediaPackage["media"]["track"][$i]["url"]; $mime = $mediaPackage["media"]["track"][$i]["mimetype"]; $duration = $mediaPackage["media"]["track"][$i]["duration"]; $track = new Track(); if (isset($mediapackage["media"]["track"][$i]["audio"])) { $acodec = $mediaPackage["media"]["track"][$i]["audio"]["encoder"]["type"]; $track->setAcodec($acodec); } if (isset($mediaPackage["language"])) { $track->setLanguage(strtolower($mediaPackage["language"])); } if (isset($mediaPackage["media"]["track"][$i]["video"])) { $vcodec = $mediaPackage["media"]["track"][$i]["video"]["encoder"]["type"]; $track->setVcodec($vcodec); $framerate = $mediaPackage["media"]["track"][$i]["video"]["framerate"]; $track->setFramerate($framerate); } if (!$track->getVcodec() && $track->getAcodec()) { $track->setOnlyAudio(true); } $track->addTag("opencast"); $track->addTag($mediaPackage["media"]["track"][$i]["type"]); $track->setUrl($url); $track->setPath($this->opencastService->getPath($url)); $track->setMimeType($mime); $track->setDuration($duration / 1000); $this->inspectionService->autocompleteTrack($track); $multimediaObject->setDuration($track->getDuration()); $multimediaObject->addTrack($track); } } else { $tags = $mediaPackage["media"]["track"]["tags"]; $url = $mediaPackage["media"]["track"]["url"]; $mime = $mediaPackage["media"]["track"]["mimetype"]; $duration = $mediaPackage["media"]["track"]["duration"]; $track = new Track(); if (isset($mediapackage["media"]["track"]["audio"])) { $acodec = $mediaPackage["media"]["track"]["audio"]["encoder"]["type"]; $track->setAcodec($acodec); } if (isset($mediaPackage["media"]["track"]["video"])) { $vcodec = $mediaPackage["media"]["track"]["video"]["encoder"]["type"]; $track->setVcodec($vcodec); $framerate = $mediaPackage["media"]["track"]["video"]["framerate"]; $track->setFramerate($framerate); } if (!$track->getVcodec() && $track->getAcodec()) { $track->setOnlyAudio(true); } $track->addTag("opencast"); $track->addTag($mediaPackage["media"]["track"]["type"]); $track->setUrl($url); $track->setPath($this->opencastService->getPath($url)); $track->setMimeType($mime); $track->setDuration($duration / 1000); $this->inspectionService->autocompleteTrack($track); $multimediaObject->setDuration($track->getDuration()); $multimediaObject->addTrack($track); } for ($j = 0; $j < count($mediaPackage["attachments"]["attachment"]); $j++) { if (isset($mediaPackage["attachments"]["attachment"][$j]["type"])) { if ($mediaPackage["attachments"]["attachment"][$j]["type"] == "presenter/search+preview") { $tags = $mediaPackage["attachments"]["attachment"][$j]["tags"]; $url = $mediaPackage["attachments"]["attachment"][$j]["url"]; $pic = new Pic(); $pic->setTags(array($tags)); $pic->setUrl($url); $multimediaObject->addPic($pic); } } } $tagRepo = $this->dm->getRepository('PumukitSchemaBundle:Tag'); $opencastTag = $tagRepo->findOneByCod('TECHOPENCAST'); if ($opencastTag) { $tagService = $this->tagService; $tagAdded = $tagService->addTagToMultimediaObject($multimediaObject, $opencastTag->getId()); } $this->dm->persist($multimediaObject); $this->dm->flush(); if ($track) { $opencastUrls = $this->getOpencastUrls($opencastId); $this->opencastService->genSbs($multimediaObject, $opencastUrls); } } }
public function testGetPicsWithTag() { $mm = new MultimediaObject(); $p1 = new Pic(); $p1->setTags(array('master')); $p2 = new Pic(); $p2->setTags(array('master', 'mosca', 'old')); $p3 = new Pic(); $p3->setTags(array('master', 'mosca')); $p4 = new Pic(); $p4->setTags(array('flv', 'itunes', 'hide')); $p5 = new Pic(); $p5->setTags(array('flv', 'webtv')); $mm->addPic($p3); $mm->addPic($p2); $mm->addPic($p1); $mm->addPic($p4); $mm->addPic($p5); $this->assertEquals(array($p3, $p2, $p1), $mm->getPicsWithTag('master')); $this->assertEquals($p3, $mm->getPicWithTag('master')); $this->assertEquals(null, $mm->getPicWithTag('del_universo')); $this->assertEquals($p3, $mm->getPicWithAnyTag(array('master', 'pr'))); $this->assertEquals(array($p2), $mm->getPicsWithAllTags(array('master', 'mosca', 'old'))); $this->assertTrue(in_array($mm->getPicWithAllTags(array('mosca', 'master')), array($p3, $p2))); $this->assertEquals(null, $mm->getPicWithAllTags(array('mosca', 'master', 'del_universo'))); $this->assertEquals(4, count($mm->getPicsWithAnyTag(array('master', 'webtv')))); $this->assertEquals(1, count($mm->getPicWithAnyTag(array('master')))); $this->assertEquals(null, $mm->getPicWithAnyTag(array('del_universo'))); $this->assertEquals(5, count($mm->getFilteredPicsWithTags())); $this->assertEquals(3, count($mm->getFilteredPicsWithTags(array('master')))); $this->assertEquals(1, count($mm->getFilteredPicsWithTags(array('master'), array('mosca', 'old')))); $this->assertEquals(0, count($mm->getFilteredPicsWithTags(array(), array('mosca', 'old'), array('master')))); $this->assertEquals(3, count($mm->getFilteredPicsWithTags(array(), array(), array('flv')))); $this->assertEquals(0, count($mm->getFilteredPicsWithTags(array(), array(), array('flv', 'master')))); $this->assertEquals(5, count($mm->getFilteredPicsWithTags(array(), array(), array(), array('flv', 'master')))); $this->assertEquals(1, count($mm->getFilteredPicsWithTags(array('mosca', 'old'), array(), array(), array('old')))); }
public function testPicsInSeries() { $url = realpath(__DIR__ . '/../Resources') . DIRECTORY_SEPARATOR . 'logo.png'; $pic = new Pic(); $pic->setUrl($url); $series = new Series(); $pic1 = new Pic(); $pic2 = new Pic(); $this->assertEquals(0, count($series->getPics())); $series->addPic($pic); $this->assertEquals(1, count($series->getPics())); $this->assertTrue($series->containsPic($pic)); $series->removePic($pic); $this->assertEquals(0, count($series->getPics())); $this->assertFalse($series->containsPic($pic)); $picWithoutUrl = new Pic(); $series->addPic($picWithoutUrl); $series->addPic($pic); $this->assertEquals(2, count($series->getPics())); $this->assertEquals($url, $series->getFirstUrlPic()); }