get_subfield_array_array($value["field"],$value["subfield"]); } } } /*Si $tabl_categ_lib est un tableau alors les catégories ne seront pas crées mais elles seront enregistrées dans ce tableau Retourne un tableau de la forme suivante quelque soit les paramètres à l'import : Array( [0] => Array( [wording] => libellé de la catégorie // Vide dans le cas de la reprise hiérarchisée sinon toujours renseigné [id_authority] => numéro d'autorité // Présent si dans le fichier import_category.xml on a définit le paramère authority_number pour le tag field et que l'on a autant de authority_number dans le champ unimarc que de catégorie reliée à la notice dans PMB Dans le cas d'une reprise d'un champ de façon hiérarchique authority_number sera associé au terme de plus bas niveau [id_pmb] => id_noeud de PMB // Présent si le noeud a été créé dans la base (si fonction appelée sans paramètre) ) ) Dans le cas d'une reprise hiérarchique sans créatation direct (Z-3950) la gestion des autorités n'est pas encore réalisée */ public static function save_info_categ(&$tabl_categ_lib=""){ global $tabl_categ_recovery,$tabl_categ_recovered; $tabl_link_authority=array(); /*echo "
"; print_r($tabl_categ_recovered); echo "";*/ if(count($tabl_categ_recovered)){ global $incr_categ; $incr_categ=-1; foreach ( $tabl_categ_recovery as $root ) { foreach ( $root as $thes ) { $obj_thes= new thesaurus($thes["ID"]); if($obj_thes ->num_noeud_racine){//Test pour savoir si le thésaurus existe foreach ( $thes["CATEGORY"] as $field_root ) { $root_node_object=""; switch ($field_root["ID"]) { case "TOP": $root_node_object=new noeuds($obj_thes ->num_noeud_racine); break; case "ORPHELINS": $root_node_object=new noeuds($obj_thes->num_noeud_orphelins); break; case "NONCLASSES": $root_node_object=new noeuds($obj_thes->num_noeud_nonclasses); break; default: $root_node_object=new noeuds($field_root["ID"]); if($root_node_object->num_thesaurus != $obj_thes ->id_thesaurus){ $root_node_object=""; } break; } if($root_node_object){ $root_node_number=$root_node_object->id_noeud; }else{ $root_node_number=0; } foreach ( $field_root["FIELD"] as $field_val ) { $name_field=$field_val["CODE"]; if($field_val["ORDER"] == "import"){ //on reprends la liste des sous champs dans l'ordre du fichier de notice $subfield=array(); foreach ( $field_val["SUBFIELD"] as $subfield_root ) { $subfield[$subfield_root["CODE"]]=$subfield_root; } for ($_1=0; $_1
"; print_r($tabl_link_authority); echo "";*/ return $tabl_link_authority; } public static function browse_subfields($tab_ss_champ,$name_field,&$tabl_categ_has_recovered){ foreach ( $tab_ss_champ as $key => $subfield_root ) { $tmp=array(); $tmp["field"]=$name_field; $tmp["subfield"]=$subfield_root["CODE"]; $tabl_categ_has_recovered[]=$tmp; if(!empty($subfield_root["SUBFIELD"])) { category_auto::browse_subfields($subfield_root["SUBFIELD"],$name_field,$tabl_categ_has_recovered); } } } public static function browse_category($subfield,$tabl_categ_recovered,$name_field,$counter_field,$id_thes,$root_node_number,&$tabl_categ_lib,$create_node){ global $incr_categ,$notice_id,$tabl_id_categ_link; $creation=0; $id_noeud=$root_node_number; foreach ( $subfield as $key => $subfield_root ) { //Je parcours les sous-champs for ($_2=0; $_2