function fetchNoticeListArray($noticelist, $recordCharset, $includeLinks, $includeItems) { //Je filtre les notices en fonction des droits $noticelist = $this->filter_tabl_notices($noticelist); if (!count($noticelist)) { return array(); } $converter = new external_services_converter_notices(1, 600); $converter->set_params(array("include_links" => $includeLinks, "include_items" => $includeItems, "include_authorite_ids" => true)); $keyed_results = $converter->convert_batch($noticelist, "raw_array", $recordCharset); $array_results = array_values($keyed_results); return $array_results; }
function convert_batch_to_oairecords($notices_to_convert, $format, $target_charset) { global $dbh; if (!$notices_to_convert) { //Rien à faire? On fait rien return; } //Allons chercher les dates et les statuts des notices $notice_datestamps = array(); $notice_statuts = array(); $notice_ids = $notices_to_convert; //Par paquets de 100 pour ne pas brusquer mysql $notice_idsz = array_chunk($notice_ids, 100); $iso8601 = new iso8601("YYYY-MM-DDThh:mm:ssZ"); foreach ($notice_idsz as $anotice_ids) { $sql = "SELECT notice_id, UNIX_TIMESTAMP(update_date) AS datestamp, statut FROM notices WHERE notice_id IN (" . implode(",", $anotice_ids) . ")"; $res = pmb_mysql_query($sql, $dbh); while ($row = pmb_mysql_fetch_assoc($res)) { $notice_datestamps[$row["notice_id"]] = $iso8601->unixtime_to_iso8601($row["datestamp"]); $notice_statuts[$row["notice_id"]] = $row["statut"]; } } //Si il existe un status correspondant à la suppression, on génère ces enregistrements et on les supprime de la liste à générer. if ($this->deleted_record_statut) { $deleted_records = array(); foreach ($notice_statuts as $notice_id => $anotice_statut) { if ($anotice_statut == $this->deleted_record_statut) { $notice_sets = connector_out_set_noticecaddie::get_notice_setlist($notice_id); $notice_sets = array_intersect($notice_sets, $this->source_set_ids); $deleted_records = array('datestamp' => $datestamps[$notice_id], 'sets' => $notice_sets); unset($notices_to_convert[array_search($notice_id, $notices_to_convert)]); } } } else { if ($this->deletion_management) { $deleted_records = $this->get_deleted_records($this->source_set_ids, $notices_to_convert, $iso8601); } } // On génère les enregistrements supprimés foreach ($deleted_records as $notice_id => $deleted_record) { $oai_record = ""; $oai_record .= "<record>"; $oai_record .= '<header status="deleted"> <identifier>oai:' . XMLEntities($this->repository_identifier) . ':' . $notice_id . '</identifier> <datestamp>' . $deleted_record['datestamp'] . '</datestamp>'; foreach ($deleted_record['sets'] as $aset_id) { $oai_record .= "<setSpec>set_" . $aset_id . "</setSpec>"; } $oai_record .= '</header>'; $oai_record .= "</record>"; $this->results[$notice_id] = $oai_record; } //Convertissons les notices au format demandé si on ne souhaite pas uniquement les entêtes $only_identifier = $format == "__oai_identifier"; if (!$only_identifier) { $converter = new external_services_converter_notices(1, $this->set_life_duration); $converter->params["include_items"] = $this->include_items; $converter->params["include_links"] = $this->include_links; $metadatas = $converter->convert_batch($notices_to_convert, $format, $target_charset, $this->xslt); } //Fabriquons les enregistrements foreach ($notices_to_convert as $notice_id) { $notice_sets = connector_out_set_noticecaddie::get_notice_setlist($notice_id); $notice_sets = array_intersect($notice_sets, $this->source_set_ids); $oai_record = ""; if (!$only_identifier) { $oai_record .= "<record>"; } $oai_record .= '<header> <identifier>oai:' . XMLEntities($this->repository_identifier) . ':' . $notice_id . '</identifier> <datestamp>' . $notice_datestamps[$notice_id] . '</datestamp>'; foreach ($notice_sets as $aset_id) { $oai_record .= "<setSpec>set_" . $aset_id . "</setSpec>"; } $oai_record .= '</header>'; if (!$only_identifier) { $oai_record .= "<metadata>"; $oai_record .= $metadatas[$notice_id]; $oai_record .= "</metadata>"; } if (!$only_identifier) { $oai_record .= "</record>"; } $this->results[$notice_id] = $oai_record; } }
function noticeids_to_recordformats($noticesids, $record_format, $recordcharset = 'iso-8859-1', $includeLinks = true, $includeItems = false) { $converter = new external_services_converter_notices(1, 600); $converter->set_params(array("include_links" => $includeLinks, "include_items" => $includeItems, "include_authorite_ids" => true)); return $converter->convert_batch($noticesids, $record_format, $recordcharset); }