descriptor=$include_path."/quotas/$lang.xml"; else $this->descriptor=$descriptor; $this->parse_file(); } public function parse_file() { // global $_parsed_quotas_; global $charset; // Gestion de fichier subst $p_descriptor_subst=substr($this->descriptor,0,-4)."_subst.xml"; if (file_exists($p_descriptor_subst)) { $this->descriptor=$p_descriptor_subst; } if(!isset($this->data)) { $this->data = array(); //Parse le fichier dans un tableau $fp=fopen($this->descriptor,"r") or die(htmlentities("Can't find XML file ".$this->descriptor, ENT_QUOTES, $charset)); $xml=fread($fp,filesize($this->descriptor)); fclose($fp); $param=_parser_text_no_function_($xml, "PMBQUOTAS"); if (!isset($param["TABLE"])) { $table="quotas"; } else { $table=$param["TABLE"]; } $this->data['_table_'] = $table; //Récupération des éléments for ($i=0; $itable); $requete="create temporary table ".$elt["TABLE"]." (id varchar(255),libelle varchar(255)) ENGINE=MyISAM "; pmb_mysql_query($requete); foreach ($ml->table as $key => $val) { $requete="insert into ".$elt["TABLE"]." (id,libelle) values('".addslashes($key)."','".addslashes($val)."')"; pmb_mysql_query($requete); } $elt["FIELD"]="id"; $elt["LABEL"]="libelle"; } else { $elt["FIELD"]=$p_elt["FIELD"][0]["value"]; $elt["LABEL"]=$p_elt["LABEL"][0]["value"]; } if(!defined($elt["NAME"])) { define($elt["NAME"],$elt["ID"]); } $this->data['_elements_'][]=$elt; } //Récupération des types for ($i=0; $idata['_types_'][]=$typ; } } } //Récupération d'un élément à partir de son nom public function get_element_by_name($element_name) { if (isset($this->data)) { reset($this->data['_elements_']); foreach ($this->data['_elements_'] as $key => $val) { if ($val["NAME"]==$element_name) { return $key; } } return -1; } else return -1; } //Récupération d'un élément à partir de son ID public function get_element_by_id($element_id) { if (isset($this->data)) { reset($this->data['_elements_']); foreach ($this->data['_elements_'] as $key => $val) { if ($val["ID"]==$element_id) return $key; } return -1; } else return -1; } //Récupération de l'ID d'un élément par son nom public function get_element_id_by_name($element_name) { if (isset($this->data)) { reset($this->data['_elements_']); foreach ($this->data['_elements_'] as $key => $val) { if ($val["NAME"]==$element_name) return $val["ID"]; } return -1; } else return -1; } //Récupération de l'ID de plusieurs éléments par leur noms séparés par des virgules public function get_elements_id_by_names($elements) { $id=0; $elts=explode(",",$elements); for ($j=0; $jget_element_id_by_name($elts[$j]); } return $id; } //Récupération de la structure type de quota par son id public function get_quota_type_by_id($type_id) { $r=array(); if (isset($this->data)) { for ($i=0; $idata['_types_']); $i++) { if ($this->data['_types_'][$i]["ID"]==$type_id) { $r=$this->data['_types_'][$i]; break; } } } return $r; } //Récupération de la structure type de quota par son id public function get_quota_type_by_name($type_id) { $r=array(); if (isset($this->data)) { for ($i=0; $idata['_types_']); $i++) { if ($this->data['_types_'][$i]["NAME"]==$type_id) { $r=$this->data['_types_'][$i]; break; } } } return $r; } //Récupération du tableau des ids de chaque élément composant un id multiple public function get_table_ids_from_elements_id($id) { $r=array(); for ($i=0; $idata['_elements_']); $i++) { if (((int)$id&(int)$this->data['_elements_'][$i]["ID"])==(int)$this->data['_elements_'][$i]["ID"]) { $r[]=$this->data['_elements_'][$i]["ID"]; } } return $r; } //Récupération du titre correspondant aux éléments du quota (par xxx et par xxx et ...) public function get_title_by_elements_id($id) { global $msg; $ids=$this->get_table_ids_from_elements_id($id); $r=array(); for ($i=0; $idata['_elements_'][$this->get_element_by_id($ids[$i])]["COMMENT"]; } return implode(" ".$msg["quotas_and"]." ",$r); } public function get_data() { return $this->data; } public static function get_instance($descriptor="") { global $include_path, $lang; if ($descriptor=="") { $descriptor=$include_path."/quotas/$lang.xml"; } if(!isset(static::$instance[$descriptor])) { static::$instance[$descriptor] = new quotas($descriptor); } return static::$instance[$descriptor]; } } ?>