Esempio n. 1
0
 /**
  * {@inheritdoc}
  */
 public function execute(InputInterface $input, OutputInterface $output)
 {
     foreach ($this->app->getDataboxes() as $databox) {
         foreach ($databox->get_meta_structure()->get_elements() as $databox_field) {
             if ($databox_field->is_on_error()) {
                 throw new \Exception(sprintf("Databox description field %s is on error, please fix it before continue</error>", $databox_field->get_name()));
             }
         }
         $this->ensureMigrateColumn($databox);
         do {
             $rs = $this->getEmptyOriginalNameRecords($databox);
             $databox->get_connection()->beginTransaction();
             foreach ($rs as $record) {
                 $this->setOriginalName($databox, $record);
             }
             $databox->get_connection()->commit();
         } while (count($rs) > 0);
         do {
             $rs = $this->getRecordsToMigrate($databox);
             $databox->get_connection()->beginTransaction();
             $sql = 'UPDATE record SET migrate35=1 WHERE record_id = :record_id';
             $stmt = $databox->get_connection()->prepare($sql);
             foreach ($rs as $row) {
                 $stmt->execute([':record_id' => $row['record_id']]);
                 try {
                     $record = new \record_adapter($this->app, $databox->get_sbas_id(), $row['record_id']);
                 } catch (\Exception $e) {
                     $this->app['monolog']->addError(sprintf("Unable to load record %d on databox %d : %s", $record->get_record_id(), $record->get_sbas_id(), $record->get_sbas_id(), $e->getMessage()));
                     continue;
                 }
                 try {
                     $this->updateMetadatas($record, $row['xml']);
                 } catch (\Exception $e) {
                     $this->app['monolog']->addError(sprintf("Error while upgrading metadatas for record %d on databox %d : %s", $record->get_record_id(), $record->get_sbas_id(), $e->getMessage()));
                 }
                 try {
                     $record->set_binary_status($row['status']);
                 } catch (\Exception $e) {
                     $this->app['monolog']->addError(sprintf("Error while upgrading status for record %d on databox %d : %s", $record->get_record_id(), $record->get_sbas_id(), $e->getMessage()));
                 }
                 unset($record);
             }
             $stmt->closeCursor();
             $databox->get_connection()->commit();
         } while (count($rs) > 0);
     }
     foreach ($this->app->getDataboxes() as $databox) {
         $this->ensureDropMigrateColumn($databox);
     }
 }
Esempio n. 2
0
 /**
  *
  * @param Application      $app
  * @param record_adapter $record
  * @param databox          $databox
  *
  * @return caption_record
  */
 public function __construct(Application $app, \record_adapter $record, databox $databox)
 {
     $this->app = $app;
     $this->sbas_id = $record->get_sbas_id();
     $this->record = $record;
     $this->databox = $databox;
 }
Esempio n. 3
0
 /**
  *
  * @param  boolean $random
  * @return string
  */
 protected function generate_url()
 {
     if (!$this->is_physically_present()) {
         return;
     }
     if (in_array($this->mime, ['video/mp4'])) {
         $token = p4file::apache_tokenize($this->app['conf'], $this->get_pathfile());
         if ($token) {
             $this->url = $token;
             return;
         }
     }
     $this->url = "/datafiles/" . $this->record->get_sbas_id() . "/" . $this->record->get_record_id() . "/" . $this->get_name() . "/";
     return;
 }
Esempio n. 4
0
 /**
  *
  * @param  boolean $random
  * @return string
  */
 protected function generate_url()
 {
     if (!$this->is_physically_present()) {
         return;
     }
     if ($this->get_name() === 'thumbnail') {
         if ($this->app['phraseanet.static-file-factory']->isStaticFileModeEnabled() && null !== ($url = $this->app['phraseanet.static-file']->getUrl($this->get_pathfile()))) {
             $this->url = $url;
             return;
         }
     }
     if ($this->app['phraseanet.h264-factory']->isH264Enabled() && in_array($this->mime, ['video/mp4'])) {
         if (null !== ($url = $this->app['phraseanet.h264']->getUrl($this->get_pathfile()))) {
             $this->url = $url;
             return;
         }
     }
     $this->url = Url::factory("/datafiles/" . $this->record->get_sbas_id() . "/" . $this->record->get_record_id() . "/" . $this->get_name() . "/");
     return;
 }
