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; }