3 class mw_xml_data_handler{
7 var $data_path_handler;
10 function mw_xml_data_handler($xml_data, $data_path){
11 $this->xml_data = $xml_data;
12 $this->data_path = $data_path.(substr($data_path, -1) != "/" ? "/" : "");
15 function get_data($data_id){
16 if(file_exists($this->xml_data->host().$this->xml_data->base().$this->data_path.$data_id.".xml")){
17 return $this->xml_data->get_data($this->data_path, $data_id);
22 function open_data($FETCH = true){
25 if($this->xml_data->host() && $this->xml_data->base() && $this->data_path){
26 if(is_dir($this->xml_data->host().$this->xml_data->base().$this->data_path) && is_writable($this->xml_data->host().$this->xml_data->base().$this->data_path)){
27 if(!file_exists($this->xml_data->host().$this->xml_data->base().$this->data_path.".index")){
28 if($fh = @fopen($this->xml_data->host().$this->xml_data->base().$this->data_path.".index", "w+")){
29 if(@fwrite($fh, "0")){
30 $this->last_index = 0;
38 if(($this->buffer = @file_get_contents($this->xml_data->host().$this->xml_data->base().$this->data_path.".index")) !== false){
39 if(preg_match("/^[0-9]+$/", $this->buffer)){
40 $this->last_index = (int)$this->buffer;
49 if($this->data_path_handler = @opendir($this->xml_data->host().$this->xml_data->base().$this->data_path)){
65 function fetch_assoc(){
66 if($this->data_path_handler){
68 while(!$FORMAT_OK && ($data_file = @readdir($this->data_path_handler)) !== false){
69 if(substr($data_file, 0, 1) != "." && substr($data_file, -4) == ".xml") $FORMAT_OK = true;
71 if($FORMAT_OK) return $this->xml_data->get_data($this->data_path, substr($data_file, 0, -4));
76 function add_data($data, $index = null){
77 if(!isset($index)) $index = $this->inc_index();
79 if(is_array($data)) return $this->xml_data->add_data($this->data_path, $index, $data);
86 if(isset($this->last_index)){
87 $index = $this->last_index + 1;
88 if($fh = @fopen($this->xml_data->host().$this->xml_data->base().$this->data_path.".index", "w+")){
89 if(@fwrite($fh, (string)$index)){
90 $this->last_index = $index;
100 function set_data($data_file, $data){
101 if(preg_match("/^[0-9]+\.xml$/", $data_file)){
102 if(is_writable($this->xml_data->host().$this->xml_data->base().$this->data_path.$data_file)){
104 return $this->xml_data->set_data($this->data_path, substr($data_file, 0, -4), $data);
111 function del_data($data_file){
112 if(preg_match("/^[0-9]+\.xml$/", $data_file)){
113 if(is_file($this->xml_data->host().$this->xml_data->base().$this->data_path.$data_file)){
114 return $this->xml_data->del_data($this->data_path, substr($data_file, 0, -4));
120 function close_data(){
121 $this->data_path= null;
122 if($this->data_path_handler) @closedir($this->data_path_handler);
123 $this->last_index = null;