Ejemplo n.º 1
0
 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();
 }
Ejemplo n.º 2
0
 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;
 }
Ejemplo n.º 3
0
 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();
 }