type = $type;
if($is_external) {
static::$table_name = 'facettes_external';
}
self::parse_xml_file($this->type);
}
//recuperation de champs_base.xml
public static function parse_xml_file($type='notices') {
global $include_path;
if(!isset(self::$fields[$type])) {
$file = $include_path."/indexation/".$type."/champs_base_subst.xml";
if(!file_exists($file)){
$file = $include_path."/indexation/".$type."/champs_base.xml";
}
$fp=fopen($file,"r");
if ($fp) {
$xml=fread($fp,filesize($file));
}
fclose($fp);
self::$fields[$type] = _parser_text_no_function_($xml,"INDEXATION");
}
}
//creation de la liste des criteres principaux
public function create_list_fields($crit=0, $ss_crit=0){
global $msg;
$fields_sorted = $this->fields_sort();
$select ="";
if($crit) $select .= "";
return $select;
}
//liste liee => sous champs
public function create_list_subfields($id,$id_ss_champs=0,$suffixe_id=0,$no_label=0){
global $msg,$charset;
$array_subfields = $this->array_subfields($id);
$select_ss_champs="";
if($suffixe_id){
$name_ss_champs="list_ss_champs_".$suffixe_id;
}else{
$name_ss_champs="list_ss_champs";
}
if((count($array_subfields)>1)){
if(!$no_label) {
$select_ss_champs .= "";
}
$select_ss_champs.="";
}elseif(count($array_subfields)==1){
if($id > 1000) {
$select_ss_champs .= "";
} else {
$select_ss_champs .= "";
}
if($id > 99) {
//je repasse la clé à 0 pour y accéder
$array_subfields = array_values($array_subfields);
$select_ss_champs .= htmlentities($array_subfields[0],ENT_QUOTES,$charset);
}
}
return $select_ss_champs;
}
//Liste des facettes créées
public function get_display_list(){
global $msg, $charset;
global $tpl_vue_facettes;
$lst="";
$fields = $this->fields_sort();
$query = "SELECT * FROM ".static::$table_name." order by facette_order, facette_name";
$result = pmb_mysql_query($query);
$i = 0;
while($row = pmb_mysql_fetch_object($result)){
$array_subfields = $this->array_subfields($row->facette_critere);
if ($i % 2) $pair_impair = "even"; else $pair_impair = "odd";
$td_javascript="
onMouseDown=\"document.location='./admin.php?categ=opac&sub=facette_search_opac§ion=!!section!!&action=edit&id=".$row->id_facette."'\"
onmouseover=\"this.className='surbrillance'\" onmouseout=\"this.className='".$pair_impair."'\"
style=\"cursor : pointer\" ";
$lst .= "
id_facette."'\"/>
id_facette."'\"/>
|
".htmlentities($row->facette_name,ENT_QUOTES,$charset)." | ";
if($row->facette_critere > 1000) {
$authperso_query = "select authperso_name from authperso where id_authperso =".($row->facette_critere - 1000);
$authperso_result = pmb_mysql_query($authperso_query);
$lst .= "";
if (pmb_mysql_num_rows($authperso_result)) {
$authperso_row = pmb_mysql_fetch_object($authperso_result);
$lst .= $authperso_row->authperso_name;
}
$lst .= " | ";
} else {
$lst .= "".htmlentities($fields[$row->facette_critere],ENT_QUOTES,$charset)." | ";
}
$lst .= "".(sizeof($array_subfields)>1 ? htmlentities($array_subfields[$row->facette_ss_critere],ENT_QUOTES,$charset) : $msg["admin_opac_facette_ss_critere"])." |
".($row->facette_nb_result ? $row->facette_nb_result : htmlentities($msg["admin_opac_facette_illimite"],ENT_QUOTES,$charset))." |
".($row->facette_type_sort ? $msg['intit_gest_tri2'] : $msg['intit_gest_tri1'])." ".($row->facette_order_sort ? $msg['intit_gest_tri4'] : $msg['intit_gest_tri3'])." |
".($row->facette_visible_gestion ? 'X' : '')." |
".($row->facette_visible ? 'X' : '')." |
";
$tpl_vue_facettes = str_replace('!!id!!',$row->id_facette, $tpl_vue_facettes);
$i++;
}
$tpl_vue_facettes = str_replace('!!lst_facette!!', $lst, $tpl_vue_facettes);
$tpl_vue_facettes = str_replace('!!section!!', static::$table_name, $tpl_vue_facettes);
return $tpl_vue_facettes;
}
public static function facette_up($id){
$requete="select facette_order from ".static::$table_name." where id_facette=$id";
$resultat=pmb_mysql_query($requete);
$ordre=pmb_mysql_result($resultat,0,0);
$requete="select max(facette_order) as ordre from ".static::$table_name." where facette_order<$ordre";
$resultat=pmb_mysql_query($requete);
$ordre_max=@pmb_mysql_result($resultat,0,0);
if ($ordre_max) {
$requete="select id_facette from ".static::$table_name." where facette_order=$ordre_max limit 1";
$resultat=pmb_mysql_query($requete);
$id_facette_max=pmb_mysql_result($resultat,0,0);
$requete="update ".static::$table_name." set facette_order='".$ordre_max."' where id_facette=$id";
pmb_mysql_query($requete);
$requete="update ".static::$table_name." set facette_order='".$ordre."' where id_facette=".$id_facette_max;
pmb_mysql_query($requete);
}
}
public static function facette_down($id){
$requete="select facette_order from ".static::$table_name." where id_facette=$id";
$resultat=pmb_mysql_query($requete);
$ordre=pmb_mysql_result($resultat,0,0);
$requete="select min(facette_order) as ordre from ".static::$table_name." where facette_order>$ordre";
$resultat=pmb_mysql_query($requete);
$ordre_min=@pmb_mysql_result($resultat,0,0);
if ($ordre_min) {
$requete="select id_facette from ".static::$table_name." where facette_order=$ordre_min limit 1";
$resultat=pmb_mysql_query($requete);
$id_facette_min=pmb_mysql_result($resultat,0,0);
$requete="update ".static::$table_name." set facette_order='".$ordre_min."' where id_facette=$id";
pmb_mysql_query($requete);
$requete="update ".static::$table_name." set facette_order='".$ordre."' where id_facette=".$id_facette_min;
pmb_mysql_query($requete);
}
}
public static function facette_order_by_name(){
$query = "SELECT id_facette FROM ".static::$table_name." order by facette_name";
$result = pmb_mysql_query($query);
$i=1;
while($row = pmb_mysql_fetch_object($result)){
pmb_mysql_query("UPDATE ".static::$table_name." SET facette_order='".$i."' where id_facette=".$row->id_facette);
$i++;
}
}
public function fields_sort(){
global $msg;
$array_sort = array();
for($i=0;$itype]['FIELD']);$i++){
if($tmp= $msg[self::$fields[$this->type]['FIELD'][$i]['NAME']]){
$lib = $tmp;
}else{
$lib = self::$fields[$this->type]['FIELD'][$i]['NAME'];
}
$array_sort[self::$fields[$this->type]['FIELD'][$i]['ID']+0] = $lib;
}
asort($array_sort);
return $array_sort;
}
public function array_subfields($id){
global $msg,$charset;
$array_subfields = array();
$isbd = '';
if($id == 100) {
$result = pmb_mysql_query("select idchamp,titre from notices_custom order by titre asc");
while($row=pmb_mysql_fetch_object($result)){
$array_subfields[$row->idchamp] = $row->titre;
}
} elseif($id > 1000) {
$array_subfields[0] = $msg['facette_isbd'];
$result = pmb_mysql_query("select idchamp,titre from authperso_custom where num_type='".($id-1000)."' order by titre asc");
while($row=pmb_mysql_fetch_object($result)){
$array_subfields[$row->idchamp] = $row->titre;
}
} else {
$array = array();
$callable = array();
for($i = 0; $i < count(self::$fields[$this->type]['FIELD']); $i++) {
if(self::$fields[$this->type]['FIELD'][$i]['ID']==$id) {
if(isset(self::$fields[$this->type]['FIELD'][$i]['ISBD'])) {
$isbd=self::$fields[$this->type]['FIELD'][$i]['ISBD'];
}
$array = self::$fields[$this->type]['FIELD'][$i]['TABLE'][0]['TABLEFIELD'];
if(isset(self::$fields[$this->type]['FIELD'][$i]['CALLABLE'])) {
$callable=self::$fields[$this->type]['FIELD'][$i]['CALLABLE'];
}
break;
}
}
for($i=0;$i