Esempio n. 5
0
 public function serialize(\record_adapter $record)
 {
     $technicalInformation = $caption = $business = $status = [];
     foreach ($record->get_technical_infos() as $name => $value) {
         $technicalInformation[$name] = $value;
     }
     foreach ($record->get_caption()->get_fields(null, true) as $field) {
         $isDate = $field->get_databox_field()->get_type() === \databox_field::TYPE_DATE;
         $isBusiness = $field->get_databox_field()->isBusiness();
         $vi = $field->get_values();
         if ($field->is_multi()) {
             $values = [];
             foreach ($vi as $value) {
                 $values[] = $this->sanitizeSerializedValue($value->getValue());
             }
             $value = implode(' ' . $field->get_databox_field()->get_separator(false) . ' ', $values);
         } else {
             $value = $this->sanitizeSerializedValue(array_pop($vi)->getValue());
         }
         if ($isDate) {
             try {
                 $date = new \DateTime($value);
                 $value = $date->format(DATE_ATOM);
             } catch (\Exception $e) {
                 continue;
             }
         }
         if ($isBusiness) {
             $business[$field->get_databox_field()->get_name()] = $value;
         }
         $caption[$field->get_databox_field()->get_name()] = $value;
     }
     $i = 0;
     foreach (preg_split('//', strrev($record->get_status()), -1, PREG_SPLIT_NO_EMPTY) as $val) {
         $status['status-' . $i] = (int) $val;
         $i++;
     }
     return ['databox_id' => $record->get_sbas_id(), 'record_id' => $record->get_record_id(), 'collection_id' => $record->get_collection()->get_coll_id(), 'base_id' => $record->get_base_id(), 'mime_type' => $record->get_mime(), 'title' => $record->get_title(), 'original_name' => $record->get_original_name(), 'updated_on' => $record->get_modification_date()->format(DATE_ATOM), 'created_on' => $record->get_creation_date()->format(DATE_ATOM), 'sha256' => $record->get_sha256(), 'technical_informations' => $technicalInformation, 'phrasea_type' => $record->get_type(), 'type' => $record->is_grouping() ? 'story' : 'record', 'uuid' => $record->get_uuid(), 'caption' => $caption, 'status' => $status, 'caption-business' => $business];
 }
Esempio n. 6
0
 public static function create(Application $app, Bridge_Account $account, record_adapter $record, $title, $status, $type, array $datas = [])
 {
     $sql = 'INSERT INTO bridge_elements
         (id, account_id, sbas_id, record_id, dist_id, title, `type`
           , serialized_datas, status, created_on, updated_on)
         VALUES
         (null, :account_id, :sbas_id, :record_id, null, :title, :type
           ,:datas , :status, NOW(), NOW())';
     $params = [':account_id' => $account->get_id(), ':sbas_id' => $record->get_sbas_id(), ':record_id' => $record->get_record_id(), ':status' => $status, ':title' => $title, ':type' => $type, ':datas' => serialize($datas)];
     $stmt = $app->getApplicationBox()->get_connection()->prepare($sql);
     $stmt->execute($params);
     $stmt->closeCursor();
     $element_id = $app->getApplicationBox()->get_connection()->lastInsertId();
     return new self($app, $account, $element_id);
 }
 /**
  * @param \record_adapter $record
  * @return \Alchemy\Phrasea\Application
  */
 protected function mockElasticsearchResult(\record_adapter $record)
 {
     $app = $this->getApplication();
     $elasticsearchRecord = new ElasticsearchRecord();
     $elasticsearchRecord->setDataboxId($record->get_sbas_id());
     $elasticsearchRecord->setRecordId($record->get_record_id());
     $result = new SearchEngineResult(new ArrayCollection([$elasticsearchRecord]), '', 0, 0, 1, 1, 0, 0, new ArrayCollection(), null, null);
     $searchEngine = $this->prophesize(SearchEngineInterface::class);
     $searchEngine->query('', 0, Argument::any(), Argument::any())->willReturn($result);
     $searchEngine->excerpt(Argument::any(), Argument::any(), Argument::any(), Argument::any())->willReturn([]);
     $app['search_engine'] = $searchEngine->reveal();
     return $app;
 }
