示例#1
0
 /**
  * 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];
                 }
             }
         }
     }
 }
示例#2
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;
 }
示例#3
0
 /**
  * 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;
     }
 }