13 function mw_xml_data($host, $base)
14 { $this->host = $host.(substr($host, -1) != "/" ? "/" : "");
15 $this->base = $base.(substr($base, -1) != "/" ? "/" : "");
16 $this->cache = array();
19 function host() { return $this->host; }
20 function base() { return $this->base; }
22 function use_cache() { return true; }
24 function set_cache($data_name, $data, $data_id)
25 { if($this->use_cache())
26 { $this->cache[$data_name] = $data;
27 $this->cache[$data_name]["id"] = $data_id;
31 function get_data($data_path, $data_id)
32 { $data_name = $this->data_name($data_path, $data_id);
33 if(isset($this->cache[$data_name])) return $this->cache[$data_name];
34 if($this->buffer = @file_get_contents($data_name))
35 { if(($data = $this->parse_data()) !== false)
36 { $this->set_cache($data_name, $data, $data_id);
37 $data["id"] = $data_id;
44 function add_data($data_path, $data_id, $data)
45 { return $this->_set_data($data_path, $data_id, $data);
48 function set_data($data_path, $data_id, $data)
49 { return $this->_set_data($data_path, $data_id, $data);
52 function _set_data($data_path, $data_id, $data)
53 { if($fh = @fopen($this->data_name($data_path, $data_id), "w"))
54 { $this->buffer = $this->serialize_data($data);
55 if(@fwrite($fh, $this->buffer) !== false)
58 $data_name = $this->data_name($data_path, $data_id);
59 $this->set_cache($data_name, $data, $data_id);
70 function del_data($data_path, $data_id)
71 { $data_name = $this->data_name($data_path, $data_id);
72 if(isset($this->cache[$data_name])) unset($this->cache[$data_name]);
73 return @unlink($this->data_name($data_path, $data_id));
76 function data_name($data_path, $data_id)
77 { return $this->host.$this->base.$data_path.$data_id.".xml";
81 { if(!isset($this->sxml)) $this->sxml = new sxml();
82 $this->sxml->parse($this->buffer);
83 if(isset($this->sxml->data["tuple"][0]))
84 { $this->buffer = $this->sxml->data["tuple"][0];
86 foreach($this->buffer["subs"] as $key => $value)
87 { $v_rst[$key] = $value[0]["data"];
94 function serialize_data($data)
95 { $this->buffer = "<tuple>\n";
96 foreach($data as $key => $value)
97 { if(isset($value)) $this->buffer .= " <".$key."><![CDATA[".$value."]]></".$key.">\n";
99 $this->buffer .= "</tuple>\n";
100 return $this->buffer;