示例#1
0
 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;
 }
示例#2
0
 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;
 }
示例#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;
     }
 }