function asAtom($app_root, $authorized_links = false) { $this->user || $this->getUser(); $feed = new Dase_Atom_Feed(); $feed->setTitle($this->name); if ($this->description) { $feed->setSubtitle($this->description); } $feed->setId($app_root . '/tag/' . $this->user->eid . '/' . $this->ascii_id); $feed->setUpdated($this->updated); $feed->addAuthor($this->user->eid); $feed->setFeedType('tag'); $feed->addLink($app_root . '/tag/' . $this->user->eid . '/' . $this->ascii_id . '.atom', 'self'); $feed->addLink($app_root . '/tag/' . $this->user->eid . '/' . $this->ascii_id, 'alternate'); $feed->addLink($app_root . '/tag/' . $this->user->eid . '/' . $this->ascii_id . '/list', 'alternate', 'text/html', '', 'list'); $feed->addLink($app_root . '/tag/' . $this->user->eid . '/' . $this->ascii_id . '/grid', 'alternate', 'text/html', '', 'grid'); $feed->addLink($app_root . '/tag/' . $this->user->eid . '/' . $this->ascii_id . '.json', 'alternate', 'application/json', '', 'slideshow'); $feed->addCategory($this->type, "http://daseproject.org/category/tag_type", $this->type); if ($this->is_public) { $pub = "public"; } else { $pub = "private"; } $feed->addCategory($pub, "http://daseproject.org/category/visibility"); $feed->addCategory($this->background, "http://daseproject.org/category/background"); /* TO DO categories: admin_coll_id, updated, created, master_item, etc */ $setnum = 0; $collections_array = array(); foreach ($this->getTagItems() as $tag_item) { $tag_item->persist(true); $item_unique = $tag_item->p_collection_ascii_id . '/' . $tag_item->p_serial_number; //lets us determine if tag includes items in only one collection $collections_array[$tag_item->p_collection_ascii_id] = 1; if ($authorized_links) { //fresh, not from cache $item = $tag_item->getItem(); $entry = $feed->addEntry(); $entry = $item->injectAtomEntryData($entry, $app_root, true); } else { $entry = $feed->addItemEntryByItemUnique($this->db, $item_unique, $app_root); } if ($entry) { $setnum++; $entry->addCategory($setnum, 'http://daseproject.org/category/position'); $entry->addCategory($tag_item->id, 'http://daseproject.org/category/tag_item_id'); $entry->addLink($app_root . '/tag/' . $this->user->eid . '/' . $this->ascii_id . '/' . $tag_item->id, "http://daseproject.org/relation/search-item"); $entry->addLink($app_root . '/tag/' . $this->user->eid . '/' . $this->ascii_id . '/' . $tag_item->id . '/annotation', "http://daseproject.org/relation/edit-annotation"); if ($tag_item->annotation) { $entry->setSummary($tag_item->annotation); } } else { //remove tag_item $log_text = "SMOKING GUN Ann Johns mystery: tried removing {$item_unique} from set {$this->eid}/{$this->ascii_id}"; Dase_Log::info(LOG_FILE, $log_text); //$tag_item->delete();; //$this->resortTagItems(); //$this->updateItemCount(); } } if (1 == count($collections_array)) { $coll = array_pop(array_keys($collections_array)); $feed->addCategory($coll, "http://daseproject.org/category/collection"); } return $feed->asXml(); }
function getBaseAtomFeed($app_root) { $feed = new Dase_Atom_Feed(); $feed->setTitle($this->collection_name); if ($this->description) { $feed->setSubtitle($this->description); } $feed->setUpdated($this->updated); $feed->addCategory($app_root, "http://daseproject.org/category/base_url"); $feed->addCategory($this->item_count, "http://daseproject.org/category/item_count"); //todo: is this too expensive?? $feed->setId($this->getUrl($app_root)); $feed->addAuthor(); $feed->addLink($this->getUrl($app_root), 'alternate'); $feed->addLink($this->getUrl($app_root) . '/service', 'service', 'application/atomsvc+xml', null, 'AtomPub Service Document'); return $feed; }
function asAtom($app_root) { $item = $this->getItem(); $tag = $this->getTag(); $feed = new Dase_Atom_Feed(); if (is_numeric($item->updated)) { $updated = date(DATE_ATOM, $item->updated); } else { $updated = $item->updated; } $feed->setUpdated($updated); $feed->setTitle($item->getTitle()); $feed->setId($app_root . '/tag/item/' . $tag->id . '/' . $this->id); $feed->setGenerator('DASe', 'http://daseproject.org', '1.0'); $feed->addAuthor($tag->eid); //$feed->addCategory($tag->type,"http://daseproject.org/category/tag_type",$tag->type); $feed->addCategory('set', "http://daseproject.org/category/tag_type"); //$feed->addLink($tag->getUrl($app_root),"http://daseproject.org/relation/feed-link"); $feed->addLink($tag->getUrl($app_root), "up"); $tag_item_id_array = $tag->getTagItemIds(); $position = array_search($this->id, $tag_item_id_array) + 1; $feed->addCategory($position, "http://daseproject.org/category/position"); if (1 == $position) { $prev_id = array_pop($tag_item_id_array); array_push($tag_item_id_array, $prev_id); //because array_pop shortened array } else { $prev_id = $tag_item_id_array[$position - 2]; } if (isset($tag_item_id_array[$position])) { $next_id = $tag_item_id_array[$position]; } else { $next_id = $tag_item_id_array[0]; } //overloading opensearch elements here $feed->setOpensearchTotalResults($tag->item_count); $feed->setOpensearchQuery($tag->name); //$feed->addLink($tag->getLink().'/'.$prev_id,"previous"); //$feed->addLink($tag->getLink().'/'.$next_id,"next"); $feed->addLink($app_root . '/tag/item/' . $tag->id . '/' . $this->id . '.atom', "self"); $feed->addLink($app_root . '/tag/item/' . $tag->id . '/' . $prev_id, "previous"); $feed->addLink($app_root . '/tag/item/' . $tag->id . '/' . $next_id, "next"); $feed->setFeedType('tagitem'); //tag name goes in subtitle, so doesn't need to be in category $feed->setSubtitle($tag->name . ' ' . $position . ' of ' . count($tag_item_id_array)); //regenerated!!! (should cache) $entry = $item->injectAtomEntryData($feed->addEntry(), $app_root); //very strange to use summary for annotation (?) $entry->setSummary($this->annotation); return $feed->asXml(); }