function insert($db, $r, $collection) { $att = new Dase_DBO_Attribute($db); $att->attribute_name = $this->getTitle(); //think about using getAscii or Slug also $att->ascii_id = Dase_Util::dirify($att->attribute_name); if (!Dase_DBO_Attribute::get($db, $collection->ascii_id, $att->ascii_id)) { $att->collection_id = $collection->id; $att->updated = date(DATE_ATOM); $att->sort_order = 9999; $att->is_on_list_display = 1; $att->is_public = 1; $att->in_basic_search = 1; $att->html_input_type = $this->getHtmlInputType(); $att->insert(); $sort_order = 0; foreach ($this->getDefinedValues() as $dv) { $sort_order++; $att->addDefinedValue($dv, $sort_order); } foreach ($this->getItemTypes() as $type) { $att->addItemType($type); } $att->resort(); } else { throw new Dase_Exception('attribute exists'); } return $att; }
public static function findOrCreateAdmin($db, $attribute_ascii_id) { $att = new Dase_DBO_Attribute($db); $att->collection_id = 0; $att->ascii_id = $attribute_ascii_id; if (!$att->findOne()) { $attribute_ascii_id = Dase_Util::dirify($attribute_ascii_id); $att->attribute_name = ucwords(str_replace('_', ' ', $attribute_ascii_id)); $att->sort_order = 0; $att->in_basic_search = 0; $att->is_on_list_display = 0; $att->is_public = 0; $att->mapped_admin_att_id = 0; $att->updated = date(DATE_ATOM); $att->html_input_type = 'no_edit'; $att->insert(); } return $att; }
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; } }