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();
31 function set_cache($data_name, $data, $data_id){
32 if($this->use_cache()){
33 $this->cache[$data_name] = $data;
34 $this->cache[$data_name]["id"] = $data_id;
38 function get_data($data_path, $data_id){
39 $data_name = $this->data_name($data_path, $data_id);
40 if(isset($this->cache[$data_name])) return $this->cache[$data_name];
41 if($this->buffer = @file_get_contents($data_name)){
42 if(($data = $this->parse_data()) !== false){
43 $this->set_cache($data_name, $data, $data_id);
44 $data["id"] = $data_id;
51 function add_data($data_path, $data_id, $data){
52 return $this->_set_data($data_path, $data_id, $data);
55 function set_data($data_path, $data_id, $data){
56 return $this->_set_data($data_path, $data_id, $data);
59 function _set_data($data_path, $data_id, $data){
60 if($fh = @fopen($this->data_name($data_path, $data_id), "w")){
61 $this->buffer = $this->serialize_data($data);
62 if(@fwrite($fh, $this->buffer) !== false){
65 $data_name = $this->data_name($data_path, $data_id);
66 $this->set_cache($data_name, $data, $data_id);
77 function del_data($data_path, $data_id){
78 $data_name = $this->data_name($data_path, $data_id);
79 if(isset($this->cache[$data_name])) unset($this->cache[$data_name]);
80 return @unlink($this->data_name($data_path, $data_id));
83 function data_name($data_path, $data_id){
84 return $this->host.$this->base.$data_path.$data_id.".xml";
87 function parse_data(){
88 if(!isset($this->sxml)) $this->sxml = new sxml();
89 $this->sxml->parse($this->buffer);
90 if(isset($this->sxml->data["tuple"][0])){
91 $this->buffer = $this->sxml->data["tuple"][0];
93 foreach($this->buffer["subs"] as $key => $value){
94 $v_rst[$key] = $value[0]["data"];
101 function serialize_data($data){
102 $this->buffer = "<tuple>\n";
103 foreach($data as $key => $value){
104 if(isset($value)) $this->buffer .= " <".$key."><![CDATA[".$value."]]></".$key.">\n";
106 $this->buffer .= "</tuple>\n";
107 return $this->buffer;