예제 #1
0
 /**
  * Creates a basic Atom-format XML structure
  *
  * @param string $alternate the IRI of an alternate version.
  * @param string $self The preferred URI for retrieving Atom Feed Documents representing this Atom feed.
  * @param string $id a permanent, universally unique identifier for an the feed.
  * @param HabariDateTime $updated The most recent update in the collection to which this feed applies.
  *
  * @return SimpleXMLElement The requested Atom document
  */
 public function create_atom_wrapper($alternate, $self, $id, $updated = null)
 {
     // Store handler vars since we'll be using them a lot.
     $handler_vars = Controller::get_handler_vars();
     // Retrieve the current matched rule and store its name and argument values.
     $rr = URL::get_matched_rule();
     $rr_name = $rr->name;
     $rr_args = $rr->named_arg_values;
     // Build the namespaces, plugins can alter it to override or insert their own.
     $namespaces = array('default' => 'http://www.w3.org/2005/Atom');
     $namespaces = Plugins::filter('atom_get_collection_namespaces', $namespaces);
     $namespaces = array_map(function ($value, $key) {
         return ($key == "default" ? "xmlns" : "xmlns:" . $key) . "=\"" . $value . "\"";
     }, $namespaces, array_keys($namespaces));
     $namespaces = implode(' ', $namespaces);
     $xml = new SimpleXMLElement('<feed ' . $namespaces . '></feed>');
     $feed_generator = $xml->addChild('generator', 'Habari');
     $feed_generator->addAttribute('uri', 'http://www.habariproject.org/');
     $feed_generator->addAttribute('version', Version::get_habariversion());
     $feed_id = $xml->addChild('id', 'tag:' . Site::get_url('hostname') . ',' . date("Y-m-d") . ':' . $id . '/' . Options::get('GUID'));
     $feed_title = $xml->addChild('title', Utils::htmlspecialchars(Options::get('title')));
     if ($tagline = Options::get('tagline')) {
         $feed_subtitle = $xml->addChild('subtitle', Utils::htmlspecialchars($tagline));
     }
     if ($updated == null) {
         $feed_updated = $xml->addChild('updated', HabariDateTime::date_create()->get('c'));
     } else {
         $feed_updated = $xml->addChild('updated', $updated->get('c'));
     }
     $feed_link = $xml->addChild('link');
     $feed_link->addAttribute('rel', 'alternate');
     $feed_link->addAttribute('href', $alternate);
     $feed_link = $xml->addChild('link');
     $feed_link->addAttribute('rel', 'self');
     $feed_link->addAttribute('href', $self);
     Plugins::act('atom_create_wrapper', $xml);
     return $xml;
 }