Beispiel #1
0
<?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();
}
Beispiel #2
0
 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();
 }
Beispiel #3
0
 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;
     }
 }