<?php include 'config.php'; $tags = new Dase_DBO_Tag(); foreach ($tags->find() as $tag) { $tag->updated = date(DATE_ATOM, strtotime($tag->updated)); $tag->created = date(DATE_ATOM, strtotime($tag->created)); if (!$tag->eid) { $u = new Dase_DBO_DaseUser(); $u->load($tag->dase_user_id); $tag->eid = $u->eid; } $tag->eid = strtolower($tag->eid); if (!$tag->is_public) { $tag->is_public = 0; } print "updating {$tag->ascii_id}\n"; //$tag->update(); }
public static function listAsFeed($db, $app_root, $category = '') { //public ONLY!!!!!! $feed = new Dase_Atom_Feed(); $feed->setId($app_root . '/sets'); $feed->setFeedType('sets'); $feed->setUpdated(date(DATE_ATOM)); $feed->addAuthor(); if ($category) { $scheme = ''; $parts = explode('}', $category); if (1 == count($parts)) { $term = $parts[0]; } elseif (2 == count($parts)) { $scheme = urldecode(trim($parts[0], '{')); $scheme = str_replace('http://daseproject.org/category/', '', $scheme); $term = $parts[1]; } else { return $feed->asXml(); } /***************newly refactored*******************/ $tag_cat = new Dase_DBO_TagCategory($db); $tag_cat->term = $term; $tag_cat->scheme = $scheme; $in_set = array(); $category_label = $term; foreach ($tag_cat->find() as $tc) { $in_set[] = $tc->tag_id; $category_label = $tc->label; } $feed->setTitle('Sets for ' . $category_label); $tags = new Dase_DBO_Tag($db); $tags->is_public = true; $tags->orderBy('updated DESC'); foreach ($tags->find() as $tag) { $tag = clone $tag; if (!$tag->item_count) { $tag->updateItemCount(); } if ($tag->ascii_id and in_array($tag->id, $in_set)) { $entry = $tag->injectAtomEntryData($feed->addEntry('set'), null, $app_root); $entry->addCategory($tag->item_count, "http://daseproject.org/category/item_count"); } } /*********************************************/ } else { $feed->setTitle('All Public Sets'); $tags = new Dase_DBO_Tag($db); $tags->is_public = true; $tags->orderBy('updated DESC'); foreach ($tags->find() as $tag) { $tag = clone $tag; if (!$tag->item_count) { $tag->updateItemCount(); } if ($tag->ascii_id) { //compat: make sure tag has ascii_id $entry = $tag->injectAtomEntryData($feed->addEntry('set'), null, $app_root); $entry->addCategory($tag->item_count, "http://daseproject.org/category/item_count"); } } } $feed->sortByTitle(); return $feed->asXml(); }
public function dumpSetsXml() { $prefix = $this->db->table_prefix; $writer = new XMLWriter(); $writer->openMemory(); $writer->setIndent(true); $writer->startDocument('1.0', 'UTF-8'); $writer->startElement('user_sets'); $writer->writeAttribute('archived_date', date(DATE_ATOM)); $writer->writeAttribute('eid', $this->eid); $writer->writeAttribute('name', $this->name); $sets = new Dase_DBO_Tag($this->db); $sets->dase_user_id = $this->id; $total_sets = $sets->findCount(); $set_count = 0; foreach ($sets->find() as $set) { $set = clone $set; $tag_items = new Dase_DBO_TagItem($this->db); $tag_items->tag_id = $set->id; if ($tag_items->findCount()) { $set_count++; $set = clone $set; $writer->startElement('set'); $writer->writeAttribute('ascii_id', $set->ascii_id); $writer->writeAttribute('name', $set->name); $writer->writeAttribute('eid', $set->eid); $writer->writeAttribute('created', $set->created); $writer->writeAttribute('updated', $set->updated); $writer->writeAttribute('visibility', $set->visibility); $writer->writeAttribute('item_count', $set->item_count); if ($set->description) { $writer->startElement('description'); $writer->text($set->description); $writer->endElement(); } foreach ($set->getCategories() as $cat) { $cat = clone $cat; $writer->startElement('category'); $writer->writeAttribute('scheme', $cat->scheme); $writer->writeAttribute('term', $cat->term); $writer->writeAttribute('label', $cat->label); $writer->endElement(); } $item_count = 0; foreach ($set->getTagItems() as $tag_item) { $tag_item = clone $tag_item; $item_count++; $writer->startElement('item'); $writer->writeAttribute('sort_order', $tag_item->sort_order); $writer->writeAttribute('item_unique', $tag_item->p_collection_ascii_id . '/' . $tag_item->p_serial_number); if ($tag_item->annotation) { $writer->startElement('annotation'); $writer->text($tag_item->annotation); $writer->endElement(); } $writer->endElement(); error_log('user ' . $this->eid . ' set number ' . $set_count . ' of ' . $total_sets . ' item number ' . $item_count); } $writer->endElement(); } } $writer->endDocument(); if ($set_count) { return $writer->flush(true); } else { return false; } }