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(); }
public static function listAsAtom($db, $app_root) { $cm = new Dase_DBO_CollectionManager($db); $cms = $cm->find(); $feed = new Dase_Atom_Feed(); $feed->setTitle('DASe Collection Managers'); $feed->setId($app_root . '/admin/managers'); //fix to be latest update $feed->setUpdated(date(DATE_ATOM)); $feed->addAuthor(); $feed->addLink($app_root . '/admin/managers.atom', 'self'); $feed->addCategory($app_root, "http://daseproject.org/category/base_url"); foreach ($cms as $manager) { $entry = $feed->addEntry(); $manager->injectAtomEntryData($entry, $app_root); } return $feed->asXml(); }
static function listAsAtom($db, $app_root, $public_only = false) { $c = new Dase_DBO_Collection($db); $c->orderBy('collection_name'); if ($public_only) { $c->is_public = 1; } $cs = $c->find(); $feed = new Dase_Atom_Feed(); $feed->setTitle('DASe Collections'); $feed->setId($app_root); $feed->setFeedType('collection_list'); $feed->setUpdated(date(DATE_ATOM)); $feed->addAuthor('DASe (Digital Archive Services)', 'http://daseproject.org'); $feed->addLink($app_root . '/collections.atom', 'self'); $feed->addCategory($app_root, "http://daseproject.org/category/base_url"); foreach ($cs as $coll) { $coll->injectAtomEntryData($feed->addEntry(), $app_root); } return $feed->asXml(); }
function injectAtomFeedData(Dase_Atom_Feed $feed, $app_root) { if (!$this->id) { return false; } $c = $this->getCollection(); if (is_numeric($this->updated)) { $updated = date(DATE_ATOM, $this->updated); } else { $updated = $this->updated; } $feed->setUpdated($updated); $feed->setTitle($this->getTitle()); $feed->setId('tag:daseproject.org,2008:' . Dase_Util::getUniqueName()); $feed->addLink($app_root . '/item/' . $this->p_collection_ascii_id . '/' . $this->serial_number . '.atom', 'self'); $feed->addAuthor(); return $feed; }
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(); }
public static function listAsAtom($db, $app_root, $limit = 100) { $users = new Dase_DBO_DaseUser($db); if ($limit) { $users->setLimit($limit); } $feed = new Dase_Atom_Feed(); $feed->setTitle('DASe Users'); $feed->setId($app_root . '/users'); $feed->setFeedType('user_list'); //todo:fix this to *not* simply be a time stamp $feed->setUpdated(date(DATE_ATOM)); $feed->addAuthor(); $feed->addLink($app_root . '/users.atom', 'self'); $users->orderBy('updated DESC'); foreach ($users->find() as $user) { $entry = $feed->addEntry(); $entry->setTitle($user->name); $entry->setId($user->getUrl($app_root)); $entry->setUpdated($user->updated); $entry->setEntryType('user'); $entry->setContent($user->eid); $entry->addLink($user->getUrl($app_root) . '.atom', 'self'); } return $feed->asXML($app_root); }