Esempio n. 8
0
 private function createQueryParams($query, SearchEngineOptions $options, \record_adapter $record = null)
 {
     $params = ['index' => $this->indexName, 'type' => 'record', 'body' => ['fields' => ['databox_id', 'record_id'], 'sort' => $this->createSortQueryParams($options)]];
     $ESquery = $this->createESQuery($query, $options);
     $filters = $this->createFilters($options);
     if ($record) {
         $filters[] = ['term' => ['_id' => sprintf('%s-%s', $record->get_sbas_id(), $record->get_record_id())]];
         $fields = [];
         foreach ($record->get_databox()->get_meta_structure() as $dbField) {
             $fields['caption.' . $dbField->get_name()] = new \stdClass();
         }
         $params['body']['highlight'] = ["pre_tags" => ["[[em]]"], "post_tags" => ["[[/em]]"], "fields" => $fields];
     }
     if (count($filters) > 0) {
         $ESquery = ['filtered' => ['query' => $ESquery, 'filter' => ['and' => $filters]]];
     }
     $params['body']['query'] = $ESquery;
     return $params;
 }
Esempio n. 9
0
 /**
  * {@inheritdoc}
  */
 public function apply(base $appbox, Application $app)
 {
     try {
         $sql = 'ALTER TABLE `ssel` ADD `migrated` INT NOT NULL DEFAULT "0"';
         $stmt = $appbox->get_connection()->prepare($sql);
         $stmt->execute();
         $stmt->closeCursor();
     } catch (\Exception $e) {
     }
     $sql = 'SELECT ssel_id, usr_id, name, descript, pub_date, updater, pub_restrict, homelink
             FROM ssel
             WHERE (public = "1" OR homelink="1")
               AND migrated = 0';
     $stmt = $appbox->get_connection()->prepare($sql);
     $stmt->execute();
     $rs = $stmt->fetchAll(PDO::FETCH_ASSOC);
     $stmt->closeCursor();
     $date_ref = new DateTime();
     $n = 0;
     $app['orm.em']->getEventManager()->removeEventSubscriber(new TimestampableListener());
     foreach ($rs as $row) {
         if (null === ($user = $this->loadUser($app['orm.em'], $row['usr_id']))) {
             continue;
         }
         $feed = $this->get_feed($app, $appbox, $user, $row['pub_restrict'], $row['homelink']);
         if (!$feed instanceof Feed) {
             continue;
         }
         $publishers = $feed->getPublishers();
         $entry = new FeedEntry();
         $entry->setAuthorEmail((string) $user->getEmail());
         $entry->setAuthorName((string) $user->getDisplayName());
         $entry->setFeed($feed);
         $entry->setPublisher($publishers->first());
         $entry->setTitle($row['name']);
         $entry->setSubtitle($row['descript']);
         $feed->addEntry($entry);
         $date_create = new DateTime($row['pub_date']);
         if ($date_create < $date_ref) {
             $date_ref = $date_create;
         }
         $entry->setCreatedOn($date_create);
         if ($row['updater'] != '0000-00-00 00:00:00') {
             $date_update = new DateTime($row['updater']);
             $entry->setUpdatedOn($date_update);
         }
         $sql = 'SELECT sselcont_id, ssel_id, base_id, record_id
                 FROM sselcont
                 WHERE ssel_id = :ssel_id
                 ORDER BY ord ASC';
         $stmt = $appbox->get_connection()->prepare($sql);
         $stmt->execute([':ssel_id' => $row['ssel_id']]);
         $rs = $stmt->fetchAll(PDO::FETCH_ASSOC);
         $stmt->closeCursor();
         foreach ($rs as $row) {
             try {
                 $record = new record_adapter($app, phrasea::sbasFromBas($app, $row['base_id']), $row['record_id']);
                 $item = new FeedItem();
                 $item->setEntry($entry);
                 $entry->addItem($item);
                 $item->setRecordId($record->get_record_id());
                 $item->setSbasId($record->get_sbas_id());
                 $app['orm.em']->persist($item);
             } catch (NotFoundHttpException $e) {
             }
         }
         $app['orm.em']->persist($entry);
         $sql = 'UPDATE ssel SET deleted = "1", migrated="1"
                 WHERE ssel_id = :ssel_id';
         $stmt = $appbox->get_connection()->prepare($sql);
         $stmt->execute([':ssel_id' => $row['ssel_id']]);
         $stmt->closeCursor();
         $app['orm.em']->persist($feed);
         $n++;
         if ($n % 1000 == 0) {
             $app['orm.em']->flush();
             $app['orm.em']->clear();
         }
     }
     $this->set_feed_dates($date_ref);
     $app['orm.em']->flush();
     $app['orm.em']->clear();
     $app['orm.em']->getEventManager()->removeEventSubscriber(new TimestampableListener());
     return true;
 }
