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); } } } }
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; } }