keyName." = ".$authority->get_id()." ";
pmb_mysql_query($requete);
}
}
}
protected function sort_results($table) {
global $nb_per_page_search;
global $page;
$start_page = $nb_per_page_search*$page;
$sort = new sort($this->sort_entity_type, 'base');
$sort->appliquer_tri($_SESSION[$this->sort_index], "SELECT * FROM " . $table, "id_authority", $start_page, $nb_per_page_search);
return $sort->table_tri_tempo;
}
protected function get_display_nb_results($nb_results) {
global $msg;
return " => ".$nb_results." ".$msg["search_extended_authorities_found"]."
\n";
}
protected function show_objects_results($table, $has_sort) {
global $dbh;
global $search;
global $nb_per_page_search;
global $page;
$start_page=$nb_per_page_search*$page;
$nb = 0;
$query = "select ".$table.".*,authorities.num_object,authorities.type_object from ".$table.",authorities where authorities.id_authority=".$table.".id_authority";
if(count($search) > 1 && !$has_sort) {
//Tri à appliquer par défaut
}
$query .= " limit ".$start_page.",".$nb_per_page_search;
$result = pmb_mysql_query($query, $dbh);
$objects_ids = array();
while ($row=pmb_mysql_fetch_object($result)) {
$objects_ids[] = $row->id_authority;
}
if(count($objects_ids)) {
$elements_class_name = $this->get_elements_list_ui_class_name();
$elements_instance_list_ui = new $elements_class_name($objects_ids, count($objects_ids), 1);
$elements_instance_list_ui->add_context_parameter('in_search', true);
$elements = $elements_instance_list_ui->get_elements_list();
print $elements;
}
}
protected function get_display_actions() {
return "";
}
protected function get_display_icons($nb_results, $recherche_externe = false) {
return "";
}
public function show_results($url,$url_to_search_form,$hidden_form=true,$search_target="", $acces=false) {
global $dbh;
global $begin_result_liste;
global $nb_per_page_search;
global $page;
global $charset;
global $search;
global $msg;
global $pmb_nb_max_tri;
global $pmb_allow_external_search;
global $debug;
//Y-a-t-il des champs ?
if (count($search)==0) {
array_pop($_SESSION["session_history"]);
error_message_history($msg["search_empty_field"], $msg["search_no_fields"], 1);
exit();
}
//Savoir si l'on peut faire une recherche externe à partir des critères choisis
$recherche_externe=true;
// Permet de savoir sur quelle entités on vas appliquer un tri
$apply_sort_entities = array();
//Verification des champs vides
for ($i=0; $i < count($search); $i++) {
$op=$this->get_global_value("op_".$i."_".$search[$i]);
$field=$this->get_global_value("field_".$i."_".$search[$i]);
$field1=$this->get_global_value("field_".$i."_".$search[$i]."_1");
$s=explode("_",$search[$i]);
$bool=false;
// Recherche tous les champs sur une autorité perso
if ($s[0] == "authperso" && !in_array("authperso", $apply_sort_entities)) {
$apply_sort_entities[] = "authperso";
}
if ($s[0]=="f") {
if (!empty($this->fixedfields[$s[1]]['GROUP']) && !in_array($this->groups[$this->fixedfields[$s[1]]['GROUP']]['objects_type'], $apply_sort_entities)) {
$apply_sort_entities[] = $this->groups[$this->fixedfields[$s[1]]['GROUP']]['objects_type'];
} elseif (empty($this->fixedfields[$s[1]]['GROUP'])) {
if (!in_array("authperso", $apply_sort_entities)) {
$apply_sort_entities[] = "authperso";
}
}
$champ=$this->fixedfields[$s[1]]["TITLE"];
if ($this->is_empty($field, "field_".$i."_".$search[$i]) && $this->is_empty($field1, "field_".$i."_".$search[$i]."_1")) {
$bool=true;
}
} elseif (array_key_exists($s[0],$this->pp)) {
$sort_type = $this->pp[$s[0]]->get_sort_type();
if (!in_array($sort_type, $apply_sort_entities)) {
$apply_sort_entities[] = $sort_type;
}
$champ=$this->pp[$s[0]]->t_fields[$s[1]]["TITRE"];
if ($this->is_empty($field, "field_".$i."_".$search[$i]) && $this->is_empty($field1, "field_".$i."_".$search[$i]."_1")) {
$bool=true;
}
} elseif($s[0]=="s") {
if (!empty($this->specialfields[$s[1]]['GROUP']) && !in_array($this->groups[$this->specialfields[$s[1]]['GROUP']]['objects_type'], $apply_sort_entities)) {
$apply_sort_entities[] = $this->groups[$this->specialfields[$s[1]]['GROUP']]['objects_type'];
}
$recherche_externe=false;
$champ=$this->specialfields[$s[1]]["TITLE"];
$type=$this->specialfields[$s[1]]["TYPE"];
for ($is=0; $istableau_speciaux["TYPE"]); $is++) {
if ($this->tableau_speciaux["TYPE"][$is]["NAME"]==$type) {
$sf=$this->specialfields[$s[1]];
global $include_path;
require_once($include_path."/search_queries/specials/".$this->tableau_speciaux["TYPE"][$is]["PATH"]."/search.class.php");
$specialclass= new $this->tableau_speciaux["TYPE"][$is]["CLASS"]($s[1],$i,$sf,$this);
$bool=$specialclass->is_empty($field);
break;
}
}
}//elseif (substr($s,0,9)=="authperso") {}
if (($bool)&&(!$this->op_empty[$op])) {
$query_data = array_pop($_SESSION["session_history"]);
error_message_history($msg["search_empty_field"], sprintf($msg["search_empty_error_message"],$champ), 1);
print $this->get_back_button($query_data);
exit();
}
}
$table = $this->make_search();
if ($acces == true) {
$this->filter_searchtable_from_accessrights($table);
}
if(!empty($this->context_parameters['in_selector'])) {
$this->filter_searchtable_without_no_display($table);
}
$res = pmb_mysql_query("select count(1) from $table");
if($res) {
$nb_results = pmb_mysql_result($res,0,0);
} else {
$query_data = array_pop($_SESSION["session_history"]);
error_message_history("", $msg["search_impossible"], 1);
print $this->get_back_button($query_data);
exit();
}
// gestion du tri
$entity_type = "mixed";
if (count($apply_sort_entities) == 1) {
$entity_type = $apply_sort_entities[0];
}
$this->sort_entity_type = $entity_type;
$has_sort = false;
if ($nb_results <= $pmb_nb_max_tri) {
$this->sort_index = "tri_" . $entity_type;
if ($_SESSION[$this->sort_index]) {
$table = $this->sort_results($table, $entity_type);
$has_sort = true;
}
}
// fin gestion tri
//Y-a-t-il une erreur lors de la recherche ?
if ($this->error_message) {
$query_data = array_pop($_SESSION["session_history"]);
error_message_history("", $this->error_message, 1);
print $this->get_back_button($query_data);
exit();
}
if ($hidden_form) {
print $this->make_hidden_search_form($url,$this->get_hidden_form_name(),"",false);
print facette_search_compare::form_write_facette_compare();
print "";
}
$human_requete = $this->make_human_query();
print "".$msg["search_search_extended"]." : ".$human_requete ;
if ($debug) print "
".$this->serialize_search();
if ($nb_results) {
print $this->get_display_nb_results($nb_results);
print $begin_result_liste;
print $this->get_display_icons($nb_results, $recherche_externe);
} else {
print "
".$msg["1915"]." ";
}
// Template de panier
self::get_caddie_link();
// Template de tri
self::get_sort_link($nb_results, $entity_type);
if(empty($this->context_parameters['in_selector'])) {
print searcher::get_quick_actions('AUT');
print "get_hidden_form_name().".action='".$url_to_search_form."'; document.".$this->get_hidden_form_name().".target='".$search_target."'; document.".$this->get_hidden_form_name().".submit(); return false;\" value=\"".$msg["search_back"]."\"/>";
print $this->get_display_actions();
}
print searcher::get_check_uncheck_all_buttons();
print $this->get_current_search_map();
$this->show_objects_results($table, $has_sort);
$this->get_navbar($nb_results, $hidden_form);
}
public static function get_caddie_link() {
global $msg;
print " ";
}
public static function get_type_from_mode() {
global $mode;
$type = "MIXED";
switch ($mode) {
case 1 :
$type = "AUTHORS";
break;
case 2 :
$type = "CATEGORIES";
break;
case 3 :
$type = "PUBLISHERS";
break;
case 4 :
$type = "COLLECTIONS";
break;
case 5 :
$type = "SUBCOLLECTIONS";
break;
case 6 :
$type = "SERIES";
break;
case 7 :
$type = "TITRES_UNIFORMES";
break;
case 8 :
$type = "INDEXINT";
break;
case 9 :
$type = "CONCEPTS";
break;
}
return $type;
}
public function get_elements_list_ui_class_name() {
if(!isset($this->elements_list_ui_class_name)) {
$this->elements_list_ui_class_name = "elements_authorities_list_ui";
}
return $this->elements_list_ui_class_name;
}
protected function get_hidden_form_name(){
if(!isset($this->hidden_form_name)){
$this->hidden_form_name = 'search_form_'.md5(microtime());
}
return $this->hidden_form_name;
}
public function get_field_selector($url, $limit_search){
global $pmb_extended_search_auto, $charset, $msg, $filter_group;
if ($pmb_extended_search_auto) {
$r ="