Esempio n. 10
0
 /**
  * @param Application     $app
  * @param \record_adapter $Story
  * @return StoryWZ[]
  */
 public function findByRecord(Application $app, \record_adapter $Story)
 {
     $dql = 'SELECT s FROM Phraseanet:StoryWZ s
             WHERE s.sbas_id = :sbas_id
             AND s.record_id = :record_id';
     $query = $this->_em->createQuery($dql);
     $query->setParameters(['sbas_id' => $Story->get_sbas_id(), 'record_id' => $Story->get_record_id()]);
     /** @var StoryWZ[] $stories */
     $stories = $query->getResult();
     foreach ($stories as $key => $story) {
         try {
             $story->getRecord($app);
         } catch (NotFoundHttpException $e) {
             $this->getEntityManager()->remove($story);
             $this->getEntityManager()->flush();
             unset($stories[$key]);
         }
     }
     return $stories;
 }
Esempio n. 11
0
 public function grant_preview_on(record_adapter $record, User $pusher, $action)
 {
     $sql = 'REPLACE INTO records_rights
         (id, usr_id, sbas_id, record_id, preview, `case`, pusher_usr_id)
         VALUES
         (null, :usr_id, :sbas_id, :record_id, 1, :case, :pusher)';
     $params = [':usr_id' => $this->user->getId(), ':sbas_id' => $record->get_sbas_id(), ':record_id' => $record->get_record_id(), ':case' => $action, ':pusher' => $pusher->getId()];
     $stmt = $this->app['phraseanet.appbox']->get_connection()->prepare($sql);
     $stmt->execute($params);
     $stmt->closeCursor();
     $this->delete_data_from_cache(self::CACHE_RIGHTS_RECORDS);
     return $this;
 }
Esempio n. 12
0
 public function setRecord(\record_adapter $record)
 {
     $this->setRecordId($record->get_record_id());
     $this->setSbasId($record->get_sbas_id());
 }
