/* * This file is a part of CMSLU -- Content Management System like Unix * and is not publicly distributed * * Copyright (c) 2008-2009, Tomasz Sowa * All rights reserved. * */ #include "content.h" #include "../core/request.h" #include "../core/error.h" #include "../core/db.h" #include "../core/data.h" long Content::PostFunDefaultParsePath() { Item * pdir, * pdir2; long defaultid = -1; std::string * path = request.PostVar("defaultitem"); if( path && !path->empty() ) { std::string dir, file; Dirs::SplitPath(*path, dir, file); pdir = data.dirs.GetDir(dir); if( !pdir ) throw Error(Error::incorrect_dir); if( file.empty() ) { defaultid = pdir->id; } else { // checking whether the file is a directory too (the method SplitPath does not check it) pdir2 = data.dirs.GetDir(file, pdir->id); if( !pdir2 ) { defaultid = db.GetFileId(pdir->id, file); if( defaultid == -1 ) throw Error(Error::db_no_item); } else { // file is a directory defaultid = pdir2->id; } } } return defaultid; } void Content::PostFunDefault() { request.session->done = Done::defaulted_dir; if( !request.HasWriteAccess(*request.dir_table.back()) ) { request.status = Error::permision_denied; return; } try { long defaultid = PostFunDefaultParsePath(); request.session->done_status = db.EditDefaultItem(request.dir_table.back()->id, defaultid); if( request.session->done_status == Error::ok ) request.dir_table.back()->default_item = defaultid; } catch(const Error & e) { request.session->done_status = e; } if( request.session->done_status == Error::ok ) RedirectTo(*request.dir_table.back()); else log << log1 << "Content: PostFunDefaultItem: Error: " << request.session->done_status << logend; } void Content::FunDefault() { if( !request.HasWriteAccess(*request.dir_table.back()) ) { request.status = Error::permision_denied; return; } }