Current File : /home/escuelai/public_html/biblioteca.escuelaintegral.edu.uy/classes/opac_filters.class.php
<?php
// +-------------------------------------------------+
// � 2002-2004 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
// +-------------------------------------------------+
// $Id: opac_filters.class.php,v 1.4 2020/11/04 10:40:46 dgoron Exp $

if (stristr($_SERVER['REQUEST_URI'], ".class.php")) die("no access");

require_once($include_path."/parser.inc.php");
require_once($class_path."/upload_folder.class.php");


class opac_filters {
	
	public $catalog=array();			//Liste des filtres declares
	
	//Constructeur
	public function __construct($id_vue) {
		$this->id_vue=$id_vue;
		global $base_path;
		if (file_exists($base_path."/admin/opac/opac_view/filters/catalog_subst.xml")) 
			$catalog=$base_path."/admin/opac/opac_view/filters/catalog_subst.xml";
		else
			$catalog=$base_path."/admin/opac/opac_view/filters/catalog.xml";
		$this->parse_catalog($catalog);
	}
	
	public function get_messages($lang_path) {
		global $lang;
		global $base_path;
		
		if (file_exists($base_path.$lang_path."/messages/".$lang.".xml")) {
			$file_name=$base_path.$lang_path."/messages/".$lang.".xml";
		} else if (file_exists($base_path.$lang_path."/messages/fr_FR.xml")) {
			$file_name=$base_path.$lang_path."/messages/fr_FR.xml";
		}
		if ($file_name) {
			$xmllist=new XMLlist($file_name);
			$xmllist->analyser();
			return $xmllist->table;
		}
	}
	public function parse_catalog($catalog) {
		global $base_path,$lang;
		//Construction du tableau des connecteurs disponbibles
		$xml=file_get_contents($catalog);
		$param=_parser_text_no_function_($xml,"CATALOG",$catalog);
		for ($i=0; $i<count($param["ITEM"]); $i++) {			
			$item=$param["ITEM"][$i];		
			$t=array();
			if($item["ACTIVE"]=="0") continue;
			$t["PATH"]=$item["PATH"];
			//Parse du manifest 
			$xml_manifest=file_get_contents($base_path."/admin/opac/opac_view/filters/".$item["PATH"]."/manifest.xml");
			$manifest=_parser_text_no_function_($xml_manifest,"MANIFEST");
			$t["NAME"]=$manifest["NAME"][0]["value"];
			$t["AUTHOR"]=$manifest["AUTHOR"][0]["value"];
			$t["ORG"]=$manifest["ORG"][0]["value"];
			$t["DATE"]=$manifest["DATE"][0]["value"];
			$t["STATUS"]=$manifest["STATUS"][0]["value"];
			
			//Commentaires
			$comment=array();
			for ($j=0; $j<count($manifest["COMMENT"]); $j++) {
				if(!isset($manifest["COMMENT"][$j]["lang"])) $manifest["COMMENT"][$j]["lang"] = '';
				if ($manifest["COMMENT"][$j]["lang"]==$lang) { 
					$comment=$manifest["COMMENT"][$j]["value"];
					break;
				} else if (!$manifest["COMMENT"][$j]["lang"]) {
					$c_default=$manifest["COMMENT"][$j]["value"];	
				}
			}
			if ($j==count($manifest["COMMENT"])) $comment=$c_default;
			$t["COMMENT"]=$comment;
			
			$this->catalog[$item["ID"]]=$t;
			$this->msg[$item["ID"]]=$this->get_messages("/admin/opac/opac_view/filters/".$item["PATH"]);
		}
	}	
	
	public function show_form($id) {
		global $base_path,$charset,$lang,$msg;
		
		//Inclusion de la classe
		require_once($base_path."/admin/opac/opac_view/filters/".$this->catalog[$id]["PATH"]."/".$this->catalog[$id]["NAME"].".class.php");
		eval("\$filter=new ".$this->catalog[$id]["NAME"]."(\$this->id_vue,\$this->msg[\$id]);");
		$form=$filter->get_form();			
		
		$form=str_replace("!!id!!",$id,$form);
		$form=gen_plus("filter_".$id,$this->msg[$id]["title"],$form,0);		
		return $form;
	}	
	
	public function show_all_form() {		
		$all_form="";
		
		foreach($this->catalog as $id => $val){				
			$all_form.=$this->show_form($id);
		}	
		return $all_form;
	}
	
	public function save_all_form() {	
		$all_form="";
		foreach($this->catalog as $id => $val){				
			$all_form.=$this->save_form($id);
		}	
		return $all_form;
	}
	
	public function save_form($id) {
		global $base_path,$charset,$lang,$msg;
		$all_form="";		
		//Inclusion de la classe
		require_once($base_path."/admin/opac/opac_view/filters/".$this->catalog[$id]["PATH"]."/".$this->catalog[$id]["NAME"].".class.php");
		eval("\$filter=new ".$this->catalog[$id]["NAME"]."(\$this->id_vue,\$this->msg[\$id]);");
		$form=$filter->save_form();			
	}		
}