Esempio n. 13
0
 /**
  *
  * @param  Application $app
  * @param  string      $lst
  * @param  integer     $sstid
  * @param  integer     $storyWZid
  * @return set_export
  */
 public function __construct(Application $app, $lst, $sstid, $storyWZid = null)
 {
     $this->app = $app;
     $download_list = [];
     $remain_hd = [];
     if ($storyWZid) {
         $repository = $app['EM']->getRepository('\\Entities\\StoryWZ');
         $storyWZ = $repository->findByUserAndId($this->app, $app['authentication']->getUser(), $storyWZid);
         $lst = $storyWZ->getRecord($this->app)->get_serialize_key();
     }
     if ($sstid != "") {
         $repository = $app['EM']->getRepository('Phraseanet:Basket');
         /* @var $repository Alchemy\Phrasea\Model\Repositories\BasketRepository */
         $Basket = $repository->findUserBasket($sstid, $app['authentication']->getUser(), false);
         $this->exportName = str_replace([' ', '\\', '/'], '_', $Basket->getName()) . "_" . date("Y-n-d");
         foreach ($Basket->getElements() as $basket_element) {
             $base_id = $basket_element->getRecord($this->app)->get_base_id();
             $record_id = $basket_element->getRecord($this->app)->get_record_id();
             if (!isset($remain_hd[$base_id])) {
                 if ($app['acl']->get($app['authentication']->getUser())->is_restricted_download($base_id)) {
                     $remain_hd[$base_id] = $app['acl']->get($app['authentication']->getUser())->remaining_download($base_id);
                 } else {
                     $remain_hd[$base_id] = false;
                 }
             }
             $current_element = $download_list[] = new record_exportElement($app, $basket_element->getRecord($this->app)->get_sbas_id(), $record_id, $Basket->getName(), $remain_hd[$base_id]);
             $remain_hd[$base_id] = $current_element->get_remain_hd();
         }
     } else {
         $this->exportName = "Export_" . date("Y-n-d") . '_' . mt_rand(100, 999);
         $tmp_lst = explode(';', $lst);
         $n = 1;
         foreach ($tmp_lst as $basrec) {
             $basrec = explode('_', $basrec);
             if (count($basrec) != 2) {
                 continue;
             }
             try {
                 $record = new record_adapter($this->app, $basrec[0], $basrec[1]);
             } catch (\Exception_Record_AdapterNotFound $e) {
                 continue;
             }
             if ($record->is_grouping()) {
                 foreach ($record->get_children() as $child_basrec) {
                     $base_id = $child_basrec->get_base_id();
                     $record_id = $child_basrec->get_record_id();
                     if (!isset($remain_hd[$base_id])) {
                         if ($app['acl']->get($app['authentication']->getUser())->is_restricted_download($base_id)) {
                             $remain_hd[$base_id] = $app['acl']->get($app['authentication']->getUser())->remaining_download($base_id);
                         } else {
                             $remain_hd[$base_id] = false;
                         }
                     }
                     $current_element = $download_list[] = new record_exportElement($app, $child_basrec->get_sbas_id(), $record_id, $record->get_title(null, null, true) . '_' . $n, $remain_hd[$base_id]);
                     $remain_hd[$base_id] = $current_element->get_remain_hd();
                 }
             } else {
                 $base_id = $record->get_base_id();
                 $record_id = $record->get_record_id();
                 if (!isset($remain_hd[$base_id])) {
                     if ($app['acl']->get($app['authentication']->getUser())->is_restricted_download($base_id)) {
                         $remain_hd[$base_id] = $app['acl']->get($app['authentication']->getUser())->remaining_download($base_id);
                     } else {
                         $remain_hd[$base_id] = false;
                     }
                 }
                 $current_element = $download_list[$basrec[0] . '_' . $basrec[1]] = new record_exportElement($app, $record->get_sbas_id(), $record_id, '', $remain_hd[$base_id]);
                 $remain_hd[$base_id] = $current_element->get_remain_hd();
             }
             $n++;
         }
     }
     $this->elements = $download_list;
     $display_download = [];
     $display_orderable = [];
     $this->total_download = 0;
     $this->total_order = 0;
     $this->total_ftp = 0;
     $this->businessFieldsAccess = false;
     foreach ($this->elements as $download_element) {
         if ($app['acl']->get($app['authentication']->getUser())->has_right_on_base($download_element->get_base_id(), 'canmodifrecord')) {
             $this->businessFieldsAccess = true;
         }
         foreach ($download_element->get_downloadable() as $name => $properties) {
             if (!isset($display_download[$name])) {
                 $display_download[$name] = ['size' => 0, 'total' => 0, 'available' => 0, 'refused' => []];
             }
             $display_download[$name]['total']++;
             if ($properties !== false) {
                 $display_download[$name]['available']++;
                 $display_download[$name]['label'] = $properties['label'];
                 $display_download[$name]['class'] = $properties['class'];
                 $this->total_download++;
                 $display_download[$name]['size'] += $download_element->get_size($name);
             } else {
                 $display_download[$name]['refused'][] = $download_element->get_thumbnail();
             }
         }
         foreach ($download_element->get_orderable() as $name => $properties) {
             if (!isset($display_orderable[$name])) {
                 $display_orderable[$name] = ['total' => 0, 'available' => 0, 'refused' => []];
             }
             $display_orderable[$name]['total']++;
             if ($properties !== false) {
                 $display_orderable[$name]['available']++;
                 $this->total_order++;
             } else {
                 $display_orderable[$name]['refused'][] = $download_element->get_thumbnail();
             }
         }
     }
     foreach ($display_download as $name => $values) {
         $display_download[$name]['size'] = (int) $values['size'];
     }
     $display_ftp = [];
     $hasadminright = $app['acl']->get($app['authentication']->getUser())->has_right('addrecord') || $app['acl']->get($app['authentication']->getUser())->has_right('deleterecord') || $app['acl']->get($app['authentication']->getUser())->has_right('modifyrecord') || $app['acl']->get($app['authentication']->getUser())->has_right('coll_manage') || $app['acl']->get($app['authentication']->getUser())->has_right('coll_modify_struct');
     $this->ftp_datas = [];
     if ($this->app['conf']->get(['registry', 'ftp', 'ftp-enabled']) && ($hasadminright || $this->app['conf']->get(['registry', 'ftp', 'ftp-user-access']))) {
         $display_ftp = $display_download;
         $this->total_ftp = $this->total_download;
         $lst_base_id = array_keys($app['acl']->get($app['authentication']->getUser())->get_granted_base());
         if ($hasadminright) {
             $sql = "SELECT Users.id AS usr_id ,Users.login AS usr_login ,Users.email AS usr_mail, FtpCredential.*\n                  FROM (\n                    FtpCredential INNER JOIN Users ON (\n                        FtpCredential.active = 1 AND FtpCredential.user_id = Users.id\n                    ) INNER JOIN basusr ON (\n                        Users.id=basusr.usr_id\n                        AND (basusr.base_id=\n                        '" . implode("' OR basusr.base_id='", $lst_base_id) . "'\n                            )\n                         )\n                      )\n                  GROUP BY Users.id  ";
             $params = [];
         } elseif ($this->app['conf']->get(['registry', 'ftp', 'ftp-user-access'])) {
             $sql = "SELECT Users.id AS usr_id ,Users.login AS usr_login ,Users.email AS usr_mail, FtpCredential.*\n                  FROM (\n                    FtpCredential INNER JOIN Users ON (\n                        FtpCredential.active = 1 AND FtpCredential.id = Users.id\n                    ) INNER JOIN basusr ON (\n                        Users.id=basusr.usr_id\n                        AND Users.id = :usr_id\n                        AND (basusr.base_id=\n                        '" . implode("' OR basusr.base_id='", $lst_base_id) . "'\n                          )\n                        )\n                      )\n                  GROUP BY Users.id  ";
             $params = [':usr_id' => $app['authentication']->getUser()->getId()];
         }
         $datas[] = ['name' => $app->trans('export::ftp: reglages manuels'), 'usr_id' => '0', 'address' => '', 'login' => '', 'password' => '', 'ssl' => false, 'dest_folder' => '', 'prefix_folder' => 'Export_' . date("Y-m-d_H.i.s"), 'passive' => false, 'max_retry' => 5, 'sendermail' => $app['authentication']->getUser()->getEmail()];
         $stmt = $app['phraseanet.appbox']->get_connection()->prepare($sql);
         $stmt->execute($params);
         $rs = $stmt->fetchAll(PDO::FETCH_ASSOC);
         $stmt->closeCursor();
         foreach ($rs as $row) {
             $datas[] = ['name' => $row["usr_login"], 'usr_id' => $row['usr_id'], 'address' => $row['address'], 'login' => $row['login'], 'password' => $row['password'], 'ssl' => !!$row['tls'], 'dest_folder' => $row['reception_folder'], 'prefix_folder' => strlen(trim($row['repository_prefix_name'])) > 0 ? trim($row['repository_prefix_name']) : 'Export_' . date("Y-m-d_H.i.s"), 'passive' => !!$row['passive'], 'max_retry' => $row['max_retry'], 'usr_mail' => $row['usr_mail'], 'sender_mail' => $app['authentication']->getUser()->getEmail()];
         }
         $this->ftp_datas = $datas;
     }
     $this->display_orderable = $display_orderable;
     $this->display_download = $display_download;
     $this->display_ftp = $display_ftp;
     return $this;
 }
