File: D:/web/itpartnership.net (cms)/modules/FeedbackForm/FeedbackForm.module.php
<?php
#-------------------------------------------------------------------------
# Module: Feedback Form
# Version: 0.9.14, released 6 March 2006
#
# Copyright (c) 2006, Samuel Goldstein <sjg@cmsmodules.com>
# For Information, Support, Bug Reports, etc, please visit the
# CMS Made Simple tracker at http://dev.cmsmadesimple.org
#
#-------------------------------------------------------------------------
# CMS - CMS Made Simple is (c) 2006 by Ted Kulp (wishy@cmsmadesimple.org)
# This project's homepage is: http://www.cmsmadesimple.org
#
#-------------------------------------------------------------------------
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Or read it online: http://www.gnu.org/licenses/licenses.html#GPL
#
#-------------------------------------------------------------------------
class FeedbackForm extends CMSModule
{
var $form_table_name;
var $field_table_name;
var $option_table_name;
var $config_table_name;
var $flock_table_name;
var $field_types;
var $disp_field_types;
var $all_validation_types;
var $mod_globals;
function FeedbackForm()
{
$this->CMSModule();
$this->form_table_name = cms_db_prefix() . 'module_feedback_form';
$this->field_table_name = cms_db_prefix().'module_feedback_field';
$this->option_table_name = cms_db_prefix().'module_feedback_option';
$this->config_table_name = cms_db_prefix().'module_feedback_config';
$this->flock_table_name = cms_db_prefix().'module_feedback_flock';
require_once 'classes/UtilityFunctions.class.php';
require_once 'classes/Form.class.php';
require_once 'classes/Input.class.php';
require_once 'classes/Option.class.php';
require_once 'classes/Config.class.php';
}
function initialize()
{
if (ffUtilityFunctions::def($this->mod_globals))
{
return;
}
$this->mod_globals = new ffConfig(array());
$this->mod_globals->DBHandle =& $this->GetDb();
$this->mod_globals->FormTableName =$this->form_table_name;
$this->mod_globals->FieldTableName =$this->field_table_name;
$this->mod_globals->OptionTableName =$this->option_table_name;
$this->mod_globals->ConfigTableName =$this->config_table_name;
$this->mod_globals->FlockTableName =$this->flock_table_name;
$this->mod_globals->RootPath =$this->cms->config['root_path'];
$this->mod_globals->MaxUploadSize =$this->cms->config['max_upload_size'];
$this->mod_globals->selfptr = &$this;
$this->mod_globals->Load();
$this->field_types = array(
$this->Lang('field_type_text_input')=>'TextInput',
$this->Lang('field_type_text_area')=>'TextAreaInput',
$this->Lang('field_type_checkbox')=>'CheckboxInput',
$this->Lang('field_type_checkbox_group')=>'CheckboxGroupInput',
$this->Lang('field_type_pulldown')=>'PulldownInput',
$this->Lang('field_type_radio_group')=>'RadioGroupInput',
$this->Lang('field_type_state')=>'StateInput',
$this->Lang('field_type_country')=>'CountryInput',
$this->Lang('field_type_country')=>'CountryInput',
$this->Lang('field_type_date')=>'DatePicker',
$this->Lang('field_type_callback')=>'FunctionCallInput',
$this->Lang('field_type_file_upload')=>'FileUpload',
$this->Lang('field_type_disposition_director')=>'DispositionDirector',
$this->Lang('field_type_disposition_email')=>'DispositionEmail',
$this->Lang('field_type_disposition_email_site_user')=>'DispositionSiteUser',
$this->Lang('field_type_disposition_file')=>'DispositionFile',
$this->Lang('field_type_page_break')=>'PageBreak',
$this->Lang('field_type_static_text')=>'StaticTextInput'
);
foreach ($this->field_types as $tName=>$tType)
{
if (substr($tType,0,11) == 'Disposition')
{
$this->disp_field_types[$tName]=$tType;
}
}
$this->all_validation_types = array();
}
function GetName()
{
return 'FeedbackForm';
}
function MinimumCMSVersion()
{
return '1.0-svn';
}
function GetVersion()
{
return '0.9.14';
}
function GetAuthor()
{
return 'SjG';
}
function GetAuthorEmail()
{
return 'sjg@cmsmodules.com';
}
function GetAdminDescription()
{
$this->initialize();
return $this->Lang('admindesc');
}
function GetDependencies()
{
return array('CMSMailer'=>'1.73.4');
}
function GetChangeLog()
{
return $this->Lang('changelog');
}
function IsPluginModule()
{
return true;
}
function HasAdmin()
{
return true;
}
function InstallPostMessage()
{
return $this->Lang('post_install');
}
function DoAction($name, $id, $params, $return_id='')
{
$this->initialize();
$this->mod_globals->ModuleInputPrefix = $id;
switch ($name)
{
case 'defaultadmin':
case 'admin_main_feedback':
$this->AdminMain($id, $params, $return_id);
break;
case 'admin_edit_feedback_form':
case 'admin_add_feedback_form':
if ($this->CheckAccess())
{
$this->AdminAddEditForm($id, $params, $return_id);
}
break;
case 'admin_form_update':
if ($this->CheckAccess())
{
$this->AdminStoreForm($id, $params, $return_id);
}
break;
case 'admin_edit_feedback_field':
case 'admin_add_feedback_field':
if ($this->CheckAccess())
{
$this->AdminAddEditField($id, $params, $return_id);
}
break;
case 'admin_field_order_update':
if ($this->CheckAccess())
{
$this->AdminUpdateFieldOrder($id, $params, $return_id);
}
break;
case 'admin_field_required_update':
if ($this->CheckAccess())
{
$this->AdminUpdateFieldRequired($id, $params, $return_id);
}
break;
case 'admin_field_update':
if ($this->CheckAccess())
{
$this->AdminStoreField($id, $params, $return_id);
}
break;
case 'admin_delete_feedback_field':
if ($this->CheckAccess())
{
$this->AdminDeleteField($id, $params, $return_id);
}
break;
case 'admin_delete_feedback_form':
if ($this->CheckAccess())
{
$this->AdminDeleteForm($id, $params, $return_id);
}
break;
case 'admin_config_feedback_update':
if ($this->CheckAccess())
{
$this->AdminStoreConfig($id, $params, $return_id);
}
break;
case 'default':
$this->PublicShowForm($id, $params, $return_id);
break;
case 'submit_form':
// handle multipart forms
if (! ffUtilityFunctions::def($params['done']))
{
$this->PublicShowForm($id, $params, $return_id);
}
else
{
$this->PublicSubmitForm($id, $params, $return_id);
}
break;
}
}
function PublicSubmitForm($id, &$params, $return_id)
{
if (! ffUtilityFunctions::def($params['form_id']) &&
ffUtilityFunctions::def($params['form']))
{
// get the form by name, not ID
$params['form_id'] = $this->GetFormIDFromAlias($params['form']);
}
$aeform = new ffForm($this->mod_globals,$params);
$aeform->LoadForm($params);
$res = $aeform->Validate();
if ($res[0] === false)
{
$aeform->RenderFormHeader($this->GetVersion());
$aeform->thisPage--;
echo $res[1]."\n";
echo $this->CreateFormStart($id, 'submit_form', $return_id, 'post', 'multipart/form-data');
$aeform->RenderForm($id, $params, $return_id);
echo $this->CreateFormEnd();
$aeform->RenderFormFooter();
}
else
{
$aeconf = &$this->mod_globals;
$aeconf->Load();
if ($aeform->CSSClass != '')
{
echo "<div class=\"" . $aeform->CSSClass . "\">";
}
if ($aeform->Dispose($aeconf))
{
echo $aeform->ThanksMessage;
}
else
{
echo $this->Lang('submission_error');
}
if ($aeform->CSSClass != '')
{
echo "</div>";
}
}
}
function PublicShowForm($id, &$params, $return_id)
{
//debug_display($params);
if (! ffUtilityFunctions::def($params['form_id']) &&
ffUtilityFunctions::def($params['form']))
{
// get the form by name, not ID
$params['form_id'] = $this->GetFormIDFromAlias($params['form']);
}
$aeform = new ffForm($this->mod_globals,$params);
$aeform->LoadForm($params);
$aeform->RenderFormHeader($this->GetVersion());
if ($aeform->formTotalPages > 1 && ffUtilityFunctions::def($aeform->thisPage) && $aeform->thisPage > 0)
{
//echo "validating page :".$aeform->thisPage."<br/>";
$res = $aeform->Validate();
if ($res[0] === false)
{
echo $res[1]."\n";
$aeform->thisPage--;
}
}
//echo "not validating page :".$aeform->thisPage.": ".$aeform->formTotalPages." ".ffUtilityFunctions::def($aeform->thisPage).":".$aeform->thisPage."<br/>";
echo $this->CreateFormStart($id, 'submit_form', $return_id, 'post', 'multipart/form-data');
$aeform->RenderForm($id, $params, $return_id);
echo $this->CreateFormEnd();
$aeform->RenderFormFooter();
}
function CheckAccess($permission='Modify Feedback Forms')
{
$access = $this->CheckPermission($permission);
if (!$access) {
echo "<p class=\"error\">".$this->Lang('you_need_permission1').$permission.$this->Lang('you_need_permission2')."</p>";
return false;
}
else return true;
}
function AdminMain($id, &$params, $returnid)
{
// and a list of all the extant forms.
global $gCms;
$theme = $gCms->variables['admintheme'];
$forms = $this->GetForms();
$num_forms = count($forms);
$aeconf = &$this->mod_globals;
$aeconf->Load();
$this->smarty->assign('tabheaders', $this->StartTabHeaders() .
$this->SetTabHeader('forms',$this->Lang('forms')) .
$this->SetTabHeader('config',$this->Lang('configuration')) .
$this->EndTabHeaders().
$this->StartTabContent());
$this->smarty->assign('start_formtab',$this->StartTab("forms"));
$this->smarty->assign('start_configtab',$this->StartTab("config"));
$this->smarty->assign('end_tab',$this->EndTab());
$this->smarty->assign('end_tabs',$this->EndTabContent());
$this->smarty->assign('title_form_name',$this->Lang('title_form_name'));
$this->smarty->assign('title_tag_to_use',$this->Lang('title_tag_to_use'));
$this->smarty->assign('title_id_and_name',$this->Lang('title_id_and_name'));
$this->smarty->assign('start_configform',$this->CreateFormStart($id,
'admin_config_feedback_update', $returnid) .
$this->CreateInputHidden($id, 'config_id', $aeconf->ConfigId));
if (isset($params['message']))
{
$this->smarty->assign_by_ref('message', $params['message']);
}
$formArray = array();
$currow = "row1";
foreach ($forms as $thisForm)
{
$oneset = new stdClass();
$oneset->rowclass = $currow;
if ($this->CheckPermission('Modify Feedback Forms'))
{
$oneset->name = $this->CreateLink($id,
'admin_edit_feedback_form', '',
$thisForm['name'], array('form_id'=>$thisForm['form_id']));
$oneset->editlink = $this->CreateLink($id,
'admin_edit_feedback_form', '',
$theme->DisplayImage('icons/system/edit.gif','edit','','','systemicon'),
array('form_id'=>$thisForm['form_id']));
$oneset->deletelink = $this->CreateLink($id,
'admin_delete_feedback_form', '',
$theme->DisplayImage('icons/system/delete.gif','delete','','','systemicon'),
array('form_id'=>$thisForm['form_id']),
$this->Lang('are_you_sure_delete_form',$thisForm['name']));
}
else
{
$oneset->name=$thisForm['name'];
$oneset->editlink = '';
$oneset->deletelink = '';
}
$oneset->usage = $thisForm['alias'];
array_push($formArray,$oneset);
($currow == "row1"?$currow="row2":$currow="row1");
}
if ($this->CheckPermission('Modify Feedback Forms'))
{
$this->smarty->assign('addlink',$this->CreateLink($id,
'admin_add_feedback_form', '',
$theme->DisplayImage('icons/system/newobject.gif', $this->Lang('title_add_new_form'),'',
'','systemicon'), array()));
$this->smarty->assign('addform',$this->CreateLink($id,
'admin_add_feedback_form', '', $this->Lang('title_add_new_form'),
array()));
$this->smarty->assign('may_config',1);
}
else
{
$this->smarty->assign('no_permission',
$this->Lang('lackpermission'));
}
$this->smarty->assign('title_email_from_name',$this->Lang('title_email_from_name'));
$this->smarty->assign('input_email_from_name',$this->CreateInputText($id, 'from_name', $aeconf->FromName, 50));
$this->smarty->assign('title_form_from_email',$this->Lang('title_form_from_email'));
$this->smarty->assign('input_form_from_email',$this->CreateInputText($id, 'from_address', $aeconf->FromAddress, 50));
$this->smarty->assign('title_hide_errors',$this->Lang('title_hide_errors'));
$this->smarty->assign('input_hide_errors',$this->CreateInputCheckbox($id, 'hide_errors', 1, $aeconf->HideErrors). $this->Lang('title_hide_errors_long'));
$this->smarty->assign('title_css_layout',$this->Lang('title_css_layout'));
$this->smarty->assign('input_css_layout',$this->CreateInputCheckbox($id, 'css_layout', 1, $aeconf->UseCSS). $this->Lang('title_use_css_layout')); $this->smarty->assign('input_id_and_name',$this->CreateInputCheckbox($id, 'use_id_and_name', 1, $aeconf->UseIDAndName). $this->Lang('title_id_and_name'));
$this->smarty->assign('title_table_layout_type',$this->Lang('title_table_layout_type'));
$pos = array($this->Lang('title_table_layout_left')=>0,$this->Lang('title_table_layout_above')=>1);
$this->smarty->assign('input_table_layout_type',$this->CreateInputRadioGroup($id, 'table_layout_title_pos', $pos, $aeconf->TitlePosition) );
$this->smarty->assign('submit', $this->CreateInputSubmit($id, 'submit', $this->Lang('save')));
$this->smarty->assign('config_formend',$this->CreateFormEnd());
$this->smarty->assign_by_ref('forms', $formArray);
echo $this->ProcessTemplate('AdminMain.tpl');
}
function AdminAddEditForm($id, &$params, $returnid)
{
global $gCms;
$theme = $gCms->variables['admintheme'];
$aeform = new ffForm($this->mod_globals, $params);
if (ffUtilityFunctions::def($params['form_id']))
{
$aeform->Load($params['form_id'],$params,true);
}
$this->smarty->assign('formstart', $this->CreateFormStart($id, 'admin_form_update', $returnid));
$this->smarty->assign('formid',$this->CreateInputHidden($id, 'form_id', $aeform->FormId));
$this->smarty->assign('tab_start',$this->StartTabHeaders().
$this->SetTabHeader('maintab',$this->Lang('main')).
$this->SetTabHeader('addition',$this->Lang('additional')).
$this->EndTabHeaders() . $this->StartTabContent());
$this->smarty->assign('tabs_end',$this->EndTabContent());
$this->smarty->assign('maintab_start',$this->StartTab("maintab"));
$this->smarty->assign('additionaltab_start',$this->StartTab("addition"));
$this->smarty->assign('tab_end',$this->EndTab());
$this->smarty->assign('form_end',$this->CreateFormEnd());
$this->smarty->assign('title_form_name',$this->Lang('title_form_name'));
$this->smarty->assign('input_form_name',$this->CreateInputText($id, 'form_name', $aeform->Name, 50));
$this->smarty->assign('title_form_status',$this->Lang('title_form_status'));
$this->smarty->assign('text_ready',$this->Lang('title_ready_for_deployment'));
$this->smarty->assign('title_form_alias',$this->Lang('title_form_alias'));
$this->smarty->assign('input_form_alias',$this->CreateInputText($id, 'form_alias', $aeform->Alias, 50));
$this->smarty->assign('title_form_css_class',$this->Lang('title_form_css_class'));
$this->smarty->assign('input_form_css_class',$this->CreateInputText($id, 'form_css_class', isset($aeform->CSSClass)?$aeform->CSSClass:'feedbackform', 50));
$this->smarty->assign('title_form_fields',$this->Lang('title_form_fields'));
$this->smarty->assign('title_field_name',$this->Lang('title_field_name'));
$this->smarty->assign('title_field_type',$this->Lang('title_field_type'));
$this->smarty->assign('title_field_required_abbrev',$this->Lang('title_field_required_abbrev'));
$this->smarty->assign('title_information',$this->Lang('information'));
$this->smarty->assign('title_order',$this->Lang('order'));
$this->smarty->assign('link_notready',"<strong>".$this->Lang('title_not_ready1')."</strong><P>".$this->Lang('title_not_ready2')." ".$this->CreateLink($id, 'admin_add_feedback_field', $returnid,$this->Lang('title_not_ready_link'),array('form_id'=>$aeform->FormId, 'order_by'=>count($aeform->Fields)+1,'dispose_only'=>1), '', false)." ".$this->Lang('title_not_ready3')."</p>");
$this->smarty->assign('hasdisposition',$aeform->HasDisposition()?1:0);
if($aeform->FormId > 0)
{
$this->smarty->assign('submit_button', $this->CreateInputSubmit($id, 'submit', $this->Lang('save_and_continue')));
$this->smarty->assign('hidden',$this->CreateInputHidden($id, 'form_op',$this->Lang('updated')));
$this->smarty->assign('adding',0);
$this->smarty->assign('save_button',$this->CreateInputSubmit($id, 'submit', $this->Lang('save')));
$fieldList = array();
$currow = "row1";
$count = 1;
$last = count($aeform->Fields);
foreach ($aeform->Fields as $thisField)
{
$oneset = new stdClass();
$oneset->rowclass = $currow;
$oneset->name = $this->CreateLink($id, 'admin_edit_feedback_field', '', $thisField->Name, array('field_id'=>$thisField->FieldId,'form_id'=>$aeform->FormId));
$oneset->type = $thisField->DisplayType;
if ($thisField->IsDisposition || !$thisField->DisplayInForm)
{
$oneset->disposition = $theme->DisplayImage('icons/system/true.gif','true','','','systemicon');
}
else if ($thisField->Required)
{
$oneset->disposition = $this->CreateLink($id, 'admin_field_required_update', '', $theme->DisplayImage('icons/system/true.gif','true','','','systemicon'), array('form_id'=>$aeform->FormId,'field_index'=>$count-1,'active'=>'off'));
}
else
{
$oneset->disposition = $this->CreateLink($id, 'admin_field_required_update', '', $theme->DisplayImage('icons/system/false.gif','false','','','systemicon'), array('form_id'=>$aeform->FormId,'field_index'=>$count-1,'active'=>'on'));
}
$oneset->field_status = $thisField->StatusInfo();
if ($count > 1)
{
$oneset->up = $this->CreateLink($id, 'admin_field_order_update', '', $theme->DisplayImage('icons/system/arrow-u.gif','up','','','systemicon'), array('form_id'=>$aeform->FormId,'field_index'=>$count-1,'dir'=>'up'));
}
else
{
$oneset->up = ' ';
}
if ($count < $last)
{
$oneset->down=$this->CreateLink($id, 'admin_field_order_update', '', $theme->DisplayImage('icons/system/arrow-d.gif','down','','','systemicon'), array('form_id'=>$aeform->FormId,'field_index'=>$count-1,'dir'=>'down'));
}
else
{
$oneset->down = ' ';
}
$oneset->editlink = $this->CreateLink($id, 'admin_edit_feedback_field', '', $theme->DisplayImage('icons/system/edit.gif','edit','','','systemicon'), array('field_id'=>$thisField->FieldId,'form_id'=>$aeform->FormId));
$oneset->deletelink = $this->CreateLink($id, 'admin_delete_feedback_field', '', $theme->DisplayImage('icons/system/delete.gif','delete','','','systemicon'), array('field_id'=>$thisField->FieldId,'form_id'=>$aeform->FormId),$this->Lang('are_you_sure_delete_field',$thisField->Name));
($currow == "row1"?$currow="row2":$currow="row1");
$count++;
array_push($fieldList, $oneset);
}
$this->smarty->assign('fields',$fieldList);
$this->smarty->assign('add_field_link',$this->CreateLink($id, 'admin_add_feedback_form', $returnid,$theme->DisplayImage('icons/system/newobject.gif',$this->Lang('title_add_new_field'),'','','systemicon'),array('form_id'=>$aeform->FormId, 'order_by'=>$count), '', false) . $this->CreateLink($id, 'admin_add_feedback_field', $returnid,$this->Lang('title_add_new_field'),array('form_id'=>$aeform->FormId, 'order_by'=>$count), '', false));
}
else
{
$this->smarty->assign('submit_button', $this->CreateInputSubmit($id, 'submit', $this->Lang('add')));
$this->smarty->assign('hidden',$this->CreateInputHidden($id, 'form_op',$this->Lang('added')));
$this->smarty->assign('adding',1);
}
$this->smarty->assign('title_form_submit_button',$this->Lang('title_form_submit_button'));
$this->smarty->assign('input_form_submit_button',$this->CreateInputText($id, 'form_submit_button_text', ffUtilityFunctions::def($aeform->SubmitButtonText)?$aeform->SubmitButtonText:'Submit Form', 35, 35));
$this->smarty->assign('title_form_next_button',$this->Lang('title_form_next_button'));
$this->smarty->assign('input_form_next_button',$this->CreateInputText($id, 'form_next_button_text', ffUtilityFunctions::def($aeform->NextButtonText)?$aeform->NextButtonText:'Continue...', 35, 35));
$this->smarty->assign('title_form_thanks_text',$this->Lang('title_form_thanks_text'));
$this->smarty->assign('input_form_thanks_text',$this->CreateTextArea(false, $id, ffUtilityFunctions::def($aeform->ThanksMessage)?$aeform->ThanksMessage:'Thanks!', 'form_thanks_message', '', '', '', ''));
$this->smarty->assign('title_form_required_symbol',$this->Lang('title_form_required_symbol'));
$this->smarty->assign('input_form_required_symbol',$this->CreateInputText($id, 'form_required_field_symbol', ffUtilityFunctions::def($aeform->RequiredFieldSymbol)?$aeform->RequiredFieldSymbol:'*', 50));
$this->smarty->clear_cache('AddEditForm.tpl');
echo $this->ProcessTemplate('AddEditForm.tpl');
}
function AdminAddEditField($id, &$params, $returnid, $message='')
{
$emptyArr = array();
$aeform = new ffForm($this->mod_globals, $emptyArr);
// gosh, do I really have to do this?
$aeform->Load($params['form_id'], $params, false);
// this is sort of wasteful. We load our data into a
// generic Input, then, if we have more information,
// instantiate a new specific Input Class.
$aefield = new ffInput($this->mod_globals,$aeform,$params);
if ($aefield->FieldId > 0 )
{
// we're loading an extant field
$aefield->Load($aefield->FieldId,false);
}
// what kind of field?
// need to know what kind of object to instantiate!
if (ffUtilityFunctions::def($aefield->Type))
{
// OK, instantiating a specific Input class.
$className = $aeform->MakeClassName($aefield->Type, '');
$aefield = new $className($this->mod_globals, $aeform, $params);
$aefield->LoadField($params);
}
if (!ffUtilityFunctions::def($aefield->Type))
{
$this->smarty->assign('start_form',$this->CreateFormStart($id, 'admin_add_feedback_field', $returnid));
$this->smarty->assign('type_set',0);
}
else
{
$this->smarty->assign('start_form',$this->CreateFormStart($id, 'admin_field_update', $returnid));
$this->smarty->assign('type_set',1);
}
$this->smarty->assign('end_form', $this->CreateFormEnd());
if($aefield->FieldId > 0)
{
$this->smarty->assign('op',$this->CreateInputHidden($id, 'op',$this->Lang('updated')));
$this->smarty->assign('submit',$this->CreateInputSubmit($id, '', $this->Lang('update')));
}
else
{
$this->smarty->assign('op',$this->CreateInputHidden($id, 'op', $this->Lang('added')));
$this->smarty->assign('submit',$this->CreateInputSubmit($id, '', $this->Lang('add')));
}
$this->smarty->assign('hidden', $this->CreateInputHidden($id, 'form_id', $aefield->FormId) . $this->CreateInputHidden($id, 'field_id', $aefield->FieldId) . $this->CreateInputHidden($id, 'order_by', $aefield->OrderBy));
$this->smarty->assign('title_field_name',$this->Lang('title_field_name'));
$this->smarty->assign('input_field_name', $this->CreateInputText($id, 'name', $aefield->Name, 50));
$this->smarty->assign('title_field_type',$this->Lang('title_field_type'));
if (!ffUtilityFunctions::def($aefield->Type))
{
if (ffUtilityFunctions::def($params['dispose_only']))
{
$this->smarty->assign('input_field_type',
$this->CreateInputDropdown($id,
'type',
array_merge(array($this->Lang('select_type')=>''),$this->disp_field_types),
-1,'', 'onchange="this.form.submit()"'));
}
else
{
$this->smarty->assign('input_field_type',$this->CreateInputDropdown($id, 'type',array_merge(array($this->Lang('select_type')=>''),$this->field_types), -1,'', 'onchange="this.form.submit()"'));
}
}
else
{
$this->smarty->assign('input_field_type',$aefield->DisplayType.$this->CreateInputHidden($id, 'type', $aefield->Type));
}
if (!$aefield->IsDisposition && !$aefield->specialInput)
{
$this->smarty->assign('requirable',1);
}
else
{
$this->smarty->assign('requirable',0);
}
$this->smarty->assign('title_field_required',$this->Lang('title_field_required'));
$this->smarty->assign('input_field_required',$this->CreateInputCheckbox($id, 'required', 1, $aefield->Required).$this->Lang('title_field_required_long'));
$this->smarty->assign('title_show_label',$this->Lang('title_show_label'));
$this->smarty->assign('input_show_label',$this->CreateInputCheckbox($id, 'show_label', 1, $aefield->ShowLabel).$this->Lang('title_show_label_long'));
$this->smarty->assign('title_field_validation',$this->Lang('title_field_validation'));
if (count($aefield->ValidationTypes) > 1)
{
$this->smarty->assign('input_field_validation',$this->CreateInputDropdown($id, 'validation_type', $aefield->ValidationTypes, -1, $aefield->ValidationType));
}
else
{
$this->smarty->assign('input_field_validation',$this->Lang('automatic'));
}
if ($aefield->DisplayInForm)
{
$this->smarty->assign('displayinform',1);
}
else
{
$this->smarty->assign('displayinform',0);
}
$this->smarty->assign('title_field_css_class',$this->Lang('title_field_css_class'));
$this->smarty->assign('input_field_css_class',$this->CreateInputText($id, 'css_class', $aefield->CSSClass, 50));
$attrList = array();
foreach ($aefield->RenderAdminForm($id) as $titleStr=>$inputStr)
{
$oneset = new stdClass();
$oneset->title = $titleStr;
$oneset->input = $inputStr;
array_push($attrList,$oneset);
}
$this->smarty->assign('message',$message);
$this->smarty->assign('otherAttrs',$attrList);
$this->smarty->clear_cache('AddEditField.tpl');
echo $this->ProcessTemplate('AddEditField.tpl');
}
function AdminStoreField($id, &$params, $returnid)
{
$emptyArr = array();
$aeform = new ffForm($this->mod_globals,$emptyArr);
$aefield = new ffInput($this->mod_globals,$aeform,$params);
if (ffUtilityFunctions::def($aefield->Type))
{
// OK, instantiating a specific Input class.
$className = $aeform->MakeClassName($aefield->Type, '');
$aefield = new $className($this->mod_globals, $aeform, $params);
}
$val = $aefield->AdminValidate();
if ($val[0])
{
$aefield->Store(true);
$url = $this->CreateLink($id, 'admin_edit_feedback_form', $returnid, '',
array('form_id'=>$aefield->FormId,'message'=>$this->Lang('field')." ".$params['op']), '', true);
$url = str_replace('&', '&', $url);
redirect($url);
}
else
{
$aefield->LoadField($params);
//$params['message']=$val[1];
//include "includes/AddEditField.inc";
return $this->AdminAddEditField($id, $params, $returnid, $val[1]);
}
}
function AdminUpdateFieldOrder($id, &$params, $returnid)
{
$aeform = new ffForm($this->mod_globals, $params);
$aeform->LoadForm($params);
$srcIndex = intval($params['field_index']);
$srcField = $aeform->Fields[$srcIndex];
if ($params['dir'] == 'up')
{
$destIndex = $srcIndex - 1;
}
else
{
$destIndex = $srcIndex + 1;
}
$destField = $aeform->Fields[$destIndex];
$tmpOrderBy = $destField->OrderBy;
$destField->OrderBy = $srcField->OrderBy;
$srcField->OrderBy = $tmpOrderBy;
$srcField->Store();
$destField->Store();
$url = $this->CreateLink($id, 'admin_edit_feedback_form', $returnid, '',
array('form_id'=>$aeform->FormId,'message'=>$this->Lang('field_order_updated')), '', true);
$url = str_replace('&', '&', $url);
redirect($url);
}
function AdminUpdateFieldRequired($id, &$params, $returnid)
{
$aeform = new ffForm($this->mod_globals, $params);
$aeform->LoadForm($params);
$srcIndex = intval($params['field_index']);
$srcField = $aeform->Fields[$srcIndex];
$srcField->Required = 1;
if ($params['active'] == 'off')
{
$srcField->Required = 0;
}
$srcField->Store();
$url = $this->CreateLink($id, 'admin_edit_feedback_form', $returnid, '',
array('form_id'=>$aeform->FormId,'message'=>$this->Lang('field_requirement_updated')), '', true);
$url = str_replace('&', '&', $url);
redirect($url);
}
function AdminDeleteForm($id, &$params, $returnid)
{
$aeform = new ffForm($this->mod_globals, $params);
$aeform->LoadForm($params);
$aeform->Delete();
$url = $this->CreateLink($id, 'admin_main_feedback', $returnid, '', array('message'=>$this->Lang('form_deleted')), '', true);
$url = str_replace('&', '&', $url);
redirect($url);
}
function AdminDeleteField($id, &$params, $returnid)
{
$aeform = new ffForm($this->mod_globals, $params);
$aefield = new ffInput($this->mod_globals, $aeform, $params);
$aefield->LoadOptions($params);
$aefield->Delete();
$url = $this->CreateLink($id, 'admin_edit_feedback_form', $returnid, '',
array('form_id'=>$aefield->FormId,'message'=>$this->Lang('field_deleted')), '', true);
$url = str_replace('&', '&', $url);
redirect($url);
}
function GetForms($order_by='name')
{
$db = $this->mod_globals->DBHandle;
$sql = "SELECT * FROM ".$this->form_table_name;
if($order_by != '')
{
$sql .= " ORDER BY $order_by";
}
$result = array();
$rs = $db->Execute($sql);
if($rs && $rs->RecordCount() > 0)
$result = $rs->GetArray();
return $result;
}
function GetFormIDFromAlias($form_alias)
{
$db = $this->mod_globals->DBHandle; /* @var $db ADOConnection */
$sql = "SELECT form_id from ".$this->form_table_name." WHERE alias = ?";
$rs = $db->Execute($sql, array($form_alias));
if($rs && $rs->RecordCount() > 0)
{
$result = $rs->FetchRow();
}
return $result['form_id'];
}
function AdminStoreForm($id, &$params, $return_id)
{
$aeform = new ffForm($this->mod_globals, $params);
$aeform->Store();
if ($params['submit'] == $this->Lang('save'))
{
$url = $this->CreateLink($id, 'admin_main_feedback', $return_id, '',
array('message'=>$this->Lang('form')." ".$params['form_op']), '', true);
}
else
{
$url = $this->CreateLink($id, 'admin_edit_feedback_form', $return_id,
'', array('message'=>$this->Lang('form')." ".$params['form_op'],'form_id'=>$aeform->FormId), '', true);
}
$url = str_replace('&', '&', $url);
redirect($url);
}
function AdminStoreConfig($id, &$params, $return_id)
{
$aeconf = new ffConfig($params);
$aeconf->MergeConfig($this->mod_globals);
$aeconf->Store();
$url = $this->CreateLink($id, 'admin_main_feedback', $return_id, '',
array('message'=>$this->Lang('configuration_updated')), '', true);
$url = str_replace('&', '&', $url);
redirect($url);
}
function GetHelp($lang = 'en_US')
{
return $this->Lang('help');
}
}
# vim:ts=4 sw=4 noet
?>