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:
2009-06-05 20:29:06 +00:00
parent 3d001e7458
commit 1eb42446f8
38 changed files with 1357 additions and 369 deletions

View File

@@ -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
}