Esempio n. 1
0
//recuperation du thesaurus session
if (!$id_thes) {
    $id_thes = thesaurus::getSessionThesaurusId();
}
if ($id_thes == '-1') {
    $id_thes = $thesaurus_defaut;
}
thesaurus::setSessionThesaurusId($id_thes);
$thes = new thesaurus($id_thes);
//Récuperation de la liste des langues définies pour l'interface
$langages = new XMLlist("{$include_path}/messages/languages.xml", 1);
$langages->analyser();
$lg = $langages->table;
//Récuperation de la liste des langues définies pour les thésaurus
//autre que la langue par defaut du thesaurus
$thes_liste_trad = thesaurus::getTranslationsList();
$lg1 = array();
foreach ($thes_liste_trad as $dummykey => $item) {
    if ($item != $thes->langue_defaut && $lg[$item] != '') {
        $lg1[$item] = $lg[$item];
    }
}
// dessin du form
$see_also = array();
if ($id) {
    $title = $msg[318];
    $action = "./autorites.php?categ=categories&sub=update&id={$id}&parent={$parent}";
    $delete_button = "<input type='button' class='bouton' value='{$msg['63']}' onClick=\"confirm_delete();\">";
    $button_voir = "<input type='button' class='bouton' value='{$msg['voir_notices_assoc']}' ";
    $button_voir .= "onclick='unload_off();document.location=\"./catalog.php?categ=search&mode=1&etat=aut_search&aut_type=categ&aut_id={$id}\"'>";
    // on récupère les données de la catégorie
Esempio n. 2
0
 $members_catlg = $aq->get_query_members('catlg', 'catlg.libelle_categorie', 'catlg.index_categorie', 'catlg.num_noeud');
 $list_thes = array();
 if ($id_thes == -1) {
     //recherche dans tous les thesaurus
     $list_thes = thesaurus::getThesaurusList();
 } else {
     //recherche dans le thesaurus transmis
     $thes = new thesaurus($id_thes);
     $list_thes[$id_thes] = $thes->libelle_thesaurus;
 }
 $q = "drop table if exists catjoin ";
 $r = mysql_query($q, $dbh);
 $q = "create temporary table catjoin ENGINE=MyISAM as select ";
 foreach ($list_thes as $id_thesaurus => $libelle_thesaurus) {
     $thes = new thesaurus($id_thesaurus);
     if ($lang == $thes->langue_defaut || in_array($lang, thesaurus::getTranslationsList()) === false) {
         $q .= "noeuds.num_thesaurus, ";
         $q .= "noeuds.id_noeud as num_noeud, ";
         $q .= "catdef.note_application as note_application, ";
         $q .= "catdef.comment_public as comment_public, ";
         $q .= "noeuds.num_renvoi_voir, ";
         $q .= "catdef.libelle_categorie as libelle_categorie, ";
         $q .= "catdef.index_categorie as index_categorie, ";
         $q .= " " . $members_catdef['select'] . " as pert ";
         $q .= "from noeuds ";
         $q .= "join categories as catdef on noeuds.id_noeud = catdef.num_noeud and catdef.langue = '" . $thes->langue_defaut . "' ";
         $q .= "where 1 ";
         $q .= "and noeuds.num_thesaurus = '" . $thes->id_thesaurus . "' ";
         $q .= "and " . $first_clause . " ";
         $q .= "and " . $members_catdef['where'] . " ";
     } else {
 function show_list_of_terms()
 {
     global $charset;
     global $msg;
     global $lang;
     global $dbh;
     global $opac_thesaurus;
     global $nbresultterme;
     //Si il y a eu erreur lors de la première analyse...
     if ($this->error_message) {
         return $this->error_message;
     }
     //Recherche des termes correspondants à la requête
     $where_term = $this->get_where_term();
     if ($where_term) {
         $members_catdef = $this->aq->get_query_members("catdef", "catdef.libelle_categorie", "catdef.index_categorie", "catdef.num_noeud");
         $members_catlg = $this->aq->get_query_members("catlg", "catlg.libelle_categorie", "catlg.index_categorie", "catlg.num_noeud");
     } else {
         echo $msg["term_search_info"];
         return;
     }
     if ($nbresultterme) {
         $this->n_total = $nbresultterme;
         $requete = "select count(catdef.num_noeud) as nb, ";
     } else {
         $requete = "select SQL_CALC_FOUND_ROWS count(catdef.num_noeud) as nb, ";
     }
     if ($this->id_thes != -1) {
         //1 seul thesaurus
         if ($lang == $this->thes->langue_defaut || in_array($lang, thesaurus::getTranslationsList()) === false) {
             //Recherche dans la langue par défaut du thesaurus
             $requete .= "num_thesaurus, ";
             $requete .= "num_noeud as categ_id, ";
             $requete .= "libelle_categorie as categ_libelle, ";
             $requete .= "catdef.index_categorie as indexcat ";
             if ($where_term) {
                 $requete .= ", " . $members_catdef["select"] . " as pert ";
             }
             $requete .= "from categories as catdef ";
             $requete .= "where 1 ";
             if ($where_term) {
                 $requete .= "and " . $members_catdef["where"] . " ";
             }
             $requete .= "and num_thesaurus = '" . $this->id_thes . "' ";
             $requete .= "and catdef.langue = '" . $this->thes->langue_defaut . "' ";
             $requete .= "and catdef.libelle_categorie not like '~%' ";
             $requete .= "group by categ_libelle ";
             $requete .= "order by ";
             if ($where_term) {
                 $requete .= "pert desc, ";
             }
             $requete .= "indexcat asc ";
             $requete .= "limit " . $this->offset . "," . $this->n_per_page;
         } else {
             //Recherche dans la langue de l'interface ou dans la langue par défaut du thesaurus
             $requete .= "catdef.num_thesaurus, ";
             $requete .= "catdef.num_noeud as categ_id, ";
             $requete .= "if (catlg.num_noeud is null, catdef.libelle_categorie, catlg.libelle_categorie ) as categ_libelle, ";
             $requete .= "if (catlg.num_noeud is null, catdef.index_categorie , catlg.index_categorie ) as indexcat ";
             if ($where_term) {
                 $requete .= ", if (catlg.num_noeud is null, " . $members_catdef["select"] . ", " . $members_catlg["select"] . ") as pert ";
             }
             $requete .= "from categories as catdef ";
             $requete .= "left join categories as catlg on catdef.num_noeud = catlg.num_noeud and catlg.langue = '" . $lang . "' ";
             $requete .= "where 1 ";
             if ($where_term) {
                 $requete .= "and (if(catlg.num_noeud is null, " . $members_catdef["where"] . ", " . $members_catlg["where"] . ") ) ";
             }
             $requete .= "and catdef.num_thesaurus = '" . $this->id_thes . "' ";
             $requete .= "and catdef.langue = '" . $this->thes->langue_defaut . "' ";
             $requete .= "and catdef.libelle_categorie not like '~%' ";
             $requete .= "group by categ_libelle ";
             $requete .= "order by ";
             if ($where_term) {
                 $requete .= "pert desc, ";
             }
             $requete .= "indexcat asc ";
             $requete .= "limit " . $this->offset . "," . $this->n_per_page;
         }
     } else {
         //tous les thesaurus
         //on recherche dans la langue de l'interface ou dans la langue par défaut du thesaurus
         $requete .= "catdef.num_thesaurus, ";
         $requete .= "catdef.num_noeud as categ_id, ";
         $requete .= "if (catlg.num_noeud is null, catdef.libelle_categorie , catlg.libelle_categorie ) as categ_libelle, ";
         $requete .= "if (catlg.num_noeud is null, catdef.index_categorie , catlg.index_categorie ) as indexcat ";
         if ($where_term) {
             $requete .= ", if (catlg.num_noeud is null, " . $members_catdef["select"] . ", " . $members_catlg["select"] . ") as pert ";
         }
         $requete .= "from thesaurus ";
         $requete .= "left join categories as catdef on id_thesaurus=catdef.num_thesaurus and catdef.langue=thesaurus.langue_defaut ";
         $requete .= "left join categories as catlg on catdef.num_noeud=catlg.num_noeud and catlg.langue = '" . $lang . "' ";
         if ($where_term) {
             $requete .= "where if(catlg.num_noeud is null, " . $members_catdef["where"] . ", " . $members_catlg["where"] . ") ";
         }
         $requete .= "group by categ_libelle, catdef.num_thesaurus ";
         $requete .= "order by ";
         if ($where_term) {
             $requete .= "pert desc, ";
         }
         $requete .= "catdef.num_thesaurus, indexcat asc ";
         $requete .= "limit " . $this->offset . "," . $this->n_per_page;
     }
     $resultat = pmb_mysql_query($requete, $dbh);
     //On récupère le nombre de résultat
     if (!$this->n_total) {
         $qry = "SELECT FOUND_ROWS() AS NbRows";
         if ($resnum = pmb_mysql_query($qry)) {
             $this->n_total = pmb_mysql_result($resnum, 0, 0);
         }
     }
     $res = "<b>";
     if ($this->search_term != "") {
         $res .= $msg["term_search_found_term"] . "<i>" . htmlentities($this->search_term_origin, ENT_QUOTES, $charset);
     } else {
         $res .= "<i>" . $msg["term_search_all_terms"];
     }
     $res .= "</i></b>\n";
     //Navigateur de page
     if ($this->n_total) {
         $res .= "<br /><span style='text-align:right;'>" . $this->page_navigator() . "</span><br /><br />";
     } else {
         $res .= "<br /><br /><span style='text-align:right;'><i>" . $msg['term_no_results'] . "</span><br /><br />";
     }
     //Affichage des termes trouvés
     $class = "colonne2";
     while ($r = pmb_mysql_fetch_object($resultat)) {
         $show = 1;
         //S'il n'y a qu'un seul résultat, vérification que ce n'est pas un terme masqué
         if ($r->nb == 1 && !$this->keep_tilde) {
             $t_test = new category($resultat->categ_id);
             if ($t_test->is_under_tilde && !$t_test->voir_id) {
                 $show = 0;
             }
         }
         if ($show) {
             $res .= "<div class='" . $class . "'>";
             if ($r->nb > 1) {
                 $nbre_termes = '(' . $r->nb . ') ';
             } else {
                 $nbre_termes = '';
             }
             $res .= $nbre_termes . "<a href=\"" . $this->url_for_term_show . '?term=' . rawurlencode($r->categ_libelle) . '&id_thes=' . $r->num_thesaurus . '&' . $this->base_query . "\" target=\"term_show\">";
             if ($this->id_thes == -1) {
                 //le nom du thesaurus n'est pas affiché si 1 seul thesaurus
                 $res .= '[' . htmlentities(addslashes(thesaurus::getLibelle($r->num_thesaurus)), ENT_QUOTES, $charset) . '] ';
             }
             $res .= htmlentities($r->categ_libelle, ENT_QUOTES, $charset) . "</a><br />\n";
             $res .= "</div>";
             if ($class == "colonne2") {
                 $class = "colonne_suite";
             } else {
                 $class = "colonne2";
             }
         }
     }
     if ($class = "colonne_suite") {
         $res .= "<div class=\"colonne_suite\"></div>\n";
     }
     return $res;
 }
Esempio n. 4
0
 function do_query($mode, $param = "")
 {
     global $lang;
     $select = "SELECT DISTINCT noeuds.id_noeud AS categ_id, ";
     $from = "FROM noeuds ";
     $join = " JOIN categories AS catdef ON noeuds.id_noeud = catdef.num_noeud AND catdef.langue = '" . addslashes($this->thes->langue_defaut) . "' ";
     $where = "WHERE 1 ";
     $order = "ORDER BY categ_libelle ";
     $limit = "";
     if ($lang == $this->thes->langue_defaut || in_array($lang, thesaurus::getTranslationsList()) === false) {
         $simple = true;
     } else {
         $simple = false;
     }
     //$select.= "noeuds.num_parent AS categ_parent, ";
     if ($simple) {
         $select .= "catdef.libelle_categorie AS categ_libelle, ";
         //$select.= "catdef.note_application as categ_comment, ";
         //$select.= "catdef.index_categorie as index_categorie ";
     } else {
         $select .= "IF (catlg.num_noeud IS NULL, catdef.libelle_categorie, catlg.libelle_categorie) AS categ_libelle, ";
         $join .= "LEFT JOIN categories AS catlg ON catdef.num_noeud = catlg.num_noeud AND catlg.langue = '" . $lang . "' ";
         //$select.= "if (catlg.num_noeud is null, catdef.note_application, catlg.note_application) as categ_comment, ";
         //$select.= "if (catlg.num_noeud is null, catdef.index_categorie, catlg.index_categorie) as index_categorie ";
     }
     if ($mode == 1) {
         $where .= "AND noeuds.num_thesaurus = '" . $this->id_thes . "' ";
         if ($simple) {
             $where .= "AND catdef.libelle_categorie = '" . addslashes($this->term) . "' ";
         } else {
             $where .= "AND (IF (catlg.num_noeud IS NULL, catdef.libelle_categorie = '" . addslashes($this->term) . "', catlg.libelle_categorie = '" . addslashes($this->term) . "') ) ";
         }
     } elseif ($mode == 2) {
         $from = "FROM voir_aussi JOIN noeuds ON noeuds.id_noeud=voir_aussi.num_noeud_dest ";
         //On écrase l'ancien from car ce n'est pas ce que l'on veut
         $where .= "AND voir_aussi.num_noeud_orig = '" . $param . "' ";
     } elseif ($mode == 3) {
         $select .= "noeuds.num_thesaurus as thes_id, ";
         $select .= "thesaurus.libelle_thesaurus as thes_libelle, ";
         $join .= "JOIN thesaurus ON noeuds.num_thesaurus=thesaurus.id_thesaurus ";
         $where .= "AND noeuds.id_noeud = '" . $param . "' ";
     } elseif ($mode == 4) {
         $where .= "AND noeuds.num_parent = '" . $param . "' ";
         $limit .= "LIMIT 400";
     }
     $select .= "noeuds.num_renvoi_voir AS categ_see ";
     $requete = $select . $from . $join . $where . $order . $limit;
     return pmb_mysql_query($requete);
 }
 function search_categories()
 {
     global $opac_search_other_function, $typdoc, $dbh, $charset, $opac_thesaurus_defaut, $lang, $opac_thesaurus;
     global $opac_stemming_active;
     $first_clause .= "categories.libelle_categorie not like '~%' ";
     $q = 'drop table if exists catjoin ';
     $r = pmb_mysql_query($q, $dbh);
     $q = 'create  temporary table catjoin ( ';
     $q .= "num_thesaurus int(3) unsigned not null default '0', ";
     $q .= "num_noeud int(9) unsigned not null default '0', ";
     $q .= 'key (num_noeud,num_thesaurus) ';
     $q .= ") ENGINE=MyISAM ";
     $r = pmb_mysql_query($q, $dbh);
     $list_thes = array();
     if ($opac_thesaurus) {
         //mode multithesaurus
         $list_thes = thesaurus::getThesaurusList();
         $id_thes_for_link = -1;
     } else {
         //mode monothesaurus
         $thes = new thesaurus($opac_thesaurus_defaut);
         $list_thes[$opac_thesaurus_defaut] = $thes->libelle_thesaurus;
         $id_thes_for_link = $opac_thesaurus_defaut;
     }
     $aq = new analyse_query(stripslashes($this->user_query), 0, 0, 1, 0, $opac_stemming_active);
     $members_catdef = $aq->get_query_members('catdef', 'catdef.libelle_categorie', 'catdef.index_categorie', 'catdef.num_noeud');
     $members_catlg = $aq->get_query_members('catlg', 'catlg.libelle_categorie', 'catlg.index_categorie', 'catlg.num_noeud');
     foreach ($list_thes as $id_thesaurus => $libelle_thesaurus) {
         $thes = new thesaurus($id_thesaurus);
         $q = "INSERT INTO catjoin SELECT noeuds.num_thesaurus, noeuds.id_noeud FROM ";
         if ($lang == $thes->langue_defaut || in_array($lang, thesaurus::getTranslationsList()) === false) {
             $q .= "noeuds JOIN categories as catdef on noeuds.id_noeud = catdef.num_noeud AND  catdef.langue = '" . $thes->langue_defaut . "'";
             //$q.=" WHERE noeuds.num_thesaurus='".$id_thesaurus."' AND not_use_in_indexation='0' AND catdef.libelle_categorie not like '~%' and ".$members_catdef["where"];
             $q .= " WHERE noeuds.num_thesaurus='" . $id_thesaurus . "' AND catdef.libelle_categorie not like '~%' and " . $members_catdef["where"];
         } else {
             $q .= "noeuds JOIN categories as catdef on noeuds.id_noeud = catdef.num_noeud AND catdef.langue='" . $thes->langue_defaut . "' JOIN categories as catlg on catdef.num_noeud=catlg.num_noeud and catlg.langue = '" . $lang . "'";
             //$q.=" WHERE noeuds.num_thesaurus='".$id_thesaurus."' AND not_use_in_indexation='0' AND if(catlg.num_noeud is null, ".$members_catdef["where"].", ".$members_catlg["where"].") AND if(catlg.num_noeud is null,catdef.libelle_categorie not like '~%',catlg.libelle_categorie not like '~%')";
             $q .= " WHERE noeuds.num_thesaurus='" . $id_thesaurus . "' AND if(catlg.num_noeud is null, " . $members_catdef["where"] . ", " . $members_catlg["where"] . ") AND if(catlg.num_noeud is null,catdef.libelle_categorie not like '~%',catlg.libelle_categorie not like '~%')";
         }
         $r = pmb_mysql_query($q, $dbh);
     }
     $clause = '';
     $add_notice = '';
     if ($opac_search_other_function) {
         $add_notice = search_other_function_clause();
     }
     if ($typdoc || $add_notice) {
         $clause .= ' JOIN notices_categories ON notices_categories.num_noeud=catjoin.num_noeud JOIN notices ON notices_categories.notcateg_notice=notices.notice_id WHERE 1 ';
     } else {
         $clause .= ' WHERE 1 ';
     }
     if ($typdoc) {
         $clause .= " and typdoc='" . $typdoc . "' ";
     }
     if ($add_notice) {
         $clause .= ' and notice_id in (' . $add_notice . ')';
     }
     $q = 'select count(distinct catjoin.num_noeud) from catjoin ' . $clause;
     $r = pmb_mysql_query($q);
     $nb_result_categories = pmb_mysql_result($r, 0, 0);
     if ($nb_result_categories) {
         $form = "<form name=\"search_categorie\" action=\"./index.php?lvl=more_results\" method=\"post\">";
         $form .= "<input type=\"hidden\" name=\"user_query\" value=\"" . htmlentities(stripslashes($this->user_query), ENT_QUOTES, $charset) . "\">\n";
         if (function_exists("search_other_function_post_values")) {
             $form .= search_other_function_post_values();
         }
         $form .= "<input type=\"hidden\" name=\"mode\" value=\"categorie\">\n";
         $form .= "<input type=\"hidden\" name=\"search_type_asked\" value=\"simple_search\">\n";
         $form .= "<input type=\"hidden\" id=\"count\" name=\"count\" value=\"" . $nb_result_categories . "\">\n";
         $form .= "<input type=\"hidden\" name=\"clause\" value=\"" . htmlentities($clause, ENT_QUOTES, $charset) . "\">\n";
         $form .= "<input type=\"hidden\" id=\"id_thes\" name=\"id_thes\" value=\"" . $id_thes_for_link . "\"></form>\n";
         $_SESSION["level1"]["category"]["form"] = $form;
         $_SESSION["level1"]["category"]["count"] = $nb_result_categories;
     }
     return $nb_result_categories;
 }