示例#1
0
 public static function get($db, $ascii_id)
 {
     if (!$ascii_id) {
         throw new Exception('missing collection ascii id');
     }
     $collection = new Dase_DBO_Collection($db);
     $collection->ascii_id = $ascii_id;
     if ($collection->findOne()) {
         return $collection;
     } else {
         return false;
     }
 }
示例#2
0
 function ingest($db, $r, $fetch_enclosures = false)
 {
     $user = $r->getUser();
     $coll_ascii_id = $this->getAsciiId();
     $count = $this->getItemCount();
     $collection_name = $this->getTitle();
     $ascii_id = $this->getAsciiId();
     $c = new Dase_DBO_Collection($db);
     $c->collection_name = $collection_name;
     if (Dase_DBO_Collection::get($db, $ascii_id) || $c->findOne()) {
         //$r->renderError(409,'collection already exists');
         Dase_Log::info(LOG_FILE, 'collection exists ' . $c->collection_name);
         return;
     }
     $c->ascii_id = $ascii_id;
     $c->is_public = 0;
     $c->created = date(DATE_ATOM);
     $c->updated = date(DATE_ATOM);
     if ($c->insert()) {
         $cache = $r->getCache();
         $cache->expire('app_data');
         Dase_Log::info(LOG_FILE, 'created collection ' . $c->collection_name);
         $coll_media_dir = MEDIA_DIR . '/' . $ascii_id;
         if (file_exists($coll_media_dir)) {
             //$r->renderError(409,'collection media archive exists');
             Dase_Log::info(LOG_FILE, 'collection media archive exists');
         } else {
             if (mkdir("{$coll_media_dir}")) {
                 chmod("{$coll_media_dir}", 0775);
                 foreach (Dase_Media::$sizes as $size => $access_level) {
                     mkdir("{$coll_media_dir}/{$size}");
                     Dase_Log::info(LOG_FILE, 'created directory ' . $coll_media_dir . '/' . $size);
                     chmod("{$coll_media_dir}/{$size}", 0775);
                 }
                 //todo: compat only!
                 symlink($coll_media_dir, $coll_media_dir . '_collection');
             }
         }
         foreach ($this->getEntries() as $entry) {
             if ('item' == $entry->getEntryType()) {
                 $r->set('collection_ascii_id', $c->ascii_id);
                 $entry->insert($db, $r, $fetch_enclosures);
             }
         }
     }
 }
示例#3
0
 function create($db, $r)
 {
     $atom_author = $this->getAuthorName();
     $user = $r->getUser('http');
     $collection_name = $this->getTitle();
     if (!$collection_name) {
         $r->renderError(400, 'no title');
     }
     $c = new Dase_DBO_Collection($db);
     $c->collection_name = $collection_name;
     if ($r->has('ascii_id')) {
         $ascii_id = $r->get('ascii_id');
         //set in handler based on Slug
     } else {
         $ascii_id = $this->getAsciiId();
     }
     if (!$ascii_id) {
         $ascii_id = $c->createAscii();
     }
     if (Dase_DBO_Collection::get($db, $ascii_id) || $c->findOne()) {
         $r->renderError(409, 'collection already exists');
     }
     $c->ascii_id = $ascii_id;
     $coll_media_dir = MEDIA_DIR . '/' . $ascii_id;
     if (file_exists($coll_media_dir)) {
         //todo: think about this...
         //$r->renderError(409,'collection media archive exists');
     }
     $c->is_public = 0;
     $c->created = date(DATE_ATOM);
     $c->updated = date(DATE_ATOM);
     $content = $this->getContent();
     if ($content) {
         $c->description = $content;
     }
     $summary = $this->getSummary();
     if ($summary) {
         $c->admin_notes = $summary;
     }
     if ($c->insert()) {
         $cache = $r->getCache();
         $cache->expire('app_data');
         Dase_Log::info(LOG_FILE, 'created collection ' . $c->collection_name);
         if (mkdir("{$coll_media_dir}")) {
             chmod("{$coll_media_dir}", 0775);
             foreach (Dase_Media::$sizes as $size => $access_level) {
                 mkdir("{$coll_media_dir}/{$size}");
                 Dase_Log::info(LOG_FILE, 'created directory ' . $coll_media_dir . '/' . $size);
                 chmod("{$coll_media_dir}/{$size}", 0775);
             }
             symlink($coll_media_dir, $coll_media_dir . '_collection');
         }
         foreach (array('title', 'description', 'keyword', 'rights') as $att) {
             $a = new Dase_DBO_Attribute($db);
             $a->ascii_id = $att;
             $a->attribute_name = ucfirst($att);
             $a->collection_id = $c->id;
             $a->in_basic_search = true;
             $a->is_on_list_display = true;
             $a->is_public = true;
             $a->html_input_type = 'text';
             if ('description' == $att) {
                 $a->html_input_type = 'textarea';
             }
             $a->updated = date(DATE_ATOM);
             if ($a->insert()) {
                 Dase_Log::debug(LOG_FILE, 'created att ' . $att);
             } else {
                 Dase_Log::debug(LOG_FILE, 'problem creating ' . $att);
             }
         }
         $cm = new Dase_DBO_CollectionManager($db);
         $cm->collection_ascii_id = $ascii_id;
         $cm->dase_user_eid = $user->eid;
         $cm->auth_level = 'admin';
         $cm->created = date(DATE_ATOM);
         $cm->created_by_eid = $user->eid;
         if ($cm->insert()) {
             Dase_Log::info(LOG_FILE, 'created admin user ' . $ascii_id . '::' . $user->eid);
         } else {
             Dase_Log::info(LOG_FILE, 'could not create admin user');
         }
         return $ascii_id;
     } else {
         return false;
     }
 }