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; }
/** * * @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); }
/** * * @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); }
/** * 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]; }