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))
53 { $this->close_data();
60 { $this->close_data();
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)
77 { $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))
103 { if(is_array($data))
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;