/** * Contructor plugin uniform * * @return void */ public static function contructPluginUniform() { $option = JSNUniformHelper::getPluginUniform(); if (isset($option) && !empty($option)) { if (is_array($option)) { foreach ($option as $k => $v) { $v = (array) $v; if ($v['value'] != '') { $plgName = $v['value']; JPluginHelper::importPlugin('uniform', $plgName); $dispatcher = JEventDispatcher::getInstance(); $results = $dispatcher->trigger($plgName, array()); echo $results[0]; } } } } }
/** * Save data * * @param Array $dataForms Data form * @param Array &$return Return * @param Array $post Post form * @param String $submissionsData Submission Data * @param String $fieldId Field Id * @param String $dataContentEmail Data content Email * @param Strig $nameFileByIndentifier Get name Field by Indentifier * @param String $requiredField required field * @param String $fileAttach Email File Attach * * @return boolean */ private function _save($dataForms, &$return, $post, $submissionsData, $dataContentEmail, $nameFileByIndentifier, $requiredField, $fileAttach, $recepientEmail) { $user = JFactory::getUser(); $ip = getenv('REMOTE_ADDR'); $country = $this->countryCityFromIP($ip); $browser = new Browser(); $checkSaveSubmission = true; $formSettings = !empty($dataForms->form_settings) ? json_decode($dataForms->form_settings) : ""; $plgName = JSNUniformHelper::getPluginUniform(); if (isset($plgName) && !empty($plgName)) { if (is_array($plgName)) { foreach ($plgName as $k => $v) { $v = (array) $v; $name = form_ . '' . $v['value']; $data[$v['value']] = $formSettings->{$name}; $data['post'] = $post; $data['sub'] = $submissionsData; if ($v['value'] == 'mailchimp') { if (isset($post['mailchimp_subcriber']) && $post['mailchimp_subcriber'] == 'on') { JPluginHelper::importPlugin('uniform', $v['value']); $dispatcher = JDispatcher::getInstance(); $dispatcher->trigger('saveFrontEnd', array($data)); } } } } } if (!empty($formSettings->action_save_submissions) && $formSettings->action_save_submissions == "No") { $checkSaveSubmission = false; } if ($checkSaveSubmission) { $dateTime = JHtml::_('date', 'now', JText::_('Y-m-d H:i:s')); $table = JTable::getInstance('JsnSubmission', 'JSNUniformTable'); $table->bind(array('form_id' => (int) $post['form_id'], 'user_id' => $user->id, 'submission_ip' => $ip, 'submission_country' => $country['country'], 'submission_country_code' => $country['country_code'], 'submission_browser' => $browser->getBrowser(), 'submission_browser_version' => $browser->getVersion(), 'submission_browser_agent' => $browser->getUserAgent(), 'submission_os' => $browser->getPlatform(), 'submission_created_by' => $user->id, 'submission_created_at' => $dateTime, 'submission_state' => 1)); if (!$table->store()) { $return->error = $table->getError(); return false; } } $this->_db->setQuery($this->_db->getQuery(true)->select('*')->from('#__jsn_uniform_templates')->where("form_id = " . (int) $dataForms->form_id)); $dataTemplates = $this->_db->loadObjectList(); $this->_db->setQuery($this->_db->getQuery(true)->select('*')->from('#__jsn_uniform_emails')->where("form_id = " . (int) $dataForms->form_id)); $dataEmails = $this->_db->loadObjectList(); if (count($recepientEmail)) { $recepientEmail = json_decode($recepientEmail); foreach ($recepientEmail as $recepient) { $recepient = explode('|', $recepient); $emailName = trim($recepient[0]); $email = trim(end($recepient)); $dataRecepient = (object) array('email_id' => '', 'form_id' => '', 'user_id' => '0', 'email_name' => $emailName, 'email_address' => $email, 'email_state' => '1'); $dataEmails = array_merge($dataEmails, array($dataRecepient)); } } $formSubmitter = isset($dataForms->form_submitter) ? json_decode($dataForms->form_submitter) : ''; $checkEmailSubmitter = true; $defaultSubject = isset($dataForms->form_title) ? $dataForms->form_title : ''; if ($dataTemplates) { foreach ($dataTemplates as $emailTemplate) { if (!empty($emailTemplate->template_message)) { $emailTemplate->template_message = preg_replace('/\\{\\$([^\\}]+)\\}/ie', '@$dataContentEmail["\\1"]', $emailTemplate->template_message); } else { $htmlMessage = array(); if ($dataContentEmail) { $htmlMessage = $this->_emailTemplateDefault($dataContentEmail, $nameFileByIndentifier, $requiredField); } $emailTemplate->template_message = $htmlMessage; } $emailTemplate->template_subject = preg_replace('/\\{\\$([^\\}]+)\\}/ie', '@$dataContentEmail["\\1"]', $emailTemplate->template_subject); $emailTemplate->template_subject = !empty($emailTemplate->template_subject) ? $emailTemplate->template_subject : $defaultSubject; $emailTemplate->template_from = preg_replace('/\\{\\$([^\\}]+)\\}/ie', '@$dataContentEmail["\\1"]', $emailTemplate->template_from); $emailTemplate->template_reply_to = preg_replace('/\\{\\$([^\\}]+)\\}/ie', '@$dataContentEmail["\\1"]', $emailTemplate->template_reply_to); $emailTemplate->template_subject = strip_tags($emailTemplate->template_subject); $emailTemplate->template_from = strip_tags($emailTemplate->template_from); $emailTemplate->template_reply_to = strip_tags($emailTemplate->template_reply_to); if ($emailTemplate->template_notify_to == 0 && count($formSubmitter)) { $checkEmailSubmitter = false; $listEmailSubmitter = array(); foreach ($formSubmitter as $item) { if (!empty($item)) { $emailSubmitter = new stdClass(); $emailSubmitter->email_address = isset($dataContentEmail[$item]) ? $dataContentEmail[$item] : ""; if (!empty($emailSubmitter->email_address)) { $listEmailSubmitter[] = $emailSubmitter; } } } $sent = $this->_sendEmailList($emailTemplate, $listEmailSubmitter, $fileAttach); // Set the success message if it was a success if (!JError::isError($sent)) { $msg = JText::_('JSN_UNIFORM_EMAIL_THANKS'); } } if ($emailTemplate->template_notify_to == 1) { $sent = $this->_sendEmailList($emailTemplate, $dataEmails, $fileAttach); // Set the success message if it was a success if (!JError::isError($sent)) { $msg = JText::_('JSN_UNIFORM_EMAIL_THANKS'); } } } } if ($checkEmailSubmitter && count($formSubmitter)) { $emailTemplate = new stdClass(); $htmlMessage = array(); if ($dataContentEmail) { $htmlMessage = $this->_emailTemplateDefault($dataContentEmail, $nameFileByIndentifier, $requiredField); } $emailTemplate->template_message = $htmlMessage; $listEmailSubmitter = array(); foreach ($formSubmitter as $item) { if (!empty($item)) { $emailSubmitter = new stdClass(); $emailSubmitter->email_address = isset($dataContentEmail[$item]) ? $dataContentEmail[$item] : ""; if (!empty($emailSubmitter->email_address)) { $listEmailSubmitter[] = $emailSubmitter; } } } $sent = $this->_sendEmailList($emailTemplate, $listEmailSubmitter); // Set the success message if it was a success if (!JError::isError($sent)) { $msg = JText::_('JSN_UNIFORM_EMAIL_THANKS'); } } if ($checkSaveSubmission) { foreach ($submissionsData as $submission) { if (!empty($submission)) { $submission['submission_id'] = $table->submission_id; if ($post['use_payment_gateway'] == 1) { $dispatcher = JEventDispatcher::getInstance(); JPluginHelper::importPlugin('uniform', (string) $dataForms->form_payment_type); if ($submission['field_type'] == 'choices' || $submission['field_type'] == 'list' || $submission['field_type'] == 'dropdown' || $submission['field_type'] == 'checkboxes' || $submission['field_type'] == 'currency' || $submission['field_type'] == 'number') { $fieldValue = $submission['submission_data_value']; if ($submission['field_type'] == 'list' || $submission['field_type'] == 'checkboxes') { $fieldValue = json_decode($fieldValue); $submissionValue = array(); foreach ($fieldValue as $itemValue) { $tmpMoney = explode('|', $itemValue); $moneyValue = trim($tmpMoney[1]); $moneyValue = $dispatcher->trigger('displayCurrency', $moneyValue); $qty = trim(end($tmpMoney)); $tmpMoney = trim($tmpMoney[0]) . ' (' . strip_tags($moneyValue[0]) . ' x ' . $qty . ')'; $submissionValue[] = json_encode($tmpMoney); } if (!empty($submissionValue)) { $submission['submission_data_value'] = '[' . implode(',', $submissionValue) . ']'; } } else { $tmpMoney = explode('|', $fieldValue); $moneyValue = trim($tmpMoney[1]); if ($moneyValue != '') { $moneyValue = $dispatcher->trigger('displayCurrency', $moneyValue); $qty = trim(end($tmpMoney)); $submission['submission_data_value'] = trim($tmpMoney[0]) . ' (' . strip_tags($moneyValue[0]) . ' x ' . $qty . ')'; } else { $submission['submission_data_value'] = $fieldValue; } } if ($submission['field_type'] == 'currency') { if (!empty($fieldValue)) { $fieldValue = str_replace(',', '.', $fieldValue); $currecyValue = $dispatcher->trigger('displayCurrency', $fieldValue); $currecyValue = strip_tags($currecyValue[0]); $submission['submission_data_value'] = $currecyValue; } } } } $tableSubmission = JTable::getInstance('JsnSubmissiondata', 'JSNUniformTable'); $tableSubmission->bind($submission); if (!$tableSubmission->store()) { $return->error = $tableSubmission->getError(); return false; } } } $this->_db->setQuery($this->_db->getQuery(true)->select('count(submission_id)')->from("#__jsn_uniform_submissions")->where("form_id=" . (int) $post['form_id'])); $countSubmission = $this->_db->loadResult(); $edition = defined('JSN_UNIFORM_EDITION') ? strtolower(JSN_UNIFORM_EDITION) : "free"; if ($countSubmission == 250 && $edition == "free") { $templateEmail = new stdClass(); $templateEmail->template_subject = $defaultSubject; $templateEmail->template_message = "<p>Hello there,</p>\n\t <p>This is a quick message to let you know you're getting lots of submissions of your form which will soon exceed limit. Please upgrade to PRO edition to accept unlimited number of submissions. <a href=\"http://www.joomlashine.com/joomla-extensions/jsn-uniform-download.html\" target=\"_blank\">Upgrade now</a>.</p>\n\t <p>Thank you and all the best,</p>\n\t <p>The JoomlaShine Team</p>"; $app = JFactory::getApplication(); $mailfrom = $app->getCfg('mailfrom'); $emailMaster = new stdClass(); $emailMaster->email_address = $mailfrom; $this->_sendEmailList($templateEmail, array($emailMaster)); } $table = JTable::getInstance('JsnForm', 'JSNUniformTable'); $table->bind(array('form_id' => (int) $post['form_id'], 'form_last_submitted' => date('Y-m-d H:i:s'), 'form_submission_cout' => $countSubmission)); if (!$table->store()) { $return->error = $table->getError(); return false; } } if (!empty($_SESSION['securimage_code_value'][$_POST['form_name']])) { unset($_SESSION['securimage_code_value'][$_POST['form_name']]); unset($_SESSION['securimage_code_disp'][$_POST['form_name']]); unset($_SESSION['securimage_code_ctime'][$_POST['form_name']]); } return true; }
/** * Override save method to save form fields to database * * @param array $data Data form * * @return boolean */ public function save($data) { $user = JFactory::getUser(); $post = $_POST; $checkCreate = true; $data['form_submitter'] = isset($post['form_submitter']) ? json_encode($post['form_submitter']) : ''; $data['form_post_action_data'] = isset($post['form_post_action_data' . $data['form_post_action']]) ? $post['form_post_action_data' . $data['form_post_action']] : ''; if ($data['form_post_action_data']) { $data['form_post_action_data'] = get_magic_quotes_gpc() == true || get_magic_quotes_runtime() == true ? stripslashes($data['form_post_action_data']) : $data['form_post_action_data']; } $data['form_notify_submitter'] = isset($data['form_notify_submitter']) ? "1" : "0"; $globalStyle = array(); if (!empty($post['form_style']['themes_style'])) { $themeStyle = array(); $themes = array(); foreach ($post['form_style']['themes_style'] as $key => $value) { if ($key == "light" || $key == "dark") { $themeStyle[$key] = $value; $themes[] = $key; } else { $globalStyle['themes_style'][$key] = $value; $globalStyle['themes'][] = $key; } } $post['form_style']['themes_style'] = $themeStyle; $post['form_style']['themes'] = $themes; } $formSettings = new stdClass(); $plgName = JSNUniformHelper::getPluginUniform(); if (isset($plgName) && !empty($plgName)) { if (is_array($plgName)) { foreach ($plgName as $k => $v) { $v = (array) $v; $name = form_ . '' . $v['value']; $formSettings->{$name} = !empty($post[$name]) ? $post[$name] : ''; JSNUniformControllerForm::do_ajax('saveBackEnd', $v['value'], $post[$name]); } } } $formSettings->form_btn_next_text = !empty($_POST['jsn_form_button']['form_btn_next_text']) ? $_POST['jsn_form_button']['form_btn_next_text'] : JText::_('NEXT'); $formSettings->form_btn_prev_text = !empty($_POST['jsn_form_button']['form_btn_prev_text']) ? $_POST['jsn_form_button']['form_btn_prev_text'] : JText::_('PREV'); $formSettings->form_btn_submit_text = !empty($_POST['jsn_form_button']['form_btn_submit_text']) ? $_POST['jsn_form_button']['form_btn_submit_text'] : JText::_('SUBMIT'); $formSettings->form_btn_reset_text = !empty($_POST['jsn_form_button']['form_btn_reset_text']) ? $_POST['jsn_form_button']['form_btn_reset_text'] : JText::_('RESET'); $formSettings->form_state_btn_reset_text = !empty($_POST['jsn_form_button']['form_state_btn_reset_text']) ? $_POST['jsn_form_button']['form_state_btn_reset_text'] : "No"; $formSettings->action_save_submissions = !empty($_POST['jsn_uniform_settings']['action_save_submissions']) ? $_POST['jsn_uniform_settings']['action_save_submissions'] : 0; $data['form_settings'] = json_encode($formSettings); $data['form_style'] = !empty($post['form_style']) ? json_encode($post['form_style']) : ""; $data['form_style'] = get_magic_quotes_gpc() == true || get_magic_quotes_runtime() == true ? stripslashes($data['form_style']) : $data['form_style']; $globalStyle = !empty($globalStyle) ? json_encode($globalStyle) : ""; $globalStyle = get_magic_quotes_gpc() == true || get_magic_quotes_runtime() == true ? stripslashes($globalStyle) : $globalStyle; $db = JFactory::getDBO(); $query = "REPLACE INTO `#__jsn_uniform_config` (name, value) VALUES ('form_style'," . $db->quote($globalStyle) . ")"; $db->setQuery($query); if (!$db->execute()) { JError::raiseWarning(500, $db->getErrorMsg()); } if (empty($data['form_id']) || $data['form_id'] == 0) { $data['form_created_by'] = $user->id; $data['form_created_at'] = date('Y-m-d H:i:s'); $edition = defined('JSN_UNIFORM_EDITION') ? JSN_UNIFORM_EDITION : "free"; if (strtolower($edition) == "free") { $dataListForm = JSNUniformHelper::getForms(); if (count($dataListForm) >= 3) { $checkCreate = false; } } } else { $data['form_modified_by'] = $user->id; $data['form_modified_at'] = date('Y-m-d H:i:s'); } if ($checkCreate) { if ($result = parent::save($data)) { $formId = $this->getState($this->getName() . '.id'); $this->saveField($data['form_id'], $data['form_layout']); $this->saveListEmail($post, $formId); $this->EmailTepmplates($formId, $data['form_id']); } return $result; } else { $msg = JText::sprintf('JSN_UNIFORM_YOU_HAVE_REACHED_THE_LIMITATION_OF_3_FORM_IN_FREE_EDITION', 0) . ' <a class="jsn-link-action" href="index.php?option=com_uniform&view=upgrade">' . JText::_("JSN_UNIFORM_UPGRADE_EDITION") . '</a>'; $this->setError($msg); return false; } }