11 public function mw_xml_data($host, $base){
12 $this->host = $host.(substr($host, -1) != "/" ? "/" : "");
13 $this->base = $base.(substr($base, -1) != "/" ? "/" : "");
14 $this->cache = array();
17 public function host(){
21 public function base(){
25 public function use_cache(){
29 public function set_cache($data_name, $data, $data_id){
30 if($this->use_cache()){
31 $this->cache[$data_name] = $data;
32 $this->cache[$data_name]["id"] = $data_id;
36 public function get_data($data_path, $data_id){
37 $data_name = $this->data_name($data_path, $data_id);
38 if(isset($this->cache[$data_name])) return $this->cache[$data_name];
39 if($this->buffer = @file_get_contents($data_name)){
40 if(($data = $this->parse_data()) !== false){
41 $this->set_cache($data_name, $data, $data_id);
42 $data["id"] = $data_id;
49 public function add_data($data_path, $data_id, $data){
50 return $this->_set_data($data_path, $data_id, $data);
53 public function set_data($data_path, $data_id, $data){
54 return $this->_set_data($data_path, $data_id, $data);
57 public function _set_data($data_path, $data_id, $data){
58 if($fh = @fopen($this->data_name($data_path, $data_id), "w")){
59 $this->buffer = $this->serialize_data($data);
60 if(@fwrite($fh, $this->buffer) !== false){
63 $data_name = $this->data_name($data_path, $data_id);
64 $this->set_cache($data_name, $data, $data_id);
75 public function del_data($data_path, $data_id){
76 $data_name = $this->data_name($data_path, $data_id);
77 if(isset($this->cache[$data_name])) unset($this->cache[$data_name]);
78 return @unlink($this->data_name($data_path, $data_id));
81 public function data_name($data_path, $data_id){
82 return $this->host.$this->base.$data_path.$data_id.".xml";
85 public function parse_data(){
86 if(!isset($this->sxml)) $this->sxml = new sxml();
87 $this->sxml->parse($this->buffer);
88 if(isset($this->sxml->data["tuple"][0])){
89 $this->buffer = $this->sxml->data["tuple"][0];
91 foreach($this->buffer["subs"] as $key => $value){
92 $v_rst[$key] = $value[0]["data"];
99 public function serialize_data($data){
100 $this->buffer = "<tuple>\n";
101 foreach($data as $key => $value){
102 if(isset($value)) $this->buffer .= " <".$key."><![CDATA[".$value."]]></".$key.">\n";
104 $this->buffer .= "</tuple>\n";
105 return $this->buffer;