=') && extension_loaded('xsl')) { if (substr(phpversion(), 0, 1) == "5") @ini_set("zend.ze1_compatibility_mode", "0"); require_once($include_path.'/xslt-php4-to-php5.inc.php'); } class oai extends connector { //Variables internes pour la progression de la récupération des notices var $callback_progress; //Nom de la fonction de callback progression passée par l'appellant var $current_set; //Set en cours de synchronisation var $total_sets; //Nombre total de sets sélectionnés var $metadata_prefix; //Préfixe du format de données courant var $source_id; //Numéro de la source en cours de synchro var $n_recu; //Nombre de notices reçues var $xslt_transform; //Feuille xslt transmise var $sets_names; //Nom des sets pour faire plus joli !! var $del_old; //Supression ou non des notices dejà existantes //Résultat de la synchro var $error; //Y-a-t-il eu une erreur var $error_message; //Si oui, message correspondant function oai($connector_path="") { parent::connector($connector_path); } function get_id() { return "oai"; } //Est-ce un entrepot ? function is_repository() { return 1; } function unserialize_source_params($source_id) { $params=$this->get_source_params($source_id); if ($params["PARAMETERS"]) { $vars=unserialize($params["PARAMETERS"]); $params["PARAMETERS"]=$vars; } return $params; } function source_get_property_form($source_id) { global $charset; $params=$this->get_source_params($source_id); if ($params["PARAMETERS"]) { //Affichage du formulaire avec $params["PARAMETERS"] $vars=unserialize($params["PARAMETERS"]); foreach ($vars as $key=>$val) { global $$key; $$key=$val; } } $form="
"; $form .= " ".$this->msg["oai_get_notices"].""; return $form; } //Nécessaire pour passer les valeurs obtenues dans form_pour_maj_entrepot au javascript asynchrone function get_maj_environnement($source_id) { global $form_from; global $form_until; global $form_radio; $envt=array(); $envt["form_from"]=$form_from; $envt["form_until"]=$form_until; $envt["form_radio"]=$form_radio; return $envt; } function maj_entrepot($source_id,$callback_progress="",$recover=false,$recover_env="") { global $charset; global $form_from, $form_until, $form_radio; $this->callback_progress=$callback_progress; $params=$this->unserialize_source_params($source_id); $p=$params["PARAMETERS"]; $this->metadata_prefix=$p["formats"]; $this->source_id=$source_id; $this->n_recu=0; $this->xslt_transform=$p["xsl_transform"]["code"]; //Connexion $oai20=new oai20($p["url"],$charset,$params["TIMEOUT"],$p["clean_base_url"]); if (!$oai20->error) { if ($recover) { $envt=unserialize($recover_env); $sets=$envt["sets"]; $date_start=$envt["date_start"]; $date_end=$envt["date_end"]; $this->del_old=false; } else { //Affectation de la date de départ if ($form_radio == "last_sync") { //Recherche de la dernière date... $requete="select unix_timestamp(max(date_import)) from entrepot_source_".$source_id." where 1;"; $resultat=mysql_query($requete); if (mysql_num_rows($resultat)) { $last_date=mysql_result($resultat,0,0); if ($last_date) { //En fonction de la granularité, on ajoute une seconde ou un jour ! if ($oai20->granularity=="YYYY-MM-DD") $last_date+=3600*24; else $last_date+=1; } else { $earliest_date=new iso8601($oai20->granularity); $last_date=$earliest_date->iso8601_to_unixtime($oai20->earliestDatestamp); } } else { $earliest_date=new iso8601($oai20->granularity); $last_date=$earliest_date->iso8601_to_unixtime($oai20->earliestDatestamp); } $date_start=$last_date; } else { if ($form_from) $date_start=strtotime($form_from); if ($form_until) $date_end = strtotime($form_until); else $date_end = ''; } //Recherche des sets sélectionnés $this->sets_names=$oai20->sets; for ($i=0; $i
".$this->msg["oai_last_sync"]."
".$this->msg["oai_between_part1"]."
(facultatif)
".$this->msg["oai_between_part2"]."
(facultatif)
"; $form .= sprintf($this->msg["oai_syncinfo_date_serverearlyiest"], formatdate(date("Y-m-d",$earliestdate))); $form .= "
".sprintf($this->msg["oai_syncinfo_date_baserecent"], $latest_date_database_string); $form .= "