Exemple #1
0
 private function recordFilter(module_report $report)
 {
     $this->filter['record'] = false;
     $dl_coll_filter = $params = [];
     $n = 0;
     if ($report->getUserId() != '') {
         $tab = explode(",", $report->getListCollId());
         foreach ($tab as $val) {
             $dl_coll_filter[] = "record.coll_id = :record_fil" . $n;
             $params[":record_fil" . $n] = phrasea::collFromBas($this->app, $val);
             $n++;
         }
         if (count($dl_coll_filter) > 0) {
             $this->filter['record'] = array('sql' => implode(' OR ', $dl_coll_filter), 'params' => $params);
         }
     }
     return;
 }
Exemple #2
0
 /**
  *
  * @return Array : list of deleted files;
  */
 public function delete()
 {
     $connbas = $this->get_databox()->get_connection();
     $ftodel = [];
     foreach ($this->get_subdefs() as $subdef) {
         if (!$subdef->is_physically_present()) {
             continue;
         }
         $ftodel[] = $subdef->get_pathfile();
         $watermark = $subdef->get_path() . 'watermark_' . $subdef->get_file();
         if (file_exists($watermark)) {
             $ftodel[] = $watermark;
         }
         $stamp = $subdef->get_path() . 'stamp_' . $subdef->get_file();
         if (file_exists($stamp)) {
             $ftodel[] = $stamp;
         }
     }
     $origcoll = phrasea::collFromBas($this->app, $this->get_base_id());
     $xml = $this->app['serializer.caption']->serialize($this->get_caption(), CaptionSerializer::SERIALIZE_XML);
     $this->app['phraseanet.logger']($this->get_databox())->log($this, Session_Logger::EVENT_DELETE, $origcoll, $xml);
     $sql = "DELETE FROM record WHERE record_id = :record_id";
     $stmt = $connbas->prepare($sql);
     $stmt->execute([':record_id' => $this->get_record_id()]);
     $stmt->closeCursor();
     $sql = "DELETE FROM metadatas WHERE record_id = :record_id";
     $stmt = $connbas->prepare($sql);
     $stmt->execute([':record_id' => $this->get_record_id()]);
     $stmt->closeCursor();
     $sql = "DELETE FROM prop WHERE record_id = :record_id";
     $stmt = $connbas->prepare($sql);
     $stmt->execute([':record_id' => $this->get_record_id()]);
     $stmt->closeCursor();
     $sql = "DELETE FROM idx WHERE record_id = :record_id";
     $stmt = $connbas->prepare($sql);
     $stmt->execute([':record_id' => $this->get_record_id()]);
     $stmt->closeCursor();
     $sql = "DELETE FROM permalinks\n            WHERE subdef_id\n              IN (SELECT subdef_id FROM subdef WHERE record_id=:record_id)";
     $stmt = $connbas->prepare($sql);
     $stmt->execute([':record_id' => $this->get_record_id()]);
     $stmt->closeCursor();
     $sql = "DELETE FROM subdef WHERE record_id = :record_id";
     $stmt = $connbas->prepare($sql);
     $stmt->execute([':record_id' => $this->get_record_id()]);
     $stmt->closeCursor();
     $sql = "DELETE FROM technical_datas WHERE record_id = :record_id";
     $stmt = $connbas->prepare($sql);
     $stmt->execute([':record_id' => $this->get_record_id()]);
     $stmt->closeCursor();
     $sql = "DELETE FROM thit WHERE record_id = :record_id";
     $stmt = $connbas->prepare($sql);
     $stmt->execute([':record_id' => $this->get_record_id()]);
     $stmt->closeCursor();
     $sql = "DELETE FROM regroup WHERE rid_parent = :record_id";
     $stmt = $connbas->prepare($sql);
     $stmt->execute([':record_id' => $this->get_record_id()]);
     $stmt->closeCursor();
     $sql = "DELETE FROM regroup WHERE rid_child = :record_id";
     $stmt = $connbas->prepare($sql);
     $stmt->execute([':record_id' => $this->get_record_id()]);
     $stmt->closeCursor();
     $orderElementRepository = $this->app['EM']->getRepository('Phraseanet:OrderElement');
     /* @var $repository Alchemy\Phrasea\Model\Repositories\OrderElementRepository */
     foreach ($orderElementRepository->findBy(['recordId' => $this->get_record_id()]) as $order_element) {
         if ($order_element->getSbasId($this->app) == $this->get_sbas_id()) {
             $this->app['EM']->remove($order_element);
         }
     }
     $basketElementRepository = $this->app['EM']->getRepository('Phraseanet:BasketElement');
     /* @var $repository Alchemy\Phrasea\Model\Repositories\BasketElementRepository */
     foreach ($basketElementRepository->findElementsByRecord($this) as $basket_element) {
         $this->app['EM']->remove($basket_element);
     }
     $this->app['EM']->flush();
     $this->app['filesystem']->remove($ftodel);
     $this->delete_data_from_cache(self::CACHE_SUBDEFS);
     return array_keys($ftodel);
 }
Exemple #3
0
 /**
  *
  * @param  Application $app
  * @param  int         $base_id
  * @return collection
  */
 public static function get_from_base_id(Application $app, $base_id)
 {
     $coll_id = phrasea::collFromBas($app, $base_id);
     $sbas_id = phrasea::sbasFromBas($app, $base_id);
     if (!$sbas_id || !$coll_id) {
         throw new Exception_Databox_CollectionNotFound(sprintf("Collection with base_id %s could not be found", $base_id));
     }
     $databox = $app['phraseanet.appbox']->get_databox($sbas_id);
     return self::get_from_coll_id($app, $databox, $coll_id);
 }
Exemple #4
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];
 }