Пример #1
0
 function _save_form_wizard()
 {
     //generate XML code for the form
     $chronoform = array();
     $formdata = array();
     if (!empty($_POST['chronofield'])) {
         foreach ($_POST['chronofield'] as $key => $fielddata) {
             $formdata['field_' . $key] = array();
             foreach ($fielddata as $fieldname => $fieldvalue) {
                 $formdata['field_' . $key][$fieldname] = $fieldvalue;
             }
         }
     }
     //if easy mode, load the preset events actions
     if (isset($_POST['wizard_mode']) && $_POST['wizard_mode'] == 'easy') {
         $_POST['chronoaction'][3] = array('type' => 'show_html');
         $_POST['chronoaction'][5] = array('type' => 'event_loop');
         $_POST['chronoaction'][7] = array('type' => 'event_loop');
         $_POST['chronoaction'][16] = array('type' => 'handle_arrays');
     }
     //prepare the actions details for the model
     $formactionsdata = array();
     $action_count = 0;
     if (!empty($_POST['chronoaction'])) {
         foreach ($_POST['chronoaction'] as $key => $actiondata) {
             $type = $_data['ChronoformAction'][$action_count]['type'] = $actiondata['type'];
             $_data['ChronoformAction'][$action_count]['order'] = $key;
             if (isset($actiondata['action_' . $actiondata['type'] . '_' . $key . '_enabled'])) {
                 $_data['ChronoformAction'][$action_count]['enabled'] = $actiondata['action_' . $actiondata['type'] . '_' . $key . '_enabled'];
                 unset($actiondata['action_' . $actiondata['type'] . '_' . $key . '_enabled']);
             } else {
                 $_data['ChronoformAction'][$action_count]['enabled'] = 1;
             }
             //$_data['ChronoformAction'][$action_count]['event'] = $actiondata['action_'.$actiondata['type'].'_'.$key.'_event'];
             //unset($actiondata['action_'.$actiondata['type'].'_'.$key.'_event']);
             if (isset($actiondata['action_' . $actiondata['type'] . '_' . $key . '_content1'])) {
                 $_data['ChronoformAction'][$action_count]['content1'] = $actiondata['action_' . $actiondata['type'] . '_' . $key . '_content1'];
                 unset($actiondata['action_' . $actiondata['type'] . '_' . $key . '_content1']);
             }
             unset($actiondata['type']);
             foreach ($actiondata as $actionname => $actionvalue) {
                 $actiondata[str_replace('action_' . $type . '_' . $key . '_', '', $actionname)] = $actionvalue;
                 unset($actiondata[$actionname]);
             }
             $_data['ChronoformAction'][$action_count]['params'] = $actiondata;
             $action_count++;
         }
     }
     $chronoform['formcode'] = $formdata;
     /*print_r2($_data);
     		die();
     		/*echo '<pre>';
     		print_r($formdata);
     		print_r($_data);
     		print_r($_POST['_form_actions_events_map']);
     		echo '</pre>';*/
     //save form
     $mainframe =& JFactory::getApplication();
     $database =& JFactory::getDBO();
     $row = JTable::getInstance('chronoforms', 'Table');
     if (isset($_POST['data']['Chronoform']['id']) && !empty($_POST['data']['Chronoform']['id'])) {
         $_data['Chronoform']['id'] = $_POST['data']['Chronoform']['id'];
         if (isset($_POST['wizard_mode'])) {
             // && $_POST['wizard_mode'] == 'easy'){
             //load the form
             $database =& JFactory::getDBO();
             $database->setQuery("SELECT * FROM #__chronoforms WHERE id='" . $_data['Chronoform']['id'] . "'");
             $form = $database->loadObject();
             //$_data['Chronoform']['params'] = 'form_mode='.$_POST['wizard_mode'].''."\n".trim($form->params)."\n".'form_mode='.$_POST['wizard_mode'];
             $form_params = new JParameter($form->params);
             $form_params->set('form_mode', $_POST['wizard_mode']);
             $form_params->set('tight_layout', $_POST['params']['tight_layout']);
             $_data['Chronoform']['params'] = $form_params->toString();
         }
     } else {
         $_data['Chronoform']['form_type'] = 1;
         //this is a new form, set it as WIZARD form
         if (isset($_POST['wizard_mode'])) {
             // && $_POST['wizard_mode'] == 'easy'){
             //$_data['Chronoform']['params'] = 'form_mode='.$_POST['wizard_mode'];
             $form_params = new JParameter('');
             $form_params->set('form_mode', $_POST['wizard_mode']);
             $form_params->set('tight_layout', $_POST['params']['tight_layout']);
             $_data['Chronoform']['params'] = $form_params->toString();
         }
     }
     $_POST['data']['Chronoform']['name'] = $_data['Chronoform']['name'] = $_POST['chronoform_name'];
     $_data['Chronoform']['published'] = $_POST['chronoform_published'];
     $_data['Chronoform']['app'] = $_POST['data']['Chronoform']['app'];
     if (isset($_POST['form_type']) && (int) $_POST['form_type'] != 0) {
         $_data['Chronoform']['content'] = ChronoFormsAdmin::_processWizardCode($formdata);
         $_data['Chronoform']['wizardcode'] = var_export($formdata, true);
         /*if(strpos($form->form_details->content, 'validate[') !== false){
         			
         		}*/
     }
     //get the actions events map
     $_data['Chronoform']['events_actions_map'] = base64_encode(serialize($_POST['_form_actions_events_map']['myform']));
     //if easy mode, load the preset events map
     if (isset($_POST['wizard_mode']) && $_POST['wizard_mode'] == 'easy') {
         $_data['Chronoform']['events_actions_map'] = "YToxOntzOjY6ImV2ZW50cyI7YToyOntzOjQ6ImxvYWQiO2E6MTp7czo3OiJhY3Rpb25zIjthOjQ6e3M6MTg6ImNmYWN0aW9uX2xvYWRfanNfMCI7czowOiIiO3M6MTk6ImNmYWN0aW9uX2xvYWRfY3NzXzEiO3M6MDoiIjtzOjIzOiJjZmFjdGlvbl9sb2FkX2NhcHRjaGFfMiI7czowOiIiO3M6MjA6ImNmYWN0aW9uX3Nob3dfaHRtbF8zIjtzOjA6IiI7fX1zOjY6InN1Ym1pdCI7YToxOntzOjc6ImFjdGlvbnMiO2E6MTI6e3M6MjQ6ImNmYWN0aW9uX2NoZWNrX2NhcHRjaGFfNCI7YToxOntzOjY6ImV2ZW50cyI7YToyOntzOjM3OiJjZmFjdGlvbmV2ZW50X2NoZWNrX2NhcHRjaGFfNF9zdWNjZXNzIjtzOjA6IiI7czozNDoiY2ZhY3Rpb25ldmVudF9jaGVja19jYXB0Y2hhXzRfZmFpbCI7YToxOntzOjc6ImFjdGlvbnMiO2E6MTp7czoyMToiY2ZhY3Rpb25fZXZlbnRfbG9vcF81IjtzOjA6IiI7fX19fXM6MjM6ImNmYWN0aW9uX3VwbG9hZF9maWxlc182IjthOjE6e3M6NjoiZXZlbnRzIjthOjI6e3M6MzY6ImNmYWN0aW9uZXZlbnRfdXBsb2FkX2ZpbGVzXzZfc3VjY2VzcyI7czowOiIiO3M6MzM6ImNmYWN0aW9uZXZlbnRfdXBsb2FkX2ZpbGVzXzZfZmFpbCI7YToxOntzOjc6ImFjdGlvbnMiO2E6MTp7czoyMToiY2ZhY3Rpb25fZXZlbnRfbG9vcF83IjtzOjA6IiI7fX19fXM6MjI6ImNmYWN0aW9uX2N1c3RvbV9jb2RlXzgiO3M6MDoiIjtzOjI1OiJjZmFjdGlvbl9oYW5kbGVfYXJyYXlzXzE2IjtzOjA6IiI7czoxODoiY2ZhY3Rpb25fZGJfc2F2ZV85IjtzOjA6IiI7czoxNzoiY2ZhY3Rpb25fZW1haWxfMTAiO3M6MDoiIjtzOjE3OiJjZmFjdGlvbl9lbWFpbF8xMSI7czowOiIiO3M6MTc6ImNmYWN0aW9uX2VtYWlsXzEyIjtzOjA6IiI7czoyMzoiY2ZhY3Rpb25fY3VzdG9tX2NvZGVfMTMiO3M6MDoiIjtzOjMxOiJjZmFjdGlvbl9zaG93X3RoYW5rc19tZXNzYWdlXzE0IjtzOjA6IiI7czoyNToiY2ZhY3Rpb25fcmVkaXJlY3RfdXNlcl8yMCI7czowOiIiO3M6MjA6ImNmYWN0aW9uX2RlYnVnZ2VyXzE4IjtzOjA6IiI7fX19fQ==";
     }
     if (!$row->bind($_data['Chronoform'])) {
         JError::raiseWarning(100, $row->getError());
         $mainframe->redirect("index.php?option=com_chronoforms");
     }
     if (!$row->store()) {
         JError::raiseWarning(100, $row->getError());
         $mainframe->redirect("index.php?option=com_chronoforms");
     }
     $chronoform_id = $row->id;
     //save actions
     if (isset($_data['ChronoformAction']) && !empty($_data['ChronoformAction'])) {
         //delete previous actions to save new ones
         if (isset($_POST['data']['Chronoform']['id']) && !empty($_POST['data']['Chronoform']['id'])) {
             $database->setQuery("DELETE FROM #__chronoform_actions WHERE chronoform_id='" . $_POST['data']['Chronoform']['id'] . "'");
             if (!$database->query()) {
                 JError::raiseWarning(100, $row->getError());
                 $mainframe->redirect("index.php?option=com_chronoforms");
             }
         }
         //save all new actions
         foreach ($_data['ChronoformAction'] as $action) {
             $row = JTable::getInstance('chronoformactions', 'Table');
             $action['chronoform_id'] = $chronoform_id;
             $params = new JParameter('');
             if (isset($action['params']) && is_array($action['params'])) {
                 foreach ($action['params'] as $k => $param) {
                     $params->set($k, $param);
                 }
                 $action['params'] = $params->toString();
             }
             if (!$row->bind($action)) {
                 JError::raiseWarning(100, $row->getError());
                 $mainframe->redirect("index.php?option=com_chronoforms");
             }
             if (!$row->store()) {
                 JError::raiseWarning(100, $row->getError());
                 $mainframe->redirect("index.php?option=com_chronoforms");
             }
         }
     }
     return $chronoform_id;
 }