changed: added Cur structure

we have there two pointers: 
 Request * request;
 Session * session;
these are the current request and the current session


the session GC was moved to SessionManager (was in SessionContainer)



git-svn-id: svn://ttmath.org/publicrep/winix/trunk@708 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
2011-01-23 14:15:30 +00:00
parent 61ac29b2de
commit 915cabdf97
171 changed files with 2822 additions and 2650 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -25,25 +25,25 @@ bool AddUser::CheckAddUserVars(const std::wstring & login, const std::wstring &
{
if( login.empty() )
{
request->status = WINIX_ERR_LOGIN_EMPTY;
cur->request->status = WINIX_ERR_LOGIN_EMPTY;
return false;
}
if( pass != conf_pass )
{
request->status = WINIX_ERR_PASSWORDS_DIFFERENT;
cur->request->status = WINIX_ERR_PASSWORDS_DIFFERENT;
return false;
}
if( pass.size() < config->password_min_size )
{
request->status = WINIX_ERR_PASSWORD_TOO_SHORT;
cur->request->status = WINIX_ERR_PASSWORD_TOO_SHORT;
return false;
}
if( system->users.IsUser(login) )
{
request->status = WINIX_ERR_USER_EXISTS;
cur->request->status = WINIX_ERR_USER_EXISTS;
return false;
}
@@ -59,23 +59,23 @@ void AddUser::MakePost()
{
User user;
const std::wstring & login = request->PostVar(L"login");
const std::wstring & pass = request->PostVar(L"password");
const std::wstring & conf_pass = request->PostVar(L"confirmpassword");
const std::wstring & login = cur->request->PostVar(L"login");
const std::wstring & pass = cur->request->PostVar(L"password");
const std::wstring & conf_pass = cur->request->PostVar(L"confirmpassword");
if( !CheckAddUserVars(login, pass, conf_pass) )
return;
user.name = login;
user.email = request->PostVar(L"email");
user.email = cur->request->PostVar(L"email");
request->status = db->AddUser(user, pass);
cur->request->status = db->AddUser(user, pass);
if( request->status == WINIX_ERR_OK )
if( cur->request->status == WINIX_ERR_OK )
{
if( system->users.AddUser(user) )
{
if( !request->session->puser )
if( !cur->session->puser )
system->users.LoginUser(user.id, false);
log << log2 << "Adduser: added a new user: " << user.name << logend;

View File

@@ -7,8 +7,8 @@
*
*/
#ifndef headerfilecmslucontentadduser
#define headerfilecmslucontentadduser
#ifndef headerfile_winix_functions_adduser
#define headerfile_winix_functions_adduser
#include "functionbase.h"

View File

@@ -22,21 +22,21 @@ Cat::Cat()
void Cat::MakeGet()
{
if( !request->is_item )
if( !cur->request->is_item )
{
log << log1 << "Content: cat function requires an item" << logend;
request->status = WINIX_ERR_NO_ITEM;
cur->request->status = WINIX_ERR_NO_ITEM;
return;
}
if( !system->HasReadAccess(request->item) )
if( !system->HasReadAccess(cur->request->item) )
{
request->status = WINIX_ERR_PERMISSION_DENIED;
cur->request->status = WINIX_ERR_PERMISSION_DENIED;
return;
}
request->send_as_attachment = request->IsParam(L"attachment");
cur->request->send_as_attachment = cur->request->IsParam(L"attachment");
}

View File

@@ -7,8 +7,8 @@
*
*/
#ifndef headerfilecmslucontentfuncatcat
#define headerfilecmslucontentfuncatcat
#ifndef headerfile_winix_functions_cat
#define headerfile_winix_functions_cat
#include "functionbase.h"

View File

@@ -23,7 +23,7 @@ Chmod::Chmod()
void Chmod::MakePost()
{
priv_changer.SetRequest(request);
priv_changer.SetCur(cur);
priv_changer.SetSystem(system);
priv_changer.SetDb(db);
@@ -33,7 +33,7 @@ void Chmod::MakePost()
void Chmod::MakeGet()
{
priv_changer.SetRequest(request);
priv_changer.SetCur(cur);
priv_changer.SetSystem(system);
priv_changer.SetDb(db);

View File

@@ -7,8 +7,8 @@
*
*/
#ifndef headerfilecmslucontentchmod
#define headerfilecmslucontentchmod
#ifndef headerfile_winix_functions_chmod
#define headerfile_winix_functions_chmod
#include "functionbase.h"
#include "privchanger.h"

View File

@@ -23,7 +23,7 @@ Chown::Chown()
void Chown::MakePost()
{
priv_changer.SetRequest(request);
priv_changer.SetCur(cur);
priv_changer.SetSystem(system);
priv_changer.SetDb(db);
@@ -33,7 +33,7 @@ void Chown::MakePost()
void Chown::MakeGet()
{
priv_changer.SetRequest(request);
priv_changer.SetCur(cur);
priv_changer.SetSystem(system);
priv_changer.SetDb(db);

View File

@@ -7,8 +7,8 @@
*
*/
#ifndef headerfilecmslucontentchown
#define headerfilecmslucontentchown
#ifndef headerfile_winix_functions_chown
#define headerfile_winix_functions_chown
#include "functionbase.h"
#include "privchanger.h"

View File

@@ -7,8 +7,8 @@
*
*/
#ifndef headerfilecmslucontentckeditor
#define headerfilecmslucontentckeditor
#ifndef headerfile_winix_functions_ckeditor
#define headerfile_winix_functions_ckeditor
#include "functionbase.h"

View File

@@ -29,19 +29,19 @@ bool Cp::HasAccess()
bool Cp::CheckAccessFrom()
{
if( request->is_item )
if( cur->request->is_item )
{
if( !system->HasReadAccess(request->item) || request->item.type == Item::symlink )
if( !system->HasReadAccess(cur->request->item) || cur->request->item.type == Item::symlink )
{
request->status = WINIX_ERR_PERMISSION_DENIED;
cur->request->status = WINIX_ERR_PERMISSION_DENIED;
return false;
}
}
else
if( !request->IsParam(L"r") )
if( !cur->request->IsParam(L"r") )
{
// directories need 'r' parameter
request->status = WINIX_ERR_PERMISSION_DENIED;
cur->request->status = WINIX_ERR_PERMISSION_DENIED;
}
return true;
@@ -54,7 +54,7 @@ bool Cp::CheckAccessTo()
!system->HasReadExecAccessToPath(dir_tab) ||
!system->HasWriteAccess(*dir_tab.back()) )
{
request->status = WINIX_ERR_PERMISSION_DENIED;
cur->request->status = WINIX_ERR_PERMISSION_DENIED;
return false;
}
@@ -65,14 +65,14 @@ return true;
bool Cp::ParseDir()
{
const std::wstring & new_dir = request->PostVar(L"to");
int res = system->dirs.FollowLink(request->dir_tab, new_dir, dir_tab, file);
const std::wstring & new_dir = cur->request->PostVar(L"to");
int res = system->dirs.FollowLink(cur->request->dir_tab, new_dir, dir_tab, file);
if( res == 3 )
request->status = WINIX_ERR_NO_ROOT_DIR;
cur->request->status = WINIX_ERR_NO_ROOT_DIR;
else
if( res != 0 && res != 1 )
request->status = WINIX_ERR_INCORRECT_DIR;
cur->request->status = WINIX_ERR_INCORRECT_DIR;
return res == 0 || res == 1;
}
@@ -94,7 +94,7 @@ bool Cp::CopyStaticFile(const std::wstring & from, const std::wstring & to)
else
{
log << log1 << "Cp: can't copy a file from: " << from << ", to: " << to << logend;
request->status = WINIX_ERR_PERMISSION_DENIED;
cur->request->status = WINIX_ERR_PERMISSION_DENIED;
return false;
}
}
@@ -113,13 +113,13 @@ bool res1, res2, res3, res4, res5;
if( !res1 || !res2 || !res3 || !res4 || !res5 )
{
request->status = WINIX_ERR_PERMISSION_DENIED;
cur->request->status = WINIX_ERR_PERMISSION_DENIED;
return;
}
if( CopyStaticFile(old_path, new_path) )
{
request->status = db->EditFileById(item, item.id);
cur->request->status = db->EditFileById(item, item.id);
if( item.has_thumb )
CopyStaticFile(old_path_thumb, new_path_thumb);
@@ -142,9 +142,9 @@ void Cp::CopyFile(Item & item, long dst_dir_id)
SetNewAttributes(item);
item.parent_id = dst_dir_id;
request->status = db->AddItem(item);
cur->request->status = db->AddItem(item);
if( request->status == WINIX_ERR_OK )
if( cur->request->status == WINIX_ERR_OK )
{
if( item.file_type != WINIX_ITEM_FILETYPE_NONE )
CopyStaticFile(item);
@@ -187,8 +187,8 @@ void Cp::Prepare()
new_user = -1;
new_group = dir_tab.back()->group_id;
if( request->session->puser )
new_user = request->session->puser->id;
if( cur->session->puser )
new_user = cur->session->puser->id;
loop_checker.clear();
}
@@ -261,7 +261,7 @@ long Cp::CopyDirTree(const Item & dir, long dst_dir_id)
temp.link_redirect = 0;
}
request->status = system->dirs.AddDirectory(temp);
cur->request->status = system->dirs.AddDirectory(temp);
loop_checker.push_back(temp.id);
// remember the new dir_id because temp can be changed
@@ -311,7 +311,7 @@ void Cp::PostCopyFile(Item & item, bool redirect)
CopyFileOrSymlink(item, dir_tab.back()->id);
if( request->status == WINIX_ERR_OK && redirect )
if( cur->request->status == WINIX_ERR_OK && redirect )
system->RedirectTo(item);
}
@@ -323,7 +323,7 @@ void Cp::PostCopyDirContent(const Item & dir, bool redirect)
{
if( !file.empty() )
{
request->status = WINIX_ERR_INCORRECT_DIR;
cur->request->status = WINIX_ERR_INCORRECT_DIR;
return;
}
@@ -332,7 +332,7 @@ void Cp::PostCopyDirContent(const Item & dir, bool redirect)
CopyDirContentTree(dir, dir_tab.back()->id);
if( request->status == WINIX_ERR_OK && redirect )
if( cur->request->status == WINIX_ERR_OK && redirect )
system->RedirectTo(dir_tab.back()->id);
}
@@ -347,7 +347,7 @@ void Cp::PostCopyDir(const Item & dir, bool redirect)
long new_dir_id = CopyDirTree(dir, dir_id);
if( new_dir_id != -1 && request->status == WINIX_ERR_OK && redirect )
if( new_dir_id != -1 && cur->request->status == WINIX_ERR_OK && redirect )
system->RedirectTo(new_dir_id);
}
@@ -367,20 +367,20 @@ void Cp::MakePost()
{
Prepare();
preserve_attr = request->IsPostVar(L"preserveattr");
remove_defaults = request->IsPostVar(L"removedefaults");
follow_symlinks = request->IsPostVar(L"followsymlinks");
preserve_attr = cur->request->IsPostVar(L"preserveattr");
remove_defaults = cur->request->IsPostVar(L"removedefaults");
follow_symlinks = cur->request->IsPostVar(L"followsymlinks");
if( request->is_item )
if( cur->request->is_item )
{
PostCopyFile(request->item);
PostCopyFile(cur->request->item);
}
else
{
if( request->IsPostVar(L"onlycontent") )
PostCopyDirContent(*request->dir_tab.back());
if( cur->request->IsPostVar(L"onlycontent") )
PostCopyDirContent(*cur->request->dir_tab.back());
else
PostCopyDir(*request->dir_tab.back());
PostCopyDir(*cur->request->dir_tab.back());
}
Clear();

View File

@@ -7,8 +7,8 @@
*
*/
#ifndef headerfilecmslucontentcp
#define headerfilecmslucontentcp
#ifndef headerfile_winix_functions_cp
#define headerfile_winix_functions_cp
#include "functionbase.h"

View File

@@ -22,24 +22,24 @@ Default::Default()
bool Default::HasAccess()
{
return !request->is_item && system->HasWriteAccess(*request->dir_tab.back());
return !cur->request->is_item && system->HasWriteAccess(*cur->request->dir_tab.back());
}
void Default::MakePost()
{
Item & dir = *request->dir_tab.back();
Item & dir = *cur->request->dir_tab.back();
dir.link_to = request->PostVar(L"linkto");
dir.link_redirect = request->IsPostVar(L"makeredirect") ? 1 : 0;
dir.link_to = cur->request->PostVar(L"linkto");
dir.link_redirect = cur->request->IsPostVar(L"makeredirect") ? 1 : 0;
TrimWhite(dir.link_to);
// !! dodac sprawdzenie czy link_to jest pusty teraz
request->status = db->EditLinkItem(dir.id, dir.link_to, dir.link_redirect);
cur->request->status = db->EditLinkItem(dir.id, dir.link_to, dir.link_redirect);
if( request->status == WINIX_ERR_OK )
if( cur->request->status == WINIX_ERR_OK )
{
log << log2 << "Default: changed link_to: " << dir.link_to << ", for dir_id: " << dir.id << logend;
system->RedirectToLastDir();

View File

@@ -7,8 +7,8 @@
*
*/
#ifndef headerfilecmslucontentdefault
#define headerfilecmslucontentdefault
#ifndef headerfile_winix_functions_default
#define headerfile_winix_functions_default
#include "functionbase.h"

View File

@@ -24,28 +24,28 @@ Download::Download()
void Download::MakeGet()
{
// !! moze wywalic to no_item i wszedzie w takich miejscach dac poprostu permission_denied?
if( !request->is_item )
if( !cur->request->is_item )
{
log << log1 << "Content: download function requires an item" << logend;
request->status = WINIX_ERR_NO_ITEM;
cur->request->status = WINIX_ERR_NO_ITEM;
return;
}
if( !system->HasReadAccess(request->item) ||
request->item.file_type == WINIX_ITEM_FILETYPE_NONE ||
request->item.file_path.empty() )
if( !system->HasReadAccess(cur->request->item) ||
cur->request->item.file_type == WINIX_ITEM_FILETYPE_NONE ||
cur->request->item.file_path.empty() )
{
request->status = WINIX_ERR_PERMISSION_DENIED;
cur->request->status = WINIX_ERR_PERMISSION_DENIED;
return;
}
request->send_as_attachment = request->IsParam(L"attachment");
cur->request->send_as_attachment = cur->request->IsParam(L"attachment");
if( request->item.has_thumb && request->IsParam(L"thumb") )
system->MakeFilePath(request->item, request->x_sendfile, true);
if( cur->request->item.has_thumb && cur->request->IsParam(L"thumb") )
system->MakeFilePath(cur->request->item, cur->request->x_sendfile, true);
else
system->MakeFilePath(request->item, request->x_sendfile);
system->MakeFilePath(cur->request->item, cur->request->x_sendfile);
}

View File

@@ -7,8 +7,8 @@
*
*/
#ifndef headerfilecmslucontentdownload
#define headerfilecmslucontentdownload
#ifndef headerfile_winix_functions_download
#define headerfile_winix_functions_download
#include "functionbase.h"

View File

@@ -25,7 +25,7 @@ Emacs::Emacs()
bool Emacs::HasAccess(const Item & item)
{
if( request->session->puser && request->session->puser->super_user )
if( cur->session->puser && cur->session->puser->super_user )
// super user can use emacs everywhere
return true;
@@ -35,7 +35,7 @@ bool Emacs::HasAccess(const Item & item)
if( !system->mounts.pmount->IsPar(system->mounts.MountParEmacsOn()) )
return true;
if( system->mounts.pmount->IsArg(system->mounts.MountParEmacsOn(), request->dir_tab.size()) )
if( system->mounts.pmount->IsArg(system->mounts.MountParEmacsOn(), cur->request->dir_tab.size()) )
return true;
return false;
@@ -45,7 +45,7 @@ return false;
bool Emacs::HasAccess()
{
return HasAccess(*request->last_item);
return HasAccess(*cur->request->last_item);
}
@@ -56,16 +56,16 @@ bool Emacs::PostEmacsCheckAbuse(bool adding)
{
if( !system->rebus.CheckRebus() )
{
request->status = WINIX_ERR_INCORRECT_REBUS;
cur->request->status = WINIX_ERR_INCORRECT_REBUS;
return false;
}
// !! is tested in createthread once
functions->CheckGetPostTimes();
if( request->session->spam_score > 0 )
if( cur->session->spam_score > 0 )
{
request->status = WINIX_ERR_SPAM;
cur->request->status = WINIX_ERR_SPAM;
log << log1 << "Emacs: ignoring due to suspected spamming" << logend;
return false;
}
@@ -109,39 +109,39 @@ return WINIX_NOTIFY_CODE_FILE_ADD;
void Emacs::MakePost()
{
bool adding = !request->is_item;
bool adding = !cur->request->is_item;
if( !adding )
old_url = request->item.url;
old_url = cur->request->item.url;
functions->ReadItem(request->item, Item::file);
functions->ReadItem(cur->request->item, Item::file);
if( adding )
functions->SetUser(request->item); // set user before checking the rebus
functions->SetUser(cur->request->item); // set user before checking the rebus
if( !PostEmacsCheckAbuse(adding) )
return;
if( adding )
{
request->is_item = true; // !! moze lepiej nie ustawiac is_item? (bo jak wystapi blad np dodania do bazy danych
cur->request->is_item = true; // !! moze lepiej nie ustawiac is_item? (bo jak wystapi blad np dodania do bazy danych
// to formularz edycji zmieni sie z 'dodaj' na 'edytuj'
request->item.privileges = 0644; // !! tymczasowo, bedzie uzyte umask
request->status = system->AddFile(request->item, NotifyCodeAdd());
cur->request->item.privileges = 0644; // !! tymczasowo, bedzie uzyte umask
cur->request->status = system->AddFile(cur->request->item, NotifyCodeAdd());
}
else
{
request->status = system->EditFile(request->item, request->item.url != old_url, NotifyCodeEdit());
cur->request->status = system->EditFile(cur->request->item, cur->request->item.url != old_url, NotifyCodeEdit());
}
if( request->status == WINIX_ERR_OK )
if( cur->request->status == WINIX_ERR_OK )
{
PostFunEmacsModifyMountPoint(adding);
functions->CheckSpecialFile(request->item);
functions->CheckSpecialFile(cur->request->item);
}
else
{
log << log1 << "Emacs: error: " << request->status << logend;
log << log1 << "Emacs: error: " << cur->request->status << logend;
}
}

View File

@@ -7,8 +7,8 @@
*
*/
#ifndef headerfilecmslucontentemacs
#define headerfilecmslucontentemacs
#ifndef headerfile_winix_functions_emacs
#define headerfile_winix_functions_emacs
#include "functionbase.h"

View File

@@ -33,12 +33,13 @@ void FunctionBase::SetConfig(Config * pconfig)
}
void FunctionBase::SetRequest(Request * prequest)
void FunctionBase::SetCur(Cur * pcur)
{
request = prequest;
cur = pcur;
}
void FunctionBase::SetDb(Db * pdb)
{
db = pdb;

View File

@@ -7,8 +7,8 @@
*
*/
#ifndef headerfilecmslucontentfunctionbase
#define headerfilecmslucontentfunctionbase
#ifndef headerfile_winix_functions_functionbase
#define headerfile_winix_functions_functionbase
#include <string>
#include <vector>
@@ -51,7 +51,7 @@ public:
virtual void MakeGet();
void SetConfig(Config * pconfig);
void SetRequest(Request * prequest);
void SetCur(Cur * pcur);
void SetDb(Db * pdb);
void SetSystem(System * psystem);
void SetFunctions(Functions * pfunctions);
@@ -60,13 +60,13 @@ public:
protected:
Config * config;
Request * request;
Db * db;
System * system;
Config * config;
Cur * cur;
Db * db;
System * system;
Functions * functions;
Templates * templates;
Synchro * synchro;
Synchro * synchro;
};

View File

@@ -17,7 +17,7 @@
void FunctionParser::SkipEmptyString(const char * msg)
{
for( ; get_index != get_tab_len && request->get_tab[get_index].empty() ; ++get_index )
for( ; get_index != get_tab_len && cur->request->get_tab[get_index].empty() ; ++get_index )
log << log3 << msg << logend;
}
@@ -31,14 +31,14 @@ void FunctionParser::ParseDirectories()
if( !pdir )
{
// there is no the root dir
request->status = WINIX_ERR_NO_ROOT_DIR;
cur->request->status = WINIX_ERR_NO_ROOT_DIR;
return;
}
while( true )
{
request->dir_tab.push_back( pdir );
cur->request->dir_tab.push_back( pdir );
log << log3 << "FP: Directory: ";
if( pdir->parent_id == -1 )
@@ -51,7 +51,7 @@ void FunctionParser::ParseDirectories()
if( get_index == get_tab_len )
break;
pdir = system->dirs.GetDir(request->get_tab[get_index], pdir->id);
pdir = system->dirs.GetDir(cur->request->get_tab[get_index], pdir->id);
if( !pdir )
break;
@@ -59,7 +59,7 @@ void FunctionParser::ParseDirectories()
++get_index;
}
request->last_item = request->dir_tab.back();
cur->request->last_item = cur->request->dir_tab.back();
}
@@ -71,26 +71,26 @@ void FunctionParser::ParseItem()
if( get_index == get_tab_len )
return;
// request->dir_tab has at least one element
long parent_id = request->dir_tab.back()->id;
const std::wstring & url = request->get_tab[get_index];
// cur->request->dir_tab has at least one element
long parent_id = cur->request->dir_tab.back()->id;
const std::wstring & url = cur->request->get_tab[get_index];
request->status = db->GetItem(parent_id, url, request->item);
cur->request->status = db->GetItem(parent_id, url, cur->request->item);
if( request->status == WINIX_ERR_OK )
if( cur->request->status == WINIX_ERR_OK )
{
request->last_item = &request->item;
cur->request->last_item = &cur->request->item;
if( request->role == Request::authorizer && request->item.file_type == WINIX_ITEM_FILETYPE_NONE )
if( cur->request->role == Request::authorizer && cur->request->item.file_type == WINIX_ITEM_FILETYPE_NONE )
{
log << log1 << "FP: item.url: " << url << " exists but has not a static content (authorizer role)" << logend;
request->status = WINIX_ERR_NO_ITEM;
cur->request->status = WINIX_ERR_NO_ITEM;
return;
}
++get_index;
request->is_item = true;
log << log3 << "FP: Item: id: " << request->item.id << ", url: " << request->item.url << logend;
cur->request->is_item = true;
log << log3 << "FP: Item: id: " << cur->request->item.id << ", url: " << cur->request->item.url << logend;
}
else
{
@@ -107,13 +107,13 @@ void FunctionParser::ParseFunction()
if( get_index == get_tab_len )
return;
request->function = functions->Find(request->get_tab[get_index]);
cur->request->function = functions->Find(cur->request->get_tab[get_index]);
if( request->function )
if( cur->request->function )
{
++get_index;
log << log3 << "FP: Function: " << request->function->fun.url << logend;
log << log3 << "FP: Function: " << cur->request->function->fun.url << logend;
}
}
@@ -144,7 +144,7 @@ size_t i;
param.value = par.substr(i+1);
}
request->param_tab.push_back(param);
cur->request->param_tab.push_back(param);
log << log3 << "FP: Param: name=" << param.name;
@@ -165,45 +165,45 @@ void FunctionParser::ParseParams()
if( get_index == get_tab_len )
break;
ParseParams(request->get_tab[get_index]);
ParseParams(cur->request->get_tab[get_index]);
}
}
void FunctionParser::Parse(Request * prequest, Db * pdb, Functions * pfunctions, System * psystem)
void FunctionParser::Parse(Cur * pcur, Db * pdb, Functions * pfunctions, System * psystem)
{
request = prequest;
db = pdb;
functions = pfunctions;
cur = pcur;
system = psystem;
functions = pfunctions;
request->status = WINIX_ERR_OK;
cur->request->status = WINIX_ERR_OK;
get_index = 0;
get_tab_len = request->get_tab.size();
request->function = 0;
request->is_item = false;
get_tab_len = cur->request->get_tab.size();
cur->request->function = 0;
cur->request->is_item = false;
ParseDirectories();
if( request->status != WINIX_ERR_OK )
if( cur->request->status != WINIX_ERR_OK )
return;
ParseFunction();
if( !request->function )
if( !cur->request->function )
{
ParseItem();
if( request->status != WINIX_ERR_OK )
if( cur->request->status != WINIX_ERR_OK )
return;
ParseFunction();
if( !request->function && get_index != get_tab_len )
if( !cur->request->function && get_index != get_tab_len )
{
request->status = WINIX_ERR_NO_FUNCTION;
log << log3 << "FP: Parse: unknown function: \"" << request->get_tab[get_index] << "\"" << logend;
cur->request->status = WINIX_ERR_NO_FUNCTION;
log << log3 << "FP: Parse: unknown function: \"" << cur->request->get_tab[get_index] << "\"" << logend;
return;
}
}

View File

@@ -7,11 +7,11 @@
*
*/
#ifndef headerfilecmslucorefunctionparser
#define headerfilecmslucorefunctionparser
#ifndef headerfile_winix_functions_functionparser
#define headerfile_winix_functions_functionparser
#include "core/request.h"
#include "db/db.h"
#include "core/cur.h"
#include "core/system.h"
@@ -21,10 +21,10 @@ class Functions;
class FunctionParser
{
Request * request;
Db * db;
Functions * functions;
Cur * cur;
System * system;
Functions * functions;
GetTab::size_type get_index;
GetTab::size_type get_tab_len;
@@ -40,7 +40,7 @@ class FunctionParser
public:
void Parse(Request * prequest, Db * pdb, Functions * pfunctions, System * psystem);
void Parse(Cur * pcur, Db * pdb, Functions * pfunctions, System * psystem);
};

View File

@@ -21,12 +21,13 @@ void Functions::SetConfig(Config * pconfig)
}
void Functions::SetRequest(Request * prequest)
void Functions::SetCur(Cur * pcur)
{
request = prequest;
cur = pcur;
}
void Functions::SetDb(Db * pdb)
{
db = pdb;
@@ -135,7 +136,7 @@ return WINIX_NOTHING_TO_DO;
void Functions::SetObjects(FunctionBase * fun)
{
fun->SetConfig(config);
fun->SetRequest(request);
fun->SetCur(cur);
fun->SetDb(db);
fun->SetSystem(system);
fun->SetFunctions(this);
@@ -224,22 +225,22 @@ void Functions::Init()
void Functions::Parse()
{
function_parser.Parse(request, db, this, system);
function_parser.Parse(cur, db, this, system);
}
void Functions::SetDefaultFunctionForFile()
{
if( request->item.file_type != WINIX_ITEM_FILETYPE_NONE )
request->function = &fun_download;
if( cur->request->item.file_type != WINIX_ITEM_FILETYPE_NONE )
cur->request->function = &fun_download;
else
if( system->HasReadExecAccess(request->item) )
request->function = &fun_run;
if( system->HasReadExecAccess(cur->request->item) )
cur->request->function = &fun_run;
else
request->function = &fun_cat;
cur->request->function = &fun_cat;
log << log3 << "Functions: default function: " << request->function->fun.url << logend;
log << log3 << "Functions: default function: " << cur->request->function->fun.url << logend;
}
@@ -249,30 +250,30 @@ void Functions::SetDefaultFunctionForDir()
{
// !! nie potrzebne
// if( system->mounts.pmount->type == system->mounts.MountTypeThread() )
// request->function = &fun_thread;
// cur->request->function = &fun_thread;
// else
request->function = &fun_ls;
cur->request->function = &fun_ls;
log << log3 << "Functions: default function: " << request->function->fun.url << logend;
log << log3 << "Functions: default function: " << cur->request->function->fun.url << logend;
}
void Functions::SetDefaultFunction()
{
request->function = 0;
cur->request->function = 0;
plugin.Call(WINIX_SELECT_DEFAULT_FUNCTION);
if( request->function )
if( cur->request->function )
{
log << log3 << "Functions: default function: " << request->function->fun.url
log << log3 << "Functions: default function: " << cur->request->function->fun.url
<< " (set by a plugin)" << logend;
return;
}
if( request->is_item )
if( cur->request->is_item )
SetDefaultFunctionForFile();
else
SetDefaultFunctionForDir();
@@ -288,13 +289,13 @@ void Functions::CheckFunctionFollowDir(bool was_default_function)
if( was_default_function )
{
if( request->dir_tab.back()->link_redirect == 1 )
if( cur->request->dir_tab.back()->link_redirect == 1 )
{
system->RedirectTo(request->dir_tab.back()->link_to);
system->RedirectTo(cur->request->dir_tab.back()->link_to);
}
else
{
if( system->FollowAllLinks(request->dir_tab.back()->link_to, true, true) )
if( system->FollowAllLinks(cur->request->dir_tab.back()->link_to, true, true) )
SetDefaultFunction();
}
}
@@ -304,25 +305,25 @@ void Functions::CheckFunctionFollowDir(bool was_default_function)
void Functions::CheckFunctionFollowSymlink(bool was_default_function)
{
if( request->item.link_redirect == 1 )
if( cur->request->item.link_redirect == 1 )
{
if( was_default_function )
system->RedirectTo(request->item.link_to);
system->RedirectTo(cur->request->item.link_to);
else
system->RedirectWithFunctionAndParamsTo(request->item.link_to);
system->RedirectWithFunctionAndParamsTo(cur->request->item.link_to);
}
else
if( system->FollowAllLinks(request->item.link_to, true, true) )
if( system->FollowAllLinks(cur->request->item.link_to, true, true) )
{
if( was_default_function )
SetDefaultFunction();
if( request->status == WINIX_ERR_OK && !request->redirect_to.empty() && !was_default_function && request->function )
if( cur->request->status == WINIX_ERR_OK && !cur->request->redirect_to.empty() && !was_default_function && cur->request->function )
{
// !! nie jestem pewny dodania tej nowej funkcji do redirecta... (sprawdzic to)
request->redirect_to += '/';
request->redirect_to += request->function->fun.url;
system->AddParams(request->param_tab, request->redirect_to, false);
cur->request->redirect_to += '/';
cur->request->redirect_to += cur->request->function->fun.url;
system->AddParams(cur->request->param_tab, cur->request->redirect_to, false);
}
}
}
@@ -334,19 +335,19 @@ void Functions::CheckFunctionAndSymlink()
{
bool was_default_function = false;
if( !request->function || request->function == &fun_special_default )
if( !cur->request->function || cur->request->function == &fun_special_default )
{
was_default_function = true;
SetDefaultFunction();
}
if( request->status != WINIX_ERR_OK || !request->redirect_to.empty() )
if( cur->request->status != WINIX_ERR_OK || !cur->request->redirect_to.empty() )
return;
if( !request->is_item && !request->dir_tab.back()->link_to.empty() )
if( !cur->request->is_item && !cur->request->dir_tab.back()->link_to.empty() )
CheckFunctionFollowDir(was_default_function);
else
if( request->is_item && request->item.type == Item::symlink && request->function && request->function->follow_symlinks )
if( cur->request->is_item && cur->request->item.type == Item::symlink && cur->request->function && cur->request->function->follow_symlinks )
CheckFunctionFollowSymlink(was_default_function);
}
@@ -354,38 +355,38 @@ bool was_default_function = false;
void Functions::MakeFunction()
{
if( !request->function )
if( !cur->request->function )
{
request->status = WINIX_ERR_NO_FUNCTION;
cur->request->status = WINIX_ERR_NO_FUNCTION;
log << log1 << "Functions: no function (neither cat nor ls)" << logend;
return;
}
if( !system->DirsHaveReadExecPerm() ||
!system->HasReadExecAccess(request->function->fun) ||
!request->function->HasAccess() )
!system->HasReadExecAccess(cur->request->function->fun) ||
!cur->request->function->HasAccess() )
{
request->status = WINIX_ERR_PERMISSION_DENIED;
cur->request->status = WINIX_ERR_PERMISSION_DENIED;
return;
}
if( request->method == Request::get )
if( cur->request->method == Request::get )
{
if( request->redirect_to.empty() )
request->function->MakeGet();
if( cur->request->redirect_to.empty() )
cur->request->function->MakeGet();
}
else
if( request->method == Request::post )
if( cur->request->method == Request::post )
{
// we don't use post with redirecting (the post variables would be lost)
if( request->redirect_to.empty() )
request->function->MakePost();
if( cur->request->redirect_to.empty() )
cur->request->function->MakePost();
else
request->status = WINIX_ERR_PERMISSION_DENIED;
cur->request->status = WINIX_ERR_PERMISSION_DENIED;
}
else
if( request->method == Request::head )
if( cur->request->method == Request::head )
{
// do nothing
}
@@ -401,19 +402,19 @@ void Functions::CheckGetPostTimes(time_t difference)
{
time_t now = std::time(0);
if( request->session->puser )
if( cur->session->puser )
return;
if( request->method != Request::post )
if( cur->request->method != Request::post )
return;
if( now - request->session->last_time_get >= (time_t)difference )
if( now - cur->session->last_time_get >= (time_t)difference )
return;
if( request->AllPostVarEmpty() )
if( cur->request->AllPostVarEmpty() )
return;
request->session->spam_score += 1;
cur->session->spam_score += 1;
log << log1 << "Functions: spam +1: POST after GET sent too fast" << logend;
}
@@ -424,15 +425,15 @@ bool Functions::CheckAbuse()
{
if( !system->rebus.CheckRebus() )
{
request->status = WINIX_ERR_INCORRECT_REBUS;
cur->request->status = WINIX_ERR_INCORRECT_REBUS;
return true;
}
CheckGetPostTimes();
if( request->session->spam_score > 0 )
if( cur->session->spam_score > 0 )
{
request->status = WINIX_ERR_SPAM;
cur->request->status = WINIX_ERR_SPAM;
log << log1 << "Functions: ignoring due to suspected spamming" << logend;
return true;
}
@@ -446,17 +447,17 @@ return false;
// returning true if the 'url' has to be changed
void Functions::ReadItemUrlSubject(Item & item, Item::Type item_type)
{
std::wstring * new_subject = request->PostVarp(L"subject");
std::wstring * new_url = request->PostVarp(L"url");
std::wstring * new_subject = cur->request->PostVarp(L"subject");
std::wstring * new_url = cur->request->PostVarp(L"url");
if( new_subject )
item.subject = *new_subject;
if( item.subject.empty() )
{
item.subject = request->dir_tab.back()->subject;
item.subject = cur->request->dir_tab.back()->subject;
item.subject += L"_msg_";
Toa(db->Size(request->dir_tab.back()->id, Item::file), item.subject, 10, false);
Toa(db->Size(cur->request->dir_tab.back()->id, Item::file), item.subject, 10, false);
}
if( new_url )
@@ -475,13 +476,13 @@ void Functions::ReadItemFilterHtml(Item & item)
html_filter.CheckOrphans(HTMLFilter::lang_none);
html_filter.SafeMode(true);
html_filter.Filter(request->PostVar(L"itemcontent"), item.content);
html_filter.Filter(cur->request->PostVar(L"itemcontent"), item.content);
}
void Functions::ReadItemContent(Item & item, const std::wstring & content_type)
{
bool is_root = request->session->puser && request->session->puser->super_user;
bool is_root = cur->session->puser && cur->session->puser->super_user;
bool filter_html = (content_type == L"2") && config->editors_html_safe_mode;
if( filter_html && is_root && config->editors_html_safe_mode_skip_root )
@@ -490,14 +491,14 @@ void Functions::ReadItemContent(Item & item, const std::wstring & content_type)
if( filter_html )
ReadItemFilterHtml(item);
else
request->PostVar(L"itemcontent", item.content);
cur->request->PostVar(L"itemcontent", item.content);
}
void Functions::ReadItemContentWithType(Item & item)
{
item.content_type = Item::ct_formatted_text; // default is formatted text
request->PostVar(L"contenttype", temp);
cur->request->PostVar(L"contenttype", temp);
ReadItemContent(item, temp);
@@ -513,10 +514,10 @@ void Functions::ReadItemContentWithType(Item & item)
// those below need special privileges
if( !request->session->puser )
if( !cur->session->puser )
return;
long user_id = request->session->puser->id;
long user_id = cur->session->puser->id;
if( temp == L"2" )
@@ -551,7 +552,7 @@ void Functions::ReadItem(Item & item, Item::Type item_type)
return;
item.type = item_type;
item.parent_id = request->dir_tab.back()->id; // !! moze to dac jako parametr?
item.parent_id = cur->request->dir_tab.back()->id; // !! moze to dac jako parametr?
ReadItemUrlSubject(item, item_type);
@@ -562,16 +563,16 @@ void Functions::ReadItem(Item & item, Item::Type item_type)
void Functions::SetUser(Item & item)
{
if( request->session && request->session->puser )
if( cur->session && cur->session->puser )
{
item.user_id = request->session->puser->id;
item.user_id = cur->session->puser->id;
item.guest_name.clear();
}
else
{
item.user_id = -1;
request->PostVar(L"guestname", item.guest_name);
cur->request->PostVar(L"guestname", item.guest_name);
}
item.group_id = request->dir_tab.back()->group_id;
item.group_id = cur->request->dir_tab.back()->group_id;
}

View File

@@ -7,8 +7,8 @@
*
*/
#ifndef headerfilecmslucontentfunctions
#define headerfilecmslucontentfunctions
#ifndef headerfile_winix_functions_functions
#define headerfile_winix_functions_functions
#include <string>
#include "functionbase.h"
@@ -102,7 +102,7 @@ public:
void SetConfig(Config * pconfig);
void SetRequest(Request * prequest);
void SetCur(Cur * pcur);
void SetDb(Db * pdb);
void SetSystem(System * psystem);
void SetTemplates(Templates * ptemplates);
@@ -136,7 +136,7 @@ public:
private:
Config * config;
Request * request;
Cur * cur;
Db * db;
System * system;
Synchro * synchro;

View File

@@ -7,8 +7,8 @@
*
*/
#ifndef headerfilecmslucontentlast
#define headerfilecmslucontentlast
#ifndef headerfile_winix_functions_last
#define headerfile_winix_functions_last
#include "functionbase.h"

View File

@@ -25,7 +25,7 @@ Ln::Ln()
bool Ln::HasAccess()
{
return system->HasWriteAccess(*request->dir_tab.back());
return system->HasWriteAccess(*cur->request->dir_tab.back());
}
@@ -33,53 +33,53 @@ void Ln::CreateSymbolicLink(const std::wstring & link_to)
{
item.Clear(); // setting the date to now
item.type = Item::symlink;
item.parent_id = request->dir_tab.back()->id;
item.url = request->PostVar(L"url");
item.parent_id = cur->request->dir_tab.back()->id;
item.url = cur->request->PostVar(L"url");
item.link_to = link_to;
item.link_redirect = request->IsPostVar(L"makeredirect") ? 1 : 0;
item.link_redirect = cur->request->IsPostVar(L"makeredirect") ? 1 : 0;
item.privileges = 0644; // !! tymczasowo, bedzie uzyte umask
functions->SetUser(item);
functions->PrepareUrl(item);
request->status = db->AddItem(item);
cur->request->status = db->AddItem(item);
if( request->status == WINIX_ERR_OK )
if( cur->request->status == WINIX_ERR_OK )
log << log3 << "Ln: created a symbolic link to: " << link_to << logend;
}
void Ln::CreateHardLink(const std::wstring & link_to)
{
int res = system->FollowAllLinks(request->dir_tab, link_to, dir_tab, item, false, false);
int res = system->FollowAllLinks(cur->request->dir_tab, link_to, dir_tab, item, false, false);
if( res == 0 )
{
log << log2 << "Ln: " << link_to << " is a directory (can't create a hard link)" << logend;
request->status = WINIX_ERR_PERMISSION_DENIED;
cur->request->status = WINIX_ERR_PERMISSION_DENIED;
}
else
if( res == 1 )
{
item.SetDateToNow();
item.type = Item::file;
item.parent_id = request->dir_tab.back()->id;
item.url = request->PostVar(L"url");
item.parent_id = cur->request->dir_tab.back()->id;
item.url = cur->request->PostVar(L"url");
item.privileges = 0644; // !! tymczasowo, bedzie uzyte umask
functions->SetUser(item);
functions->PrepareUrl(item);
request->status = db->AddHardLink(item);
cur->request->status = db->AddHardLink(item);
if( request->status == WINIX_ERR_OK )
if( cur->request->status == WINIX_ERR_OK )
log << log3 << "Ln: created a hard link to: " << link_to << logend;
}
else
if( res == 5 || res == 6 )
{
request->status = WINIX_ERR_PERMISSION_DENIED;
cur->request->status = WINIX_ERR_PERMISSION_DENIED;
}
else
{
request->status = WINIX_ERR_NO_ITEM;
cur->request->status = WINIX_ERR_NO_ITEM;
}
}
@@ -88,20 +88,20 @@ void Ln::CreateHardLink(const std::wstring & link_to)
// we do not use notifications for links
void Ln::MakePost()
{
link_to = request->PostVar(L"linkto");
link_to = cur->request->PostVar(L"linkto");
TrimWhite(link_to);
if( link_to.empty() )
return;
int type = Toi(request->PostVar(L"linktype"));
int type = Toi(cur->request->PostVar(L"linktype"));
if( type == 0 )
CreateHardLink(link_to);
else
CreateSymbolicLink(link_to);
if( request->status == WINIX_ERR_OK )
if( cur->request->status == WINIX_ERR_OK )
system->RedirectTo(item);
}

View File

@@ -7,8 +7,8 @@
*
*/
#ifndef headerfilecmslucontentln
#define headerfilecmslucontentln
#ifndef headerfile_winix_functions_ln
#define headerfile_winix_functions_ln
#include "functionbase.h"

View File

@@ -22,15 +22,15 @@ Login::Login()
void Login::MakePost()
{
if( request->session->id == 0 )
if( cur->session->id == 0 )
{
log << log1 << "Login: can't login in a temporary session (skipped)" << logend;
return;
}
const std::wstring & login = request->PostVar(L"login");
const std::wstring & pass = request->PostVar(L"password");
const std::wstring & remem = request->PostVar(L"rememberme");
const std::wstring & login = cur->request->PostVar(L"login");
const std::wstring & pass = cur->request->PostVar(L"password");
const std::wstring & remem = cur->request->PostVar(L"rememberme");
long user_id;
if( db->CheckUser(login, pass, user_id) )

View File

@@ -7,8 +7,8 @@
*
*/
#ifndef headerfilecmslucontentlogin
#define headerfilecmslucontentlogin
#ifndef headerfile_winix_functions_login
#define headerfile_winix_functions_login
#include "functionbase.h"

View File

@@ -7,8 +7,8 @@
*
*/
#ifndef headerfilecmslucontentlogout
#define headerfilecmslucontentlogout
#ifndef headerfile_winix_functions_logout
#define headerfile_winix_functions_logout
#include "functionbase.h"

View File

@@ -23,23 +23,23 @@ Ls::Ls()
void Ls::MakeGet()
{
if( !request->is_item )
if( !cur->request->is_item )
{
DbItemQuery iq;
iq.sel_content = false;
iq.WhereParentId(request->dir_tab.back()->id);
iq.WhereParentId(cur->request->dir_tab.back()->id);
iq.WhereType(Item::dir, false);
if( request->IsParam(L"ckeditor_browse") )
if( cur->request->IsParam(L"ckeditor_browse") )
{
iq.WhereFileType(WINIX_ITEM_FILETYPE_IMAGE);
db->GetItems(request->item_tab, iq);
db->GetItems(cur->request->item_tab, iq);
}
else
{
db->GetItems(request->item_tab, iq);
db->GetItems(cur->request->item_tab, iq);
}
}
}

View File

@@ -7,8 +7,8 @@
*
*/
#ifndef headerfilecmslucontentls
#define headerfilecmslucontentls
#ifndef headerfile_winix_functions_ls
#define headerfile_winix_functions_ls
#include "functionbase.h"

View File

@@ -30,7 +30,7 @@ bool Mkdir::HasAccess(const Item & item)
if( item.type != Item::dir )
return false;
if( request->session->puser && request->session->puser->super_user )
if( cur->session->puser && cur->session->puser->super_user )
// super user can use mkdir everywhere
return true;
@@ -40,7 +40,7 @@ bool Mkdir::HasAccess(const Item & item)
if( !system->mounts.pmount->IsPar(system->mounts.MountParMkdirOn()) )
return true;
if( system->mounts.pmount->IsArg(system->mounts.MountParMkdirOn(), request->dir_tab.size()) )
if( system->mounts.pmount->IsArg(system->mounts.MountParMkdirOn(), cur->request->dir_tab.size()) )
return true;
return false;
@@ -49,7 +49,7 @@ return false;
bool Mkdir::HasAccess()
{
if( request->is_item || !HasAccess(*request->dir_tab.back()) )
if( cur->request->is_item || !HasAccess(*cur->request->dir_tab.back()) )
return false;
return true;
@@ -60,19 +60,19 @@ return true;
void Mkdir::PostFunMkdir(bool add_to_dir_tab, int privileges)
{
functions->ReadItem(request->item, Item::dir);
functions->SetUser(request->item);
request->item.privileges = privileges;
functions->ReadItem(cur->request->item, Item::dir);
functions->SetUser(cur->request->item);
cur->request->item.privileges = privileges;
request->status = system->dirs.AddDirectory(request->item, add_to_dir_tab);
cur->request->status = system->dirs.AddDirectory(cur->request->item, add_to_dir_tab);
if( request->status == WINIX_ERR_OK )
if( cur->request->status == WINIX_ERR_OK )
{
system->RedirectTo(request->item);
system->RedirectTo(cur->request->item);
}
else
{
log << log1 << "Content: PostFunMkdir: Error: " << request->status << logend;
log << log1 << "Content: PostFunMkdir: Error: " << cur->request->status << logend;
}
}

View File

@@ -7,8 +7,8 @@
*
*/
#ifndef headerfilecmslucontentmkdir
#define headerfilecmslucontentmkdir
#ifndef headerfile_winix_functions_mkdir
#define headerfile_winix_functions_mkdir
#include "functionbase.h"

View File

@@ -35,15 +35,15 @@ Item * last;
Item * last_but_one = 0;
size_t dir_tab_size;
last = request->dir_tab.back();
dir_tab_size = request->dir_tab.size();
last = cur->request->dir_tab.back();
dir_tab_size = cur->request->dir_tab.size();
if( dir_tab_size <= 1 )
return false; // you cannot move the root directory
last_but_one = request->dir_tab[dir_tab_size - 2];
last_but_one = cur->request->dir_tab[dir_tab_size - 2];
if( request->method != Request::post )
if( cur->request->method != Request::post )
{
// used in GET or HEAD
// we don't now whether we move the last directory or the last but one
@@ -56,7 +56,7 @@ size_t dir_tab_size;
{
// used in POST when the moving is performed
if( request->IsPostVar(L"onlycontent") )
if( cur->request->IsPostVar(L"onlycontent") )
return system->HasWriteAccess(*last);
else
return system->HasWriteAccess(*last_but_one);
@@ -70,13 +70,13 @@ return true;
bool Mv::CheckAccessFrom()
{
if( request->is_item )
if( cur->request->is_item )
{
// moving a file
if( !system->HasWriteAccess(*request->dir_tab.back()) )
if( !system->HasWriteAccess(*cur->request->dir_tab.back()) )
{
request->status = WINIX_ERR_PERMISSION_DENIED;
cur->request->status = WINIX_ERR_PERMISSION_DENIED;
return false;
}
}
@@ -84,7 +84,7 @@ bool Mv::CheckAccessFrom()
{
if( !CheckAccessFromToDir() )
{
request->status = WINIX_ERR_PERMISSION_DENIED;
cur->request->status = WINIX_ERR_PERMISSION_DENIED;
return false;
}
}
@@ -99,7 +99,7 @@ bool Mv::CheckAccessTo()
!system->HasReadExecAccessToPath(dir_tab) ||
!system->HasWriteAccess(*dir_tab.back()) )
{
request->status = WINIX_ERR_PERMISSION_DENIED;
cur->request->status = WINIX_ERR_PERMISSION_DENIED;
return false;
}
@@ -112,14 +112,14 @@ return true;
bool Mv::ParseDir()
{
const std::wstring & new_dir = request->PostVar(L"to");
int res = system->dirs.FollowLink(request->dir_tab, new_dir, dir_tab, file);
const std::wstring & new_dir = cur->request->PostVar(L"to");
int res = system->dirs.FollowLink(cur->request->dir_tab, new_dir, dir_tab, file);
if( res == 3 )
request->status = WINIX_ERR_NO_ROOT_DIR;
cur->request->status = WINIX_ERR_NO_ROOT_DIR;
else
if( res != 0 && res != 1 )
request->status = WINIX_ERR_INCORRECT_DIR;
cur->request->status = WINIX_ERR_INCORRECT_DIR;
return res == 0 || res == 1;
}
@@ -142,7 +142,7 @@ bool Mv::MoveStaticFile(const std::wstring & from, const std::wstring & to)
else
{
log << log1 << "Mv: can't move a file from: " << from << ", to: " << to << logend;
request->status = WINIX_ERR_PERMISSION_DENIED;
cur->request->status = WINIX_ERR_PERMISSION_DENIED;
return false;
}
}
@@ -161,13 +161,13 @@ bool res1, res2, res3, res4, res5;
if( !res1 || !res2 || !res3 || !res4 || !res5 )
{
request->status = WINIX_ERR_PERMISSION_DENIED;
cur->request->status = WINIX_ERR_PERMISSION_DENIED;
return;
}
if( MoveStaticFile(old_path, new_path) )
{
request->status = db->EditFileById(item, item.id);
cur->request->status = db->EditFileById(item, item.id);
if( item.has_thumb )
MoveStaticFile(old_path_thumb, new_path_thumb);
@@ -189,9 +189,9 @@ void Mv::MoveFileOrSymlink(Item & item)
}
item.parent_id = dir_tab.back()->id;
request->status = db->EditParentUrlById(item, item.id);
cur->request->status = db->EditParentUrlById(item, item.id);
if( request->status == WINIX_ERR_OK )
if( cur->request->status == WINIX_ERR_OK )
{
if( item.type == Item::file )
log << log3 << "Mv: file: ";
@@ -280,13 +280,13 @@ void Mv::MoveDir(Item & dir)
if( dst_dir_id == dir.id || system->dirs.HasParent(dst_dir_id, dir.id) )
{
log << log1 << "Mv: cannot move directory to inside it" << logend;
request->status = WINIX_ERR_INCORRECT_DIR;
cur->request->status = WINIX_ERR_INCORRECT_DIR;
return;
}
if( !system->dirs.ChangeParent(dir.id, dst_dir_id) )
{
request->status = WINIX_ERR_INCORRECT_DIR;
cur->request->status = WINIX_ERR_INCORRECT_DIR;
return;
}
@@ -299,9 +299,9 @@ void Mv::MoveDir(Item & dir)
file.clear();
}
request->status = db->EditParentUrlById(dir, dir.id);
cur->request->status = db->EditParentUrlById(dir, dir.id);
if( request->status == WINIX_ERR_OK )
if( cur->request->status == WINIX_ERR_OK )
{
log << log3 << "Mv: directory: " << old_url << " was moved to: ";
system->dirs.LogDir(dir_tab);
@@ -334,13 +334,13 @@ return false;
void Mv::PostMoveFile()
{
if( IsTheSameFile(request->item) )
if( IsTheSameFile(cur->request->item) )
return;
MoveFileOrSymlink(request->item);
MoveFileOrSymlink(cur->request->item);
if( request->status == WINIX_ERR_OK )
system->RedirectTo(request->item);
if( cur->request->status == WINIX_ERR_OK )
system->RedirectTo(cur->request->item);
}
@@ -349,14 +349,14 @@ void Mv::PostMoveDirContent()
{
if( !file.empty() )
{
request->status = WINIX_ERR_INCORRECT_DIR;
cur->request->status = WINIX_ERR_INCORRECT_DIR;
return;
}
if( request->dir_tab.back()->id == dir_tab.back()->id )
if( cur->request->dir_tab.back()->id == dir_tab.back()->id )
return; // nothing to do
MoveDirContent(*request->dir_tab.back());
MoveDirContent(*cur->request->dir_tab.back());
system->RedirectToLastDir();
}
@@ -364,7 +364,7 @@ void Mv::PostMoveDirContent()
void Mv::PostMoveDir()
{
Item & last_dir = *request->dir_tab.back();
Item & last_dir = *cur->request->dir_tab.back();
Item & new_dir = *dir_tab.back();
if( file.empty() && new_dir.id == last_dir.id )
@@ -372,7 +372,7 @@ void Mv::PostMoveDir()
MoveDir(last_dir);
if( request->status == WINIX_ERR_OK )
if( cur->request->status == WINIX_ERR_OK )
system->RedirectToLastDir();
}
@@ -387,13 +387,13 @@ void Mv::MakePost()
{
Prepare();
if( request->is_item )
if( cur->request->is_item )
{
PostMoveFile();
}
else
{
if( request->IsPostVar(L"onlycontent") )
if( cur->request->IsPostVar(L"onlycontent") )
PostMoveDirContent();
else
PostMoveDir();

View File

@@ -7,8 +7,8 @@
*
*/
#ifndef headerfilecmslucontentmv
#define headerfilecmslucontentmv
#ifndef headerfile_winix_functions_mv
#define headerfile_winix_functions_mv
#include "functionbase.h"

View File

@@ -21,14 +21,14 @@ Node::Node()
void Node::MakeGet()
{
if( request->param_tab.empty() )
if( cur->request->param_tab.empty() )
{
//request->status = Error
//cur->request->status = Error
//!!zglosic 404
return;
}
long id = Tol(request->param_tab[0].name);
long id = Tol(cur->request->param_tab[0].name);
system->RedirectTo(id);
}

View File

@@ -7,8 +7,8 @@
*
*/
#ifndef headerfilecmslucontentnode
#define headerfilecmslucontentnode
#ifndef headerfile_winix_functions_node
#define headerfile_winix_functions_node
#include "functionbase.h"

View File

@@ -23,7 +23,7 @@ Priv::Priv()
void Priv::MakePost()
{
priv_changer.SetRequest(request);
priv_changer.SetCur(cur);
priv_changer.SetSystem(system);
priv_changer.SetDb(db);
@@ -33,7 +33,7 @@ void Priv::MakePost()
void Priv::MakeGet()
{
priv_changer.SetRequest(request);
priv_changer.SetCur(cur);
priv_changer.SetSystem(system);
priv_changer.SetDb(db);

View File

@@ -7,8 +7,8 @@
*
*/
#ifndef headerfilecmslucontentpriv
#define headerfilecmslucontentpriv
#ifndef headerfile_winix_functions_priv
#define headerfile_winix_functions_priv
#include "functionbase.h"
#include "privchanger.h"

View File

@@ -10,9 +10,9 @@
#include "privchanger.h"
void PrivChanger::SetRequest(Request * prequest)
void PrivChanger::SetCur(Cur * pcur)
{
request = prequest;
cur = pcur;
}
@@ -34,9 +34,9 @@ bool PrivChanger::CheckAccess()
// but we cannot use parameter 'r' on files
// and only logged users can change permissions
if( !request->session->puser || (request->is_item && request->IsParam(L"r")) )
if( !cur->session->puser || (cur->request->is_item && cur->request->IsParam(L"r")) )
{
request->status = WINIX_ERR_PERMISSION_DENIED;
cur->request->status = WINIX_ERR_PERMISSION_DENIED;
return false;
}
@@ -102,7 +102,7 @@ void PrivChanger::ChangePriv(Item & item, long user_id, long group_id, int privi
return;
}
request->status = db->EditPrivById(item, item.id);
cur->request->status = db->EditPrivById(item, item.id);
}
@@ -174,12 +174,12 @@ void PrivChanger::PrivFilesInDir(long parent_id)
iq.WhereParentId(parent_id);
iq.WhereType(Item::dir, false);
db->GetItems(request->item_tab, iq);
db->GetItems(cur->request->item_tab, iq);
std::vector<Item>::iterator i = request->item_tab.begin();
std::vector<Item>::iterator i = cur->request->item_tab.begin();
for( ; i != request->item_tab.end() ; ++i)
for( ; i != cur->request->item_tab.end() ; ++i)
{
PrivLog(L"changed file: ", -1, i->url);
ChangePriv(*i, user_id_file, group_id_file, priv_file);
@@ -210,9 +210,9 @@ void PrivChanger::PrivDir(long parent_id)
void PrivChanger::ReadPriv(const wchar_t * user_in, const wchar_t * group_in, const wchar_t * priv_in,
long & user_id, long & group_id, int & priv)
{
const std::wstring & user_str = request->PostVar(user_in);
const std::wstring & group_str = request->PostVar(group_in);
const std::wstring & priv_str = request->PostVar(priv_in);
const std::wstring & user_str = cur->request->PostVar(user_in);
const std::wstring & group_str = cur->request->PostVar(group_in);
const std::wstring & priv_str = cur->request->PostVar(priv_in);
if( change_owner )
{
@@ -234,18 +234,18 @@ void PrivChanger::PrivDir()
PrivLogStart(L"Content: changes for dirs: ", user_id_dir, group_id_dir, priv_dir);
if( request->IsPostVar(L"changecurrentdir") )
if( cur->request->IsPostVar(L"changecurrentdir") )
{
Item & last_dir = *request->dir_tab.back();
Item & last_dir = *cur->request->dir_tab.back();
PrivLog(L"changed dir: ", last_dir.id, last_dir.url);
ChangePriv(*request->dir_tab.back(), user_id_dir, group_id_dir, priv_dir);
ChangePriv(*cur->request->dir_tab.back(), user_id_dir, group_id_dir, priv_dir);
}
subdirectories = request->IsPostVar(L"changesubdirs");
subdirectories = cur->request->IsPostVar(L"changesubdirs");
// go through all directories
PrivDir(request->dir_tab.back()->id);
PrivDir(cur->request->dir_tab.back()->id);
system->RedirectToLastDir();
}
@@ -258,14 +258,14 @@ void PrivChanger::PrivOneItem()
ReadPriv(L"user", L"group", L"privileges", user_id_file, group_id_file, priv_file);
PrivLogStart(L"Content: changes: ", user_id_file, group_id_file, priv_file);
if( request->is_item )
if( cur->request->is_item )
{
ChangePriv(request->item, user_id_file, group_id_file, priv_file);
system->RedirectTo(request->item);
ChangePriv(cur->request->item, user_id_file, group_id_file, priv_file);
system->RedirectTo(cur->request->item);
}
else
{
ChangePriv(*request->dir_tab.back(), user_id_file, group_id_file, priv_file);
ChangePriv(*cur->request->dir_tab.back(), user_id_file, group_id_file, priv_file);
system->RedirectToLastDir();
}
}
@@ -280,7 +280,7 @@ void PrivChanger::Change(bool change_owner_, bool change_priv_)
change_owner = change_owner_;
change_priv = change_priv_;
if( request->IsParam(L"r") )
if( cur->request->IsParam(L"r") )
{
PrivDir();
}

View File

@@ -7,8 +7,8 @@
*
*/
#ifndef headerfilecmslucontentprivchanger
#define headerfilecmslucontentprivchanger
#ifndef headerfile_winix_functions_privchanger
#define headerfile_winix_functions_privchanger
#include "core/request.h"
@@ -24,13 +24,13 @@ public:
bool CheckAccess();
void Change(bool change_owner_, bool change_priv_);
void SetRequest(Request * prequest);
void SetCur(Cur * pcur);
void SetSystem(System * psystem);
void SetDb(Db * pdb);
private:
Request * request;
Cur * cur;
System * system;
Db * db;

View File

@@ -38,14 +38,14 @@ void Reload::MakeGet()
{
// !! temporarily only an admin has access
if( !request->session->puser || !request->session->puser->super_user )
if( !cur->session->puser || !cur->session->puser->super_user )
{
log << log1 << "Content: Only an admin has access to reload function" << logend;
request->status = WINIX_ERR_PERMISSION_DENIED;
cur->request->status = WINIX_ERR_PERMISSION_DENIED;
return;
}
if( request->IsParam(L"templates") )
if( cur->request->IsParam(L"templates") )
FunReloadTemplates();
}

View File

@@ -7,8 +7,8 @@
*
*/
#ifndef headerfilecmslucontentreload
#define headerfilecmslucontentreload
#ifndef headerfile_winix_functions_reload
#define headerfile_winix_functions_reload
#include "functionbase.h"

View File

@@ -31,7 +31,7 @@ bool Rm::HasAccess(const Item & item)
{
// !! temporarily (we're waiting for the sticky bit to be implemented)
// not logged users cannot remove anything
if( !request->session->puser )
if( !cur->session->puser )
return false;
if( item.parent_id == -1 )
@@ -55,7 +55,7 @@ bool Rm::HasAccess(const Item & item)
}
if( system->mounts.pmount->IsPar(system->mounts.MountParOnlyRootRemove()) )
if( !request->session->puser || !request->session->puser->super_user )
if( !cur->session->puser || !cur->session->puser->super_user )
return false;
return true;
@@ -64,10 +64,10 @@ return true;
bool Rm::HasAccess()
{
if( !request->is_item )
return HasAccess(*request->dir_tab.back());
if( !cur->request->is_item )
return HasAccess(*cur->request->dir_tab.back());
else
return HasAccess(request->item);
return HasAccess(cur->request->item);
return true;
}
@@ -103,7 +103,7 @@ bool Rm::RemoveStaticFile(const std::wstring & path)
else
{
log << log1 << "Rm: can't remove a file: " << path << logend;
request->status = WINIX_ERR_PERMISSION_DENIED;
cur->request->status = WINIX_ERR_PERMISSION_DENIED;
return false;
}
}
@@ -128,7 +128,7 @@ void Rm::RemoveStaticFile(Item & item)
}
else
{
request->status = WINIX_ERR_PERMISSION_DENIED;
cur->request->status = WINIX_ERR_PERMISSION_DENIED;
}
}
@@ -156,7 +156,7 @@ void Rm::RemoveFileOrSymlink(Item & item)
}
else
{
// request->status = WINIX_ERR_NO_ITEM;
// cur->request->status = WINIX_ERR_NO_ITEM;
}
}
@@ -199,7 +199,7 @@ void Rm::RemoveDir(const Item & dir)
old_url = dir.url;
RemoveDirTree(dir.id);
if( request->status == WINIX_ERR_OK )
if( cur->request->status == WINIX_ERR_OK )
log << log3 << "Rm: removed directory " << old_url << logend;
}
@@ -207,9 +207,9 @@ void Rm::RemoveDir(const Item & dir)
void Rm::RemoveFile()
{
RemoveFileOrSymlink(request->item);
RemoveFileOrSymlink(cur->request->item);
if( request->status == WINIX_ERR_OK )
if( cur->request->status == WINIX_ERR_OK )
system->RedirectToLastDir();
}
@@ -217,13 +217,13 @@ void Rm::RemoveFile()
void Rm::RemoveDirContent()
{
if( !request->IsParam(L"r") )
if( !cur->request->IsParam(L"r") )
{
request->status = WINIX_ERR_PERMISSION_DENIED;
cur->request->status = WINIX_ERR_PERMISSION_DENIED;
return;
}
content_dir_iq.WhereParentId(request->dir_tab.back()->id);
content_dir_iq.WhereParentId(cur->request->dir_tab.back()->id);
db->GetItems(item_tab, content_dir_iq);
for(size_t i=0 ; i<item_tab.size() ; ++i)
@@ -234,7 +234,7 @@ void Rm::RemoveDirContent()
RemoveFileOrSymlink(item_tab[i]);
}
if( request->status == WINIX_ERR_OK )
if( cur->request->status == WINIX_ERR_OK )
system->RedirectToLastDir();
}
@@ -242,17 +242,17 @@ void Rm::RemoveDirContent()
void Rm::RemoveDir()
{
if( !request->IsParam(L"r") || request->dir_tab.size() <= 1 )
if( !cur->request->IsParam(L"r") || cur->request->dir_tab.size() <= 1 )
{
// we cannot remove the root directory (dir_tab.size()==1)
request->status = WINIX_ERR_PERMISSION_DENIED;
cur->request->status = WINIX_ERR_PERMISSION_DENIED;
return;
}
RemoveDir(*request->dir_tab.back());
request->dir_tab.erase(--request->dir_tab.end());
RemoveDir(*cur->request->dir_tab.back());
cur->request->dir_tab.erase(--cur->request->dir_tab.end());
if( request->status == WINIX_ERR_OK )
if( cur->request->status == WINIX_ERR_OK )
system->RedirectToLastDir();
}
@@ -271,13 +271,13 @@ void Rm::MakePost()
{
Prepare();
if( request->is_item )
if( cur->request->is_item )
{
RemoveFile();
}
else
{
if( request->IsPostVar(L"onlycontent") )
if( cur->request->IsPostVar(L"onlycontent") )
RemoveDirContent();
else
RemoveDir();

View File

@@ -7,8 +7,8 @@
*
*/
#ifndef headerfilecmslucontentrm
#define headerfilecmslucontentrm
#ifndef headerfile_winix_functions_rm
#define headerfile_winix_functions_rm
#include "functionbase.h"

View File

@@ -29,16 +29,16 @@ void Run::MakePost()
void Run::MakeGet()
{
if( !request->is_item )
if( !cur->request->is_item )
{
log << log1 << "Content: Run function requires an item" << logend;
request->status = WINIX_ERR_NO_ITEM;
cur->request->status = WINIX_ERR_NO_ITEM;
return;
}
if( !system->HasReadExecAccess(request->item) )
if( !system->HasReadExecAccess(cur->request->item) )
{
request->status = WINIX_ERR_PERMISSION_DENIED;
cur->request->status = WINIX_ERR_PERMISSION_DENIED;
return;
}
}

View File

@@ -7,8 +7,8 @@
*
*/
#ifndef headerfilecmslucontentrun
#define headerfilecmslucontentrun
#ifndef headerfile_winix_functions_run
#define headerfile_winix_functions_run
#include "functionbase.h"

View File

@@ -7,8 +7,8 @@
*
*/
#ifndef headerfilecmslucontentspecialdefault
#define headerfilecmslucontentspecialdefault
#ifndef headerfile_winix_functions_specialdefault
#define headerfile_winix_functions_specialdefault
#include "functionbase.h"

View File

@@ -7,8 +7,8 @@
*
*/
#ifndef headerfilecmslucontentstat
#define headerfilecmslucontentstat
#ifndef headerfile_winix_functions_stat
#define headerfile_winix_functions_stat
#include "functionbase.h"

View File

@@ -23,18 +23,18 @@ Subject::Subject()
bool Subject::SubjectCheckAccess()
{
// super user can always
if( request->session->puser && request->session->puser->super_user )
if( cur->session->puser && cur->session->puser->super_user )
return true;
bool access;
if( request->is_item )
access = system->HasWriteAccess(request->item);
if( cur->request->is_item )
access = system->HasWriteAccess(cur->request->item);
else
access = system->HasWriteAccess(*request->dir_tab.back());
access = system->HasWriteAccess(*cur->request->dir_tab.back());
if( !access )
request->status = WINIX_ERR_PERMISSION_DENIED;
cur->request->status = WINIX_ERR_PERMISSION_DENIED;
return access;
}
@@ -43,9 +43,9 @@ return access;
void Subject::EditDirSubject()
{
Item & dir = *request->dir_tab.back();
Item & dir = *cur->request->dir_tab.back();
request->PostVar(L"subject", dir.subject);
cur->request->PostVar(L"subject", dir.subject);
db->EditSubjectById(dir, dir.id);
system->RedirectToLastDir();
@@ -55,10 +55,10 @@ void Subject::EditDirSubject()
void Subject::EditFileSubject()
{
request->PostVar(L"subject", request->item.subject);
db->EditSubjectById(request->item, request->item.id);
cur->request->PostVar(L"subject", cur->request->item.subject);
db->EditSubjectById(cur->request->item, cur->request->item.id);
system->RedirectTo(request->item);
system->RedirectTo(cur->request->item);
}
@@ -69,7 +69,7 @@ void Subject::MakePost()
if( !SubjectCheckAccess() )
return;
if( request->is_item )
if( cur->request->is_item )
EditFileSubject();
else
EditDirSubject();

View File

@@ -7,8 +7,8 @@
*
*/
#ifndef headerfilecmslucontentsubject
#define headerfilecmslucontentsubject
#ifndef headerfile_winix_functions_subject
#define headerfile_winix_functions_subject
#include "functionbase.h"

View File

@@ -29,14 +29,14 @@ bool Template::HasAccess()
if( config->template_only_root_use_template_fun )
{
// only root is allowed to change the template
return (request->session->puser && request->session->puser->super_user);
return (cur->session->puser && cur->session->puser->super_user);
}
if( request->is_item )
return system->HasWriteAccess(request->item);
if( cur->request->is_item )
return system->HasWriteAccess(cur->request->item);
else
return system->HasWriteAccess(*request->dir_tab.back());
return system->HasWriteAccess(*cur->request->dir_tab.back());
}
@@ -83,9 +83,9 @@ void Template::ChangeTemplate(Item & item)
{
if( html_template != item.html_template )
{
request->status = db->EditTemplateItemById(item.id, html_template);
cur->request->status = db->EditTemplateItemById(item.id, html_template);
if( request->status == WINIX_ERR_OK )
if( cur->request->status == WINIX_ERR_OK )
{
item.html_template = html_template;
PutLog(item);
@@ -96,8 +96,8 @@ void Template::ChangeTemplate(Item & item)
void Template::MakePost()
{
CreateTemplateFileName(request->PostVar(L"template"));
ChangeTemplate(*request->last_item);
CreateTemplateFileName(cur->request->PostVar(L"template"));
ChangeTemplate(*cur->request->last_item);
system->RedirectToLastItem();
}

View File

@@ -7,8 +7,8 @@
*
*/
#ifndef headerfilecmslucontenttemplate
#define headerfilecmslucontenttemplate
#ifndef headerfile_winix_functions_template
#define headerfile_winix_functions_template
#include "functionbase.h"

View File

@@ -7,8 +7,8 @@
*
*/
#ifndef headerfilecmslucontenttinymce
#define headerfilecmslucontenttinymce
#ifndef headerfile_winix_functions_tinymce
#define headerfile_winix_functions_tinymce
#include "functionbase.h"

View File

@@ -7,8 +7,8 @@
*
*/
#ifndef headerfilecmslucontentuname
#define headerfilecmslucontentuname
#ifndef headerfile_winix_functions_uname
#define headerfile_winix_functions_uname
#include "functionbase.h"

View File

@@ -45,7 +45,7 @@ bool Upload::HasAccess(const Item & item)
return false;
}
if( request->session->puser && request->session->puser->super_user )
if( cur->session->puser && cur->session->puser->super_user )
// super user can use upload everywhere
return true;
@@ -58,7 +58,7 @@ return true;
bool Upload::HasAccess()
{
if( request->is_item || !HasAccess(*request->dir_tab.back()) )
if( cur->request->is_item || !HasAccess(*cur->request->dir_tab.back()) )
return false;
return true;
@@ -71,7 +71,7 @@ bool Upload::UploadSaveStaticFile(const Item & item, const std::wstring & tmp_fi
{
if( !system->MakeFilePath(item, path, false, true, config->upload_dirs_chmod) )
{
request->status = WINIX_ERR_PERMISSION_DENIED;
cur->request->status = WINIX_ERR_PERMISSION_DENIED;
return false;
}
@@ -83,7 +83,7 @@ bool Upload::UploadSaveStaticFile(const Item & item, const std::wstring & tmp_fi
else
{
log << log1 << "Upload: can't move the tmp file from: " << tmp_filename << ", to: " << path << logend;
request->status = WINIX_ERR_PERMISSION_DENIED;
cur->request->status = WINIX_ERR_PERMISSION_DENIED;
return false;
}
}
@@ -92,15 +92,15 @@ bool Upload::UploadSaveStaticFile(const Item & item, const std::wstring & tmp_fi
void Upload::UploadFile(Item & item, const std::wstring & tmp_filename)
{
// we should add the file beforehand to get the proper item.id
request->status = system->AddFile(item);
cur->request->status = system->AddFile(item);
if( request->status == WINIX_ERR_OK )
if( cur->request->status == WINIX_ERR_OK )
{
if( system->CreateNewFile(item) )
{
if( UploadSaveStaticFile(item, tmp_filename) )
{
request->status = db->EditFileById(item, item.id);
cur->request->status = db->EditFileById(item, item.id);
if( item.file_type == WINIX_ITEM_FILETYPE_IMAGE && config->create_thumb )
system->thumb.CreateThumb(item, config->thumb_cx, config->thumb_cy, config->thumb_mode);
@@ -118,15 +118,15 @@ bool Upload::FunUploadCheckAbuse()
{
if( !system->rebus.CheckRebus() )
{
request->status = WINIX_ERR_INCORRECT_REBUS;
cur->request->status = WINIX_ERR_INCORRECT_REBUS;
return false;
}
functions->CheckGetPostTimes(4);
if( request->session->spam_score > 0 )
if( cur->session->spam_score > 0 )
{
request->status = WINIX_ERR_SPAM;
cur->request->status = WINIX_ERR_SPAM;
log << log1 << "Content: ignoring due to suspected spamming" << logend;
return false;
}
@@ -140,24 +140,24 @@ return true;
void Upload::UploadMulti()
{
request->item.Clear(); // clearing and setting date
request->item.parent_id = request->dir_tab.back()->id;
request->item.type = Item::file;
request->item.privileges = 0644; // !! tymczasowo
functions->SetUser(request->item);
cur->request->item.Clear(); // clearing and setting date
cur->request->item.parent_id = cur->request->dir_tab.back()->id;
cur->request->item.type = Item::file;
cur->request->item.privileges = 0644; // !! tymczasowo
functions->SetUser(cur->request->item);
PostFileTab::iterator i = request->post_file_tab.begin();
PostFileTab::iterator i = cur->request->post_file_tab.begin();
for( ; i != request->post_file_tab.end() ; ++i)
for( ; i != cur->request->post_file_tab.end() ; ++i)
{
const wchar_t * file_name = i->second.filename.c_str();
request->item.subject = file_name;
request->item.url = file_name;
request->item.file_type = SelectFileType(file_name);
cur->request->item.subject = file_name;
cur->request->item.url = file_name;
cur->request->item.file_type = SelectFileType(file_name);
functions->PrepareUrl(request->item);
UploadFile(request->item, i->second.tmp_filename);
functions->PrepareUrl(cur->request->item);
UploadFile(cur->request->item, i->second.tmp_filename);
}
system->RedirectToLastDir();
@@ -166,31 +166,31 @@ void Upload::UploadMulti()
void Upload::UploadSingle()
{
const std::wstring & new_subject = request->PostVar(L"subject");
const std::wstring & new_url = request->PostVar(L"url");
const std::wstring & new_subject = cur->request->PostVar(L"subject");
const std::wstring & new_url = cur->request->PostVar(L"url");
bool has_subject = !new_subject.empty();
bool has_url = !new_url.empty();
functions->ReadItem(request->item, Item::file); // ReadItem() changes the url if it is empty
functions->SetUser(request->item);
request->item.privileges = 0644; // !! tymczasowo
functions->ReadItem(cur->request->item, Item::file); // ReadItem() changes the url if it is empty
functions->SetUser(cur->request->item);
cur->request->item.privileges = 0644; // !! tymczasowo
const wchar_t * file_name = request->post_file_tab.begin()->second.filename.c_str();
request->item.file_type = SelectFileType(file_name);
const wchar_t * file_name = cur->request->post_file_tab.begin()->second.filename.c_str();
cur->request->item.file_type = SelectFileType(file_name);
if( !has_subject )
request->item.subject = file_name;
cur->request->item.subject = file_name;
if( !has_url )
{
request->item.url = file_name;
functions->PrepareUrl(request->item);
cur->request->item.url = file_name;
functions->PrepareUrl(cur->request->item);
}
UploadFile(request->item, request->post_file_tab.begin()->second.tmp_filename);
UploadFile(cur->request->item, cur->request->post_file_tab.begin()->second.tmp_filename);
if( request->status == WINIX_ERR_OK )
system->RedirectTo(request->item, L"/cat");
if( cur->request->status == WINIX_ERR_OK )
system->RedirectTo(cur->request->item, L"/cat");
}
@@ -198,16 +198,16 @@ void Upload::UploadSingle()
// !! dodac usuwanie plikow statycznych przez rm
void Upload::MakePost()
{
if( request->post_file_tab.empty() )
if( cur->request->post_file_tab.empty() )
{
request->status = WINIX_ERR_PERMISSION_DENIED;
cur->request->status = WINIX_ERR_PERMISSION_DENIED;
return;
}
if( !FunUploadCheckAbuse() )
return;
if( request->post_file_tab.size() > 1 )
if( cur->request->post_file_tab.size() > 1 )
UploadMulti();
else
UploadSingle();

View File

@@ -7,8 +7,8 @@
*
*/
#ifndef headerfilecmslucontentupload
#define headerfilecmslucontentupload
#ifndef headerfile_winix_functions_upload
#define headerfile_winix_functions_upload
#include "functionbase.h"

View File

@@ -7,8 +7,8 @@
*
*/
#ifndef headerfilecmslucontentuptime
#define headerfilecmslucontentuptime
#ifndef headerfile_winix_functions_uptime
#define headerfile_winix_functions_uptime
#include "functionbase.h"

View File

@@ -7,8 +7,8 @@
*
*/
#ifndef headerfilecmslucontentvim
#define headerfilecmslucontentvim
#ifndef headerfile_winix_functions_vim
#define headerfile_winix_functions_vim
#include "functionbase.h"

View File

@@ -7,8 +7,8 @@
*
*/
#ifndef headerfilecmslucontentwho
#define headerfilecmslucontentwho
#ifndef headerfile_winix_functions_who
#define headerfile_winix_functions_who
#include "functionbase.h"