=') && 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'); } function cfile_file_item_($param) { global $catalogs; if (($param['VISIBLE'] != 'no') && ($param['IMPORT'] == 'yes') || ($param['OUTPUT_PMBXML'] == 'yes')) { $catalogs[]= array( "name" => $param['NAME'], "path" => $param['PATH'] ); } } class cfile 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 $search_id; 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 var $url; var $username; var $password; //Résultat de la synchro var $error; //Y-a-t-il eu une erreur var $error_message; //Si oui, message correspondant function cfile($connector_path="") { parent::connector($connector_path); } function get_id() { return "cfile"; } //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, $basepath; $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; } } if (!isset($convert_type)) $convert_type = ""; //Lecture des différents imports possibles if (file_exists($basepath."admin/convert/imports/catalog_subst.xml")) $fic_catal = $basepath."admin/convert/imports/catalog_subst.xml"; else $fic_catal = $basepath."admin/convert/imports/catalog.xml"; global $catalogs; $catalogs=array(); _parser_($fic_catal,array("ITEM"=>"cfile_file_item_"),"CATALOG"); $convert_select = ''; $form = ""; $form .= "
".$convert_select."
"; $xsl_exemplaire_input = ""; if (isset($xslt_exemplaire)) { $xsl_exemplaire_input .= ''; } $xsl_exemplaire_input .= ' '; $form.="
".$xsl_exemplaire_input."
"; return $form; } function make_serialized_source_properties($source_id) { global $convert_type, $action_xsl_expl; $t = array(); $t["convert_type"] = $convert_type; if($action_xsl_expl == "keep") { $oldparams=$this->get_source_params($source_id); if ($oldparams["PARAMETERS"]) { //Affichage du formulaire avec $params["PARAMETERS"] $oldvars=unserialize($oldparams["PARAMETERS"]); } $t["xslt_exemplaire"] = $oldvars["xslt_exemplaire"]; } else { if (($_FILES["xsl_exemplaire"])&&(!$_FILES["xsl_exemplaire"]["error"])) { $axslt_info["name"] = $_FILES["xsl_exemplaire"]["name"]; $axslt_info["content"] = file_get_contents($_FILES["xsl_exemplaire"]["tmp_name"]); $t["xslt_exemplaire"] = $axslt_info; } } $this->sources[$source_id]["PARAMETERS"]=serialize($t); } //Récupération des proriétés globales par défaut du connecteur (timeout, retry, repository, parameters) function fetch_default_global_values() { $this->timeout=5; $this->repository=1; $this->retry=3; $this->ttl=1800; $this->parameters=""; } //Formulaire des propriétés générales function get_property_form() { $this->fetch_global_properties(); return ""; } function make_serialized_properties() { $this->parameters=""; } function rec_record($record,$source_id,$search_id) { global $charset,$base_path; $date_import=date("Y-m-d H:i:s",time()); $r=array(); //Inversion du tableau $r["rs"]=($record["RS"][0]["value"]?$record["RS"][0]["value"]:"*"); $r["ru"]=($record["RU"][0]["value"]?$record["RU"][0]["value"]:"*"); $r["el"]=($record["EL"][0]["value"]?$record["EL"][0]["value"]:"*"); $r["bl"]=($record["BL"][0]["value"]?$record["BL"][0]["value"]:"*"); $r["hl"]=($record["HL"][0]["value"]?$record["HL"][0]["value"]:"*"); $r["dt"]=($record["DT"][0]["value"]?$record["DT"][0]["value"]:"*"); $exemplaires = array(); for ($i=0; $idel_old) { $requete="select count(*) from entrepot_source_$source_id where ref='".addslashes($ref)."'"; $rref=mysql_query($requete); if ($rref) $ref_exists=mysql_result($rref,0,0); } //Si pas de conservation des anciennes notices, on supprime if ($this->del_old) { $requete="delete from entrepot_source_$source_id where ref='".addslashes($ref)."'"; mysql_query($requete); } //Si pas de conservation ou reférence inexistante if (($this->del_old)||((!$this->del_old)&&(!$ref_exists))) { //Insertion de l'entête $n_header["rs"]=$record["rs"]; $n_header["ru"]=$record["ru"]; $n_header["el"]=$record["el"]; $n_header["bl"]=$record["bl"]; $n_header["hl"]=$record["hl"]; $n_header["dt"]=$record["dt"]; //Récupération d'un ID $requete="insert into external_count (recid, source_id) values('".addslashes($this->get_id()." ".$source_id." ".$ref)."', $source_id)"; $rid=mysql_query($requete); if ($rid) $recid=mysql_insert_id(); foreach($n_header as $hc=>$code) { $requete="insert into entrepot_source_$source_id (connector_id,source_id,ref,date_import,ufield,usubfield,field_order,subfield_order,value,i_value,recid,search_id) values( '".addslashes($this->get_id())."',".$source_id.",'".addslashes($ref)."','".$date_import."', '".$hc."','',-1,0,'".addslashes($code)."','',$recid,'".addslashes($search_id)."')"; mysql_query($requete); } $field_order=0; foreach($exemplaires as $exemplaire) { $sub_field_order = 0; foreach($exemplaire as $exkey => $exvalue) { $requete="insert into entrepot_source_$source_id (connector_id,source_id,ref,date_import,ufield,usubfield,field_order,subfield_order,value,i_value,recid,search_id) values( '".addslashes($this->get_id())."',".$source_id.",'".addslashes($ref)."','".$date_import."', '996','".addslashes($exkey)."',".$field_order.",".$sub_field_order.",'".addslashes($exvalue)."', ' ".addslashes(strip_empty_words($exvalue))." ',$recid,'".addslashes($search_id)."')"; mysql_query($requete); $sub_field_order++; } $field_order++; } foreach ($record as $field=>$val) { for ($i=0; $i$vals) { for ($j=0; $jget_id())."',".$source_id.",'".addslashes($ref)."','".$date_import."', '".addslashes($field)."','".addslashes($sfield)."',".$field_order.",".$j.",'".addslashes($vals[$j])."', ' ".addslashes(strip_empty_words($vals[$j]))." ',$recid,'".addslashes($search_id)."')"; mysql_query($requete); } } } else { $requete="insert into entrepot_source_$source_id (connector_id,source_id,ref,date_import,ufield,usubfield,field_order,subfield_order,value,i_value,recid,search_id) values( '".addslashes($this->get_id())."',".$source_id.",'".addslashes($ref)."','".$date_import."', '".addslashes($field)."','',".$field_order.",0,'".addslashes($val[$i])."', ' ".addslashes(strip_empty_words($val[$i]))." ',$recid,'".addslashes($search_id)."')"; mysql_query($requete); } $field_order++; } } } } } function cancel_maj($source_id) { return false; } function break_maj($source_id) { return false; } function form_pour_maj_entrepot($source_id) { global $base_path, $id; //Allons chercher plein d'informations utiles et amusantes $params=$this->get_source_params($source_id); $this->fetch_global_properties(); if ($params["PARAMETERS"]) { $vars=unserialize($params["PARAMETERS"]); foreach ($vars as $key=>$val) { global $$key; $$key=$val; } } if (!isset($convert_type)) $convert_type = "none_unimarc"; $form = ""; switch ($convert_type) { case "none_unimarc": //On importe de l'unimarc direct $form .= '
'; $form .= ''; $form .= ''; // $form .= ""; break; case "none_xml": //On importe du pmb-XML unimarc direct $form .= '
'; $form .= ''; $form .= ''; // $form .= ""; break; default: //Une conversion est nécéssaire $form .= '
'; $form .= ''; $form .= ''; $form .= ""; break; } $form .= "

"; return $form; } //Nécessaire pour passer les valeurs obtenues dans form_pour_maj_entrepot au javascript asynchrone function get_maj_environnement($source_id) { global $outputtype, $import_type; global $base_path; $envt=array(); //Copie du fichier dans le répertoire temporaire $origine=str_replace(" ","",microtime()); $origine=str_replace("0.","",$origine); if ($_FILES['import_file']['name']) { if (!@copy($_FILES['import_file']['tmp_name'], "$base_path/temp/".$origine.$_FILES['import_file']['name'])) { error_message_history($msg["ie_tranfert_error"], $msg["ie_transfert_error_detail"], 1); exit; } else $file_in = $origine.$_FILES['import_file']['name']; } $envt["file_in"] = $file_in; if (!$import_type) $envt["outputtype"] = $outputtype; $envt["import_type"] = $import_type; $envt["origine"] = $origine; return $envt; } function sync_custom_page($source_id) { global $base_path, $id, $file_in, $origine; //Allons chercher plein d'informations utiles et amusantes $params=$this->get_source_params($source_id); $this->fetch_global_properties(); if ($params["PARAMETERS"]) { $vars=unserialize($params["PARAMETERS"]); foreach ($vars as $key=>$val) { global $$key; $$key=$val; } } if (!isset($convert_type)) $convert_type = ""; //Convertissons le $convert_type en un nombre, vu que c'est ce que mange le script d'import $convert_type; $env = $this->get_maj_environnement($source_id); $file_in = $env["file_in"]; $redirect_url = "../../admin.php?categ=connecteurs&sub=in&act=sync&source_id=".$source_id."&go=1&id=$id&env=".urlencode(serialize($env)); $content = ""; $content .= '' . '