env(); $content = false; $this->status = isset($this->status) ? $this->status : $this->source_status(); if($this->status !== false){ $this->source = isset($params["source"]) ? $params["source"] : $this->source($id, true); if($this->source !== false){ if($this->source["groupes"]) $this->groupes = $this->source["groupes"]; if(isset($params["groupes"])) $this->groupes = $params["groupes"]; if(!isset($this->groupes)) $this->groupes = $this->source_groupes($id); if($this->groupes !== false){ $this->licence = isset($params["licence"]) ? $params["licence"] : $this->licence($this->source["licence"]["id"]); if($this->licence !== false){ if(($this->sources = $this->source_compositions(array("id_composition" => $id))) !== false){ $content = "\n"; if($this->source["derivations"]){ foreach($this->source["derivations"] as $id_derivation => $derivation){ $content .= " \n"; } } if($this->source["reference"]) $content .= " source["reference"]["xml"]["url"]."\" />\n"; else{ $content .= " <![CDATA[".$this->source["titre"]."]]>\n" ." url("sources/".$this->status[$this->source["status"]]["nom"]."/view", array($this->status[$this->source["status"]]["nom"] => $id))."\" />\n"; if(isset($this->source["image_uri"]) && $this->source["image_uri"]){ $content .= " path("web").$this->source["image_uri"]."\" />\n"; } if(isset($this->source["date_creation"]) && $this->source["date_creation"]){ $content .= " ".$this->source["date_creation"]."\n"; } if(isset($this->source["description"]) && $this->source["description"]){ $content .= " source["description"]."]]>\n"; } $HAS_AUTHOR = false; foreach($this->groupes as $id_groupe => $groupe){ if($groupe["nom"] && $groupe["id_groupe_status"]){ if( $groupe["id_groupe_status"] == $this->id_groupe_status_admin() || $groupe["id_groupe_status"] == $this->id_groupe_status_editeur() ){ $content .= " \n"; $HAS_AUTHOR = true; } } else return false; } if(!$HAS_AUTHOR) return false; foreach($this->source["documents"] as $id_document => $document){ $content .= " \n" ." \n" ." \n"; } if($this->licence){ $content .= " licence["url"]."\">licence["nom"]."]]>\n"; } if(isset($this->sources[$id])){ foreach($this->sources[$id] as $id_source){ $content .= " source_xml_url($id_source)."\" />\n"; } } } $content .= ""; } } } } } return $content; } # ---------------------------------------------------------------------------------------- # XML vers data # function parse_source_xml($xml_content){ if(!isset($this->sxml)) $this->sxml = new sxml(); $this->sxml->parse($xml_content); return isset($this->sxml->data["source"][0]); } function empty_source($params = array()){ $source = array( "groupes" => array(), "titre" => "", "date_creation" => "", "from" => "", "licence" => array( "nom" => "", "url" => "" ), "documents" => array(), "derivations" => array(), "reference" => array(), "xml" => array( "url" => "", "content" => "", "use_edit_content" => false ) ); foreach($params as $key => $value) $source[$key] = $value; return $source; } function source_xml_read($url, $xml_content = null){ $source = $this->empty_source(); if($this->xml_content = (isset($xml_content) ? $xml_content : $this->get_source_xml_from_url($url))){ if($this->xml_content === -1) $this->xml_content = $this->get_source_xml_from_url($url, true); if($this->parse_source_xml($this->xml_content)){ $source["xml"] = array( "url" => $url, "content" => $this->xml_content, "use_edit_content" => false ); $this->buffer = $this->sxml->data["source"][0]; if($source_xml_version = $this->get_source_buffer_xml_version()){ $source = $this->parse_source_buffer($source_xml_version, $source); } else return false; } else return false; } else return false; return $source; } 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; } } ?>