Esempio n. 14
0
 /**
  * Retrieve detailled informations about one story
  *
  * @param \record_adapter $story
  *
  * @return array
  */
 public function list_story(Application $app, Request $request, \record_adapter $story)
 {
     if (!$story->is_grouping()) {
         return Result::createError($request, 404, 'Story not found')->createResponse();
     }
     $that = $this;
     $records = array_map(function (\record_adapter $record) use($that, $app) {
         return $that->list_record($app, $record);
     }, array_values($story->get_children()->get_elements()));
     $caption = $story->get_caption();
     $format = function (\caption_record $caption, $dcField) {
         $field = $caption->get_dc_field($dcField);
         if (!$field) {
             return null;
         }
         return $field->get_serialized_values();
     };
     return ['@entity@' => self::OBJECT_TYPE_STORY, 'databox_id' => $story->get_sbas_id(), 'story_id' => $story->get_record_id(), 'updated_on' => $story->get_modification_date()->format(DATE_ATOM), 'created_on' => $story->get_creation_date()->format(DATE_ATOM), 'collection_id' => \phrasea::collFromBas($app, $story->get_base_id()), 'thumbnail' => $this->list_embedable_media($app, $story, $story->get_thumbnail()), 'uuid' => $story->get_uuid(), 'metadatas' => ['@entity@' => self::OBJECT_TYPE_STORY_METADATA_BAG, 'dc:contributor' => $format($caption, \databox_Field_DCESAbstract::Contributor), 'dc:coverage' => $format($caption, \databox_Field_DCESAbstract::Coverage), 'dc:creator' => $format($caption, \databox_Field_DCESAbstract::Creator), 'dc:date' => $format($caption, \databox_Field_DCESAbstract::Date), 'dc:description' => $format($caption, \databox_Field_DCESAbstract::Description), 'dc:format' => $format($caption, \databox_Field_DCESAbstract::Format), 'dc:identifier' => $format($caption, \databox_Field_DCESAbstract::Identifier), 'dc:language' => $format($caption, \databox_Field_DCESAbstract::Language), 'dc:publisher' => $format($caption, \databox_Field_DCESAbstract::Publisher), 'dc:relation' => $format($caption, \databox_Field_DCESAbstract::Relation), 'dc:rights' => $format($caption, \databox_Field_DCESAbstract::Rights), 'dc:source' => $format($caption, \databox_Field_DCESAbstract::Source), 'dc:subject' => $format($caption, \databox_Field_DCESAbstract::Subject), 'dc:title' => $format($caption, \databox_Field_DCESAbstract::Title), 'dc:type' => $format($caption, \databox_Field_DCESAbstract::Type)], 'records' => $records];
 }
 public function findReceivedValidationElementsByRecord(\record_adapter $record, User $user)
 {
     $dql = 'SELECT e
         FROM Phraseanet:BasketElement e
         JOIN e.basket b
         JOIN b.validation v
         JOIN v.participants p
         WHERE p.user = :usr_id
         AND e.record_id = :record_id
         AND e.sbas_id = :sbas_id';
     $params = ['sbas_id' => $record->get_sbas_id(), 'record_id' => $record->get_record_id(), 'usr_id' => $user->getId()];
     $query = $this->_em->createQuery($dql);
     $query->setParameters($params);
     return $query->getResult();
 }
