Index: branches/5.1.x/core/units/form_submissions/form_submissions_eh.php =================================================================== diff -u -N -r12127 -r12657 --- branches/5.1.x/core/units/form_submissions/form_submissions_eh.php (.../form_submissions_eh.php) (revision 12127) +++ branches/5.1.x/core/units/form_submissions/form_submissions_eh.php (.../form_submissions_eh.php) (revision 12657) @@ -1,6 +1,6 @@ Application->IsAdmin()) { - if ($event->Name == 'OnCreate') { - // anybody can submit forms on front - return true; + class FormSubmissionsEventHandler extends kDBEventHandler { + + function CheckPermission(&$event) + { + if (!$this->Application->IsAdmin()) { + if ($event->Name == 'OnCreate') { + // anybody can submit forms on front + return true; + } } + return parent::CheckPermission($event); } - return parent::CheckPermission($event); - } - function mapPermissions() - { - parent::mapPermissions(); - $permissions = Array( - 'OnEdit' => Array('self' => 'view', 'subitem' => 'view'), - ); - $this->permMapping = array_merge($this->permMapping, $permissions); - } + function mapPermissions() + { + parent::mapPermissions(); + $permissions = Array( + 'OnEdit' => Array('self' => 'view', 'subitem' => 'view'), + ); + $this->permMapping = array_merge($this->permMapping, $permissions); + } - /** - * Returns filter block based on field element type - * - * @param string $element_type - * @return string - */ - function _getFilterBlock($element_type) - { - $mapping = Array ( - 'text' => 'grid_like_filter', - 'select' => 'grid_options_filter', - 'radio' => 'grid_options_filter', - 'checkbox' => 'grid_options_filter', - 'password' => 'grid_like_filter', - 'textarea' => 'grid_like_filter', - 'label' => 'grid_like_filter', - ); + /** + * Returns filter block based on field element type + * + * @param string $element_type + * @return string + */ + function _getFilterBlock($element_type) + { + $mapping = Array ( + 'text' => 'grid_like_filter', + 'select' => 'grid_options_filter', + 'radio' => 'grid_options_filter', + 'checkbox' => 'grid_options_filter', + 'password' => 'grid_like_filter', + 'textarea' => 'grid_like_filter', + 'label' => 'grid_like_filter', + ); - return $mapping[$element_type]; - } + return $mapping[$element_type]; + } - function OnBuildFormFields(&$event) - { - $form_id = $this->Application->GetVar('form_id'); - if (!$form_id) return ; + function OnBuildFormFields(&$event) + { + $form_id = $this->Application->GetVar('form_id'); + if (!$form_id) return ; - $conf_fields = $this->Application->getUnitOption($event->Prefix, 'Fields'); - $conf_grids = $this->Application->getUnitOption($event->Prefix, 'Grids'); + $conf_fields = $this->Application->getUnitOption($event->Prefix, 'Fields'); + $conf_grids = $this->Application->getUnitOption($event->Prefix, 'Grids'); - $helper =& $this->Application->recallObject('InpCustomFieldsHelper'); + $helper =& $this->Application->recallObject('InpCustomFieldsHelper'); - $fields = $this->Conn->Query('SELECT * FROM '.TABLE_PREFIX.'FormFields WHERE FormId = '.$form_id.' ORDER BY Priority DESC', 'FormFieldId'); - foreach ($fields as $field_id => $options) { - $conf_fields['fld_'.$field_id] = Array('type'=>'string', 'default'=>$options['DefaultValue']); - if ($options['Required']) { - $conf_fields['fld_'.$field_id]['required'] = 1; - } - if ($options['Validation'] == 1) { - $conf_fields['fld_'.$field_id]['formatter'] = 'kFormatter'; - $conf_fields['fld_'.$field_id]['regexp'] = '/^(' . REGEX_EMAIL_USER . '@' . REGEX_EMAIL_DOMAIN . ')$/i'; - } - if ($options['DisplayInGrid']) { - $title = $options['Prompt']; - if (substr($title, 0,1) == '+') { - $this->Application->Phrases->AddCachedPhrase('form_col_title'.$field_id, substr($title,1)); - $title = 'form_col_title'.$field_id; + $sql = 'SELECT * + FROM ' . TABLE_PREFIX . 'FormFields + WHERE FormId = ' . (int)$form_id . ' + ORDER BY Priority DESC'; + $fields = $this->Conn->Query($sql, 'FormFieldId'); + + foreach ($fields as $field_id => $options) { + $conf_fields['fld_'.$field_id] = Array('type'=>'string', 'default'=>$options['DefaultValue']); + if ($options['Required']) { + $conf_fields['fld_'.$field_id]['required'] = 1; } - $conf_grids['Default']['Fields']['fld_'.$field_id] = Array('title'=>$title, 'no_special' => 1, 'nl2br' => 1, 'first_chars' => 200, 'filter_block' => $this->_getFilterBlock($options['ElementType'])); - if ($options['Validation'] == 1) - { - $conf_grids['Default']['Fields']['fld_'.$field_id]['data_block'] = 'grid_email_td'; + if ($options['Validation'] == 1) { + $conf_fields['fld_'.$field_id]['formatter'] = 'kFormatter'; + $conf_fields['fld_'.$field_id]['regexp'] = '/^(' . REGEX_EMAIL_USER . '@' . REGEX_EMAIL_DOMAIN . ')$/i'; } + if ($options['DisplayInGrid']) { + $title = $options['Prompt']; + if (substr($title, 0,1) == '+') { + $this->Application->Phrases->AddCachedPhrase('form_col_title'.$field_id, substr($title,1)); + $title = 'form_col_title'.$field_id; + } + $conf_grids['Default']['Fields']['fld_'.$field_id] = Array('title'=>$title, 'no_special' => 1, 'nl2br' => 1, 'first_chars' => 200, 'filter_block' => $this->_getFilterBlock($options['ElementType'])); + if ($options['Validation'] == 1) + { + $conf_grids['Default']['Fields']['fld_'.$field_id]['data_block'] = 'grid_email_td'; + } + } + if ($options['ElementType'] == 'radio' || $options['ElementType'] == 'select') { + $conf_fields['fld_'.$field_id]['options'] = $helper->GetValuesHash( $options['ValueList'] ); + $conf_fields['fld_'.$field_id]['formatter'] = 'kOptionsFormatter'; + } + if ($options['ElementType'] == 'password') { + $conf_fields['fld_'.$field_id]['formatter'] = 'kPasswordFormatter'; + $conf_fields['fld_'.$field_id]['encryption_method'] = 'plain'; + $conf_fields['fld_'.$field_id]['verify_field'] = 'fld_'.$field_id.'_verify'; + } } - if ($options['ElementType'] == 'radio' || $options['ElementType'] == 'select') { - $conf_fields['fld_'.$field_id]['options'] = $helper->GetValuesHash( $options['ValueList'] ); - $conf_fields['fld_'.$field_id]['formatter'] = 'kOptionsFormatter'; - } - if ($options['ElementType'] == 'password') { - $conf_fields['fld_'.$field_id]['formatter'] = 'kPasswordFormatter'; - $conf_fields['fld_'.$field_id]['encryption_method'] = 'plain'; - $conf_fields['fld_'.$field_id]['verify_field'] = 'fld_'.$field_id.'_verify'; - } + + $this->Application->setUnitOption($event->Prefix, 'Fields', $conf_fields); + $this->Application->setUnitOption($event->Prefix, 'Grids', $conf_grids); } - $this->Application->setUnitOption($event->Prefix, 'Fields', $conf_fields); - $this->Application->setUnitOption($event->Prefix, 'Grids', $conf_grids); - } + function SetCustomQuery(&$event) + { + $object =& $event->getObject(); + $form_id = $this->Application->GetVar('form_id'); + $object->addFilter('form_filter','%1$s.FormId = '.$form_id); + } - function SetCustomQuery(&$event) - { - $object =& $event->getObject(); - $form_id = $this->Application->GetVar('form_id'); - $object->addFilter('form_filter','%1$s.FormId = '.$form_id); - } - - function GetPassedId(&$event) - { - if (!$this->Application->IsAdmin()) { - return 0; + function getPassedID(&$event) + { + if (!$this->Application->IsAdmin()) { + return 0; + } + return parent::getPassedID($event); } - return parent::getPassedID($event); - } - function OnCreate(&$event) - { - parent::OnCreate($event); - if ($event->status == erSUCCESS) { + function OnCreate(&$event) + { + parent::OnCreate($event); + if ($event->status == erSUCCESS) { - $this->Application->EmailEventAdmin('FORM.SUBMITTED'); - //$this->Application->EmailEventUser('FORM.SUBMITTED', null, 'to_email' = ) + $this->Application->EmailEventAdmin('FORM.SUBMITTED'); + //$this->Application->EmailEventUser('FORM.SUBMITTED', null, 'to_email' = ) - $event->redirect_params['opener'] = 's'; - $event->redirect_params['m_cat_id'] = 0; - $event->redirect = $this->Application->GetVar('success_template'); + $event->redirect_params['opener'] = 's'; + $event->redirect_params['m_cat_id'] = 0; + $event->redirect = $this->Application->GetVar('success_template'); + } } - } - -} - -?> \ No newline at end of file + } \ No newline at end of file