type != $val["t"]){ return false; } //On enregistre la valeur au bon endroit switch ($cp->type) { case "list": //On est sur une liste switch ($cp->datatype) { case "integer": $requete="select ".$type."_custom_list_value from ".$type."_custom_lists where ".$type."_custom_list_lib='".addslashes(trim($valeur))."' and ".$type."_custom_champ='".$cp->idchamp."' "; $resultat=pmb_mysql_query($requete); if (pmb_mysql_num_rows($resultat)) { $value2=pmb_mysql_result($resultat,0,0); } else { $requete="select max(".$type."_custom_list_value*1) from ".$type."_custom_lists where ".$type."_custom_champ='".$cp->idchamp."' "; $resultat=pmb_mysql_query($requete); $max=@pmb_mysql_result($resultat,0,0); $n=$max+1; $requete="insert into ".$type."_custom_lists (".$type."_custom_champ,".$type."_custom_list_value,".$type."_custom_list_lib) values('".$cp->idchamp."',$n,'".addslashes(trim($valeur))."')"; if(!pmb_mysql_query($requete)) return false; $value2=$n; } $requete="insert into ".$type."_custom_values (".$type."_custom_champ,".$type."_custom_origine,".$type."_custom_integer) values('".$cp->idchamp."','".$notice_id."','".$value2."')"; if(!pmb_mysql_query($requete)) return false; break; default: $requete="select ".$type."_custom_list_value from ".$type."_custom_lists where ".$type."_custom_list_lib='".addslashes(trim($valeur))."' and ".$type."_custom_champ='".$cp->idchamp."' "; $resultat=pmb_mysql_query($requete); if (pmb_mysql_num_rows($resultat)) { $value2=pmb_mysql_result($resultat,0,0); } else { $requete="select ".$type."_custom_list_value from ".$type."_custom_lists where ".$type."_custom_list_value='".addslashes(trim($valeur))."' and ".$type."_custom_champ='".$cp->idchamp."' "; $resultat=pmb_mysql_query($requete); if (pmb_mysql_num_rows($resultat)) { $value2=pmb_mysql_result($resultat,0,0); } else { $requete="insert into ".$type."_custom_lists (".$type."_custom_champ,".$type."_custom_list_value,".$type."_custom_list_lib) values('".$cp->idchamp."','".addslashes(trim($valeur))."','".addslashes($valeur)."')"; if(!pmb_mysql_query($requete)) return false; $value2=trim($valeur); } } $requete="insert into ".$type."_custom_values (".$type."_custom_champ,".$type."_custom_origine,".$type."_custom_".$cp->datatype.") values('".$cp->idchamp."','".$notice_id."','".$value2."')"; if(!pmb_mysql_query($requete)) return false; break; } break; case "url": $requete="insert into ".$type."_custom_values (".$type."_custom_champ,".$type."_custom_origine,".$type."_custom_".$cp->datatype.") values('".$cp->idchamp."','".$notice_id."','".addslashes(trim($val["c"]))."')"; if(!pmb_mysql_query($requete)) return false; break; case "resolve": $mes_pp= new parametres_perso($type); if($mes_pp->get_formatted_output(array($val["c"]),$cp->idchamp) == $val["b"]){ $requete="insert into ".$type."_custom_values (".$type."_custom_champ,".$type."_custom_origine,".$type."_custom_".$cp->datatype.") values('".$cp->idchamp."','".$notice_id."','".addslashes($val["c"])."')"; if(!pmb_mysql_query($requete)) return false; }else{ return false; } break; case "query_list": case "query_auth": $mes_pp= new parametres_perso($type); if($mes_pp->get_formatted_output(array($val["c"]),$cp->idchamp) == $valeur){ $requete="insert into ".$type."_custom_values (".$type."_custom_champ,".$type."_custom_origine,".$type."_custom_".$cp->datatype.") values('".$cp->idchamp."','".$notice_id."','".addslashes($val["c"])."')"; if(!pmb_mysql_query($requete)) return false; }else{ return false; } break; default: switch ($cp->datatype) { case "small_text": $requete="insert into ".$type."_custom_values (".$type."_custom_champ,".$type."_custom_origine,".$type."_custom_small_text) values('".$cp->idchamp."','".$notice_id."','".addslashes(trim($valeur))."')"; if(!pmb_mysql_query($requete)) return false; break; case "int": case "integer": $requete="insert into ".$type."_custom_values (".$type."_custom_champ,".$type."_custom_origine,".$type."_custom_integer) values('".$cp->idchamp."','".$notice_id."','".addslashes(trim($valeur))."')"; if(!pmb_mysql_query($requete)) return false; break; case "text": $requete="insert into ".$type."_custom_values (".$type."_custom_champ,".$type."_custom_origine,".$type."_custom_text) values('".$cp->idchamp."','".$notice_id."','".addslashes(trim($valeur))."')"; if(!pmb_mysql_query($requete)) return false; break; case "date": $requete="insert into ".$type."_custom_values (".$type."_custom_champ,".$type."_custom_origine,".$type."_custom_date) values('".$cp->idchamp."','".$notice_id."','".addslashes(decoupe_date(trim($valeur)))."')"; if(!pmb_mysql_query($requete)) return false; break; } break; } return true; } function recup_noticeunimarc_suite($notice) { global $infos_4XX; global $bl,$hl,$isbn_only,$isbn_dedoublonnage; global $tit_200a,$serie_200; global $info_003; global $info_900; global $info_336, $info_337; global $issn_011; if(!$isbn_dedoublonnage || ($isbn_only == 1)){ $issn_011[0].="_pasToucheACa"; } $zones = array( 412, 413, 421, 422, 423, 430, 431, 432, 433, 434, 435, 436, 437, 440, 441, 442, 443, 444, 445, 446, 447, 451, 451, 452, 452, 453, 454, 455, 456, 520 ); $infos_4XX = array(); $info_003 = array(); $record = new iso2709_record($notice, AUTO_UPDATE); $bl=$record->inner_guide['bl']; $hl=$record->inner_guide['hl']; $info_003=$record->get_subfield("003"); $info_336=$record->get_subfield("336","a"); $info_337=$record->get_subfield("337","a"); foreach($zones as $zone){ $infos_4XX[$zone] = $record->get_subfield($zone,"0","t","x"); } $info_105=$record->get_subfield("105","a"); if(trim($info_105[0])){ //Illustration if(($tmp=substr($info_105[0],0,1)) && $tmp != "|"){ $val=array(); $val["a"]=$tmp; $val["t"]="list"; $val["n"]="cp_105_illustration"; $info_900[]=$val; } if(($tmp=substr($info_105[0],1,1)) && $tmp != "|"){ $val=array(); $val["a"]=$tmp; $val["t"]="list"; $val["n"]="cp_105_illustration"; $info_900[]=$val; } if(($tmp=substr($info_105[0],2,1)) && $tmp != "|"){ $val=array(); $val["a"]=$tmp; $val["t"]="list"; $val["n"]="cp_105_illustration"; $info_900[]=$val; } if(($tmp=substr($info_105[0],3,1)) && $tmp != "|"){ $val=array(); $val["a"]=$tmp; $val["t"]="list"; $val["n"]="cp_105_illustration"; $info_900[]=$val; } //Nature if(($tmp=substr($info_105[0],4,1)) && $tmp != "|"){ $val=array(); $val["a"]=$tmp; $val["t"]="list"; $val["n"]="cp_105_nature"; $info_900[]=$val; } if(($tmp=substr($info_105[0],5,1)) && $tmp != "|"){ $val=array(); $val["a"]=$tmp; $val["t"]="list"; $val["n"]="cp_105_nature"; $info_900[]=$val; } if(($tmp=substr($info_105[0],6,1)) && $tmp != "|"){ $val=array(); $val["a"]=$tmp; $val["t"]="list"; $val["n"]="cp_105_nature"; $info_900[]=$val; } if(($tmp=substr($info_105[0],7,1)) && $tmp != "|"){ $val=array(); $val["a"]=$tmp; $val["t"]="list"; $val["n"]="cp_105_nature"; $info_900[]=$val; } //Info if(substr($info_105[0],8,1) == "1"){ $val=array(); $val["a"]="Congrès"; $val["t"]="list"; $val["n"]="cp_105_info"; $info_900[]=$val; } if(substr($info_105[0],9,1) == "1"){ $val=array(); $val["a"]="Constitué de mélange"; $val["t"]="list"; $val["n"]="cp_105_info"; $info_900[]=$val; } if(substr($info_105[0],10,1) == "1"){ $val=array(); $val["a"]="Contient un index"; $val["t"]="list"; $val["n"]="cp_105_info"; $info_900[]=$val; } //Genre if(($tmp=substr($info_105[0],11,1)) && $tmp != "|"){ $val=array(); $val["a"]=$tmp; $val["t"]="list"; $val["n"]="cp_105_genre"; $info_900[]=$val; } //biblio if(($tmp=substr($info_105[0],12,1)) && $tmp != "|"){ $val=array(); $val["a"]=$tmp; $val["t"]="list"; $val["n"]="cp_105_biblio"; $info_900[]=$val; } } $info_110=$record->get_subfield("110","a"); if(trim($info_110[0])){ $val=array(); $val["a"]=$info_110[0]; $val["t"]="text"; $val["n"]="cp_110"; $info_900[]=$val; //Type de ressource continue if(($tmp=substr($info_110[0],0,1)) && $tmp != "|"){ $val=array(); $val["a"]=$tmp; $val["t"]="list"; $val["n"]="cp_110_typePer"; $info_900[]=$val; } //Périodicité if(($tmp=substr($info_110[0],1,1)) && $tmp != "|"){ $val=array(); $val["a"]=$tmp; $val["t"]="list"; $val["n"]="cp_110_periodicite"; $info_900[]=$val; } //Régularité if(($tmp=substr($info_110[0],2,1)) && $tmp != "|"){ $val=array(); $val["a"]=$tmp; $val["t"]="list"; $val["n"]="cp_110_regularite"; $info_900[]=$val; } //Type de publication de référence if(($tmp=substr($info_110[0],3,1)) && $tmp != "|"){ $val=array(); $val["a"]=$tmp; $val["t"]="list"; $val["n"]="cp_110_typepubli"; $info_900[]=$val; } //Nature du contenu if(($tmp=substr($info_110[0],4,1)) && $tmp != "|"){ $val=array(); $val["a"]=$tmp; $val["t"]="list"; $val["n"]="cp_110_contenu"; $info_900[]=$val; } if(($tmp=substr($info_110[0],5,1)) && $tmp != "|"){ $val=array(); $val["a"]=$tmp; $val["t"]="list"; $val["n"]="cp_110_contenu"; $info_900[]=$val; } if(($tmp=substr($info_110[0],6,1)) && $tmp != "|"){ $val=array(); $val["a"]=$tmp; $val["t"]="list"; $val["n"]="cp_110_contenu"; $info_900[]=$val; } //Congres $tmp=substr($info_110[0],7,1); if(($tmp !== "") && $tmp != "|"){ $val=array(); $val["a"]=$tmp; $val["t"]="list"; $val["n"]="cp_110_congres"; $info_900[]=$val; } } $info_135=$record->get_subfield("135","a"); if(trim($info_135[0])){ //Type de contenu electronique $tmp=substr($info_135[0],0,1); if(($tmp !== "") && $tmp != "|"){ $val=array(); $val["a"]=$tmp; $val["t"]="list"; $val["n"]="cp_135_type"; $info_900[]=$val; } //Support $tmp=substr($info_135[0],1,1); if(($tmp !== "") && $tmp != "|"){ $val=array(); $val["a"]=$tmp; $val["t"]="list"; $val["n"]="cp_135_support"; $info_900[]=$val; } } //pour les monographies, le 200$a et 200$i s'inverse... if($bl == "m"){ if(clean_string($serie_200[0]['i']) != ""){ $tmp_buffer = $serie_200[0]['i']; $serie_200[0]['i'] = $tit_200a[0]; $tit_200a[0] = $tmp_buffer; } } } function import_new_notice_suite() { global $dbh ; global $notice_id ; global $bl,$hl; global $infos_4XX; global $hierarchic_level; global $bibliographic_level ; global $doc_type; global $origine_notice; global $notices_crees; global $issn_011,$info_900; global $tit_200a; global $isbn; global $statutnot; global $info_003; global $info_336, $info_337; global $isbn_only,$isbn_dedoublonnage; if(isset($bibliographic_level) && isset($hierarchic_level)){ $niveau_biblio = $bibliographic_level.$hierarchic_level; }else{ $niveau_biblio =$bl.$hl; } //num_notice = fille //linked_notice = mere $sens = array( 'mother' => array( "linked_notice", "num_notice" ), 'child' => array( "num_notice", "linked_notice" ) ); $link_type = array( '412' => array( 'code' => "v", 'sens_link' => "child" ), '413' => array( 'code' => "v", 'sens_link' => "mother" ), '421' => array( 'code' => "e", 'sens_link' => "mother" ), '422' => array( 'code' => "e", 'sens_link' => "child" ), '423' => array( 'code' => "k", 'sens_link' => "child" ), '430' => array( 'code' => "l", 'sens_link' => "child" ), '431' => array( 'code' => "o", 'sens_link' => "mother" ), '432' => array( 'code' => "t", 'sens_link' => "child" ), '433' => array( 'code' => "o", 'sens_link' => "mother" ), '434' => array( 'code' => "m", 'sens_link' => "child" ), '435' => array( 'code' => "s", 'sens_link' => "child" ), '436' => array( 'code' => "n", 'sens_link' => "mother" ), '437' => array( 'code' => "o", 'sens_link' => "mother" ), '440' => array( 'code' => "l", 'sens_link' => "mother" ), '441' => array( 'code' => "o", 'sens_link' => "child" ), '442' => array( 'code' => "t", 'sens_link' => "mother" ), '443' => array( 'code' => "o", 'sens_link' => "child" ), '444' => array( 'code' => "m", 'sens_link' => "mother" ), '445' => array( 'code' => "s", 'sens_link' => "mother" ), '446' => array( 'code' => "o", 'sens_link' => "child" ), '447' => array( 'code' => "n", 'sens_link' => "child" ), '451' => array( 'code' => "u", 'sens_link' => "child" ), '452' => array( 'code' => "p", 'sens_link' => "child" ), '453' => array( 'code' => "h", 'sens_link' => "mother" ), '454' => array( 'code' => "h", 'sens_link' => "child" ), '455' => array( 'code' => "q", 'sens_link' => "mother" ), '456' => array( 'code' => "q", 'sens_link' => "child" ), '520' => array( 'code' => "f", 'sens_link' => "child" ) ); //dédoublonnage ! if($isbn && $isbn_dedoublonnage){ $query = "select notice_id from notices where code like '".$isbn."' and notice_id != ".$notice_id; $result = pmb_mysql_query($query); if(pmb_mysql_num_rows($result)){ $row = pmb_mysql_fetch_object($result); notice::del_notice($notice_id); $notice_id = $row->notice_id; pmb_mysql_query("insert into error_log (error_origin, error_text) values ('import_expl_".addslashes(SESSid).".inc', '".addslashes("La notice (".$tit_200a[0].", ".$isbn.") n'a pas été reprise car elle existe déjà en base (notice id: ".$notice_id.")")."') ") ; } } if(!$isbn_dedoublonnage || ($isbn_only == 1)){ $rq="UPDATE notices SET code=REPLACE(code, '_pasToucheACa', '') WHERE notice_id = ".$notice_id; pmb_mysql_query($rq); }elseif($issn_011[0]){ $query = "select notice_id from notices where code like '".$issn_011[0]."' and notice_id != ".$notice_id; $result = pmb_mysql_query($query); if(pmb_mysql_num_rows($result)){ while($row = pmb_mysql_fetch_object($result)){ if(in_array($row->notice_id,$notices_crees)){ $old = new notice($row->notice_id); $old->replace($notice_id); $tab = array_flip($notices_crees); unset($tab[$row->notice_id]); $notices_crees = array_flip($tab); }else{ notice::del_notice($notice_id); $notice_id = $row->notice_id; pmb_mysql_query("insert into error_log (error_origin, error_text) values ('import_expl_".addslashes(SESSid).".inc', '".addslashes("La notice (".$tit_200a[0].", ".$isbn.") n'a pas été reprise car elle existe déjà en base (notice id: ".$notice_id.")")."') ") ; } } } } $n_gen_plus=""; if(count($info_336)){ foreach ( $info_336 as $value ) { if($tmp=trim($value)){ if($n_gen_plus)$n_gen_plus.="\n"; $n_gen_plus.=$tmp; } } } if(count($info_337)){ foreach ( $info_337 as $value ) { if($tmp=trim($value)){ if($n_gen_plus)$n_gen_plus.="\n"; $n_gen_plus.=$tmp; } } } if($n_gen_plus){ $requ="UPDATE notices SET n_gen=IF(n_gen != '',CONCAT(n_gen,'\n".addslashes($n_gen_plus)."'),'".addslashes($n_gen_plus)."') WHERE notice_id = ".$notice_id; if(!pmb_mysql_query($requ)){ echo "Requête echoué: ".$requ."
"; } } switch($niveau_biblio){ case "s1" : case "s0" : foreach($infos_4XX as $key => $children){ foreach($children as $child){ $issn = ""; //on commence par chercher si la notice existe $issn = traite_code_ISSN($child['x']); if($issn){ $query = "select notice_id from notices where code ='".$issn."' and niveau_biblio = 's' and niveau_hierar = '1'"; $result = pmb_mysql_query($query); if(!pmb_mysql_num_rows($result)){ //la notice n'existe pas, il faut la créer... /* Origine de la notice */ $origine_not['nom']=clean_string($origine_notice[0]['b']); $origine_not['pays']=clean_string($origine_notice[0]['a']); $orinot_id = origine_notice::import($origine_not); if ($orinot_id==0) $orinot_id=1 ; $query = "insert into notices set typdoc = '".$doc_type."', tit1 = '".addslashes(clean_string($child['t']))."', code = '".$issn."', niveau_biblio = 's', niveau_hierar = '1', statut = ".$statutnot.", origine_catalogage = '".$orinot_id."', create_date = sysdate(), update_date = sysdate() "; pmb_mysql_query($query); $child_id = pmb_mysql_insert_id(); $notices_crees[$child[0]]=$child_id; notice::majNotices($child_id); notice::majNoticesGlobalIndex($child_id); notice::majNoticesMotsGlobalIndex($child_id); }else{ $child_id = pmb_mysql_result($result,0,0); } if($child_id){ // on regarde si une relation similaire existe déjà... $query = "select relation_type from notices_relations where relation_type = '".$link_type[$key]['code']."' and ((num_notice = ".$notice_id." and linked_notice = ".$child_id.") or (num_notice = ".$child_id." and linked_notice = ".$notice_id."))"; $result = pmb_mysql_query($query); if(!pmb_mysql_num_rows($result)){ $rank = 0; $query = "select count(rank) from notices_relations where relation_type = '".$link_type[$key]['code']."' and "; if($link_type[$key]['sens_link'] == "mother"){ $query.= "num_notice = ".$child_id; }else{ $query.= "num_notice = ".$notice_id; } $result = pmb_mysql_query($query); if(pmb_mysql_num_rows($result)) $rank = pmb_mysql_result($result,0,0); if($sens[$link_type[$key]['sens_link']][0] == 'num_notice') { notice_relations::insert_from_import($notice_id, $child_id, $link_type[$key]['code'], ($rank+1)); } else { notice_relations::insert_from_import($child_id, $notice_id, $link_type[$key]['code'], ($rank+1)); } } } } } } break; } if(count($info_900)){ for($i=0;$i