File: D:/web/itpartnership.net (cms)/modules/News/action.fesubmit.php
<?php
if (!isset($gCms)) exit;
$title = '';
$extra = '';
$content = '';
$summary = '';
$status = $this->GetPreference('fesubmit_status','draft');
$useexp = 1;
$startdate = time();
$postdate = time();
$ndays = (int)$this->GetPreference('expiry_interval',180);
if( $ndays <= 0 ) $ndays = 180;
$enddate = strtotime(sprintf("+%d days",$ndays), time());
$userid = get_userid(false);
$category_id = $this->GetPreference('default_category', '');
$do_send_email = false;
$do_redirect = false;
// handle the page to go to after cancel or submit.
$dest_page = $returnid;
$tmp = $this->GetPreference('fesubmit_redirect');
if( !empty($tmp) )
{
$manager =& $gCms->GetHierarchyManager();
$node =& $manager->sureGetNodeByAlias($tmp);
if (isset($node))
{
$dest_page = $node->getID();
}
else
{
$node =& $manager->sureGetNodeById($tmp);
if (isset($node))
{
$dest_page = $tmp;
}
}
}
if( $userid == '' )
{
$module =& $this->GetModuleInstance('FrontEndUsers');
if( $module )
{
$userid = $module->LoggedInId();
$userid = $userid * -1;
}
}
if (isset($params['category']))
{
$query = 'SELECT news_category_id FROM '.cms_db_prefix().'module_news_categories WHERE news_category_name = ?';
$tmp = $db->GetOne($query,array($params['category']));
if( $tmp ) $category_id = $tmp;
}
if( isset( $params['cancel'] ) )
{
$this->RedirectContent($dest_page);
}
if( isset( $params['submit'] ) )
{
if( isset($params['content']) )
{
$content = cms_html_entity_decode($params['content']);
}
if( isset($params['summary']) )
{
$summary = cms_html_entity_decode($params['summary']);
}
if( isset($params['extra']) )
{
$extra = cms_html_entity_decode($params['extra']);
}
if( isset($params['category_id']) )
{
$category_id = $params['category_id'];
}
if (isset($params['input_category']))
{
$category_id = $params['input_category'];
}
if (isset($params['postdate_Month']))
{
$postdate = mktime($params['postdate_Hour'],
$params['postdate_Minute'],
$params['postdate_Second'],
$params['postdate_Month'],
$params['postdate_Day'],
$params['postdate_Year']);
}
if (isset($params['startdate_Month']))
{
$startdate = mktime($params['startdate_Hour'],
$params['startdate_Minute'],
$params['startdate_Second'],
$params['startdate_Month'],
$params['startdate_Day'],
$params['startdate_Year']);
}
if (isset($params['enddate_Month']))
{
$enddate = mktime($params['enddate_Hour'],
$params['enddate_Minute'],
$params['enddate_Second'],
$params['enddate_Month'],
$params['enddate_Day'],
$params['enddate_Year']);
}
$error = false;
if( $startdate > $enddate )
{
$error = true;
$smarty->assign('error',$this->Lang('startdatetoolate'));
}
if( isset($params['title'] ) )
{
$title = $params['title'];
}
if( $title == '' )
{
$error = true;
$smarty->assign('error',$this->Lang('notitlegiven'));
}
if( $content == '' )
{
$error = true;
$smarty->assign('error',$this->Lang('nocontentgiven'));
}
// generate a new article id
$articleid = $db->GenID(cms_db_prefix()."module_news_seq");
if( $error == false )
{
// test file upload custom fields
$qu = "SELECT id,name,type FROM ".cms_db_prefix()."module_news_fielddefs
WHERE type='file'";
$fields = $db->GetArray($qu);
foreach( $fields as $onefield )
{
$elem = $id.'news_customfield_'.$onefield['id'];
if( isset($_FILES[$elem]) &&
$_FILES[$elem]['name'] != '')
{
if( $_FILES[$elem]['error'] == 0 &&
$_FILES[$elem]['tmp_name'] != '' )
{
$error = '';
$value = $this->handle_upload($articleid,$elem,$error);
if( $value === FALSE )
{
$error = true;
$smarty->assign('error',$error);
}
$params['news_customfield_'.$onefield['id']] = $value;
}
else
{
// error with upload
// abort the whole thing
$error = true;
$smarty->assign('error',$this->Lang('error_upload'));
}
}
}
}
if( $error == false )
{
// and generate the insert query
$query = 'INSERT INTO '.cms_db_prefix().'module_news
(news_id, news_category_id, news_title, news_data, summary,
news_extra, status, news_date, start_time, end_time, create_date,
modified_date,author_id)
VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)';
$dbr = $db->Execute($query,
array($articleid, $category_id, $title,
$content, $summary, $extra, $status,
trim($db->DBTimeStamp($postdate), "'"),
trim($db->DBTimeStamp($startdate), "'"),
trim($db->DBTimeStamp($enddate), "'"),
trim($db->DBTimeStamp(time()), "'"),
trim($db->DBTimeStamp(time()), "'"),
$userid));
if( $dbr )
{
// handle the custom fields
$now = $db->DbTimeStamp(time());
$query = 'INSERT INTO '.cms_db_prefix()."module_news_fieldvals
(news_id, fielddef_id, value, create_date, modified_date)
VALUES (?,?,?,$now,$now)";
foreach( $params as $key => $value )
{
$value = trim($value);
if( empty($value) ) continue;
if( preg_match('/^news_customfield_/',$key) )
{
$field_id = intval(substr($key,17));
$db->Execute($query,array($articleid,$field_id,$value));
}
}
// should've checked those errors too, but eh, I'm up for the odds.
//Update search index
$module =& $this->GetModuleInstance('Search');
if ($module != FALSE)
{
$module->AddWords($this->GetName(), $articleid, 'article', $content . ' ' . $summary . ' ' . $title . ' ' . $title, $useexp == 1 ? $enddate : NULL);
}
// Send an email
$do_send_email = true;
$do_redirect = true;
// send an event
@$this->SendEvent('NewsArticleAdded',
array('news_id' => $articleid,
'category_id' => $category_id,
'title' => $title,
'content' => $content,
'summary' => $summary,
'status' => $status,
'start_time' => $startdate,
'end_time' => $enddate,
'useexp' => $useexp));
// and we're done
$smarty->assign('message',$this->Lang('articleadded'));
}
}
}
// build the category list
$categorylist = array();
$query = "SELECT * FROM ".cms_db_prefix()."module_news_categories ORDER BY hierarchy";
$dbresult = $db->Execute($query);
while ($dbresult && $row = $dbresult->FetchRow())
{
$categorylist[$row['long_name']] = $row['news_category_id'];
}
// build the form
$txt =$this->CreateFrontEndFormStart($id,$returnid,'fesubmit','post','multipart/form-data');
$smarty->assign('startform',$txt);
$smarty->assign('endform',$this->CreateFormEnd());
#Display template
$smarty->assign('hidden',
$this->CreateInputHidden($id,'category_id',$category_id));
$smarty->assign('titletext', $this->Lang('title'));
$smarty->assign('inputtitle', $this->CreateInputText($id, 'title', $title, 30, 255));
$smarty->assign('inputcategory',
$this->CreateInputDropdown($id, 'input_category', $categorylist, -1,
$category_id));
$smarty->assign('extratext',$this->Lang('extra'));
$smarty->assign('inputextra',$this->CreateInputText($id,'extra',$extra,30,255));
$smarty->assign('inputcontent', $this->CreateTextArea(true, $id, $content, 'content'));
$smarty->assign('hide_summary_field',$this->GetPreference('hide_summary_field','0'));
$smarty->assign('inputsummary',
$this->CreateTextArea($this->GetPreference('allow_summary_wysiwyg',1), $id, $summary, 'summary'));
$smarty->assign_by_ref('postdate', $postdate);
$smarty->assign('postdateprefix', $id.'postdate_');
$smarty->assign('inputexp',
$this->CreateInputCheckbox($id, 'useexp', '1', $useexp, 'class="pagecheckbox"'));
$smarty->assign_by_ref('startdate', $startdate);
$smarty->assign('startdateprefix', $id.'startdate_');
$smarty->assign_by_ref('enddate', $enddate);
$smarty->assign('enddateprefix', $id.'enddate_');
$smarty->assign('status',$this->CreateInputHidden($id,'status',$status));
$smarty->assign('submit', $this->CreateInputSubmit($id,
'submit',
$this->Lang('submit')));
$smarty->assign('cancel', $this->CreateInputSubmit($id, 'cancel',
$this->Lang('cancel')));
$query = 'SELECT * FROM '.cms_db_prefix().'module_news_fielddefs WHERE public = 1 ORDER BY item_order';
$dbr = $db->Execute($query);
$customfields = array();
$customfieldsbyname = array();
while( $dbr && ($row = $dbr->FetchRow()) )
{
$obj = new StdClass();
$obj->name = $row['name'];
switch($row['type'])
{
case 'file':
$obj->field = $this->CreateFileUploadInput($id,'news_customfield_'.$row['id']);
break;
case 'checkbox':
$obj->field = $this->CreateInputCheckbox($id,'news_customfield_'.$row['id'],1);
break;
case 'textarea':
$obj->field = $this->CreateTextArea(true,$id,'','news_customfield_'.$row['id']);
break;
case 'textbox':
$obj->field = $this->CreateInputText($id,'news_customfield_'.$row['id'],'',$row['max_length'],$row['max_length']);
break;
}
$customfields[] = $obj;
$key = str_replace(' ','_',strtolower($row['name']));
$customfieldsbyname[$key] = $obj;
}
if( count($customfields) )
{
$smarty->assign('customfields',$customfields);
$smarty->assign('customfieldsbyname',$customfieldsbyname);
}
$smarty->assign('titletext', $this->Lang('title'));
$smarty->assign('summarytext', $this->Lang('summary'));
$smarty->assign('categorytext',$this->Lang('category'));
$smarty->assign('contenttext', $this->Lang('content'));
$smarty->assign('postdatetext', $this->Lang('postdate'));
$smarty->assign('useexpirationtext', $this->Lang('useexpiration'));
$smarty->assign('startdatetext', $this->Lang('startdate'));
$smarty->assign('enddatetext', $this->Lang('enddate'));
$smarty->assign('ipaddress',getenv("REMOTE_ADDR"));
$template = 'form'.$this->GetPreference('current_form_template');
if (isset($params['formtemplate']))
{
$template = 'form'.$params['formtemplate'];
}
echo $this->ProcessTemplateFromDatabase($template);
if( $do_send_email == true )
{
// this needs to be done after the form is generated
// because we use some of the same smarty variables
$cmsmailer =& $this->GetModuleInstance('CMSMailer');
if( $cmsmailer )
{
$addy = trim($this->GetPreference('formsubmit_emailaddress'));
if( $addy != '' )
{
if( $title != '' ) $smarty->assign('title',$title);
if( $summary != '' ) $smarty->assign('summary',$summary);
if( $content != '' ) $smarty->assign('content',$content);
$cmsmailer->AddAddress( $addy );
$cmsmailer->SetSubject( $this->GetPreference('email_subject',$this->Lang('subject_newnews')));
$cmsmailer->IsHTML( false );
$body = $this->ProcessTemplateFromDatabase('email_template');
$cmsmailer->SetBody( $body );
$cmsmailer->Send();
}
}
}
if( $do_redirect )
{
$this->RedirectContent($dest_page);
}
// END OF FILE
?>