Index: branches/5.1.x/core/units/forms/forms_eh.php =================================================================== diff -u -N --- branches/5.1.x/core/units/forms/forms_eh.php (revision 13168) +++ branches/5.1.x/core/units/forms/forms_eh.php (revision 0) @@ -1,213 +0,0 @@ - Array('self' => true), - ); - - $this->permMapping = array_merge($this->permMapping, $permissions); - } - - function OnCreateSubmissionNodes(&$event) - { - if (defined('IS_INSTALL') && IS_INSTALL) { - // skip any processing, because Forms table doesn't exists until install is finished - return ; - } - $sections = $this->Application->getUnitOption($event->Prefix, 'Sections'); - - $forms = $this->Conn->GetCol('SELECT Title, FormId FROM '.TABLE_PREFIX.'Forms ORDER BY Title ASC', 'FormId'); - if (!$forms || count($forms) == 0) { - return; - } - - $form_subsection = Array( - 'parent' => 'in-portal:forms', - 'icon' => 'form_submission', - 'label' => '', - 'url' => Array('t' => 'submissions/submissions_list', 'pass' => 'm,form'), - 'permissions' => Array('view', 'add', 'edit', 'delete'), - 'priority' => 1, - 'type' => stTREE, - ); - - $priority = 1; - foreach ($forms as $form_id => $form_name) { - $this->Application->Phrases->AddCachedPhrase('form_sub_label_'.$form_id, $form_name); - $this->Application->Phrases->AddCachedPhrase('la_description_in-portal:submissions:'.$form_id, $form_name.' Submissions'); - $form_subsection['label'] = 'form_sub_label_'.$form_id; - $form_subsection['url']['form_id'] = $form_id; - $form_subsection['priority'] = $priority++; - $sections['in-portal:submissions:'.$form_id] = $form_subsection; - } - - $this->Application->setUnitOption($event->Prefix, 'Sections', $sections); - } - - function OnSave(&$event) - { - parent::OnSave($event); - - if ($event->status == erSUCCESS) { - $this->OnCreateFormFields($event); - - $this->_deleteSectionCache(); - } - } - - function OnMassDelete(&$event) - { - parent::OnMassDelete($event); - - if ($event->status == erSUCCESS) { - $this->_deleteSectionCache(); - } - } - - function _deleteSectionCache() - { - $reset_event = new kEvent('adm:OnResetSections'); - $this->Application->HandleEvent($reset_event); - - $this->Application->StoreVar('RefreshStructureTree', 1); - } - - /** - * Dynamically fills customdata config - * - * @param kEvent $event - */ - function OnCreateFormFields(&$event) - { - $cur_fields = $this->Conn->Query('DESCRIBE '.TABLE_PREFIX.'FormSubmissions', 'Field'); - $cur_fields = array_keys($cur_fields); - - // keep all fields, that are not created on the fly (includes ones, that are added during customizations) - foreach ($cur_fields as $field_index => $field_name) { - if (!preg_match('/^fld_[\d]+/', $field_name)) { - unset($cur_fields[$field_index]); - } - } - - $desired_fields = $this->Conn->GetCol('SELECT CONCAT(\'fld_\', FormFieldId) FROM '.TABLE_PREFIX.'FormFields ORDER BY FormFieldId'); - - $sql = array(); - - $fields_to_add = array_diff($desired_fields, $cur_fields); - foreach ($fields_to_add as $field) { - $field_expression = $field.' Text NULL'; - $sql[] = 'ADD COLUMN '.$field_expression; - } - - $fields_to_drop = array_diff($cur_fields, $desired_fields); - foreach ($fields_to_drop as $field) { - $sql[] = 'DROP COLUMN '.$field; - } - - if ($sql) { - $query = 'ALTER TABLE '.TABLE_PREFIX.'FormSubmissions '.implode(', ', $sql); - $this->Conn->Query($query); - } - } - - /*function GetPassedId($event) - { - return 0; - } - - function LoadItem(&$event) - { - $object =& $event->getObject(); - $object->SetField('Id',0); - $object->SetId(0); - } -*/ - /** - * Enter description here... - * - * @param kEvent $event - */ - function OnFormSubmit(&$event) - { - $object =& $event->GetObject(); - - $fields = explode(',',$this->Application->GetVar('fields')); - $required_fields = explode(',', $this->Application->GetVar('required_fields')); - $fields_params = $this->Application->GetVar('fields_params'); - - foreach ($fields as $field) { - $virt_fields[$field] = Array(); - if (in_array($field, $required_fields)) { - $virt_fields[$field]['required'] = 1; - } - $params = getArrayValue($fields_params, $field); - if ($params !== false) { - if (getArrayValue($params, 'Type') == 'email') { - //'formatter'=>'kFormatter', 'regexp'=>'/^(' . REGEX_EMAIL_USER . '@' . REGEX_EMAIL_DOMAIN . ')$/i', 'error_msgs' => Array('invalid_format'=>'!la_invalid_email!') - $virt_fields[$field]['formatter'] = 'kFormatter'; - $virt_fields[$field]['regexp'] = '/^(' . REGEX_EMAIL_USER . '@' . REGEX_EMAIL_DOMAIN . ')$/i'; - $virt_fields[$field]['error_msgs'] = Array('invalid_format'=>'!la_invalid_email!'); - } - if (getArrayValue($params, 'Type') == 'file') { - $virt_fields[$field]['formatter'] = 'kUploadFormatter'; - $virt_fields[$field]['upload_dir'] = '/uploads/sketches/'; - } - } - } - $object->SetVirtualFields($virt_fields); - - $field_values = $this->getSubmittedFields($event); - - - $checkboxes = Array('MailingList', 'In-Link', 'In-Newz', 'In-Bulletin'); - $checkboxes = explode(',', $this->Application->GetVar('checkbox_fields')); - foreach ($checkboxes as $checkbox) { - if (isset($field_values[$checkbox])) { - $field_values[$checkbox] = 1; - } - else { - $field_values[$checkbox] = '0'; - } - } - - $object->SetFieldsFromHash($field_values); - if ($object->Validate()) { - $event->redirect = $this->Application->GetVar('success_template'); - $this->Application->EmailEventAdmin($this->Application->GetVar('email_event')); - $this->Application->EmailEventUser($this->Application->GetVar('email_event'), null, - Array('to_email' => $field_values[$this->Application->GetVar('email_field')], - 'to_name' => $field_values[$this->Application->GetVar('name_field')])); - - if ($field_values['MailingList']) { - $this->Application->StoreVar('SubscriberEmail', $field_values['Email']); - $this->Application->HandleEvent($sub_event, 'u:OnSubscribeUser', Array('no_unsubscribe' => 1)); - } - } - else { - $event->status = erFAIL; - } - } -} \ No newline at end of file