Esempio n. 16
0
 public function testRecordsSetStatus()
 {
     self::$DI['app']['phraseanet.SE'] = $this->createSearchEngineMock();
     $this->setToken($this->userAccessToken);
     $route = '/api/v1/records/' . self::$DI['record_1']->get_sbas_id() . '/' . self::$DI['record_1']->get_record_id() . '/setstatus/';
     $record_status = strrev(self::$DI['record_1']->get_status());
     $statusStructure = self::$DI['record_1']->getStatusStructure();
     $tochange = [];
     foreach ($statusStructure as $n => $datas) {
         $tochange[$n] = substr($record_status, $n - 1, 1) == '0' ? '1' : '0';
     }
     $this->evaluateMethodNotAllowedRoute($route, ['GET', 'PUT', 'DELETE']);
     self::$DI['client']->request('POST', $route, $this->getParameters(['status' => $tochange]), [], ['HTTP_Accept' => $this->getAcceptMimeType()]);
     $content = $this->unserialize(self::$DI['client']->getResponse()->getContent());
     /**
      * Get fresh record_1
      */
     $testRecord = new \record_adapter(self::$DI['app'], self::$DI['record_1']->get_sbas_id(), self::$DI['record_1']->get_record_id());
     $this->evaluateResponse200(self::$DI['client']->getResponse());
     $this->evaluateMeta200($content);
     $this->evaluateRecordsStatusResponse($testRecord, $content);
     $record_status = strrev($testRecord->get_status());
     foreach ($statusStructure as $n => $datas) {
         $this->assertEquals(substr($record_status, $n, 1), $tochange[$n]);
     }
     foreach ($tochange as $n => $value) {
         $tochange[$n] = $value == '0' ? '1' : '0';
     }
     self::$DI['client']->request('POST', $route, $this->getParameters(['status' => $tochange]), [], ['HTTP_Accept' => $this->getAcceptMimeType()]);
     $content = $this->unserialize(self::$DI['client']->getResponse()->getContent());
     /**
      * Get fresh record_1
      */
     $testRecord = new \record_adapter(self::$DI['app'], $testRecord->get_sbas_id(), $testRecord->get_record_id());
     $this->evaluateResponse200(self::$DI['client']->getResponse());
     $this->evaluateMeta200($content);
     $this->evaluateRecordsStatusResponse($testRecord, $content);
     $record_status = strrev($testRecord->get_status());
     foreach ($statusStructure as $n => $datas) {
         $this->assertEquals(substr($record_status, $n, 1), $tochange[$n]);
     }
     self::$DI['record_1']->set_binary_status(str_repeat('0', 32));
 }
