Esempio n. 1
0
 static function listAncestors($num_noeud = 0, $langue)
 {
     global $dbh;
     /*if(!$num_noeud) { // Pas de $this dans une static
     			$num_noeud = $this->num_noeud;
     			$langue = $this->langue;
     		}*/
     $thes = thesaurus::getByEltId($num_noeud);
     $id_list = noeuds::listAncestors($num_noeud);
     $id_list = array_reverse($id_list);
     $anc_list = array();
     foreach ($id_list as $key => $id) {
         if (categories::exists($id, $langue)) {
             $lg = $langue;
         } else {
             $lg = $thes->langue_defaut;
         }
         $q = "select * from noeuds, categories ";
         $q .= "where categories.num_noeud = '" . $id . "' ";
         $q .= "and categories.langue = '" . $lg . "' ";
         $q .= "and categories.num_noeud = noeuds.id_noeud ";
         $q .= "limit 1";
         $r = pmb_mysql_query($q, $dbh);
         while ($row = pmb_mysql_fetch_object($r)) {
             $anc_list[$id]['num_noeud'] = $row->num_noeud;
             $anc_list[$id]['num_parent'] = $row->num_parent;
             $anc_list[$id]['num_renvoi_voir'] = $row->num_renvoi_voir;
             $anc_list[$id]['visible'] = $row->visible;
             $anc_list[$id]['num_thesaurus'] = $row->num_thesaurus;
             $anc_list[$id]['langue'] = $row->langue;
             $anc_list[$id]['libelle_categorie'] = $row->libelle_categorie;
             $anc_list[$id]['note_application'] = $row->note_application;
             $anc_list[$id]['comment_public'] = $row->comment_public;
             $anc_list[$id]['comment_voir'] = $row->comment_voir;
             $anc_list[$id]['index_categorie'] = $row->index_categorie;
             $anc_list[$id]['autorite'] = $row->autorite;
         }
     }
     return $anc_list;
 }
