예제 #1
0
 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']);
 }
예제 #2
0
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_;
}