function from_unimarc($record) { $this->document_type = $record->inner_guide[dt]; $this->bibliographic_level = $record->inner_guide[bl]; $this->hierarchic_level = $record->inner_guide[hl]; if ($this->hierarchic_level == "") { if ($this->bibliographic_level == "s") { $this->hierarchic_level = "1"; } if ($this->bibliographic_level == "m") { $this->hierarchic_level = "0"; } } if (function_exists("param_perso_prepare")) { param_perso_prepare($record); } $indicateur = array(); for ($i = 0; $i < count($record->inner_directory); $i++) { $cle = $record->inner_directory[$i]['label']; $indicateur[$cle][] = substr($record->inner_data[$i]['content'], 0, 2); switch ($cle) { case "010": /* isbn */ $isbn = $record->get_subfield($cle, 'a'); $subfield = $record->get_subfield($cle, "d"); $this->prix = $subfield[0]; case "011": /* isbn */ $isbn = $record->get_subfield($cle, 'a'); break; case "014": /* isbn */ $this->others_ids = $record->get_subfield($cle, 'a', 'b'); break; case "071": /* barcode */ $cb = $record->get_subfield($cle, "a"); break; case "101": /* language */ //martizva NOTE: some server send language in UPCASE!!! // $subfield = $record->get_subfield($cle,"a"); // $this->language_code = strtolower($subfield[0]); // $subfield = $record->get_subfield($cle,"c"); // $this->original_language_code = strtolower($subfield[0]); $this->language_code = $record->get_subfield_array($cle, "a"); $this->original_language_code = $record->get_subfield_array($cle, "c"); break; case "200": /* titles */ $tit = $record->get_subfield($cle, 'a', 'c', 'd', 'e', 'v'); $tit_200a = $record->get_subfield_array($cle, 'a'); $tit_200c = $record->get_subfield_array($cle, 'c'); $tit_200d = $record->get_subfield_array($cle, 'd'); $tit_200e = $record->get_subfield_array($cle, 'e'); $tit_200v = $record->get_subfield_array($cle, 'v'); $this->serie_200 = $record->get_subfield($cle, 'h', 'i'); break; case "205": /* mention_edition */ $subfield = $record->get_subfield($cle, "a"); $this->mention_edition = $subfield[0]; break; case "210": /* publisher */ $editeur_lieu = $record->get_subfield_array_array($cle, "a"); $editeur_nom = $record->get_subfield_array_array($cle, "c"); $editeur_date = $record->get_subfield_array($cle, "d"); $editeur_date_machine = $record->get_subfield_array($cle, "h"); break; case "215": /* description */ $subfield = $record->get_subfield($cle, "a"); $this->page_nbr = $subfield[0]; $subfield = $record->get_subfield($cle, "c"); $this->illustration = $subfield[0]; $subfield = $record->get_subfield($cle, "d"); $this->size = $subfield[0]; $subfield = $record->get_subfield($cle, "e"); $this->accompagnement = $subfield[0]; break; case "225": /* collection */ $collection_225 = $record->get_subfield($cle, "a", "i", "v", "x"); break; case "300": /* inside */ $general_note = $record->get_subfield($cle, "a"); break; case "327": /* inside */ $content_note = $record->get_subfield_array($cle, "a"); break; case "330": /* abstract */ $abstract_note = $record->get_subfield($cle, "a"); break; case "345": /* EAN */ $EAN = $record->get_subfield($cle, "b"); break; case "410": /* collection */ $collection_410 = $record->get_subfield($cle, "t", "v", "x"); break; case "411": /* sub-collection */ $collection_411 = $record->get_subfield($cle, "t", "v", "x"); break; case "461": /* series ou perios*/ if (($this->bibliographic_level == 'a' || $this->bibliographic_level == 'b' || $this->bibliographic_level == 's') && $this->hierarchic_level == '2') { $perio = $record->get_subfield($cle, "t", "x", "v", "d", "e"); $this->perio_titre = $record->get_subfield_array($cle, "t"); $this->perio_issn = $record->get_subfield_array($cle, "x"); if ($record->get_subfield_array($cle, "v")) { $this->bull_num = $record->get_subfield_array($cle, "v"); } if ($record->get_subfield_array($cle, "d")) { $this->bull_date = $record->get_subfield_array($cle, "d"); } if ($record->get_subfield_array($cle, "e")) { $this->bull_mention = $record->get_subfield_array($cle, "e"); } } else { $serie = $record->get_subfield($cle, "t", "v"); } break; case "463": /* Bulletins */ $bulletin_463 = $record->get_subfield($cle, "t", "v", "d", "e"); $this->bull_num = $record->get_subfield_array($cle, "v"); $this->bull_date = $record->get_subfield_array($cle, "d"); $this->bull_mention = $record->get_subfield_array($cle, "e"); $this->bull_titre = $record->get_subfield_array($cle, "t"); break; case "500": /* Titres uniformes */ $this->tu_500 = $record->get_subfield($cle, "a", "k", "m", "q", "u", "v", "w"); $this->tu_500_i = $record->get_subfield_array_array($cle, "i"); $this->tu_500_j = $record->get_subfield_array_array($cle, "j"); $this->tu_500_l = $record->get_subfield_array_array($cle, "l"); $this->tu_500_n = $record->get_subfield_array_array($cle, "n"); $this->tu_500_r = $record->get_subfield_array_array($cle, "r"); $this->tu_500_s = $record->get_subfield_array_array($cle, "s"); break; case "503": /* Titres de forme */ $this->info_503 = $record->get_subfield($cle, "a", "e", "f", "h", "m", "n"); $this->info_503_d = $record->get_subfield_array_array($cle, "d"); $this->info_503_j = $record->get_subfield_array_array($cle, "j"); break; case "530": $perio530a = $record->get_subfield_array($cle, 'a'); break; //TODO AR //recup 530 (voir import_unimarc_lien) //TODO AR //recup 530 (voir import_unimarc_lien) case "600": // 600 PERSONAL NAME USED AS SUBJECT $this->info_600_3 = $record->get_subfield_array_array($cle, "3"); $this->info_600_a = $record->get_subfield_array_array($cle, "a"); $this->info_600_b = $record->get_subfield_array_array($cle, "b"); $this->info_600_c = $record->get_subfield_array_array($cle, "c"); $this->info_600_d = $record->get_subfield_array_array($cle, "d"); $this->info_600_f = $record->get_subfield_array_array($cle, "f"); $this->info_600_g = $record->get_subfield_array_array($cle, "g"); $this->info_600_j = $record->get_subfield_array_array($cle, "j"); $this->info_600_p = $record->get_subfield_array_array($cle, "p"); $this->info_600_t = $record->get_subfield_array_array($cle, "t"); $this->info_600_x = $record->get_subfield_array_array($cle, "x"); $this->info_600_y = $record->get_subfield_array_array($cle, "y"); $this->info_600_z = $record->get_subfield_array_array($cle, "z"); break; case "601": // 601 CORPORATE BODY NAME USED AS SUBJECT $this->info_601_3 = $record->get_subfield_array_array($cle, "3"); $this->info_601_a = $record->get_subfield_array_array($cle, "a"); $this->info_601_b = $record->get_subfield_array_array($cle, "b"); $this->info_601_c = $record->get_subfield_array_array($cle, "c"); $this->info_601_d = $record->get_subfield_array_array($cle, "d"); $this->info_601_e = $record->get_subfield_array_array($cle, "e"); $this->info_601_f = $record->get_subfield_array_array($cle, "f"); $this->info_601_g = $record->get_subfield_array_array($cle, "g"); $this->info_601_h = $record->get_subfield_array_array($cle, "h"); $this->info_601_t = $record->get_subfield_array_array($cle, "t"); $this->info_601_j = $record->get_subfield_array_array($cle, "j"); $this->info_601_x = $record->get_subfield_array_array($cle, "x"); $this->info_601_y = $record->get_subfield_array_array($cle, "y"); $this->info_601_z = $record->get_subfield_array_array($cle, "z"); break; case "602": // 602 FAMILY NAME USED AS SUBJECT $this->info_602_3 = $record->get_subfield_array_array($cle, "3"); $this->info_602_a = $record->get_subfield_array_array($cle, "a"); $this->info_602_f = $record->get_subfield_array_array($cle, "f"); $this->info_602_t = $record->get_subfield_array_array($cle, "t"); $this->info_602_j = $record->get_subfield_array_array($cle, "j"); $this->info_602_x = $record->get_subfield_array_array($cle, "x"); $this->info_602_y = $record->get_subfield_array_array($cle, "y"); $this->info_602_z = $record->get_subfield_array_array($cle, "z"); break; case "604": // 604 AUTEUR-TITRE USED AS SUBJECT $this->info_604_a = $record->get_subfield_array_array($cle, "a"); $this->info_604_h = $record->get_subfield_array_array($cle, "h"); $this->info_604_i = $record->get_subfield_array_array($cle, "i"); $this->info_604_j = $record->get_subfield_array_array($cle, "j"); $this->info_604_k = $record->get_subfield_array_array($cle, "k"); $this->info_604_l = $record->get_subfield_array_array($cle, "l"); $this->info_604_x = $record->get_subfield_array_array($cle, "x"); $this->info_604_y = $record->get_subfield_array_array($cle, "y"); $this->info_604_z = $record->get_subfield_array_array($cle, "z"); break; case "605": // 605 TITLE USED AS SUBJECT $this->info_605_3 = $record->get_subfield_array_array($cle, "3"); $this->info_605_a = $record->get_subfield_array_array($cle, "a"); $this->info_605_h = $record->get_subfield_array_array($cle, "h"); $this->info_605_i = $record->get_subfield_array_array($cle, "i"); $this->info_605_j = $record->get_subfield_array_array($cle, "j"); $this->info_605_k = $record->get_subfield_array_array($cle, "k"); $this->info_605_l = $record->get_subfield_array_array($cle, "l"); $this->info_605_m = $record->get_subfield_array_array($cle, "m"); $this->info_605_n = $record->get_subfield_array_array($cle, "n"); $this->info_605_q = $record->get_subfield_array_array($cle, "q"); $this->info_605_r = $record->get_subfield_array_array($cle, "r"); $this->info_605_s = $record->get_subfield_array_array($cle, "s"); $this->info_605_u = $record->get_subfield_array_array($cle, "u"); $this->info_605_w = $record->get_subfield_array_array($cle, "w"); $this->info_605_j = $record->get_subfield_array_array($cle, "j"); $this->info_605_x = $record->get_subfield_array_array($cle, "x"); $this->info_605_y = $record->get_subfield_array_array($cle, "y"); $this->info_605_z = $record->get_subfield_array_array($cle, "z"); break; case "606": // RAMEAU / TOPICAL NAME USED AS SUBJECT $this->info_606_3 = $record->get_subfield_array_array($cle, "3"); $this->info_606_a = $record->get_subfield_array_array($cle, "a"); $this->info_606_j = $record->get_subfield_array_array($cle, "j"); $this->info_606_x = $record->get_subfield_array_array($cle, "x"); $this->info_606_y = $record->get_subfield_array_array($cle, "y"); $this->info_606_z = $record->get_subfield_array_array($cle, "z"); break; case "607": // 607 GEOGRAPHICAL NAME USED AS SUBJECT $this->info_607_3 = $record->get_subfield_array_array($cle, "3"); $this->info_607_a = $record->get_subfield_array_array($cle, "a"); $this->info_607_j = $record->get_subfield_array_array($cle, "j"); $this->info_607_x = $record->get_subfield_array_array($cle, "x"); $this->info_607_y = $record->get_subfield_array_array($cle, "y"); $this->info_607_z = $record->get_subfield_array_array($cle, "z"); break; case "608": // 608 Vedette matière de forme, de genre ou des caractéristiques physiques $this->info_608_3 = $record->get_subfield_array_array($cle, "3"); $this->info_608_a = $record->get_subfield_array_array($cle, "a"); $this->info_608_j = $record->get_subfield_array_array($cle, "j"); $this->info_608_x = $record->get_subfield_array_array($cle, "x"); $this->info_608_y = $record->get_subfield_array_array($cle, "y"); $this->info_608_z = $record->get_subfield_array_array($cle, "z"); break; case "610": /* mots clé */ $index_sujets = $record->get_subfield($cle, "a"); break; case "676": /* Dewey */ $this->dewey = $record->get_subfield($cle, "a"); break; case "686": /* PCDM */ if (!$this->dewey) { $this->dewey = $record->get_subfield($cle, "a"); } break; case "700": $aut_700 = $record->get_subfield($cle, "a", "b", "c", "d", "4", "f", "N", "3"); break; case "701": $aut_701 = $record->get_subfield($cle, "a", "b", "c", "d", "4", "f", "N", "3"); break; case "702": $aut_702 = $record->get_subfield($cle, "a", "b", "c", "d", "4", "f", "N", "3"); break; case "710": $aut_710 = $record->get_subfield($cle, "a", "b", "c", "g", "d", "4", "f", "e", "k", "l", "m", "n", "3"); break; case "711": $aut_711 = $record->get_subfield($cle, "a", "b", "c", "g", "d", "4", "f", "e", "k", "l", "m", "n", "3"); break; case "712": $aut_712 = $record->get_subfield($cle, "a", "b", "c", "g", "d", "4", "f", "e", "k", "l", "m", "n", "3"); break; case "801": /* origine du catalogage */ $origine_notice = $record->get_subfield($cle, "a", "b"); break; case "856": $ressource = $record->get_subfield($cle, "u", "q"); break; case "995": /* infos de la BDP */ $info_995 = $record->get_subfield($cle, "a", "b", "c", "d", "f", "k", "m", "n", "o", "r", "u"); $this->exemplaires = $info_995; break; case "896": /* Thumbnail */ $this->thumbnail_url = $record->get_subfield($cle, "a"); $this->thumbnail_url = $this->thumbnail_url[0]; break; //Documents numériques //Documents numériques case "897": $this->doc_nums = $record->get_subfield($cle, "a", "b", "f", "p"); break; default: break; } /* end of switch */ } /* end of for */ //Récupération des catégories en lien avec le fichier xml category_auto::get_info_categ($record); $this->isbn = $this->process_isbn($isbn[0]); if (function_exists("traite_categories_from_unimarc")) { $this->categories = traite_categories_from_unimarc($this); } /* INSERT de la notice OK, on va traiter les auteurs 70# : personnal : type auteur 70 71# : collectivités : type auteur 71 1 seul en 700 idem pour les déclinaisons n en 701 n en 702 les 7#0 tombent en auteur principal : responsability_type = 0 les 7#1 tombent en autre auteur : responsability_type = 1 les 7#2 tombent en auteur secondaire : responsability_type = 2 */ $this->aut_array = array(); /* on compte tout de suite le nbre d'enreg dans les répétables */ $nb_repet_701 = sizeof($aut_701); $nb_repet_711 = sizeof($aut_711); $nb_repet_702 = sizeof($aut_702); $nb_repet_712 = sizeof($aut_712); /* renseignement de aut0 */ if ($aut_700[0][a] != "") { /* auteur principal en 700 ? */ $this->aut_array[] = array("entree" => $aut_700[0]['a'], "rejete" => $aut_700[0]['b'], "author_comment" => $aut_700[0]['c'] . " " . $aut_700[0]['d'], "date" => $aut_700[0]['f'], "type_auteur" => "70", "fonction" => $aut_700[0][4], "id" => 0, "responsabilite" => 0, "ordre" => 0, "authority_number" => $aut_700[0][3]); } elseif ($aut_710[0]['a'] != "") { /* auteur principal en 710 ? */ if (substr($indicateur["710"][0], 0, 1) == "1") { $type_auteur = "72"; } else { $type_auteur = "71"; } $lieu = $aut_710[0]['e']; if (!$lieu) { $lieu = $aut_710[0]['k']; } $this->aut_array[] = array("entree" => $aut_710[0]['a'], "rejete" => $aut_710[0]['g'], "subdivision" => $aut_710[0]['b'], "author_comment" => $aut_710[0]['c'], "numero" => $aut_710[0]['d'], "ville" => $aut_710[0]['l'], "web" => $aut_710[0]['n'], "date" => $aut_710[0]['f'], "type_auteur" => $type_auteur * 1, "fonction" => $aut_710[0][4], "id" => 0, "responsabilite" => 0, "ordre" => 0, "lieu" => $lieu, "pays" => $aut_710[0]['m'], "authority_number" => $aut_710[0][3]); } /* renseignement de aut1 */ for ($i = 0; $i < $nb_repet_701; $i++) { $this->aut_array[] = array("entree" => $aut_701[$i]['a'], "rejete" => $aut_701[$i]['b'], "author_comment" => $aut_701[$i]['c'] . " " . $aut_701[$i]['d'], "date" => $aut_701[$i]['f'], "type_auteur" => "70", "fonction" => $aut_701[$i][4], "id" => 0, "responsabilite" => 1, "ordre" => $i + 1, "authority_number" => $aut_701[$i][3]); } for ($i = 0; $i < $nb_repet_711; $i++) { if (substr($indicateur["711"][$i], 0, 1) == "1") { $type_auteur = "72"; } else { $type_auteur = "71"; } $lieu = $aut_711[$i]['e']; if (!$lieu) { $lieu = $aut_711[$i]['k']; } $this->aut_array[] = array("entree" => $aut_711[$i]['a'], "rejete" => $aut_711[$i]['g'], "subdivision" => $aut_711[$i]['b'], "author_comment" => $aut_711[$i]['c'], "numero" => $aut_711[$i]['d'], "ville" => $aut_711[$i]['l'], "web" => $aut_711[$i]['n'], "date" => $aut_711[$i]['f'], "type_auteur" => $type_auteur * 1, "fonction" => $aut_711[$i][4], "id" => 0, "responsabilite" => 1, "lieu" => $lieu, "pays" => $aut_711[$i]['m'], "ordre" => $i + 1, "authority_number" => $aut_711[$i][3]); } /* renseignement de aut2 */ for ($i = 0; $i < $nb_repet_702; $i++) { $this->aut_array[] = array("entree" => $aut_702[$i]['a'], "rejete" => $aut_702[$i]['b'], "author_comment" => $aut_702[$i]['c'] . " " . $aut_702[$i]['d'], "date" => $aut_702[$i]['f'], "type_auteur" => "70", "fonction" => $aut_702[$i][4], "id" => 0, "responsabilite" => 2, "ordre" => $i + 1, "authority_number" => $aut_702[$i][3]); } for ($i = 0; $i < $nb_repet_712; $i++) { if (substr($indicateur["712"][$i], 0, 1) == "1") { $type_auteur = "72"; } else { $type_auteur = "71"; } $lieu = $aut_712[$i]['e']; if (!$lieu) { $lieu = $aut_712[$i]['k']; } $this->aut_array[] = array("entree" => $aut_712[$i]['a'], "rejete" => $aut_712[$i]['g'], "subdivision" => $aut_712[$i]['b'], "author_comment" => $aut_712[$i]['c'], "numero" => $aut_712[$i]['d'], "ville" => $aut_712[$i]['l'], "web" => $aut_712[$i]['n'], "date" => $aut_712[$i]['f'], "type_auteur" => $type_auteur * 1, "fonction" => $aut_712[$i][4], "id" => 0, "responsabilite" => 2, "lieu" => $lieu, "pays" => $aut_712[$i]['m'], "ordre" => $i + 1, "authority_number" => $aut_712[$i][3]); } /* Added for some italian z39.50 server Some adjustment to clean the values from symbol like << and others */ for ($i = 0; $i < $nb_repet_701 + $nb_repet_711 + $nb_repet_702 + $nb_repet_712 + 1; $i++) { $this->aut_array[$i]['entree'] = del_more_garbage($this->aut_array[$i]['entree']); $this->aut_array[$i]['rejete'] = del_more_garbage($this->aut_array[$i]['rejete']); } /* traitement des éditeurs */ $editor = array(); if (is_array($editeur_nom)) { foreach ($editeur_nom as $key_nom1 => $nom1) { foreach ($nom1 as $key_nom2 => $nom2) { $mon_ed = array(); $mon_ed["c"] = $nom2; if ($editeur_lieu[$key_nom1][$key_nom2]) { $mon_ed["a"] = $editeur_lieu[$key_nom1][$key_nom2]; } $editor[] = $mon_ed; } } } $this->year = clean_string($editeur_date[0]); $this->editors[0]['name'] = clean_string($editor[0][c]); $this->editors[0]['ville'] = clean_string($editor[0][a]); $this->editors[1]['name'] = clean_string($editor[1][c]); $this->editors[1]['ville'] = clean_string($editor[1][a]); /* Added for some italian z39.50 server Some adjustment to clean the values from symbol like << and others */ $this->editors[0]['name'] = del_more_garbage($this->editors[0]['name']); $this->editors[1]['name'] = del_more_garbage($this->editors[1]['name']); /* traitement des collections */ $coll_name = ""; $subcoll_name = ""; $coll_issn = ""; $subcoll_issn = ""; $nocoll_ins = ""; // Collection : traitement de 225 et 410, préférence donnée au 410 if ($collection_410[0][t]) { $coll_name = $collection_410[0][t]; } elseif ($collection_225[0][a] != "") { $coll_name = $collection_225[0][a]; } if ($collection_410[0][x]) { $coll_issn = $collection_410[0][x]; } elseif ($collection_225[0][x] != "") { $coll_issn = $collection_225[0][x]; } // Sous-collection : traitement de 225$i et 411, préférence donnée au 411 if ($collection_411[0][t]) { $subcoll_name = $collection_411[0][t]; } elseif ($collection_225[0][i] != "") { $subcoll_name = $collection_225[0][i]; } if ($collection_411[0][x]) { $subcoll_issn = $collection_411[0][x]; } // Numéro dans la collection, présent en 411$v, sinon en 410$v et enfin en 225$v if ($collection_411[0][v] != "") { $this->nbr_in_collection = $collection_411[0][v]; } elseif ($collection_410[0][v] != "") { $this->nbr_in_collection = $collection_410[0][v]; } elseif ($collection_225[0][v] != "") { $this->nbr_in_collection = $collection_225[0][v]; } else { $this->nbr_in_collection = ""; } $this->collection['name'] = clean_string($coll_name); $this->collection['issn'] = clean_string($coll_issn); $this->subcollection['name'] = clean_string($subcoll_name); $this->subcollection['issn'] = clean_string($subcoll_issn); /* Added for some italian z39.50 server Some adjustment to clean the values from symbol like << and others */ $this->collection['name'] = del_more_garbage($this->collection['name']); $this->subcollection['name'] = del_more_garbage($this->subcollection['name']); //TODO AR //nettoyage si notice de bulletin (voir import_unimarc_lien) //TEST si perio_titre vide -> recup 530 if ($this->bibliographic_level == "s" && $this->hierarchic_level == "2") { if (!$this->perio_titre && $perio530a) { $this->perio_titre = $perio530a; } if (!$this->bull_titre && $tit_200a) { $this->bull_titre = array(clean_string($tit_200a[0])); } //file_put_contents('php://stderr', print_r($tit_200a[0], true)); if (!$this->bull_num && $this->serie_200) { $this->bull_num = array(clean_string($this->serie_200[0]['h'])); } if (!$this->bull_date && $editeur_date_machine) { $this->bull_date = array($editeur_date_machine[0]); } if (!$this->bull_mention && $editeur_date) { $this->bull_mention = array(clean_string($editeur_date[0])); } //file_put_contents('php://stderr', print_r($this->bull_mention, true)); //file_put_contents('php://stderr', print_r($this->bull_date, true)); $this->serie_200 = array(); } /* Series TODO: Check if it's Ok */ $this->serie = clean_string($serie[0]['t']); if ($this->serie) { $this->nbr_in_serie = $serie[0]['v']; } else { $this->serie = clean_string($this->serie_200[0]['i']); if ($this->serie) { $this->nbr_in_serie = $this->serie_200[0]['h']; } else { $this->nbr_in_serie = ""; } } /* Traitement des notes */ $this->general_note = ""; $this->content_note = ""; $this->abstract_note = ""; if (!$abstract_note) { $abstract_note = array(); } $this->abstract_note = implode("\n", $abstract_note); if (!$general_note) { $general_note = array(); } $this->general_note = implode("\n", $general_note); if (!$content_note) { $content_note = array(); } $this->content_note = implode("\n", $content_note); /* traitement ressources */ $this->link_url = $ressource[0]["u"]; $this->link_format = $ressource[0]["q"]; /* Titles processing */ if (!$tit_200a) { $tit_200a = array(); } if (!$tit_200c) { $tit_200c = array(); } if (!$tit_200d) { $tit_200d = array(); } if (!$tit_200e) { $tit_200e = array(); } $tit[0]['a'] = implode(" ; ", $tit_200a); $tit[0]['c'] = implode(" ; ", $tit_200c); $tit[0]['d'] = implode(" ; ", $tit_200d); $tit[0]['e'] = implode(" ; ", $tit_200e); $this->titles[0] = clean_string($tit[0][a]); $this->titles[1] = clean_string($tit[0][c]); $this->titles[2] = clean_string($tit[0][d]); $this->titles[3] = clean_string($tit[0][e]); /* Added for some italian z39.50 server Some adjustment to clean the values from symbol like << and others */ $this->titles[0] = del_more_garbage($this->titles[0]); $this->titles[1] = del_more_garbage($this->titles[1]); $this->titles[2] = del_more_garbage($this->titles[2]); $this->titles[3] = del_more_garbage($this->titles[3]); global $pmb_keyword_sep; if (!$pmb_keyword_sep) { $pmb_keyword_sep = " "; } if (is_array($index_sujets)) { $this->free_index = implode($pmb_keyword_sep, $index_sujets); } else { $this->free_index = $index_sujets; } $this->origine_notice['nom'] = clean_string($origine_notice[0]['b']); $this->origine_notice['pays'] = clean_string($origine_notice[0]['a']); }
function from_sutrs($ss, $campo) { $base_path = "../.."; global $class_path; global $lang; global $include_path; global $charset; global $campi, $sep; global $fun; $campi = array(); // strip \r\n and spaces $pattern = "/\r/"; $ss = preg_replace($pattern, "", $ss); $pattern = "/\n /"; $ss = preg_replace($pattern, " ", $ss); $pattern = "/\n/"; $ss = preg_replace($pattern, " ", $ss); $pattern = "/\\s+/"; $ss = preg_replace($pattern, " ", $ss); // put tag sutrs in sutrs record foreach ($campo as $dummykey => $v) { $dato[$v] = ""; $ss = preg_replace("/{$v}:/", "|{$v}::", $ss); } // explode fields sutrs in $dato (array) $aX = preg_split("/\\|/", $ss); foreach ($aX as $dummykey => $vv) { $v = preg_split("/::/", $vv); if ($dato[$v[0]] == '') { $sep = ''; } else { $sep = '|'; } $dato[$v[0]] .= $sep . $v[1]; } // copy $dato values to associative array $campi which keys are standard and in english reset($campo); while (list($k, $v) = each($campo)) { $campi[$k] = $dato[$v]; } //* DEBUG // $fp = fopen ("../../temp/raw".rand().".unimarc","wb"); // fwrite ($fp,$lista[3]); // fclose ($fp); // text record construction in $notice $sep = '|'; $notice = ""; //isbn $notice .= sut_numbers(); // col. 1 $notice .= del_more_garbage(sut_authors()); // col. 2..28 (1 author = 3 col) $notice .= del_more_garbage(sut_title()); // col.29..32 $notice .= sut_edition(); // col.33 $notice .= del_more_garbage(sut_editor()); // col.34..36 $notice .= del_more_garbage(sut_collection()); // col.37..40 // serie $notice .= sut_dummy(2); // col.41..42 $notice .= sut_decimalindex(); // col.43 $notice .= sut_freeindex(); // col.44 $notice .= sut_lang(); // col.45 // orig.lang $notice .= sut_dummy(1); // col.46 $notice .= sut_collation(); // col.47..50 $notice .= sut_notes(); // col.51..53 //DEBUG: in z_progression_main expand size frame3 to 50% //print "<hr /><br />"; //printr($campo,'','CAMPO'); //printr($campi,'','CAMPI'); //print "$ss<br /><hr />$notice"; //Lecture des paramètres d'import $param_path = "sutrs2unimarciso"; //Lecture des paramètres _parser_("{$base_path}/admin/convert/imports/" . $param_path . "/params.xml", array("IMPORTNAME" => "_import_name_", "NPERPASS" => "_n_per_pass_", "INPUT" => "_input_", "STEP" => "_step_", "OUTPUT" => "_output_"), "PARAMS"); require_once "{$base_path}/admin/convert/xmltransform.php"; //En fonction du type de fichier d'entrée, inclusion du script de gestion des entrées require_once "{$base_path}/admin/convert/imports/input_text.inc.php"; //En fonction du type de fichier de sortie, inclusion du script de gestion des sorties require_once "{$base_path}/admin/convert/imports/output_iso_2709.inc.php"; $n_current = 0; $n_errors = 0; $n_per_pass = 1; $notice_ = convert_notice($notice); return $notice_; }