added: issues ticket system
added functions: ticket, createticket, editticket (there is no 'rm' function working for tickets yet) changed: mount parser and mount points now we have more parameters (arguments in parameters) some refactoring in functions 'emacs' and 'mkdir' git-svn-id: svn://ttmath.org/publicrep/cmslu/trunk@554 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
@@ -17,46 +17,31 @@
|
||||
|
||||
|
||||
|
||||
|
||||
void Content::CheckSpecialFile()
|
||||
bool Content::FunEmacsCheckAccess()
|
||||
{
|
||||
static std::string fstab = "fstab";
|
||||
|
||||
Item * etc = data.dirs.GetEtcDir();
|
||||
|
||||
if( !etc )
|
||||
return;
|
||||
|
||||
if( request.item.parent_id != etc->id )
|
||||
return;
|
||||
|
||||
if( request.item.url == fstab )
|
||||
if( !request.is_item )
|
||||
{
|
||||
log << log3 << "Content: reloading mount points" << logend;
|
||||
data.mounts.ReadMounts(request.item.content);
|
||||
// adding a new item
|
||||
if( !request.CanUseEmacs(*request.dir_table.back()) )
|
||||
{
|
||||
request.status = Error::permission_denied;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else // editing an existing item
|
||||
if( !request.CanUseEmacs(request.item) )
|
||||
{
|
||||
request.status = Error::permission_denied;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void Content::PostFunEmacsAdd()
|
||||
{
|
||||
request.session->done = Done::added_item;
|
||||
|
||||
request.is_item = true;
|
||||
|
||||
SetUser(request.item);
|
||||
|
||||
request.item.group_id = -1;
|
||||
request.item.privileges = 0644; // !! tymczasowo, bedzie uzyte umask
|
||||
request.item.parent_id = request.dir_table.back()->id;
|
||||
request.item.type = Item::file;
|
||||
|
||||
// dates (creation and modification) is set by request.item.Clear() at the beginning
|
||||
|
||||
if( !request.CanUseEmacs(*request.dir_table.back() ) )
|
||||
throw Error(Error::permission_denied);
|
||||
|
||||
request.session->done = Done::added_item;
|
||||
request.session->done_status = db.AddItem(request.item);
|
||||
|
||||
if( request.session->done_status == Error::ok )
|
||||
@@ -70,14 +55,8 @@ void Content::PostFunEmacsAdd()
|
||||
|
||||
void Content::PostFunEmacsEdit(bool with_url)
|
||||
{
|
||||
request.session->done = Done::edited_item;
|
||||
|
||||
if( !request.CanUseEmacs(request.item) )
|
||||
throw Error(Error::permission_denied);
|
||||
|
||||
time_t t = std::time(0);
|
||||
request.item.date_modification = *std::localtime( &t );
|
||||
|
||||
request.item.SetDateModifyToNow();
|
||||
request.session->done = Done::edited_item;
|
||||
request.session->done_status = db.EditItemById(request.item, with_url);
|
||||
|
||||
if( request.session->done_status == Error::ok )
|
||||
@@ -90,79 +69,53 @@ void Content::PostFunEmacsEdit(bool with_url)
|
||||
}
|
||||
|
||||
|
||||
// returning true if the 'url' has to be change
|
||||
bool Content::PostFunSetUrlSubject()
|
||||
bool Content::PostEmacsCheckAbuse(bool adding)
|
||||
{
|
||||
bool with_url = false;
|
||||
|
||||
std::string * new_url = request.PostVar("url");
|
||||
std::string * new_subject = request.PostVar("subject");
|
||||
|
||||
if( request.is_item )
|
||||
if( !CheckRebus() )
|
||||
{
|
||||
// editing an item
|
||||
if( new_url && *new_url != request.item.url )
|
||||
with_url = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
// adding a new item
|
||||
with_url = true;
|
||||
request.status = Error::incorrect_rebus;
|
||||
request.session->done = (adding)? Done::added_item : Done::edited_item;
|
||||
request.session->done_status = Error::incorrect_rebus;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
if( new_url )
|
||||
request.item.url = *new_url;
|
||||
// !! is tested in createthread once
|
||||
CheckGetPostTimes();
|
||||
|
||||
if( new_subject )
|
||||
request.item.subject = *new_subject;
|
||||
|
||||
|
||||
if( request.item.subject.empty() )
|
||||
if( request.session->spam_score > 0 )
|
||||
{
|
||||
request.item.subject = request.dir_table.back()->subject;
|
||||
request.item.subject += "_msg_";
|
||||
request.item.subject += ToStr(db.Size(request.dir_table.back()->id, Item::file));
|
||||
request.status = Error::spam;
|
||||
request.session->done = (adding)? Done::added_item : Done::edited_item;
|
||||
request.session->done_status = Error::spam;
|
||||
|
||||
log << log1 << "Content: ignoring due to suspected spamming" << logend;
|
||||
return false;
|
||||
}
|
||||
|
||||
// if request.item.url is empty then it will be set from request.item.subject
|
||||
PrepareUrl(request.item);
|
||||
|
||||
return with_url;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void Content::SetContentType()
|
||||
|
||||
void Content::PostFunEmacsModifyMountPoint(bool adding)
|
||||
{
|
||||
request.item.content_type = Item::ct_formatted_text; // formatted text default
|
||||
request.PostVar("contenttype", temp);
|
||||
|
||||
if( temp == "text" )
|
||||
request.item.content_type = Item::ct_text;
|
||||
else
|
||||
if( temp == "formatted text" )
|
||||
request.item.content_type = Item::ct_formatted_text;
|
||||
|
||||
if( !request.session->puser )
|
||||
return;
|
||||
|
||||
long user_id = request.session->puser->id;
|
||||
|
||||
if( temp == "html" )
|
||||
if( data.mounts.pmount->type == Mount::thread )
|
||||
{
|
||||
if( request.CanUseHtml(user_id) )
|
||||
request.item.content_type = Item::ct_html;
|
||||
if( adding )
|
||||
db.EditThreadAddItem(request.dir_table.back()->id, request.item.id);
|
||||
|
||||
RedirectToLastDir();
|
||||
}
|
||||
else
|
||||
if( temp == "bbcode" )
|
||||
if( data.mounts.pmount->type == Mount::ticket )
|
||||
{
|
||||
if( request.CanUseBBCode(user_id) )
|
||||
request.item.content_type = Item::ct_bbcode;
|
||||
RedirectToLastDir();
|
||||
}
|
||||
else
|
||||
if( temp == "raw" )
|
||||
{
|
||||
if( request.CanUseRaw(user_id) )
|
||||
request.item.content_type = Item::ct_raw;
|
||||
// Mount::cms
|
||||
RedirectTo(request.item);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -170,103 +123,47 @@ void Content::SetContentType()
|
||||
|
||||
void Content::PostFunEmacs()
|
||||
{
|
||||
bool adding = !request.is_item;
|
||||
if( !FunEmacsCheckAccess() )
|
||||
return;
|
||||
|
||||
try
|
||||
bool adding = !request.is_item;
|
||||
bool edit_with_url = ReadItem(request.item, Item::file);
|
||||
request.session->done_status = Error::ok;
|
||||
|
||||
if( !PostEmacsCheckAbuse(adding) )
|
||||
return;
|
||||
|
||||
|
||||
if( adding )
|
||||
{
|
||||
bool with_url = PostFunSetUrlSubject();
|
||||
request.PostVar("content", request.item.content);
|
||||
SetContentType();
|
||||
|
||||
if( !CheckRebus() )
|
||||
{
|
||||
request.status = Error::spam;
|
||||
SetUser(request.item);
|
||||
request.session->done = (adding)? Done::added_item : Done::edited_item;
|
||||
request.session->done_status = Error::incorrect_rebus;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// !! is tested in createthread once
|
||||
CheckGetPostTimes();
|
||||
|
||||
if( request.session->spam_score > 0 )
|
||||
{
|
||||
request.status = Error::spam;
|
||||
SetUser(request.item);
|
||||
request.session->done = (adding)? Done::added_item : Done::edited_item;
|
||||
request.session->done_status = Error::spam;
|
||||
|
||||
log << log1 << "Content: ignoring due to suspected spamming" << logend;
|
||||
return;
|
||||
}
|
||||
|
||||
if( adding )
|
||||
PostFunEmacsAdd();
|
||||
else
|
||||
PostFunEmacsEdit(with_url);
|
||||
|
||||
CheckSpecialFile();
|
||||
request.is_item = true;
|
||||
request.item.privileges = 0644; // !! tymczasowo, bedzie uzyte umask
|
||||
PostFunEmacsAdd();
|
||||
}
|
||||
catch(const Error & e)
|
||||
else
|
||||
{
|
||||
request.session->done_status = e;
|
||||
PostFunEmacsEdit(edit_with_url);
|
||||
}
|
||||
|
||||
|
||||
|
||||
if( request.session->done_status == Error::ok )
|
||||
{
|
||||
request.session->item = 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);
|
||||
}
|
||||
PostFunEmacsModifyMountPoint(adding);
|
||||
CheckSpecialFile();
|
||||
}
|
||||
else
|
||||
{
|
||||
log << log1 << "Content: PostFunEmacs: Error: " << request.session->done_status << logend;
|
||||
log << log1 << "Content: PostFunEmacs: Error: "
|
||||
<< request.session->done_status << logend;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void Content::FunEmacs()
|
||||
{
|
||||
if( !request.is_item )
|
||||
{
|
||||
// adding a new item
|
||||
if( !request.CanUseEmacs(*request.dir_table.back()) )
|
||||
request.status = Error::permission_denied;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// editing an existing item
|
||||
if( !request.CanUseEmacs(request.item) )
|
||||
{
|
||||
request.status = Error::permission_denied;
|
||||
return;
|
||||
}
|
||||
FunEmacsCheckAccess();
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user