get_storages_list(); $this->fetch_datas(); } protected function fetch_datas(){ $query = "select * from storages order by storage_name"; $result = mysql_query($query); $this->defined_list = array(); if(mysql_num_rows($result)){ while($row = mysql_fetch_object($result)){ $this->defined_list[] = array( 'id' => $row->id_storage, 'name' => $row->storage_name, 'class' => $row->storage_class, 'params' => unserialize($row->storage_params) ); } } } protected function get_storages_list(){ global $class_path; global $charset,$msg; $xml = new DOMDocument(); if(file_exists($class_path."/storages/storages_subst.xml")){ $file = $class_path."/storages/storages_subst.xml"; }else{ $file = $class_path."/storages/storages.xml"; } $xml->load($file); $storages = $xml->getElementsByTagName("storage"); for($i=0 ; $i<$storages->length ; $i++){ $storage = array(); $storage['class'] = ($charset != "utf-8" ? utf8_decode($storages->item($i)->getAttribute('class')) : $storages->item($i)->getAttribute('class')); $storage['label'] = ($charset != "utf-8" ? utf8_decode($storages->item($i)->nodeValue) : $storages->item($i)->nodeValue); if(substr($storage['label'],0,4) == "msg:"){ $storage['label'] = $msg[substr($storage['label'],4)]; } $this->list[] = $storage; } } public function get_item_form($id=0){ global $charset,$msg; $form = "

".htmlentities($msg['storage_form_title'],ENT_QUOTES,$charset)."

 
"; $id+=0; $form.="
"; return $form; } public static function get_storage_class($id){ global $base_path,$include_path,$class_path; $query = "select storage_class from storages where id_storage = ".($id*1); $result = mysql_query($query); if(mysql_num_rows($result)){ $row = mysql_fetch_object($result); require_once($class_path."/storages/".$row->storage_class.".class.php"); $obj = new $row->storage_class($id); return $obj; } return false; } public function get_form($type,$id){ global $charset,$msg; $form = "

".htmlentities($msg['storage_form_title'],ENT_QUOTES,$charset)."

 
"; $id+=0; $row =array(); if($id){ $query ="select * from storages where storage_object_type = '".$type."' and storage_num_object = '".$id."'"; $result = mysql_query($query); if(mysql_num_rows($result)){ $row = mysql_fetch_assoc($result); } } $form.="
"; if($row['storage_class']){ $form.= $this->get_params_form($row['storage_class'],$row['storage_params']); } $form.= "
 
"; return $form; } public function save_form($type,$id){ global $storage_method,$storage_params; $id+=0; $row =array(); if($id){ $query ="select * from storages where storage_object_type = '".$type."' and storage_num_object = '".$id."'"; $result = mysql_query($query); if(mysql_num_rows($result)){ $row = mysql_fetch_assoc($result); } } if($row['id_storage']){ $query = "update storages set "; $clause =" where id_storage = ".$row['id_storage']; }else{ $query = "insert into storages set "; $clause= ""; } if($storage_method){ $query.= "storage_object_type = '".$type."', storage_num_object = '".$id."',storage_class = '".$storage_method."', storage_params = '".addslashes(serialize($storage_params))."'"; }else if ($row['id_storage']){ $query ="delete from storages"; } mysql_query($query.$clause); } public function get_params_form($class_name,$params=array()){ global $base_path,$include_path,$class_path; $exists = false; foreach($this->list as $storage){ if($class_name == $storage['class']){ $exists =true; break; } } if($exists){ require_once($class_path."/storages/".$class_name.".class.php"); $storage = new $class_name($params); return $storage->get_params_form(); } return ""; } }