Esempio n. 17
0
 public function hasRecord(Application $app, \record_adapter $record)
 {
     foreach ($this->getElements() as $basket_element) {
         $bask_record = $basket_element->getRecord($app);
         if ($bask_record->get_record_id() == $record->get_record_id() && $bask_record->get_sbas_id() == $record->get_sbas_id()) {
             return true;
         }
     }
     return false;
 }
Esempio n. 18
0
 /**
  * @covers media_subdef::get_sbas_id
  */
 public function testGet_sbas_id()
 {
     $this->assertEquals(self::$recordonbleu->get_sbas_id(), self::$objectNotPresent->get_record()->get_sbas_id());
     $this->assertEquals(self::$recordonbleu->get_sbas_id(), self::$objectPresent->get_record()->get_sbas_id());
 }
Esempio n. 19
0
 /**
  * @covers Alchemy\Phrasea\Controller\Prod\Property::changeType
  */
 public function testChangeType()
 {
     $file = new File(self::$DI['app'], self::$DI['app']['mediavorus']->guess(__DIR__ . '/../../../../../files/cestlafete.jpg'), self::$DI['collection']);
     $record = \record_adapter::createFromFile($file, self::$DI['app']);
     $record2 = \record_adapter::createFromFile($file, self::$DI['app']);
     self::$DI['client']->request('POST', '/prod/records/property/type/', ['lst' => implode(';', [$record->get_serialize_key(), $record2->get_serialize_key()]), 'types' => [$record->get_serialize_key() => 'document', $record2->get_serialize_key() => 'flash']]);
     $response = self::$DI['client']->getResponse();
     $datas = (array) json_decode($response->getContent());
     $this->assertArrayHasKey('success', $datas);
     $this->assertTrue($datas['success']);
     $this->assertArrayHasKey('updated', $datas);
     $record = new \record_adapter(self::$DI['app'], $record->get_sbas_id(), $record->get_record_id());
     $record2 = new \record_adapter(self::$DI['app'], $record2->get_sbas_id(), $record2->get_record_id());
     $this->assertEquals('document', $record->get_type());
     $this->assertEquals('flash', $record2->get_type());
     $record->delete();
     $record2->delete();
     unset($response, $datas, $record2, $record, $file);
 }