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($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