refactoring
git-svn-id: svn://ttmath.org/publicrep/cmslu/trunk@523 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
@@ -110,7 +110,7 @@ void Content::MakeStandardFunction()
|
||||
if( !request.pfunction )
|
||||
SetDefaultFunction();
|
||||
|
||||
if( request.result == Request::redirect )
|
||||
if( !request.redirect_to.empty() )
|
||||
return;
|
||||
|
||||
|
||||
@@ -239,7 +239,7 @@ void Content::Make()
|
||||
if( request.method == Request::post )
|
||||
MakePost();
|
||||
|
||||
if( request.result == Request::redirect )
|
||||
if( !request.redirect_to.empty() )
|
||||
return;
|
||||
|
||||
if( request.status == Error::ok )
|
||||
@@ -249,7 +249,7 @@ void Content::Make()
|
||||
request.status = Error::permision_denied;
|
||||
}
|
||||
|
||||
if( request.result == Request::redirect )
|
||||
if( !request.redirect_to.empty() )
|
||||
return;
|
||||
|
||||
if( request.dir_table.empty() )
|
||||
@@ -275,23 +275,22 @@ void Content::RedirectTo(const Item & item)
|
||||
{
|
||||
std::string path;
|
||||
|
||||
request.result = Request::redirect;
|
||||
request.str = data.base_url;
|
||||
request.redirect_to = data.base_url;
|
||||
|
||||
|
||||
if( item.type == Item::dir )
|
||||
{
|
||||
// item_id is pointing to a directory
|
||||
data.dirs.MakePath(item.id, path);
|
||||
request.str += path;
|
||||
request.redirect_to += path;
|
||||
}
|
||||
else
|
||||
{
|
||||
if( !data.dirs.MakePath(item.parent_id, path) )
|
||||
log << log1 << "Content: Can't redirect: no dirs for item id: " << item.id << logend;
|
||||
|
||||
request.str += path;
|
||||
request.str += item.url;
|
||||
request.redirect_to += path;
|
||||
request.redirect_to += item.url;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -302,16 +301,15 @@ void Content::RedirectTo(long item_id)
|
||||
std::string path;
|
||||
Item * pdir;
|
||||
|
||||
request.result = Request::redirect;
|
||||
request.str = data.base_url;
|
||||
pdir = data.dirs.GetDir(item_id);
|
||||
request.redirect_to = data.base_url;
|
||||
pdir = data.dirs.GetDir(item_id);
|
||||
|
||||
|
||||
if( pdir )
|
||||
{
|
||||
// item_id is pointing to a directory
|
||||
data.dirs.MakePath(pdir->id, path);
|
||||
request.str += path;
|
||||
request.redirect_to += path;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -324,7 +322,7 @@ Item * pdir;
|
||||
if( !data.dirs.MakePath(request.item_table[0].parent_id, path) )
|
||||
log << log1 << "Content: Can't redirect: no dirs for item id: " << request.item_table[0].id << ", requested directory id: " << request.item_table[0].parent_id << logend;
|
||||
|
||||
request.str += path + request.item_table[0].url;
|
||||
request.redirect_to += path + request.item_table[0].url;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -386,9 +384,9 @@ bool Content::CheckRebus()
|
||||
|
||||
try
|
||||
{
|
||||
std::string & answer = request.PostVar("rebus");
|
||||
std::string * answer = request.PostVar("rebus");
|
||||
|
||||
if( data.rebus.IsAnswerOk(request.session->rebus_item, answer) )
|
||||
if( answer && data.rebus.IsAnswerOk(request.session->rebus_item, *answer) )
|
||||
return true;
|
||||
}
|
||||
catch(const Error &)
|
||||
@@ -401,23 +399,16 @@ return false;
|
||||
}
|
||||
|
||||
|
||||
void Content::SetUser()
|
||||
void Content::SetUser(Item & item)
|
||||
{
|
||||
if( request.session->puser )
|
||||
{
|
||||
request.item.user_id = request.session->puser->id;
|
||||
request.item.guest_name.clear();
|
||||
item.user_id = request.session->puser->id;
|
||||
item.guest_name.clear();
|
||||
}
|
||||
else
|
||||
{
|
||||
request.item.user_id = -1;
|
||||
|
||||
try
|
||||
{
|
||||
request.item.guest_name = request.PostVar("guestname");
|
||||
}
|
||||
catch(const Error &)
|
||||
{
|
||||
}
|
||||
item.user_id = -1;
|
||||
request.PostVar("guestname", item.guest_name);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ class Content
|
||||
|
||||
void MakeStandardFunction();
|
||||
|
||||
void SetUser();
|
||||
void SetUser(Item & item);
|
||||
bool CheckRebus();
|
||||
|
||||
void MakePost();
|
||||
|
||||
@@ -37,29 +37,10 @@ void Content::PostFunCreateThread()
|
||||
if( !CheckRebus() )
|
||||
{
|
||||
request.status = Error::rebus_bad_answer;
|
||||
|
||||
try
|
||||
{
|
||||
try
|
||||
{
|
||||
request.item.url = request.PostVar("url");
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
}
|
||||
|
||||
request.item.subject = request.PostVar("subject");
|
||||
|
||||
|
||||
request.item.content = request.PostVar("content");
|
||||
|
||||
|
||||
SetUser();
|
||||
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
}
|
||||
request.PostVar("url", request.item.url);
|
||||
request.PostVar("subject", request.item.subject);
|
||||
request.PostVar("content", request.item.content);
|
||||
SetUser(request.item);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -22,13 +22,13 @@ long Content::PostFunDefaultParsePath()
|
||||
Item * pdir, * pdir2;
|
||||
long defaultid = -1;
|
||||
|
||||
std::string & path = request.PostVar("defaultitem");
|
||||
std::string * path = request.PostVar("defaultitem");
|
||||
|
||||
|
||||
if( !path.empty() )
|
||||
if( path && !path->empty() )
|
||||
{
|
||||
std::string dir, file;
|
||||
Dirs::SplitPath(path, dir, file);
|
||||
Dirs::SplitPath(*path, dir, file);
|
||||
|
||||
pdir = data.dirs.GetDir(dir);
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@ void Content::PostFunEmacsAdd()
|
||||
|
||||
request.is_item = true;
|
||||
|
||||
SetUser();
|
||||
SetUser(request.item);
|
||||
|
||||
request.item.group_id = -1;
|
||||
request.item.privileges = 0644; // !! tymczasowo, bedzie uzyte umask
|
||||
@@ -100,14 +100,8 @@ bool adding = true;
|
||||
{
|
||||
// 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(...)
|
||||
{
|
||||
}
|
||||
request.PostVar("url", request.item.url);
|
||||
request.PostVar("subject", request.item.subject);
|
||||
|
||||
if( request.item.subject.empty() )
|
||||
request.item.subject = request.dir_table.back()->subject;
|
||||
@@ -115,11 +109,12 @@ bool adding = true;
|
||||
// !! nie bedzie obciazany modul wyszukujacy bardzo
|
||||
////////
|
||||
|
||||
request.item.content = request.PostVar("content");
|
||||
request.PostVar("content", request.item.content);
|
||||
|
||||
bool with_url = false;
|
||||
|
||||
if( !request.is_item || request.PostVar("old_url") != request.item.url )
|
||||
std::string * old_url = request.PostVar("old_url");
|
||||
|
||||
if( !request.is_item || (old_url && *old_url!=request.item.url) )
|
||||
with_url = true;
|
||||
|
||||
PrepareUrl(request.item);
|
||||
@@ -127,7 +122,7 @@ bool adding = true;
|
||||
if( !CheckRebus() )
|
||||
{
|
||||
request.status = Error::rebus_bad_answer;
|
||||
SetUser();
|
||||
SetUser(request.item);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -33,11 +33,11 @@ void Content::PostFunLogin()
|
||||
{
|
||||
try
|
||||
{
|
||||
std::string & login = request.PostVar("login");
|
||||
std::string & pass = request.PostVar("password");
|
||||
std::string * login = request.PostVar("login");
|
||||
std::string * pass = request.PostVar("password");
|
||||
long user_id;
|
||||
|
||||
if( db.CheckUser(login, pass, user_id) )
|
||||
if( login && pass && db.CheckUser(*login, *pass, user_id) )
|
||||
{
|
||||
request.session->puser = data.users.GetUser(user_id);
|
||||
|
||||
@@ -47,7 +47,7 @@ void Content::PostFunLogin()
|
||||
return;
|
||||
}
|
||||
|
||||
data.last.UserLogin(user_id, login, inet_addr(request.env_remote_addr), request.session->id);
|
||||
data.last.UserLogin(user_id, *login, inet_addr(request.env_remote_addr), request.session->id);
|
||||
|
||||
log << log2 << "User " << login << " (id: " << user_id << ") logged" << logend;
|
||||
}
|
||||
|
||||
@@ -33,15 +33,12 @@ void Content::FunLogout()
|
||||
request.session->puser = 0;
|
||||
}
|
||||
|
||||
request.result = Request::redirect;
|
||||
std::string path;
|
||||
|
||||
data.dirs.MakePath(request.dir_table.back()->id, path);
|
||||
|
||||
request.str = data.base_url + path;
|
||||
request.redirect_to = data.base_url + path;
|
||||
|
||||
if( request.is_item )
|
||||
request.str += request.item.url;
|
||||
request.redirect_to += request.item.url;
|
||||
|
||||
request.session->done = Done::loggedout;
|
||||
request.session->done_timer = 2;
|
||||
|
||||
@@ -28,22 +28,14 @@ void Content::PostFunMkdir(bool add_to_dir_table, int mask)
|
||||
Item item;
|
||||
request.session->done = Done::added_dir;
|
||||
|
||||
try
|
||||
{
|
||||
// try
|
||||
// {
|
||||
item.type = Item::dir;
|
||||
item.subject = request.PostVar("subject");
|
||||
item.url = request.PostVar("url");
|
||||
request.PostVar("subject", item.subject);
|
||||
request.PostVar("url", item.url);
|
||||
item.parent_id = request.dir_table.back()->id;
|
||||
|
||||
if( request.session->puser )
|
||||
{
|
||||
item.user_id = request.session->puser->id;
|
||||
}
|
||||
else
|
||||
{
|
||||
item.user_id = -1;
|
||||
item.guest_name = request.PostVar("guestname");
|
||||
}
|
||||
SetUser(item);
|
||||
|
||||
item.group_id = -1;
|
||||
item.privileges = mask;
|
||||
@@ -55,12 +47,12 @@ void Content::PostFunMkdir(bool add_to_dir_table, int mask)
|
||||
|
||||
request.session->done_status = db.AddItem(item);
|
||||
|
||||
}
|
||||
/* }
|
||||
catch(const Error & e)
|
||||
{
|
||||
request.session->done_status = e;
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
if( request.session->done_status == Error::ok )
|
||||
{
|
||||
|
||||
@@ -18,9 +18,21 @@ void Content::PostFunPriv(Item & item)
|
||||
{
|
||||
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);
|
||||
std::string * user = request.PostVar("user");
|
||||
std::string * group = request.PostVar("group");
|
||||
std::string * priv = request.PostVar("privileges");
|
||||
|
||||
if( !user || !group || !priv )
|
||||
{
|
||||
log << log3 << "Content: PostFunPriv: there is no some post variables" << logend;
|
||||
// some kind of error to report?
|
||||
// !! wstawic nowy kod bledu i rzucic wyjatek jego (usunac powyzszy wpis log takze)
|
||||
return;
|
||||
}
|
||||
|
||||
long user_id = data.users.GetUserId( *user );
|
||||
long group_id = data.groups.GetGroupId( *group );
|
||||
int privileges = strtol( priv->c_str() , 0, 8);
|
||||
|
||||
if( user_id==item.user_id && group_id==item.group_id && privileges==item.privileges )
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user