Esempio n. 2
0
 static function listTargetsExceptOrphans($id_noeud = 0)
 {
     global $dbh;
     $id_list = array();
     if (!$id_noeud && is_object($this)) {
         $id_noeud = $this->id_noeud;
     }
     $thes = thesaurus::getByEltId($id_noeud);
     $q = "select id_noeud from noeuds where num_renvoi_voir = '" . $id_noeud . "' ";
     $q .= "and autorite not in ('ORPHELINS', 'NONCLASSES') ";
     $r = pmb_mysql_query($q, $dbh);
     if (mysql_num_rows($r)) {
         while ($row = pmb_mysql_fetch_object($r)) {
             $id_list_ancestors = noeuds::listAncestors($row->id_noeud);
             if (count($id_list_ancestors)) {
                 if (!in_array($thes->num_noeud_orphelins, $id_list_ancestors)) {
                     $id_list[] = $row->id_noeud;
                 }
             } else {
                 $id_list[] = $row->id_noeud;
             }
         }
     }
     return $id_list;
 }
 function fetch_node($node_id, $OPACUserId = -1)
 {
     $node_id += 0;
     if (!$node_id) {
         return FALSE;
     }
     $node = new noeuds($node_id);
     $result = array('node_id' => $node->id_noeud, 'node_thesaurus' => $node->num_thesaurus, 'node_target_id' => 0, 'node_target_categories' => array());
     global $dbh;
     if ($node->num_renvoi_voir) {
         $result['node_target_id'] = $node->num_renvoi_voir;
         $q = "select * from categories where num_noeud = '" . $node->num_renvoi_voir . "'";
         $r = pmb_mysql_query($q, $dbh);
         $result['node_target_categories'] = array();
         while ($obj = pmb_mysql_fetch_object($r)) {
             $categ = array();
             $categ['node_id'] = $node_id;
             $categ['category_caption'] = utf8_normalize($obj->libelle_categorie);
             $categ['category_lang'] = utf8_normalize($obj->langue);
             $result['node_target_categories'][] = $categ;
         }
     }
     $q = "select * from categories where num_noeud = '" . $node_id . "'";
     $r = pmb_mysql_query($q, $dbh);
     $result['node_categories'] = array();
     while ($obj = pmb_mysql_fetch_object($r)) {
         $categ = array();
         $categ['node_id'] = $node_id;
         $categ['category_caption'] = utf8_normalize($obj->libelle_categorie);
         $categ['category_lang'] = utf8_normalize($obj->langue);
         $result['node_categories'][] = $categ;
     }
     $path_ids = noeuds::listAncestors($node_id);
     $result['node_path'] = array();
     if ($path_ids) {
         $q = "select * from categories where num_noeud IN(" . implode(',', $path_ids) . ") order by num_noeud";
         $r = pmb_mysql_query($q, $dbh);
         $result['node_path'] = array();
         $current_node_id = 0;
         $categs = array();
         while ($obj = pmb_mysql_fetch_object($r)) {
             if (!$current_node_id) {
                 $current_node_id = $obj->num_noeud;
             }
             if ($current_node_id != $obj->num_noeud) {
                 $result['node_path'][] = array('node_id' => $current_node_id, 'categories' => $categs);
                 $categs = array();
                 $current_node_id = $obj->num_noeud;
             }
             $categ = array();
             $categ['node_id'] = $current_node_id;
             $categ['category_caption'] = utf8_normalize($obj->libelle_categorie);
             $categ['category_lang'] = utf8_normalize($obj->langue);
             $categs[] = $categ;
         }
         if ($current_node_id) {
             $result['node_path'][] = array('node_id' => $current_node_id, 'categories' => $categs);
         }
     }
     $children = array();
     $children_res = noeuds::listChilds($node_id, 1);
     while ($row = pmb_mysql_fetch_assoc($children_res)) {
         $children[] = $row['id_noeud'];
     }
     $result['node_children'] = array();
     if ($children) {
         $q = "select noeuds.id_noeud, noeuds.num_renvoi_voir, categories.* from categories left join noeuds on (noeuds.id_noeud = categories.num_noeud) where noeuds.id_noeud IN(" . implode(',', $children) . ") order by num_noeud, libelle_categorie";
         $r = pmb_mysql_query($q, $dbh);
         $result['node_children'] = array();
         $current_node_id = 0;
         $current_islink = false;
         $categs = array();
         while ($obj = pmb_mysql_fetch_object($r)) {
             if (!$current_node_id) {
                 $current_node_id = $obj->num_noeud;
             }
             if ($current_node_id != $obj->num_noeud) {
                 $result['node_children'][] = array('node_id' => $current_node_id, 'categories' => $categs, 'is_link' => $current_islink);
                 $categs = array();
                 $current_node_id = $obj->num_noeud;
                 $current_islink = $obj->num_renvoi_voir > 0 ? true : false;
             }
             $categ = array();
             $categ['node_id'] = $current_node_id;
             $categ['category_caption'] = utf8_normalize($obj->libelle_categorie);
             $categ['category_lang'] = utf8_normalize($obj->langue);
             $categs[] = $categ;
         }
         if ($current_node_id) {
             $result['node_children'][] = array('node_id' => $current_node_id, 'categories' => $categs, 'is_link' => $current_islink);
         }
     }
     $result['node_seealso'] = array();
     $q = "select voir_aussi.num_noeud_dest, categories.* from voir_aussi left join categories on (voir_aussi.num_noeud_dest = categories.num_noeud) where num_noeud_orig = " . $node_id . " order by voir_aussi.num_noeud_dest";
     $r = pmb_mysql_query($q, $dbh);
     $current_node_id = 0;
     $categs = array();
     while ($obj = pmb_mysql_fetch_object($r)) {
         if (!$current_node_id) {
             $current_node_id = $obj->num_noeud;
         }
         if ($current_node_id != $obj->num_noeud) {
             $result['node_seealso'][] = array('node_id' => $current_node_id, 'categories' => $categs);
             $categs = array();
             $current_node_id = $obj->num_noeud;
         }
         $categ = array();
         $categ['node_id'] = $current_node_id;
         $categ['category_caption'] = utf8_normalize($obj->libelle_categorie);
         $categ['category_lang'] = utf8_normalize($obj->langue);
         $categs[] = $categ;
     }
     if ($current_node_id) {
         $result['node_seealso'][] = array('node_id' => $current_node_id, 'categories' => $categs);
     }
     return $result;
 }