+ function parse_source_buffer($source_xml_version, $default_source = null){
+ if(method_exists($this, $method_name = "parse_source_buffer_".$source_xml_version)){
+ return $this->$method_name($default_source);
+ }
+ return false;
+ }
+
+ function get_source_buffer_xml_version(){
+ if(!isset($this->buffer["subs"])) return false;
+ foreach($this->buffer["subs"] as $key => $value){
+ if($key == "titre" || $key == "auteur"){
+ return "v1";
+ }
+ if($key == "title" || $key == "author"){
+ return "v2";
+ }
+ }
+ }
+
+ // -------------------------------------- source XML v2
+
+ function parse_source_buffer_v2($default_source = null){
+ if(isset($default_source)) $source = $default_source;
+ else $source = $this->empty_source();
+ if(!isset($this->buffer["subs"])) return $source;
+ foreach($this->buffer["subs"] as $key => $value){
+ if($key == "title"){
+ $source["titre"] = $value[0]["data"];
+ }
+ elseif($key == "link"){
+ $source["from"] = $value[0]["attrs"]["href"];
+ }
+ elseif($key == "image"){
+ $source["image"] = $value[0]["attrs"]["src"];
+ }
+ elseif($key == "author"){
+ foreach($value as $author){
+ $source["groupes"][] = array(
+ "nom" => $author["data"],
+ "id_groupe_status" => 0
+ );
+ }
+ }
+ elseif($key == "date"){
+ $source["date_creation"] = $value[0]["data"];
+ }
+ elseif($key == "document"){
+ foreach($value as $id_document => $document){
+ $source["documents"][$id_document] = array(
+ "nom" => $document["data"],
+ "url" => $document["attrs"]["src"]
+ );
+ }
+ }
+ elseif($key == "derivated_from"){
+ $source["derivations"][] = array(
+ "xml" => array(
+ "url" => $value[0]["attrs"]["href"],
+ "content" => "",
+ "use_edit_content" => false
+ )
+ );
+ }
+ elseif($key == "reference"){
+ $source["reference"] = array(
+ "xml" => array(
+ "url" => $value[0]["attrs"]["href"],
+ "content" => "",
+ "use_edit_content" => false
+ )
+ );
+ }
+ elseif($key == "licence"){
+ $source["licence"] = array(
+ "id" => 0,
+ "nom" => $value[0]["data"],
+ "url" => $value[0]["attrs"]["href"]
+ );
+ }
+ else{
+ if(isset($value[0]["data"])) $source[$key] = $value[0]["data"];
+ }
+ }
+ $source["auteur"] = "";
+ foreach($source["groupes"] as $auteur) $source["auteur"] .= ($source["auteur"] ? ", " : "").$auteur["nom"];
+ return $source;
+ }
+
+ // -------------------------------------- source XML v1
+
+ function parse_source_buffer_v1($default_source = null){
+ if(isset($default_source)) $source = $default_source;
+ else $source = $this->empty_source();
+ if(!isset($this->buffer["subs"])) return $source;
+ foreach($this->buffer["subs"] as $key => $value){
+ if($key == "auteur"){
+ $source["groupes"][] = array(
+ "nom" => $value[0]["data"]
+ );
+ }
+ elseif($key == "document"){
+ foreach($value as $id_document => $document){
+ $source["documents"][$id_document] = array(
+ "nom" => $document["subs"]["nom"][0]["data"],
+ "url" => $document["subs"]["url"][0]["data"]
+ );
+ }
+ }
+ elseif($key == "derivation"){
+ $source["derivations"][] = array(
+ "xml" => array(
+ "url" => $value[0]["data"],
+ "content" => "",
+ "use_edit_content" => false
+ )
+ );
+ }
+ elseif($key == "reference"){
+ $source["reference"] = array(
+ "xml" => array(
+ "url" => $value[0]["data"],
+ "content" => "",
+ "use_edit_content" => false
+ )
+ );
+ }
+ elseif($key == "licence"){
+ $source["licence"] = array(
+ "nom" => $value[0]["data"],
+ "url" => $value[0]["attrs"]["url"]
+ );
+ }
+ else{
+ if(isset($value[0]["data"])) $source[$key] = $value[0]["data"];
+ }
+ }
+ $source["auteur"] = "";
+ foreach($source["groupes"] as $auteur) $source["auteur"] .= ($source["auteur"] ? ", " : "").$auteur["nom"];
+ return $source;
+ }
+