示例#1
0
 /**
  * @covers media_subdef::get_permalink
  */
 public function testGet_permalink()
 {
     $this->assertInstanceOf('\\media_Permalink_adapter', self::$objectNotPresent->get_permalink());
     $this->assertInstanceOf('\\media_Permalink_adapter', self::$objectPresent->get_permalink());
 }
示例#2
0
 protected function checkPermalink($permalink, \media_subdef $subdef)
 {
     if (!$subdef->is_physically_present()) {
         return;
     }
     $start = microtime(true);
     $this->assertNotNull($subdef->get_permalink());
     $this->assertInternalType('array', $permalink);
     $this->assertArrayHasKey("created_on", $permalink);
     $now = new \Datetime($permalink['created_on']);
     $interval = $now->diff($subdef->get_permalink()->get_created_on());
     $this->assertTrue(abs($interval->format('U')) < 2);
     $this->assertInternalType(\PHPUnit_Framework_Constraint_IsType::TYPE_STRING, $permalink['created_on']);
     $this->assertDateAtom($permalink['created_on']);
     $this->assertArrayHasKey("id", $permalink);
     $this->assertInternalType(\PHPUnit_Framework_Constraint_IsType::TYPE_INT, $permalink['id']);
     $this->assertEquals($subdef->get_permalink()->get_id(), $permalink['id']);
     $this->assertArrayHasKey("is_activated", $permalink);
     $this->assertInternalType(\PHPUnit_Framework_Constraint_IsType::TYPE_BOOL, $permalink['is_activated']);
     $this->assertEquals($subdef->get_permalink()->get_is_activated(), $permalink['is_activated']);
     $this->assertArrayHasKey("label", $permalink);
     $this->assertInternalType(\PHPUnit_Framework_Constraint_IsType::TYPE_STRING, $permalink['label']);
     $this->assertArrayHasKey("updated_on", $permalink);
     $expected = $subdef->get_permalink()->get_last_modified();
     $found = \DateTime::createFromFormat(DATE_ATOM, $permalink['updated_on']);
     $this->assertLessThanOrEqual(1, $expected->diff($found)->format('U'));
     $this->assertInternalType(\PHPUnit_Framework_Constraint_IsType::TYPE_STRING, $permalink['updated_on']);
     $this->assertDateAtom($permalink['updated_on']);
     $this->assertArrayHasKey("page_url", $permalink);
     $this->assertInternalType(\PHPUnit_Framework_Constraint_IsType::TYPE_STRING, $permalink['page_url']);
     $this->assertEquals($subdef->get_permalink()->get_page(), $permalink['page_url']);
     $this->checkUrlCode200($permalink['page_url']);
     $this->assertPermalinkHeaders($permalink['page_url'], $subdef);
     $this->assertArrayHasKey("url", $permalink);
     $this->assertInternalType(\PHPUnit_Framework_Constraint_IsType::TYPE_STRING, $permalink['url']);
     $this->assertEquals($subdef->get_permalink()->get_url(), $permalink['url']);
     $this->checkUrlCode200($permalink['url']);
     $this->assertPermalinkHeaders($permalink['url'], $subdef, "url");
     $this->assertArrayHasKey("download_url", $permalink);
     $this->assertInternalType(\PHPUnit_Framework_Constraint_IsType::TYPE_STRING, $permalink['download_url']);
     $this->assertEquals($subdef->get_permalink()->get_url() . '&download=1', $permalink['download_url']);
     $this->checkUrlCode200($permalink['download_url']);
     $this->assertPermalinkHeaders($permalink['download_url'], $subdef, "download_url");
 }
示例#3
0
 private function listEmbeddableMedia(Request $request, \record_adapter $record, \media_subdef $media)
 {
     if (!$media->is_physically_present()) {
         return null;
     }
     if ($this->getAuthenticator()->isAuthenticated()) {
         $acl = $this->getAclForUser();
         if ($media->get_name() !== 'document' && false === $acl->has_access_to_subdef($record, $media->get_name())) {
             return null;
         }
         if ($media->get_name() === 'document' && !$acl->has_right_on_base($record->getBaseId(), 'candwnldhd') && !$acl->has_hd_grant($record)) {
             return null;
         }
     }
     if ($media->get_permalink() instanceof \media_Permalink_Adapter) {
         $permalink = $this->listPermalink($media->get_permalink());
     } else {
         $permalink = null;
     }
     $urlTTL = (int) $request->get('subdef_url_ttl', $this->getConf()->get(['registry', 'general', 'default-subdef-url-ttl']));
     if ($urlTTL < 0) {
         $urlTTL = -1;
     }
     $issuer = $this->getAuthenticatedUser();
     return ['name' => $media->get_name(), 'permalink' => $permalink, 'height' => $media->get_height(), 'width' => $media->get_width(), 'filesize' => $media->get_size(), 'devices' => $media->getDevices(), 'player_type' => $media->get_type(), 'mime_type' => $media->get_mime(), 'substituted' => $media->is_substituted(), 'created_on' => $media->get_creation_date()->format(DATE_ATOM), 'updated_on' => $media->get_modification_date()->format(DATE_ATOM), 'url' => $this->generateSubDefinitionUrl($issuer, $media, $urlTTL), 'url_ttl' => $urlTTL];
 }
示例#4
0
文件: V1.php 项目: nlegoff/Phraseanet
 /**
  * @retrieve detailled informations about one suddef
  *
  * @param  media_subdef $media
  *
  * @return array
  */
 private function list_embedable_media(Application $app, \record_adapter $record, \media_subdef $media)
 {
     if (!$media->is_physically_present()) {
         return null;
     }
     if ($app['authentication']->isAuthenticated()) {
         if ($media->get_name() !== 'document' && false === $app['acl']->get($app['authentication']->getUser())->has_access_to_subdef($record, $media->get_name())) {
             return null;
         }
         if ($media->get_name() === 'document' && !$app['acl']->get($app['authentication']->getUser())->has_right_on_base($record->get_base_id(), 'candwnldhd') && !$app['acl']->get($app['authentication']->getUser())->has_hd_grant($record)) {
             return null;
         }
     }
     if ($media->get_permalink() instanceof \media_Permalink_Adapter) {
         $permalink = $this->list_permalink($media->get_permalink());
     } else {
         $permalink = null;
     }
     return ['name' => $media->get_name(), 'permalink' => $permalink, 'height' => $media->get_height(), 'width' => $media->get_width(), 'filesize' => $media->get_size(), 'devices' => $media->getDevices(), 'player_type' => $media->get_type(), 'mime_type' => $media->get_mime()];
 }
示例#5
0
 /**
  * @retrieve detailled informations about one suddef
  *
  * @param  media_subdef $media
  * @return array
  */
 protected function list_embedable_media(media_subdef $media)
 {
     if (!$media->is_physically_present()) {
         return null;
     }
     if ($media->get_permalink() instanceof media_Permalink_Adapter) {
         $permalink = $this->list_permalink($media->get_permalink());
     } else {
         $permalink = null;
     }
     return ['name' => $media->get_name(), 'permalink' => $permalink, 'height' => $media->get_height(), 'width' => $media->get_width(), 'filesize' => $media->get_size(), 'devices' => $media->getDevices(), 'player_type' => $media->get_type(), 'mime_type' => $media->get_mime()];
 }