function get_notice_externe($notice_id)
 {
     global $charset, $msg;
     $memo = array();
     $notice_extern_to_memo = array();
     $notice_uni = $this->info['notice_base'];
     $req = "select * from notices where notice_id=" . $notice_id . " ";
     $resultat = pmb_mysql_query($req);
     if ($r = pmb_mysql_fetch_object($resultat)) {
         $code = $r->code;
         $notice_extern = $this->info['harvest']->havest_notice($code, $notice_id);
         //			printr($notice_extern);
         //			printr($notice_uni);
         $cpt = 0;
         foreach ($notice_extern as $contens) {
             $cpt++;
             $profil = $this->info['profil']->info['fields'][$contens['xml_id']];
             // $pmb_fields=$this->info['harvest']->fields_id[$contens['xml_id']];
             //printr($pmb_fields);
             $harvest = $this->info['harvest']->info['fields'][$contens['xml_id']];
             if ($profil) {
                 if ($profil['flagtodo'] == 1) {
                     // on remplace les champs par les nouvelles valeurs
                     foreach ($notice_uni['f'] as $index => $uni_field) {
                         //							printr($contens);
                         //							printr($uni_field);
                         if ($contens['pmb_unimacfield'] && $uni_field['c'] == $contens['pmb_unimacfield'] && $contens['pmb_unimacsubfield']) {
                             // si champ et sous champ, on delete les anciens champs/sous-champ
                             foreach ($uni_field['s'] as $cpt => $ss_field) {
                                 if ($ss_field['c'] == $contens['pmb_unimacsubfield']) {
                                     array_splice($notice_uni['f'][$index]['s'], $cpt, 1);
                                 }
                             }
                             if (!count($uni_field['s'])) {
                                 array_splice($notice_uni['f'], $index, 1);
                             }
                         } elseif ($contens['pmb_unimacfield'] && $uni_field['c'] == $contens['pmb_unimacfield']) {
                             // si pas de sous champ on efface tout
                             array_splice($notice_uni['f'], $index, 1);
                         }
                     }
                 }
                 if ($profil['flagtodo'] == 1 || $profil['flagtodo'] == 2) {
                     $notice_extern_to_memo[] = $contens;
                 }
             }
         }
         //printr($notice_uni);
         //printr($notice_extern_to_memo);
         // Pour tout les champs nouveau à insérer
         $memo_prev = array();
         foreach ($notice_extern_to_memo as $contens) {
             $nb = count($notice_uni['f']);
             $flag_create_unimacfield = 0;
             if ($contens['num_source'] != $memo_prev['num_source']) {
                 $flag_create_unimacfield = 1;
             }
             if ($contens['pmb_unimacfield'] != $memo_prev['pmb_unimacfield']) {
                 $flag_create_unimacfield = 1;
             }
             if ($contens['field_order'] != $memo_prev['field_order']) {
                 $flag_create_unimacfield = 1;
             }
             if ($flag_create_unimacfield) {
                 $index = $nb;
             } else {
                 $index = $memo_prev['i'];
             }
             $notice_uni['f'][$index]['c'] = $contens['pmb_unimacfield'];
             $notice_uni['f'][$index]['ind'] = $contens['field_ind'];
             if ($contens['pmb_unimacsubfield']) {
                 $sschamp = $contens['pmb_unimacsubfield'];
             } else {
                 $sschamp = $contens['usubfield'];
             }
             $nb_ss = count($notice_uni['f'][$index]['s']);
             $notice_uni['f'][$index]['s'][$nb_ss]['c'] = $sschamp;
             $notice_uni['f'][$index]['s'][$nb_ss]['value'] = $contens['value'];
             $memo_prev = $contens;
             $memo_prev['i'] = $index;
             // $memo de l'enregistrement en cours
             //			printr($memo_prev);
         }
     } else {
         //notice inexistante
         return "";
     }
     // printr($notice_uni);
     // conversion du tableau en xml
     $export = new export($notice_id);
     $export->xml_array = $notice_uni;
     $export->toxml();
     $notice_xml = $export->notice;
     // conversion du xml en unimarc
     $xml_unimarc = new xml_unimarc();
     $xml_unimarc->XMLtoiso2709_notice($notice_xml, $charset);
     $notice = $xml_unimarc->notices_[0];
     $z = new z3950_notice("unimarc", $notice);
     $z->libelle_form = $msg["notice_connecteur_remplace_catal"];
     if ($z->bibliographic_level == "a" && $z->hierarchic_level == "2") {
         // article
         //$form=$z->get_form("catalog.php?categ=update&id=".$notice_id,$notice_id,'button',true);
     } else {
         $form = $z->get_form("catalog.php?categ=harvest&action=record&notice_id=" . $notice_id, $notice_id, 'button');
     }
     $form = str_replace("<!--!!form_title!!-->", "<h3>" . sprintf($msg["harvest_notice_build_title"], $notice_id, $item) . "</h3>", $form);
     print $form;
 }
 function convert_batch_to_pmb_xml($notices_to_convert, $target_charset = 'iso-8859-1')
 {
     global $charset;
     if (!$notices_to_convert) {
         //Rien à faire? On fait rien
         return;
     }
     $xmlexport = new export($notices_to_convert);
     $current_notice_id = $xmlexport->notice_list[$xmlexport->current_notice];
     $parametres = array();
     if (is_array($this->params['include_links'])) {
         $parametres = $this->params['include_links'];
     } else {
         if ($this->params["include_links"]) {
             $parametres["genere_lien"] = 1;
             //Notices liées, relations entre notices
             $parametres["mere"] = 1;
             //Exporter les liens vers les notices mères
             $parametres["notice_mere"] = 0;
             //Exporter aussi les notices mères liées
             $parametres["fille"] = 1;
             //Exporter les liens vers les notices filles
             $parametres["notice_fille"] = 0;
             //Exporter aussi les notices filles liées
             $parametres["art_link"] = 1;
             //Exporter les liens vers les articles pour les notices de pério
             $parametres["notice_art"] = 0;
             //Exporter aussi les articles pour les notices de pério
             $parametres["bulletinage"] = 0;
             //Exporter le bulletinage pour les notices de pério
             $parametres["bull_link"] = 1;
             //Exporter les liens vers les bulletins pour les notices d'article
             $parametres["perio_link"] = 1;
             //Exporter les liens vers les périodiques pour les notices d'articles
             $parametres["notice_perio"] = 0;
             //Exporter aussi les périodiques pour les notices d'articles
         }
     }
     if ($this->params["include_authorite_ids"]) {
         $parametres["include_authorite_ids"] = true;
     }
     $parametres["docnum"] = 1;
     $keep_expl = isset($this->params["include_items"]) && $this->params["include_items"];
     while ($xmlexport->get_next_notice("", array(), array(), $keep_expl, $parametres)) {
         $xmlexport->toxml();
         if ($current_notice_id != -1) {
             $this->results[$current_notice_id] = $xmlexport->notice;
             //La classe export exporte ses données dans la charset de la base.
             //Convertissons si besoin
             if ($charset != 'utf-8' && $target_charset == 'utf-8') {
                 $this->results[$current_notice_id] = utf8_encode($this->results[$current_notice_id]);
             } else {
                 if ($charset == 'utf-8' && $target_charset != 'utf-8') {
                     $this->results[$current_notice_id] = utf8_decode($this->results[$current_notice_id]);
                 }
             }
             $current_notice_id = $xmlexport->notice_list[$xmlexport->current_notice];
         }
     }
 }