public function get_datas() { //on commence par récupérer l'identifiant retourné par le sélecteur... if ($this->parameters['selector'] != "") { for ($i = 0; $i < count($this->selectors); $i++) { if ($this->selectors[$i]['name'] == $this->parameters['selector']) { $selector = new $this->parameters['selector']($this->selectors[$i]['id']); break; } } $values = $selector->get_value(); $searcher = new search(false); $current_search = $searcher->serialize_search(); $searcher->destroy_global_env(); global $search; $search = array(); $search[] = "d_" . $values['cp']; $op = "op_0_d_" . $values['cp']; $field = "field_0_d_" . $values['cp']; global ${$op}, ${$field}; ${$op} = "EQ"; ${$field} = $values['cp_val']; $table = $searcher->make_search(); $query = "select notice_id from " . $table; $result = pmb_mysql_query($query); $records = array(); if (pmb_mysql_num_rows($result)) { while ($row = pmb_mysql_fetch_object($result)) { $records[] = $row->notice_id; } } $searcher->unserialize_search($current_search); $records = $this->filter_datas("notices", $records); if ($this->parameters['nb_max_elements'] > 0) { $records = array_slice($records, 0, $this->parameters['nb_max_elements']); } $return = array('title' => 'Liste de Notices', 'records' => $records); return $return; } return false; }
function get_link() { global $dbh, $onglet_persopac, $launch_search; global $opac_view_filter_class; //$myQuery = pmb_mysql_query("SELECT * FROM search_persopac order by search_name ", $dbh); $myQuery = pmb_mysql_query("SELECT search_persopac.*, group_concat(id_categ_empr) as categ_restrict FROM search_persopac left join search_persopac_empr_categ on id_search_persopac = search_id group by search_id order by search_name ", $dbh); $this->search_persopac_list = array(); $link = ""; if (pmb_mysql_num_rows($myQuery)) { $i = 0; //on récupère la catégorie du lecteur... if ($_SESSION['id_empr_session']) { $req = "select empr_categ from empr where id_empr = " . $_SESSION['id_empr_session']; $res = pmb_mysql_query($req); if (pmb_mysql_num_rows($res)) { $empr_categ = pmb_mysql_result($res, 0, 0); } else { $empr_categ = 0; } } else { $empr_categ = 0; } while ($r = pmb_mysql_fetch_object($myQuery)) { if ($opac_view_filter_class) { if (!$opac_view_filter_class->is_selected("search_perso", $r->search_id)) { continue; } } $empr_categ_restrict = $r->categ_restrict != '' ? explode(",", $r->categ_restrict) : array(); if (count($empr_categ_restrict) == 0 || in_array($empr_categ, $empr_categ_restrict)) { $name = translation::get_text($r->search_id, "search_persopac", "search_name", $r->search_name); $shortname = translation::get_text($r->search_id, "search_persopac", "search_shortname", $r->search_shortname); if ($r->search_directlink) { if ($shortname) { $libelle = $shortname; } else { $libelle = $name; } $my_search = new search(); $backup_search = $my_search->serialize_search(); $my_search->unserialize_search($r->search_query); $forms_search .= "\n" . $my_search->make_hidden_search_form("./index.php?search_type_asked=extended_search&onglet_persopac=" . $r->search_id . "&limitsearch=" . $r->search_limitsearch, "search_form" . $r->search_id) . "\n"; $my_search->destroy_global_env(); $my_search->unserialize_search($backup_search); if ($onglet_persopac == $r->search_id) { $li_id = " id='current' "; if (!$r->search_limitsearch || !$launch_search) { $lien = $libelle; } else { $lien = "<a href=\"javascript:document.forms['search_form" . $r->search_id . "'].submit();\">" . $libelle . "</a>"; } } else { $li_id = ""; $lien = "<a href=\"javascript:document.forms['search_form" . $r->search_id . "'].submit();\">" . $libelle . "</a>"; } $link .= "\n\t\t\t\t\t\t<li {$li_id} >\n\t\t\t\t\t\t\t{$lien}\t\n\t\t\t\t\t\t</li>"; } $this->search_persopac_list[$i] = new stdClass(); $this->search_persopac_list[$i]->id = $r->search_id; $this->search_persopac_list[$i]->name = $name; $this->search_persopac_list[$i]->shortname = $shortname; $this->search_persopac_list[$i]->query = $r->search_query; $this->search_persopac_list[$i]->human = $r->search_human; $this->search_persopac_list[$i]->directlink = $r->search_directlink; $this->search_persopac_list[$i]->limitsearch = $r->search_limitsearch; $i++; } } } $this->directlink_user = $link; $this->directlink_user_form = $forms_search; return true; }
function generateEntitySearch($entity_search) { global $search; $search = $ent_search = array(); foreach ($entity_search->descriptors as $desc) { if (count($desc->search_infos) > 1) { array_unshift($ent_search, $desc->search_infos); } else { array_push($ent_search, $desc->search_infos); } } if (count($ent_search) > 0) { $n = 0; for ($i = 0; $i < count($ent_search); $i++) { for ($j = 0; $j < count($ent_search[$i]); $j++) { $search[$n] = "f_" . $ent_search[$i][$j]['id']; $op = "op_" . $n . "_" . $search[$n]; global ${$op}; ${$op} = $ent_search[$i][$j]['op']; $field = "field_" . $n . "_" . $search[$n]; global ${$field}; ${$field}[0] = $ent_search[$i][$j]['value']; if (count($ent_search[$i][$j]['var']) > 0) { $fieldvar = "fieldvar_" . $n . "_" . $search[$n]; global ${$fieldvar}; for ($k = 0; $k < count($ent_search[$i][$j]['var']); $k++) { ${$fieldvar}[$ent_search[$i][$j]['var'][$k]['name']][0] = $ent_search[$i][$j]['var'][$k]['value']; } } $inter = "inter_" . $n . "_" . $search[$n]; global ${$inter}; if ($n > 0) { ${$inter} = $i > 0 ? "or" : "and"; } $n++; } } $entity_search = search::serialize_search(); search::destroy_global_env(); } else { $entity_search = ""; } return $entity_search; }
function make_human_query() { //Récupération de la valeur de saisie $valeur_ = "field_" . $this->n_ligne . "_s_" . $this->id; global ${$valeur_}; $valeur = ${$valeur_}; $litteral = array(); //on stocke l'environnement courant $current_search = search::serialize_search(); //on le détruit search::destroy_global_env(); //et on se met dans le contexte de la requete OpenURL $this->s = new search("search_openurl"); $this->s->unserialize_search($valeur[0]); global $search; //on génère une human_query $litteral[0] = $this->s->make_human_query(); //et on détruit le contexte d'OpenURL pour revenir en mode normal search::destroy_global_env(); search::unserialize_search($current_search); return $litteral; }