added: forum
added: mount params can have arguments (in parentheses)
added: mount params: withheader, withinfo, restrictcreatethread, only_root_can_remove,
can_use_emacs_on(level), can_use_mkdir_on(level),
added: table Item has 'subject' column now
removed: column 'subject' from table Content
git-svn-id: svn://ttmath.org/publicrep/cmslu/trunk@505 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
@@ -1,25 +1,25 @@
|
||||
# DO NOT DELETE
|
||||
|
||||
cat.o: content.h ../core/item.h ../templates/templates.h ../../ezc/src/ezc.h
|
||||
cat.o: ../templates/patterncacher.h ../app/templates.h ../core/request.h
|
||||
cat.o: ../core/requesttypes.h ../core/session.h ../core/done.h ../core/item.h
|
||||
cat.o: ../core/error.h ../core/log.h ../core/user.h ../core/function.h
|
||||
cat.o: ../core/thread.h ../core/error.h
|
||||
cat.o: ../templates/patterncacher.h ../app/templates.h ../core/thread.h
|
||||
cat.o: ../core/request.h ../core/requesttypes.h ../core/session.h
|
||||
cat.o: ../core/done.h ../core/item.h ../core/error.h ../core/log.h
|
||||
cat.o: ../core/user.h ../core/function.h ../core/thread.h ../core/error.h
|
||||
content.o: content.h ../core/item.h ../templates/templates.h
|
||||
content.o: ../../ezc/src/ezc.h ../templates/patterncacher.h
|
||||
content.o: ../app/templates.h ../core/request.h ../core/requesttypes.h
|
||||
content.o: ../core/session.h ../core/done.h ../core/item.h ../core/error.h
|
||||
content.o: ../core/log.h ../core/user.h ../core/function.h ../core/thread.h
|
||||
content.o: ../core/error.h ../core/db.h ../core/group.h
|
||||
content.o: ../core/dircontainer.h ../core/ugcontainer.h ../core/data.h
|
||||
content.o: ../core/dirs.h ../core/users.h ../core/groups.h
|
||||
content.o: ../app/templates.h ../core/thread.h ../core/request.h
|
||||
content.o: ../core/requesttypes.h ../core/session.h ../core/done.h
|
||||
content.o: ../core/item.h ../core/error.h ../core/log.h ../core/user.h
|
||||
content.o: ../core/function.h ../core/thread.h ../core/error.h ../core/db.h
|
||||
content.o: ../core/group.h ../core/dircontainer.h ../core/ugcontainer.h
|
||||
content.o: ../core/data.h ../core/dirs.h ../core/users.h ../core/groups.h
|
||||
content.o: ../core/functions.h ../core/lastcontainer.h ../core/mounts.h
|
||||
content.o: ../core/mount.h ../app/content.h
|
||||
content.o: ../core/mount.h ../app/content.h ../core/misc.h
|
||||
createthread.o: content.h ../core/item.h ../templates/templates.h
|
||||
createthread.o: ../../ezc/src/ezc.h ../templates/patterncacher.h
|
||||
createthread.o: ../app/templates.h ../core/request.h ../core/requesttypes.h
|
||||
createthread.o: ../core/session.h ../core/done.h ../core/item.h
|
||||
createthread.o: ../core/error.h ../core/log.h ../core/user.h
|
||||
createthread.o: ../app/templates.h ../core/thread.h ../core/request.h
|
||||
createthread.o: ../core/requesttypes.h ../core/session.h ../core/done.h
|
||||
createthread.o: ../core/item.h ../core/error.h ../core/log.h ../core/user.h
|
||||
createthread.o: ../core/function.h ../core/thread.h ../core/error.h
|
||||
createthread.o: ../core/db.h ../core/group.h ../core/dircontainer.h
|
||||
createthread.o: ../core/ugcontainer.h ../core/mount.h ../core/data.h
|
||||
@@ -28,93 +28,94 @@ createthread.o: ../core/functions.h ../core/lastcontainer.h ../core/mounts.h
|
||||
createthread.o: ../core/mount.h
|
||||
default.o: content.h ../core/item.h ../templates/templates.h
|
||||
default.o: ../../ezc/src/ezc.h ../templates/patterncacher.h
|
||||
default.o: ../app/templates.h ../core/request.h ../core/requesttypes.h
|
||||
default.o: ../core/session.h ../core/done.h ../core/item.h ../core/error.h
|
||||
default.o: ../core/log.h ../core/user.h ../core/function.h ../core/thread.h
|
||||
default.o: ../core/error.h ../core/db.h ../core/group.h
|
||||
default.o: ../core/dircontainer.h ../core/ugcontainer.h ../core/data.h
|
||||
default.o: ../core/dirs.h ../core/users.h ../core/groups.h
|
||||
default.o: ../app/templates.h ../core/thread.h ../core/request.h
|
||||
default.o: ../core/requesttypes.h ../core/session.h ../core/done.h
|
||||
default.o: ../core/item.h ../core/error.h ../core/log.h ../core/user.h
|
||||
default.o: ../core/function.h ../core/thread.h ../core/error.h ../core/db.h
|
||||
default.o: ../core/group.h ../core/dircontainer.h ../core/ugcontainer.h
|
||||
default.o: ../core/data.h ../core/dirs.h ../core/users.h ../core/groups.h
|
||||
default.o: ../core/functions.h ../core/lastcontainer.h ../core/mounts.h
|
||||
default.o: ../core/mount.h
|
||||
emacs.o: content.h ../core/item.h ../templates/templates.h
|
||||
emacs.o: ../../ezc/src/ezc.h ../templates/patterncacher.h ../app/templates.h
|
||||
emacs.o: ../core/request.h ../core/requesttypes.h ../core/session.h
|
||||
emacs.o: ../core/done.h ../core/item.h ../core/error.h ../core/log.h
|
||||
emacs.o: ../core/user.h ../core/function.h ../core/thread.h ../core/error.h
|
||||
emacs.o: ../core/misc.h ../core/db.h ../core/group.h ../core/dircontainer.h
|
||||
emacs.o: ../core/thread.h ../core/request.h ../core/requesttypes.h
|
||||
emacs.o: ../core/session.h ../core/done.h ../core/item.h ../core/error.h
|
||||
emacs.o: ../core/log.h ../core/user.h ../core/function.h ../core/thread.h
|
||||
emacs.o: ../core/error.h ../core/db.h ../core/group.h ../core/dircontainer.h
|
||||
emacs.o: ../core/ugcontainer.h ../core/data.h ../core/dirs.h ../core/users.h
|
||||
emacs.o: ../core/groups.h ../core/functions.h ../core/lastcontainer.h
|
||||
emacs.o: ../core/mounts.h ../core/mount.h
|
||||
last.o: content.h ../core/item.h ../templates/templates.h ../../ezc/src/ezc.h
|
||||
last.o: ../templates/patterncacher.h ../app/templates.h
|
||||
last.o: ../templates/patterncacher.h ../app/templates.h ../core/thread.h
|
||||
login.o: content.h ../core/item.h ../templates/templates.h
|
||||
login.o: ../../ezc/src/ezc.h ../templates/patterncacher.h ../app/templates.h
|
||||
login.o: ../core/request.h ../core/requesttypes.h ../core/session.h
|
||||
login.o: ../core/done.h ../core/item.h ../core/error.h ../core/log.h
|
||||
login.o: ../core/user.h ../core/function.h ../core/thread.h ../core/error.h
|
||||
login.o: ../core/db.h ../core/group.h ../core/dircontainer.h
|
||||
login.o: ../core/thread.h ../core/request.h ../core/requesttypes.h
|
||||
login.o: ../core/session.h ../core/done.h ../core/item.h ../core/error.h
|
||||
login.o: ../core/log.h ../core/user.h ../core/function.h ../core/thread.h
|
||||
login.o: ../core/error.h ../core/db.h ../core/group.h ../core/dircontainer.h
|
||||
login.o: ../core/ugcontainer.h ../core/data.h ../core/dirs.h ../core/users.h
|
||||
login.o: ../core/groups.h ../core/functions.h ../core/lastcontainer.h
|
||||
login.o: ../core/mounts.h ../core/mount.h
|
||||
logout.o: content.h ../core/item.h ../templates/templates.h
|
||||
logout.o: ../../ezc/src/ezc.h ../templates/patterncacher.h ../app/templates.h
|
||||
logout.o: ../core/request.h ../core/requesttypes.h ../core/session.h
|
||||
logout.o: ../core/done.h ../core/item.h ../core/error.h ../core/log.h
|
||||
logout.o: ../core/user.h ../core/function.h ../core/thread.h ../core/data.h
|
||||
logout.o: ../core/dirs.h ../core/dircontainer.h ../core/users.h
|
||||
logout.o: ../core/ugcontainer.h ../core/groups.h ../core/group.h
|
||||
logout.o: ../core/functions.h ../core/lastcontainer.h ../core/mounts.h
|
||||
logout.o: ../core/mount.h
|
||||
logout.o: ../core/thread.h ../core/request.h ../core/requesttypes.h
|
||||
logout.o: ../core/session.h ../core/done.h ../core/item.h ../core/error.h
|
||||
logout.o: ../core/log.h ../core/user.h ../core/function.h ../core/thread.h
|
||||
logout.o: ../core/data.h ../core/dirs.h ../core/dircontainer.h
|
||||
logout.o: ../core/users.h ../core/ugcontainer.h ../core/groups.h
|
||||
logout.o: ../core/group.h ../core/functions.h ../core/lastcontainer.h
|
||||
logout.o: ../core/mounts.h ../core/mount.h
|
||||
ls.o: content.h ../core/item.h ../templates/templates.h ../../ezc/src/ezc.h
|
||||
ls.o: ../templates/patterncacher.h ../app/templates.h ../core/request.h
|
||||
ls.o: ../core/requesttypes.h ../core/session.h ../core/done.h ../core/item.h
|
||||
ls.o: ../core/error.h ../core/log.h ../core/user.h ../core/function.h
|
||||
ls.o: ../core/thread.h ../core/db.h ../core/group.h ../core/dircontainer.h
|
||||
ls.o: ../core/ugcontainer.h
|
||||
ls.o: ../templates/patterncacher.h ../app/templates.h ../core/thread.h
|
||||
ls.o: ../core/request.h ../core/requesttypes.h ../core/session.h
|
||||
ls.o: ../core/done.h ../core/item.h ../core/error.h ../core/log.h
|
||||
ls.o: ../core/user.h ../core/function.h ../core/thread.h ../core/db.h
|
||||
ls.o: ../core/group.h ../core/dircontainer.h ../core/ugcontainer.h
|
||||
mkdir.o: content.h ../core/item.h ../templates/templates.h
|
||||
mkdir.o: ../../ezc/src/ezc.h ../templates/patterncacher.h ../app/templates.h
|
||||
mkdir.o: ../core/request.h ../core/requesttypes.h ../core/session.h
|
||||
mkdir.o: ../core/done.h ../core/item.h ../core/error.h ../core/log.h
|
||||
mkdir.o: ../core/user.h ../core/function.h ../core/thread.h ../core/error.h
|
||||
mkdir.o: ../core/db.h ../core/group.h ../core/dircontainer.h
|
||||
mkdir.o: ../core/thread.h ../core/request.h ../core/requesttypes.h
|
||||
mkdir.o: ../core/session.h ../core/done.h ../core/item.h ../core/error.h
|
||||
mkdir.o: ../core/log.h ../core/user.h ../core/function.h ../core/thread.h
|
||||
mkdir.o: ../core/error.h ../core/db.h ../core/group.h ../core/dircontainer.h
|
||||
mkdir.o: ../core/ugcontainer.h ../core/data.h ../core/dirs.h ../core/users.h
|
||||
mkdir.o: ../core/groups.h ../core/functions.h ../core/lastcontainer.h
|
||||
mkdir.o: ../core/mounts.h ../core/mount.h
|
||||
node.o: content.h ../core/item.h ../templates/templates.h ../../ezc/src/ezc.h
|
||||
node.o: ../templates/patterncacher.h ../app/templates.h ../core/request.h
|
||||
node.o: ../core/requesttypes.h ../core/session.h ../core/done.h
|
||||
node.o: ../core/item.h ../core/error.h ../core/log.h ../core/user.h
|
||||
node.o: ../core/function.h ../core/thread.h
|
||||
node.o: ../templates/patterncacher.h ../app/templates.h ../core/thread.h
|
||||
node.o: ../core/request.h ../core/requesttypes.h ../core/session.h
|
||||
node.o: ../core/done.h ../core/item.h ../core/error.h ../core/log.h
|
||||
node.o: ../core/user.h ../core/function.h ../core/thread.h
|
||||
priv.o: content.h ../core/item.h ../templates/templates.h ../../ezc/src/ezc.h
|
||||
priv.o: ../templates/patterncacher.h ../app/templates.h ../core/request.h
|
||||
priv.o: ../core/requesttypes.h ../core/session.h ../core/done.h
|
||||
priv.o: ../core/item.h ../core/error.h ../core/log.h ../core/user.h
|
||||
priv.o: ../core/function.h ../core/thread.h ../core/error.h ../core/db.h
|
||||
priv.o: ../core/group.h ../core/dircontainer.h ../core/ugcontainer.h
|
||||
priv.o: ../core/data.h ../core/dirs.h ../core/users.h ../core/groups.h
|
||||
priv.o: ../core/functions.h ../core/lastcontainer.h ../core/mounts.h
|
||||
priv.o: ../core/mount.h
|
||||
priv.o: ../templates/patterncacher.h ../app/templates.h ../core/thread.h
|
||||
priv.o: ../core/request.h ../core/requesttypes.h ../core/session.h
|
||||
priv.o: ../core/done.h ../core/item.h ../core/error.h ../core/log.h
|
||||
priv.o: ../core/user.h ../core/function.h ../core/thread.h ../core/error.h
|
||||
priv.o: ../core/db.h ../core/group.h ../core/dircontainer.h
|
||||
priv.o: ../core/ugcontainer.h ../core/data.h ../core/dirs.h ../core/users.h
|
||||
priv.o: ../core/groups.h ../core/functions.h ../core/lastcontainer.h
|
||||
priv.o: ../core/mounts.h ../core/mount.h
|
||||
rm.o: content.h ../core/item.h ../templates/templates.h ../../ezc/src/ezc.h
|
||||
rm.o: ../templates/patterncacher.h ../app/templates.h ../core/request.h
|
||||
rm.o: ../core/requesttypes.h ../core/session.h ../core/done.h ../core/item.h
|
||||
rm.o: ../core/error.h ../core/log.h ../core/user.h ../core/function.h
|
||||
rm.o: ../core/thread.h ../core/error.h ../core/db.h ../core/group.h
|
||||
rm.o: ../core/dircontainer.h ../core/ugcontainer.h ../core/data.h
|
||||
rm.o: ../core/dirs.h ../core/users.h ../core/groups.h ../core/functions.h
|
||||
rm.o: ../core/lastcontainer.h ../core/mounts.h ../core/mount.h
|
||||
rm.o: ../templates/patterncacher.h ../app/templates.h ../core/thread.h
|
||||
rm.o: ../core/request.h ../core/requesttypes.h ../core/session.h
|
||||
rm.o: ../core/done.h ../core/item.h ../core/error.h ../core/log.h
|
||||
rm.o: ../core/user.h ../core/function.h ../core/thread.h ../core/error.h
|
||||
rm.o: ../core/db.h ../core/group.h ../core/dircontainer.h
|
||||
rm.o: ../core/ugcontainer.h ../core/data.h ../core/dirs.h ../core/users.h
|
||||
rm.o: ../core/groups.h ../core/functions.h ../core/lastcontainer.h
|
||||
rm.o: ../core/mounts.h ../core/mount.h
|
||||
run.o: content.h ../core/item.h ../templates/templates.h ../../ezc/src/ezc.h
|
||||
run.o: ../templates/patterncacher.h ../app/templates.h ../core/request.h
|
||||
run.o: ../core/requesttypes.h ../core/session.h ../core/done.h ../core/item.h
|
||||
run.o: ../core/error.h ../core/log.h ../core/user.h ../core/function.h
|
||||
run.o: ../core/thread.h ../core/error.h
|
||||
run.o: ../templates/patterncacher.h ../app/templates.h ../core/thread.h
|
||||
run.o: ../core/request.h ../core/requesttypes.h ../core/session.h
|
||||
run.o: ../core/done.h ../core/item.h ../core/error.h ../core/log.h
|
||||
run.o: ../core/user.h ../core/function.h ../core/thread.h ../core/error.h
|
||||
thread.o: content.h ../core/item.h ../templates/templates.h
|
||||
thread.o: ../../ezc/src/ezc.h ../templates/patterncacher.h ../app/templates.h
|
||||
thread.o: ../core/request.h ../core/requesttypes.h ../core/session.h
|
||||
thread.o: ../core/done.h ../core/item.h ../core/error.h ../core/log.h
|
||||
thread.o: ../core/user.h ../core/function.h ../core/thread.h ../core/db.h
|
||||
thread.o: ../core/group.h ../core/dircontainer.h ../core/ugcontainer.h
|
||||
thread.o: ../core/data.h ../core/dirs.h ../core/users.h ../core/groups.h
|
||||
thread.o: ../core/functions.h ../core/lastcontainer.h ../core/mounts.h
|
||||
thread.o: ../core/mount.h ../core/mount.h
|
||||
thread.o: ../core/thread.h ../core/request.h ../core/requesttypes.h
|
||||
thread.o: ../core/session.h ../core/done.h ../core/item.h ../core/error.h
|
||||
thread.o: ../core/log.h ../core/user.h ../core/function.h ../core/thread.h
|
||||
thread.o: ../core/db.h ../core/group.h ../core/dircontainer.h
|
||||
thread.o: ../core/ugcontainer.h ../core/data.h ../core/dirs.h ../core/users.h
|
||||
thread.o: ../core/groups.h ../core/functions.h ../core/lastcontainer.h
|
||||
thread.o: ../core/mounts.h ../core/mount.h ../core/mount.h
|
||||
who.o: content.h ../core/item.h ../templates/templates.h ../../ezc/src/ezc.h
|
||||
who.o: ../templates/patterncacher.h ../app/templates.h
|
||||
who.o: ../templates/patterncacher.h ../app/templates.h ../core/thread.h
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
#include "../core/db.h"
|
||||
#include "../core/data.h"
|
||||
#include "../app/content.h"
|
||||
|
||||
#include "../core/misc.h"
|
||||
|
||||
|
||||
bool Content::Init()
|
||||
@@ -59,9 +59,7 @@ void Content::SetDefaultFunctionForFile()
|
||||
|
||||
void Content::SetDefaultFunctionForDir()
|
||||
{
|
||||
Mount mount = data.mounts.GetCurrentMountPoint();
|
||||
|
||||
if( mount.type == Mount::thread )
|
||||
if( data.mounts.CurrentMountType() == Mount::thread )
|
||||
{
|
||||
request.pfunction = data.functions.GetFunction(FUN_THREAD);
|
||||
|
||||
@@ -341,15 +339,35 @@ void Content::ReadAdditionalInfo()
|
||||
if( request.dir_table.empty() )
|
||||
return;
|
||||
|
||||
Mount mount = data.mounts.GetCurrentMountPoint();
|
||||
|
||||
if( mount.type == Mount::thread )
|
||||
if( data.mounts.CurrentMountType() == Mount::thread )
|
||||
{
|
||||
db.GetThreadByDirId(request.dir_table.back()->id, request.thread);
|
||||
if( db.GetThreadByDirId(request.dir_table.back()->id, request.thread) == Error::ok )
|
||||
request.is_thread = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Content::PrepareUrl(Item & item)
|
||||
{
|
||||
TrimWhite(item.url);
|
||||
|
||||
if( item.url.empty() )
|
||||
item.url = item.subject; // if the subject is empty then the url will be corrected by CorrectUrl()
|
||||
|
||||
CorrectUrl(item);
|
||||
|
||||
if( data.functions.GetFunction(item.url) )
|
||||
{
|
||||
// the name provided by an user is the same as a name of a function
|
||||
// we add one underscore character at the beginning
|
||||
|
||||
// names of functions should not begin with an underscore '_'
|
||||
// and we can simply add one '_' at the beginning
|
||||
// and the name will be unique
|
||||
item.url.insert(item.url.begin(), '_');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
#include "../core/item.h"
|
||||
#include "../templates/templates.h"
|
||||
|
||||
#include "../core/thread.h"
|
||||
|
||||
class Content
|
||||
{
|
||||
@@ -55,6 +55,8 @@ class Content
|
||||
void FunRun();
|
||||
void FunWho();
|
||||
void FunLast();
|
||||
|
||||
static bool FunThreadSort(const Thread & t1, const Thread & t2);
|
||||
void FunThread();
|
||||
void FunCreateThread();
|
||||
|
||||
@@ -62,10 +64,11 @@ class Content
|
||||
void PostFunEmacsAdd();
|
||||
void PostFunEmacsEdit(bool with_url);
|
||||
void PostFunEmacs();
|
||||
void PostFunMkdir(bool add_to_dir_table = false);
|
||||
void PostFunMkdir(bool add_to_dir_table = false, int mask = 0755 );
|
||||
long PostFunDefaultParsePath();
|
||||
void PostFunDefault();
|
||||
void PostFunPriv();
|
||||
void PostFunPriv(Item & item);
|
||||
|
||||
bool FunCreateThreadCheckAccess();
|
||||
void PostFunCreateThread();
|
||||
|
||||
@@ -15,18 +15,9 @@
|
||||
#include "../core/data.h"
|
||||
|
||||
|
||||
|
||||
bool Content::FunCreateThreadCheckAccess()
|
||||
{
|
||||
Mount mount = data.mounts.GetCurrentMountPoint();
|
||||
|
||||
if( mount.type != Mount::thread )
|
||||
{
|
||||
request.status = Error::permision_denied;
|
||||
return false;
|
||||
}
|
||||
|
||||
if( !request.HasWriteAccess(*request.dir_table.back()) || request.is_item )
|
||||
if( !request.CanCreateThread() )
|
||||
{
|
||||
request.status = Error::permision_denied;
|
||||
return false;
|
||||
@@ -42,28 +33,35 @@ void Content::PostFunCreateThread()
|
||||
if( !FunCreateThreadCheckAccess() )
|
||||
return;
|
||||
|
||||
request.post_table.insert( std::make_pair(std::string("url"), std::string()) ); // !! tymczasowo, zrobic aby mkdir i emacs nie rzucaly wyjatkiem gdy nie ma url zdefiniowanego
|
||||
|
||||
PostFunMkdir(true);
|
||||
request.thread.parent_id = request.dir_table.back()->id;
|
||||
PostFunMkdir(true, 0777); // !! tymczasowo 777 aby wszyscy mogli wysylac posty
|
||||
|
||||
if( request.session->done_status == Error::ok )
|
||||
{
|
||||
request.thread.dir_id = request.dir_table.back()->id;
|
||||
request.thread.subject = request.PostVar("subject");
|
||||
request.thread.closed = false;
|
||||
|
||||
request.session->done_status = db.AddThread(request.thread);
|
||||
PostFunEmacs();
|
||||
|
||||
if( request.session->done_status == Error::ok )
|
||||
{
|
||||
request.thread.dir_id = request.dir_table.back()->id;
|
||||
request.thread.closed = false;
|
||||
request.thread.items = 1;
|
||||
request.thread.last_item = request.item; // set by PostFunEmacs()
|
||||
|
||||
request.session->done_status = db.AddThread(request.thread);
|
||||
}
|
||||
|
||||
|
||||
if( request.session->done_status == Error::ok )
|
||||
{
|
||||
PostFunEmacs();
|
||||
|
||||
if( request.session->done_status == Error::ok )
|
||||
{
|
||||
request.session->done = Done::added_thread;
|
||||
RedirectTo(*request.dir_table.back());
|
||||
}
|
||||
request.session->done = Done::added_thread;
|
||||
RedirectTo(*request.dir_table.back());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -75,6 +73,8 @@ void Content::PostFunCreateThread()
|
||||
void Content::FunCreateThread()
|
||||
{
|
||||
FunCreateThreadCheckAccess();
|
||||
|
||||
TemplatesFunctions::thread_show_edit_subject_var = true; // !! tymczasowe rozwiazanie
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
#include "content.h"
|
||||
#include "../core/request.h"
|
||||
#include "../core/error.h"
|
||||
#include "../core/misc.h"
|
||||
#include "../core/db.h"
|
||||
#include "../core/data.h"
|
||||
|
||||
@@ -18,22 +17,6 @@
|
||||
|
||||
|
||||
|
||||
void Content::PrepareUrl(Item & item)
|
||||
{
|
||||
CorrectUrl(item);
|
||||
|
||||
if( data.functions.GetFunction(item.url) )
|
||||
{
|
||||
// the name provided by an user is the same as a name of a function
|
||||
// we add one underscore character at the beginning
|
||||
|
||||
// names of functions should not begin with an underscore '_'
|
||||
// and we can simply add one '_' at the beginning
|
||||
// and the name will be unique
|
||||
item.url.insert(item.url.begin(), '_');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Content::PostFunEmacsAdd()
|
||||
@@ -47,10 +30,11 @@ void Content::PostFunEmacsAdd()
|
||||
request.item.privileges = 0644; // !! tymczasowo, bedzie uzyte umask
|
||||
request.item.parent_id = request.dir_table.back()->id;
|
||||
request.item.type = Item::file;
|
||||
request.item.content_type = 1;// !! tymczasowo formatted text
|
||||
|
||||
// dates (creation and modification) is set by request.item.Clear() at the beginning
|
||||
|
||||
if( !request.HasWriteAccess(*request.dir_table.back() ) )
|
||||
if( !request.CanUseEmacs(*request.dir_table.back() ) )
|
||||
throw Error(Error::permision_denied);
|
||||
|
||||
request.session->done_status = db.AddItem(request.item);
|
||||
@@ -62,7 +46,7 @@ void Content::PostFunEmacsEdit(bool with_url)
|
||||
{
|
||||
request.session->done = Done::edited_item;
|
||||
|
||||
if( !request.HasWriteAccess(request.item) )
|
||||
if( !request.CanUseEmacs(request.item) )
|
||||
throw Error(Error::permision_denied);
|
||||
|
||||
time_t t = std::time(0);
|
||||
@@ -78,11 +62,30 @@ void Content::PostFunEmacsEdit(bool with_url)
|
||||
|
||||
void Content::PostFunEmacs()
|
||||
{
|
||||
bool adding = true;
|
||||
|
||||
if( request.is_item )
|
||||
adding = false;
|
||||
|
||||
try
|
||||
{
|
||||
// these old values are ignored (if exists)
|
||||
|
||||
//!! tymczasowo, zabezpieczenie przed pustym url-em
|
||||
try {
|
||||
request.item.url = request.PostVar("url");
|
||||
request.item.subject = request.PostVar("subject");
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
}
|
||||
|
||||
if( request.item.subject.empty() )
|
||||
request.item.subject = request.dir_table.back()->subject;
|
||||
// !! dodac skladanie tytuly z ostatniego katalogu i liczby okreslajacej ile jest elementow w srodku
|
||||
// !! nie bedzie obciazany modul wyszukujacy bardzo
|
||||
////////
|
||||
|
||||
request.item.content = request.PostVar("content");
|
||||
|
||||
bool with_url = false;
|
||||
@@ -92,10 +95,11 @@ void Content::PostFunEmacs()
|
||||
|
||||
PrepareUrl(request.item);
|
||||
|
||||
if( request.is_item )
|
||||
PostFunEmacsEdit(with_url);
|
||||
else
|
||||
if( adding )
|
||||
PostFunEmacsAdd();
|
||||
else
|
||||
PostFunEmacsEdit(with_url);
|
||||
|
||||
}
|
||||
catch(const Error & e)
|
||||
{
|
||||
@@ -106,9 +110,22 @@ void Content::PostFunEmacs()
|
||||
|
||||
if( request.session->done_status == Error::ok )
|
||||
{
|
||||
request.session->item = request.item;
|
||||
request.session->done_timer = 2;
|
||||
RedirectTo(request.item);
|
||||
if( data.mounts.CurrentMountType() == Mount::thread )
|
||||
{
|
||||
if( adding )
|
||||
db.EditThreadAddItem(request.dir_table.back()->id, request.item.id);
|
||||
|
||||
|
||||
// request.session->item = request.item;
|
||||
// request.session->done_timer = 2;
|
||||
RedirectTo(*request.dir_table.back());
|
||||
}
|
||||
else
|
||||
{
|
||||
request.session->item = request.item;
|
||||
request.session->done_timer = 2;
|
||||
RedirectTo(request.item);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -128,14 +145,14 @@ void Content::FunEmacs()
|
||||
if( !request.is_item )
|
||||
{
|
||||
// adding a new item
|
||||
if( !request.HasReadWriteAccess(*request.dir_table.back()) )
|
||||
if( !request.CanUseEmacs(*request.dir_table.back()) )
|
||||
request.status = Error::permision_denied;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// editing an existing item
|
||||
if( !request.HasReadWriteAccess(request.item) )
|
||||
if( !request.CanUseEmacs(request.item) )
|
||||
{
|
||||
request.status = Error::permision_denied;
|
||||
return;
|
||||
|
||||
@@ -21,16 +21,9 @@ void Content::FunLs()
|
||||
request.item_table.push_back( request.item );
|
||||
return;
|
||||
}
|
||||
|
||||
// !! a gdzie sprawdzenie uprawnien?
|
||||
|
||||
// we're showing the whole directory
|
||||
Item item_ref;
|
||||
|
||||
item_ref.parent_id = request.dir_table.back()->id;
|
||||
|
||||
// !! zrobic inna metode, inny interfejs (jako parametr niech bierze parent_id), i zeby nie odczytywala contentu i subjectu (a moze tylko subject? przyda sie przy ls -l)
|
||||
db.GetItems(request.item_table, item_ref);
|
||||
// we're reading only files here
|
||||
db.GetItems(request.item_table, request.dir_table.back()->id, Item::file, false, false, true);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -16,9 +16,9 @@
|
||||
|
||||
|
||||
|
||||
void Content::PostFunMkdir(bool add_to_dir_table)
|
||||
void Content::PostFunMkdir(bool add_to_dir_table, int mask)
|
||||
{
|
||||
if( !request.HasWriteAccess(*request.dir_table.back()) )
|
||||
if( !request.CanUseMkdir(*request.dir_table.back()) )
|
||||
{
|
||||
request.status = Error::permision_denied;
|
||||
return;
|
||||
@@ -30,12 +30,13 @@ void Content::PostFunMkdir(bool add_to_dir_table)
|
||||
try
|
||||
{
|
||||
item.type = Item::dir;
|
||||
item.subject = request.PostVar("subject");
|
||||
item.url = request.PostVar("url");
|
||||
item.parent_id = request.dir_table.back()->id;
|
||||
item.user_id = request.session->puser ? request.session->puser->id : -1;
|
||||
item.group_id = -1;
|
||||
item.privileges = 0755; // !! tymczasowo, bedzie uzyte umask
|
||||
item.default_item = -1; // !! tymczasowo, bedzie formularz z wprowadzeniem
|
||||
item.privileges = mask;
|
||||
item.default_item = -1;
|
||||
|
||||
// dates (creation and modification) is set by the Item() constructor
|
||||
|
||||
@@ -72,7 +73,7 @@ void Content::PostFunMkdir(bool add_to_dir_table)
|
||||
|
||||
void Content::FunMkdir()
|
||||
{
|
||||
if( !request.HasWriteAccess(*request.dir_table.back()) )
|
||||
if( !request.CanUseMkdir(*request.dir_table.back()) )
|
||||
{
|
||||
request.status = Error::permision_denied;
|
||||
return;
|
||||
|
||||
@@ -14,76 +14,70 @@
|
||||
#include "../core/data.h"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void Content::PostFunPriv()
|
||||
void Content::PostFunPriv(Item & item)
|
||||
{
|
||||
// !! narazie tylko dla plikow
|
||||
if( !request.is_item )
|
||||
return;
|
||||
|
||||
try
|
||||
{
|
||||
long user_id = data.users.GetUserId( request.PostVar("user") );
|
||||
long group_id = data.groups.GetGroupId( request.PostVar("group") );
|
||||
int privileges = strtol( request.PostVar("privileges").c_str() , 0, 8);
|
||||
|
||||
if( !request.CanChangeUser(request.item, user_id) )
|
||||
if( user_id==item.user_id && group_id==item.group_id && privileges==item.privileges )
|
||||
{
|
||||
log << log3 << "Content: PostFunPriv: nothing to change" << logend;
|
||||
throw Error(Error::ok);
|
||||
}
|
||||
|
||||
if( !request.CanChangeUser(item, user_id) )
|
||||
throw Error(Error::cant_change_user);
|
||||
|
||||
if( !request.CanChangeGroup(request.item, group_id) )
|
||||
if( !request.CanChangeGroup(item, group_id) )
|
||||
throw Error(Error::cant_change_group);
|
||||
|
||||
if( !request.CanChangePrivileges(request.item, privileges) )
|
||||
if( !request.CanChangePrivileges(item, privileges) )
|
||||
throw Error(Error::cant_change_privileges);
|
||||
|
||||
request.item.user_id = user_id;
|
||||
request.item.group_id = group_id;
|
||||
request.item.privileges = privileges;
|
||||
item.user_id = user_id;
|
||||
item.group_id = group_id;
|
||||
item.privileges = privileges;
|
||||
|
||||
request.session->done = Done::privileged_item;
|
||||
request.session->done_status = db.EditPrivById(request.item, request.item.id);
|
||||
request.session->done_status = db.EditPrivById(item, item.id);
|
||||
}
|
||||
catch(const Error & e)
|
||||
{
|
||||
log << log1 << "Content: FunChmod: Error: " << e << logend;
|
||||
request.session->done_status = e;
|
||||
}
|
||||
|
||||
if( request.session->done_status == Error::ok )
|
||||
{
|
||||
request.session->item = request.item;
|
||||
request.session->done_timer = 2;
|
||||
RedirectTo(request.item);
|
||||
request.session->item = item;
|
||||
request.session->done_timer = 2;
|
||||
RedirectTo(item);
|
||||
}
|
||||
else
|
||||
{
|
||||
log << log1 << "Content: PostFunPrivileges: Error: " << static_cast<int>(request.session->done_status) << logend;
|
||||
}
|
||||
log << log1 << "Content: PostFunPriv: Error: " << static_cast<int>(request.session->done_status) << logend;
|
||||
}
|
||||
|
||||
request.status = request.session->done_status;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void Content::PostFunPriv()
|
||||
{
|
||||
if( request.is_item )
|
||||
PostFunPriv( request.item );
|
||||
else
|
||||
PostFunPriv( *request.dir_table.back() );
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Content::FunPriv()
|
||||
{
|
||||
if( !request.is_item )
|
||||
{
|
||||
// !! chwilowi tylko dla plikow
|
||||
request.status == Error::item_required;
|
||||
return;
|
||||
}
|
||||
|
||||
// you must be an owner of the item (or a superuser)
|
||||
// !! moze wykorzystac request.CanChangeUser() ?
|
||||
if( !request.session->puser || (!request.session->puser->super_user && request.session->puser->id != request.item.user_id) )
|
||||
{
|
||||
request.status = Error::permision_denied;
|
||||
return;
|
||||
}
|
||||
|
||||
// we do not check permissions here
|
||||
// permissions depends on the user, group, and privileges
|
||||
}
|
||||
|
||||
@@ -53,33 +53,17 @@ void Content::FunRmDirRecursive()
|
||||
|
||||
void Content::FunRmDir()
|
||||
{
|
||||
if( request.dir_table.size() == 1 )
|
||||
if( !request.CanRemove(*request.dir_table.back()) )
|
||||
{
|
||||
// rm for the root dir
|
||||
// only the superuser can do it
|
||||
if( !request.session->puser || !request.session->puser->super_user )
|
||||
{
|
||||
request.status = Error::permision_denied;
|
||||
return;
|
||||
}
|
||||
request.status = Error::permision_denied;
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
Item * last_but_one_dir = *(--(--request.dir_table.end()));
|
||||
|
||||
if( !request.HasWriteAccess(*last_but_one_dir) )
|
||||
{
|
||||
request.status = Error::permision_denied;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if( request.param_table.empty() )
|
||||
request.status = Error::permision_denied;
|
||||
else
|
||||
if( request.IsParam("confirm") )
|
||||
return;
|
||||
return;
|
||||
else
|
||||
if( request.IsParam("r") )
|
||||
FunRmDirRecursive();
|
||||
@@ -96,7 +80,7 @@ void Content::FunRm()
|
||||
return;
|
||||
}
|
||||
|
||||
if( !request.HasWriteAccess(*request.dir_table.back()) )
|
||||
if( !request.CanRemove(request.item) )
|
||||
{
|
||||
request.status = Error::permision_denied;
|
||||
return;
|
||||
|
||||
@@ -13,24 +13,35 @@
|
||||
#include "../core/data.h"
|
||||
#include "../core/mount.h"
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
|
||||
bool Content::FunThreadSort(const Thread & t1, const Thread & t2)
|
||||
{
|
||||
Item * pdir1 = data.dirs.GetDir(t1.dir_id);
|
||||
Item * pdir2 = data.dirs.GetDir(t2.dir_id);
|
||||
|
||||
if( !pdir1 || !pdir2 )
|
||||
return false;
|
||||
|
||||
time_t time1 = mktime(&pdir1->date_creation);
|
||||
time_t time2 = mktime(&pdir2->date_creation);
|
||||
|
||||
return time1 > time2;
|
||||
}
|
||||
|
||||
|
||||
void Content::FunThread()
|
||||
{
|
||||
// we're showing the whole directory
|
||||
Item item_ref;
|
||||
|
||||
item_ref.parent_id = request.dir_table.back()->id;
|
||||
|
||||
// !! zrobic inna metode, inny interfejs (jako parametr niech bierze parent_id), i zeby nie odczytywala contentu i subjectu (a moze tylko subject? przyda sie przy ls -l)
|
||||
bool asc = true;
|
||||
|
||||
Mount mount = data.mounts.GetCurrentMountPoint();
|
||||
if( mount.IsParam(Mount::desc) )
|
||||
if( data.mounts.CurrentMountIsParam(Mount::desc) )
|
||||
asc = false;
|
||||
|
||||
db.GetItems(request.item_table, item_ref, asc);
|
||||
db.GetItems(request.item_table, request.dir_table.back()->id, Item::file, true, true, asc);
|
||||
db.GetThreads(request.dir_table.back()->id, request.thread_tab);
|
||||
|
||||
std::sort(request.thread_tab.begin(), request.thread_tab.end(), FunThreadSort);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user