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; }
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; }