3 class sml_data_sources_xml_format extends mw_data
6 var $status; // classes de sources - table sml_classes
13 # ----------------------------------------------------------------------------------------
17 function source_xml_content($id, $params = array())
18 { $env = $this->env();
20 $this->status = isset($this->status) ? $this->status : $this->source_status();
21 if($this->status !== false)
22 { $this->source = isset($params["source"]) ? $params["source"] : $this->source($id, true);
23 if($this->source !== false)
24 { if($this->source["groupes"]) $this->groupes = $this->source["groupes"];
25 if(isset($params["groupes"])) $this->groupes = $params["groupes"];
26 if(!isset($this->groupes)) $this->groupes = $this->source_groupes($id);
27 if($this->groupes !== false)
28 { $this->licence = isset($params["licence"]) ? $params["licence"] : $this->licence($this->source["licence"]["id"]);
29 if($this->licence !== false)
30 { if(($this->sources = $this->source_compositions(array("id_composition" => $id))) !== false)
31 { $content = "<source>\n";
32 if($this->source["derivations"])
33 { foreach($this->source["derivations"] as $id_derivation => $derivation)
34 { $content .= " <derivation><![CDATA[".$derivation["xml"]["url"]."]]></derivation>\n";
37 if($this->source["reference"]) $content .= " <reference><![CDATA[".$this->source["reference"]["xml"]["url"]."]]></reference>\n";
40 " <titre><![CDATA[".$this->source["titre"]."]]></titre>\n"
41 ." <from><![CDATA[http://".$_SERVER["SERVER_NAME"].$env->url("sources/".$this->status[$this->source["status"]]["nom"]."/view", array($this->status[$this->source["status"]]["nom"] => $id))."]]></from>\n";
43 foreach($this->groupes as $id_groupe => $groupe)
44 { if($groupe["nom"] && $groupe["id_groupe_status"])
46 ( $groupe["id_groupe_status"] == $this->id_groupe_status_admin()
47 || $groupe["id_groupe_status"] == $this->id_groupe_status_editeur()
49 { $content .= " <auteur><![CDATA[".$groupe["nom"]."]]></auteur>\n";
55 if(!$HAS_AUTHOR) return false;
56 foreach($this->source["documents"] as $id_document => $document)
59 ." <nom><![CDATA[".$document["nom"]."]]></nom>\n"
60 ." <url><![CDATA[".$document["url"]."]]></url>\n"
65 " <licence url=\"".$this->licence["url"]."\"><![CDATA[".$this->licence["nom"]."]]></licence>\n";
67 if(isset($this->sources[$id]))
68 { foreach($this->sources[$id] as $id_source)
69 { $content .= " <source src=\"".$this->source_xml_url($id_source)."\" />\n";
73 $content .= "</source>";
82 # ----------------------------------------------------------------------------------------
86 function parse_source_xml($xml_content)
87 { if(!isset($this->sxml)) $this->sxml = new sxml();
88 $this->sxml->parse($xml_content);
89 return isset($this->sxml->data["source"][0]);
92 function empty_source($params = array())
94 ( "groupes" => array(),
101 "documents" => array(),
102 "derivations" => array(),
103 "reference" => array(),
107 "use_edit_content" => false
110 foreach($params as $key => $value) $source[$key] = $value;
114 function source_xml_read($url, $xml_content = null)
115 { $source = $this->empty_source();
116 if($this->xml_content = (isset($xml_content) ? $xml_content : $this->get_source_xml_from_url($url)))
117 { if($this->xml_content === -1) $this->xml_content = $this->get_source_xml_from_url($url, true);
118 $source["xml"] = array
120 "content" => $this->xml_content,
121 "use_edit_content" => false
123 if($this->parse_source_xml($this->xml_content))
124 { $this->buffer = $this->sxml->data["source"][0];
125 foreach($this->buffer["subs"] as $key => $value)
126 { if($key == "auteur")
127 { $source["groupes"][] = array
128 ( "nom" => $value[0]["data"]
131 elseif($key == "document")
132 { foreach($value as $id_document => $document)
133 { $source["documents"][$id_document] = array
134 ( "nom" => $document["subs"]["nom"][0]["data"],
135 "url" => $document["subs"]["url"][0]["data"]
139 elseif($key == "derivation")
140 { $source["derivations"][] = array
142 ( "url" => $value[0]["data"],
144 "use_edit_content" => false
148 elseif($key == "reference")
149 { $source["reference"] = array
151 ( "url" => $value[0]["data"],
153 "use_edit_content" => false
157 elseif($key == "licence")
158 { $source["licence"] = array
159 ( "nom" => $value[0]["data"],
160 "url" => $value[0]["attrs"]["url"]
164 { if(isset($value[0]["data"])) $source[$key] = $value[0]["data"];
167 $source["auteur"] = "";
168 foreach($source["groupes"] as $auteur) $source["auteur"] .= ($source["auteur"] ? ", " : "").$auteur["nom"];