2009-04-20 00:13:21 +02:00
/*
* This file is a part of CMSLU - - Content Management System like Unix
* and is not publicly distributed
*
2009-04-21 22:50:55 +02:00
* Copyright ( c ) 2008 - 2009 , Tomasz Sowa
2009-04-20 00:13:21 +02:00
* All rights reserved .
*
*/
# include "content.h"
2009-04-21 22:50:55 +02:00
# include "../core/request.h"
# include "../core/error.h"
# include "../core/db.h"
# include "../core/mount.h"
# include "../core/data.h"
2009-04-20 00:13:21 +02:00
2009-04-21 01:49:28 +02:00
bool Content : : FunCreateThreadCheckAccess ( )
2009-04-20 00:13:21 +02:00
{
2009-06-05 22:29:06 +02:00
if ( ! request . CanCreateThread ( ) )
2009-04-20 00:13:21 +02:00
{
request . status = Error : : permision_denied ;
2009-04-21 01:49:28 +02:00
return false ;
2009-04-20 00:13:21 +02:00
}
2009-11-17 00:36:38 +01:00
2009-04-21 01:49:28 +02:00
return true ;
}
void Content : : PostFunCreateThread ( )
{
if ( ! FunCreateThreadCheckAccess ( ) )
return ;
2009-11-17 00:36:38 +01:00
if ( ! CheckRebus ( ) )
{
request . status = Error : : rebus_bad_answer ;
2009-11-17 02:04:01 +01:00
request . PostVar ( " url " , request . item . url ) ;
request . PostVar ( " subject " , request . item . subject ) ;
request . PostVar ( " content " , request . item . content ) ;
SetUser ( request . item ) ;
2009-11-17 00:36:38 +01:00
return ;
}
2009-06-05 22:29:06 +02:00
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
2009-04-20 00:13:21 +02:00
2009-06-05 22:29:06 +02:00
request . thread . parent_id = request . dir_table . back ( ) - > id ;
PostFunMkdir ( true , 0777 ) ; // !! tymczasowo 777 aby wszyscy mogli wysylac posty
2009-04-20 00:13:21 +02:00
if ( request . session - > done_status = = Error : : ok )
{
2009-06-05 22:29:06 +02:00
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 ) ;
}
2009-04-20 00:13:21 +02:00
if ( request . session - > done_status = = Error : : ok )
{
2009-06-05 22:29:06 +02:00
request . session - > done = Done : : added_thread ;
RedirectTo ( * request . dir_table . back ( ) ) ;
2009-04-20 00:13:21 +02:00
}
2009-06-05 22:29:06 +02:00
2009-04-20 00:13:21 +02:00
}
2009-06-05 22:29:06 +02:00
2009-04-20 00:13:21 +02:00
}
void Content : : FunCreateThread ( )
{
2009-04-21 01:49:28 +02:00
FunCreateThreadCheckAccess ( ) ;
2009-04-20 00:13:21 +02:00
}