function submit() { global $database, $ff_config, $ff_comsite, $ff_mossite, $ff_otherparams; // CONTENTBUILDER BEGIN $cbRecordId = 0; $cbEmailNotifications = false; $cbEmailUpdateNotifications = false; $cbResult = $this->cbCheckPermissions(); if ($cbResult['data'] !== null && $cbResult['data']['email_notifications']) { if (!JRequest::getInt('cb_record_id', 0)) { $cbEmailNotifications = true; } else { $cbEmailNotifications = false; } } if ($cbResult['data'] !== null && $cbResult['data']['email_update_notifications']) { if (JRequest::getInt('cb_record_id', 0)) { $cbEmailUpdateNotifications = true; } else { $cbEmailUpdateNotifications = false; } } if ($cbResult['data'] === null) { $cbEmailNotifications = true; $cbEmailUpdateNotifications = true; } // CONTENTBUILDER END $database = JFactory::getDBO(); if (!$this->okrun) { return; } // currently only available in classic mode if (trim($this->formrow->template_code_processed) == '') { set_error_handler('_ff_errorHandler'); } ob_start(); $this->record_id = ''; $this->status = _FF_STATUS_OK; $this->message = ''; $this->sendNotificationAfterPayment = false; // handle Begin Submit piece $halt = false; $this->collectSubmitdata($cbResult); if (!$halt) { require_once JPATH_SITE . '/administrator/components/com_breezingforms/libraries/Zend/Json/Decoder.php'; require_once JPATH_SITE . '/administrator/components/com_breezingforms/libraries/Zend/Json/Encoder.php'; require_once JPATH_SITE . '/administrator/components/com_breezingforms/libraries/crosstec/functions/helpers.php'; $dataObject = Zend_Json::decode(base64_decode($this->formrow->template_code)); $rootMdata = $dataObject['properties']; if (JRequest::getVar('ff_applic', '') != 'mod_facileforms' && JRequest::getInt('ff_frame', 0) != 1 && bf_is_mobile()) { $is_device = true; $this->isMobile = isset($rootMdata['mobileEnabled']) && isset($rootMdata['forceMobile']) && $rootMdata['mobileEnabled'] && $rootMdata['forceMobile'] ? true : (isset($rootMdata['mobileEnabled']) && isset($rootMdata['forceMobile']) && $rootMdata['mobileEnabled'] && JFactory::getSession()->get('com_breezingforms.mobile', false) ? true : false); } else { $this->isMobile = false; } // transforming recaptcha into captcha due to compatibility on mobiles if ($this->isMobile && trim($this->formrow->template_code_processed) == 'QuickMode') { for ($i = 0; $i < $this->rowcount; $i++) { $row = $this->rows[$i]; if ($row->type == "ReCaptcha") { $this->rows[$i]->type = 'Captcha'; break; } } } for ($i = 0; $i < $this->rowcount; $i++) { $row = $this->rows[$i]; if ($row->type == "Captcha") { require_once JPATH_SITE . '/components/com_breezingforms/images/captcha/securimage.php'; $securimage = new Securimage(); if (!$securimage->check(JRequest::getVar('bfCaptchaEntry', ''))) { $halt = true; $this->status = _FF_STATUS_CAPTCHA_FAILED; exit; } break; } else { if ($row->type == "ReCaptcha") { if (!JFactory::getSession()->get('bfrecapsuccess', false)) { $halt = true; $this->status = _FF_STATUS_CAPTCHA_FAILED; exit; } JFactory::getSession()->set('bfrecapsuccess', false); break; } } } require_once JPATH_SITE . '/administrator/components/com_breezingforms/libraries/Zend/Json/Decoder.php'; require_once JPATH_SITE . '/administrator/components/com_breezingforms/libraries/Zend/Json/Encoder.php'; $areas = Zend_Json::decode($this->formrow->template_areas); if (is_array($areas)) { switch (JRequest::getVar('ff_payment_method', '')) { case 'PayPal': case 'Sofortueberweisung': foreach ($areas as $area) { foreach ($area['elements'] as $element) { if ($element['internalType'] == 'bfPayPal' || $element['internalType'] == 'bfSofortueberweisung') { $options = $element['options']; if (isset($options['sendNotificationAfterPayment']) && $options['sendNotificationAfterPayment']) { $this->sendNotificationAfterPayment = true; } } } } } } } if (!$halt) { $code = ''; switch ($this->formrow->piece3cond) { case 1: // library $database->setQuery("select name, code from #__facileforms_pieces " . "where id=" . $this->formrow->piece3id . " and published=1 "); $rows = $database->loadObjectList(); if (count($rows)) { echo $this->execPiece($rows[0]->code, BFText::_('COM_BREEZINGFORMS_PROCESS_BSPIECE') . " " . $rows[0]->name, 'p', $this->formrow->piece3id, null); } break; case 2: // custom code echo $this->execPiece($this->formrow->piece3code, BFText::_('COM_BREEZINGFORMS_PROCESS_BSPIECEC'), 'f', $this->form, 3); break; default: break; } // switch if ($this->bury()) { return; } if ($this->status == _FF_STATUS_OK) { if (!$this->formrow->published) { $this->status = _FF_STATUS_UNPUBLISHED; } else { if ($this->status == _FF_STATUS_OK) { if ($this->formrow->dblog > 0) { $cbRecordId = $this->logToDatabase($cbResult); } if ($this->status == _FF_STATUS_OK) { if ($this->formrow->emailntf > 0 && ($cbEmailNotifications || $cbEmailUpdateNotifications)) { // CONTENTBUILDER $this->sendEmailNotification(); } if ($this->formrow->mb_emailntf > 0 && ($cbEmailNotifications || $cbEmailUpdateNotifications)) { // CONTENTBUILDER $this->sendMailbackNotification(); } // DROPBOX if ($this->formrow->dropbox_submission_enabled) { if ($this->formrow->dropbox_email && $this->formrow->dropbox_password) { if (!class_exists('DropboxUploader')) { require_once JPATH_SITE . DS . 'administrator' . DS . 'components' . DS . 'com_breezingforms' . DS . 'libraries' . DS . 'dropbox' . DS . 'dropbox.php'; } try { $dropbox = new DropboxUploader($this->formrow->dropbox_email, $this->formrow->dropbox_password); if ($this->formrow->dropbox_email && $this->formrow->dropbox_password) { $dropbox_types = explode(',', $this->formrow->dropbox_submission_types); foreach ($dropbox_types as $dropbox_type) { $dropbox_file = ''; switch ($dropbox_type) { case 'pdf': $dropbox_file = $this->exppdf(); break; case 'csv': $dropbox_file = $this->expcsv(); break; case 'xml': $dropbox_file = $this->expxml(); break; } if ($dropbox_file != '') { $dropbox->upload($dropbox_file, '/' . ($this->formrow->dropbox_folder != '' ? $this->formrow->dropbox_folder : $this->formrow->name)); } } } } catch (Exception $e) { } } } $this->sendMailChimpNotification(); $this->sendSalesforceNotification(); JPluginHelper::importPlugin('breezingforms_addons'); $dispatcher = JDispatcher::getInstance(); $dispatcher->trigger('onPropertiesExecute', array($this)); $tickets = JFactory::getSession()->get('bfFlashUploadTickets', array()); mt_srand(); if (isset($tickets[JRequest::getVar('bfFlashUploadTicket', mt_rand(0, mt_getrandmax()))])) { unset($tickets[JRequest::getVar('bfFlashUploadTicket')]); JFactory::getSession()->set('bfFlashUploadTickets', $tickets); } } } // if } // if } // if // handle End Submit piece JFactory::getDbo()->setQuery("SELECT MAX(id) FROM #__facileforms_records"); $lastid = JFactory::getDbo()->loadResult(); $_SESSION['virtuemart_bf_id'] = $lastid; $session = JFactory::getSession(); $session->set('virtuemart_bf_id', $lastid); $code = ''; switch ($this->formrow->piece4cond) { case 1: // library $database->setQuery("select name, code from #__facileforms_pieces " . "where id=" . $this->formrow->piece4id . " and published=1 "); $rows = $database->loadObjectList(); if (count($rows)) { echo $this->execPiece($rows[0]->code, BFText::_('COM_BREEZINGFORMS_PROCESS_ESPIECE') . " " . $rows[0]->name, 'p', $this->formrow->piece4id, null); } break; case 2: // custom code echo $this->execPiece($this->formrow->piece4code, BFText::_('COM_BREEZINGFORMS_PROCESS_ESPIECEC'), 'f', $this->form, 3); break; default: break; } // switch if ($this->bury()) { return; } } switch ($this->status) { case _FF_STATUS_OK: $message = BFText::_('COM_BREEZINGFORMS_PROCESS_SUBMITSUCCESS'); break; case _FF_STATUS_UNPUBLISHED: $message = BFText::_('COM_BREEZINGFORMS_PROCESS_UNPUBLISHED'); break; case _FF_STATUS_SAVERECORD_FAILED: $message = BFText::_('COM_BREEZINGFORMS_PROCESS_SAVERECFAILED'); break; case _FF_STATUS_SAVESUBRECORD_FAILED: $message = BFText::_('COM_BREEZINGFORMS_PROCESS_SAVESUBFAILED'); break; case _FF_STATUS_UPLOAD_FAILED: $message = BFText::_('COM_BREEZINGFORMS_PROCESS_UPLOADFAILED'); break; case _FF_STATUS_SENDMAIL_FAILED: $message = BFText::_('COM_BREEZINGFORMS_PROCESS_SENDMAILFAILED'); break; case _FF_STATUS_ATTACHMENT_FAILED: $message = BFText::_('COM_BREEZINGFORMS_PROCESS_ATTACHMTFAILED'); break; case _FF_STATUS_CAPTCHA_FAILED: $message = BFText::_('COM_BREEZINGFORMS_CAPTCHA_ENTRY_FAILED'); break; case _FF_STATUS_FILE_EXTENSION_NOT_ALLOWED: $message = BFText::_('COM_BREEZINGFORMS_FILE_EXTENSION_NOT_ALLOWED'); break; default: $message = ''; // custom piece status and message break; } // switch // built in PayPal action $paymentAction = false; if ($this->formrow->template_code != '') { require_once JPATH_SITE . '/administrator/components/com_breezingforms/libraries/Zend/Json/Decoder.php'; require_once JPATH_SITE . '/administrator/components/com_breezingforms/libraries/Zend/Json/Encoder.php'; $areas = Zend_Json::decode($this->formrow->template_areas); if (is_array($areas)) { jimport('joomla.version'); $version = new JVersion(); $j15 = true; if (version_compare($version->getShortVersion(), '1.6', '>=')) { $j15 = false; } $paymentAction = true; switch (JRequest::getVar('ff_payment_method', '')) { case 'PayPal': foreach ($areas as $area) { foreach ($area['elements'] as $element) { if ($element['internalType'] == 'bfPayPal') { $options = $element['options']; $business = $options['business']; $paypal = 'https://www.paypal.com'; if ($options['testaccount']) { $paypal = 'https://www.sandbox.paypal.com'; $business = $options['testBusiness']; } $returnurl = htmlentities(JURI::root() . "index.php?option=com_breezingforms&confirmPayPal=true&form_id=" . $this->form . "&record_id=" . $this->record_id); $cancelurl = htmlentities(JURI::root() . "index.php?msg=" . BFText::_('Transaction Cancelled')); $html = ''; if (!$this->inline) { $html .= '<html><head></head><body>'; } JHTML::_('behavior.modal'); $ppselect = JRequest::getVar('ff_nm_bfPaymentSelect', array()); if (count($ppselect) != 0) { $ppselected = explode('|', $ppselect[0]); if (count($ppselected) == 4) { $options['itemname'] = htmlentities($ppselected[0], ENT_QUOTES, 'UTF-8'); $options['itemnumber'] = htmlentities($ppselected[1], ENT_QUOTES, 'UTF-8'); $options['amount'] = htmlentities($ppselected[2], ENT_QUOTES, 'UTF-8'); $options['tax'] = htmlentities($ppselected[3], ENT_QUOTES, 'UTF-8'); } } // keeping this for compat reasons $ppselect = JRequest::getVar('ff_nm_PayPalSelect', array()); if (count($ppselect) != 0) { $ppselected = explode('|', $ppselect[0]); if (count($ppselected) == 4) { $options['itemname'] = htmlentities($ppselected[0], ENT_QUOTES, 'UTF-8'); $options['itemnumber'] = htmlentities($ppselected[1], ENT_QUOTES, 'UTF-8'); $options['amount'] = htmlentities($ppselected[2], ENT_QUOTES, 'UTF-8'); $options['tax'] = htmlentities($ppselected[3], ENT_QUOTES, 'UTF-8'); } } // compat end $html .= "<form name=\"ff_submitform\" action=\"" . $paypal . "/cgi-bin/webscr\" method=\"post\">"; $html .= "<input type=\"hidden\" name=\"cmd\" value=\"_xclick\"/>"; $html .= "<input type=\"hidden\" name=\"business\" value=\"" . $business . "\"/>"; $html .= "<input type=\"hidden\" name=\"item_name\" value=\"" . $options['itemname'] . "\"/>"; $html .= "<input type=\"hidden\" name=\"item_number\" value=\"" . $options['itemnumber'] . "\"/>"; $html .= "<input type=\"hidden\" name=\"amount\" value=\"" . $options['amount'] . "\"/>"; $html .= "<input type=\"hidden\" name=\"tax\" value=\"" . $options['tax'] . "\"/>"; $html .= "<input type=\"hidden\" name=\"no_shipping\" value=\"1\"/>"; $html .= "<input type=\"hidden\" name=\"no_note\" value=\"1\"/>"; if ($options['useIpn']) { $html .= "<input type=\"hidden\" name=\"notify_url\" value=\"" . htmlentities(JURI::root() . "index.php?option=com_breezingforms&confirmPayPalIpn=true&raw=true&form_id=" . $this->form . "&record_id=" . $this->record_id) . "\"/>"; if ($options['testaccount']) { $html .= "<input type=\"hidden\" name=\"test_ipn\" value=\"1\"/>"; } } else { $html .= "<input type=\"hidden\" name=\"notify_url\" value=\"" . $returnurl . "\"/>"; } $html .= "<input type=\"hidden\" name=\"return\" value=\"" . $returnurl . "\"/>"; $html .= "<input type=\"hidden\" name=\"cancel_return\" value=\"" . $cancelurl . "\"/>"; $html .= "<input type=\"hidden\" name=\"rm\" value=\"2\"/>"; $html .= "<input type=\"hidden\" name=\"lc\" value=\"" . $options['locale'] . "\"/>"; //$html .= "<input type=\"hidden\" name=\"pal\" value=\"D6MXR7SEX68LU\"/>"; $html .= "<input type=\"hidden\" name=\"currency_code\" value=\"" . strtoupper($options['currencyCode']) . "\"/>"; if (!$this->inline) { $html .= "</form></body></html>"; } // TODO: let the user decide to use modal or simple alert if ($j15) { $html .= '<script type="text/javascript">' . nl() . indentc(1) . '<!--' . nl() . indentc(2) . ' SqueezeBox.initialize({}); SqueezeBox.loadModal = function(modalUrl,handler,x,y) { this.initialize(); var options = $merge(options || {}, Json.evaluate("{handler: \'" + handler + "\', size: {x: " + x +", y: " + y + "}}")); this.setOptions(this.presets, options); this.assignOptions(); this.setContent(handler,modalUrl); }; SqueezeBox.loadModal("' . JURI::root() . 'index.php?raw=true&option=com_breezingforms&showPayPalConnectMsg=true","iframe",300,100); ' . nl() . indentc(1) . '// -->' . nl() . '</script>' . nl(); } $html .= '<script type="text/javascript"><!--' . nl() . 'document.ff_submitform.submit();' . nl() . '//--></script>'; echo $html; break; } } } break; case 'Sofortueberweisung': foreach ($areas as $area) { foreach ($area['elements'] as $element) { if ($element['internalType'] == 'bfSofortueberweisung') { $html = ''; if (!$this->inline) { $html .= '<html><head></head><body>'; } JHTML::_('behavior.modal'); $options = $element['options']; $ppselect = JRequest::getVar('ff_nm_bfPaymentSelect', array()); if (count($ppselect) != 0) { $ppselected = explode('|', $ppselect[0]); if (count($ppselected) == 4) { $options['reason_1'] = htmlentities($ppselected[0], ENT_QUOTES, 'UTF-8'); $options['reason_2'] = htmlentities($ppselected[1], ENT_QUOTES, 'UTF-8'); $options['amount'] = htmlentities($ppselected[2], ENT_QUOTES, 'UTF-8'); if ($ppselected[3] != '' && intval($ppselected[3]) > 0) { $options['amount'] = '' . doubleval($options['amount']) + doubleval($ppselected[3]); } } } $options['amount'] = str_replace('.', ',', $options['amount']); $hash = ''; if (isset($options['project_password']) && trim($options['project_password']) != '') { $data = array($options['user_id'], $options['project_id'], '', '', '', '', $options['amount'], $options['currency_id'], $options['reason_1'], $options['reason_2'], $this->form, $this->record_id, isset($options['mailback']) && $options['mailback'] ? implode('###', $this->mailbackRecipients) : '', '', '', '', $options['project_password']); $data_implode = implode('|', $data); $gen = sha1($data_implode); $hash = '<input type="hidden" name="hash" value="' . $gen . '" />'; } $mailback = ''; if (isset($options['mailback']) && $options['mailback']) { $mailback = '<input type="hidden" name="user_variable_2" value="' . implode('###', $this->mailbackRecipients) . '" />'; } $html .= ' <!-- sofortüberweisung.de --> <form method="post" name="ff_submitform" action="https://www.sofortueberweisung.de/payment/start"> <input type="hidden" name="user_id" value="' . $options['user_id'] . '" /> <input type="hidden" name="project_id" value="' . $options['project_id'] . '" /> <input type="hidden" name="reason_1" value="' . $options['reason_1'] . '" /> <input type="hidden" name="reason_2" value="' . $options['reason_2'] . '" /> <input type="hidden" name="amount" value="' . $options['amount'] . '" /> <input type="hidden" name="currency_id" value="' . $options['currency_id'] . '" /> <input type="hidden" name="language_id" value="' . $options['language_id'] . '" /> <input type="hidden" name="user_variable_0" value="' . $this->form . '" /> <input type="hidden" name="user_variable_1" value="' . $this->record_id . '" /> ' . $mailback . ' ' . $hash . ' </form> <!-- sofortüberweisung.de --> '; if ($j15) { // TODO: let the user decide to use modal or simple alert $html .= '<script type="text/javascript">' . nl() . indentc(1) . '<!--' . nl() . indentc(2) . ' SqueezeBox.initialize({}); SqueezeBox.loadModal = function(modalUrl,handler,x,y) { this.initialize(); var options = $merge(options || {}, Json.evaluate("{handler: \'" + handler + "\', size: {x: " + x +", y: " + y + "}}")); this.setOptions(this.presets, options); this.assignOptions(); this.setContent(handler,modalUrl); }; SqueezeBox.loadModal("' . JURI::root() . 'index.php?raw=true&option=com_breezingforms&showPayPalConnectMsg=true","iframe",300,100); ' . nl() . indentc(1) . '// -->' . nl() . '</script>' . nl(); } $html .= '<script type="text/javascript"><!--' . nl() . 'document.ff_submitform.submit();' . nl() . '//--></script>'; if (!$this->inline) { $html .= "</form></body></html>"; } echo $html; break; } } } break; default: $paymentAction = false; } } } // CONTENTBUILDER if (JRequest::getVar('cb_controller', null) != 'edit' && $cbRecordId && is_array($cbResult) && isset($cbResult['data']) && isset($cbResult['data']['id']) && $cbResult['data']['id']) { if ($cbRecordId) { $return = JRequest::getVar('return', ''); if ($return) { $return = base64_decode($return); if (JURI::isInternal($return)) { JFactory::getApplication()->redirect($return, $msg); } } } if ($cbResult['data']['force_login']) { jimport('joomla.version'); $version = new JVersion(); $is15 = true; if (version_compare($version->getShortVersion(), '1.6', '>=')) { $is15 = false; } if (!JFactory::getUser()->get('id', 0)) { if (!$is15) { JFactory::getApplication()->redirect(JRoute::_('index.php?option=com_users&view=login&Itemid=' . JRequest::getInt('Itemid', 0), false)); } else { JFactory::getApplication()->redirect(JRoute::_('index.php?option=com_user&view=login&Itemid=' . JRequest::getInt('Itemid', 0), false)); } } else { if (!$is15) { JFactory::getApplication()->redirect(JRoute::_('index.php?option=com_users&view=profile&Itemid=' . JRequest::getInt('Itemid', 0), false)); } else { JFactory::getApplication()->redirect(JRoute::_('index.php?option=com_user&view=user&Itemid=' . JRequest::getInt('Itemid', 0), false)); } } } else { if (trim($cbResult['data']['force_url'])) { JFactory::getApplication()->redirect(trim($cbResult['data']['force_url'])); } } JFactory::getApplication()->redirect(JRoute::_('index.php?option=com_contentbuilder&controller=details&Itemid=' . JRequest::getInt('Itemid', 0) . '&backtolist=' . JRequest::getInt('backtolist', 0) . '&id=' . $cbResult['data']['id'] . '&record_id=' . $cbRecordId . '&limitstart=' . JRequest::getInt('limitstart', 0) . '&filter_order=' . JRequest::getCmd('filter_order'), false), BFText::_('COM_CONTENTBUILDER_SAVED')); } if (!$paymentAction) { if (!defined('VMBFCF_RUNNING')) { $ob = 0; while (ob_get_level() > 0 && $ob <= 32) { ob_end_clean(); $ob++; } ob_start(); echo '<!DOCTYPE html> <html> <head></head> <body>'; } if ($message == '') { $message = $this->message; } else { if ($this->message != '') { $message .= ":" . nl() . $this->message; } } // if if (!$this->inline) { $url = $this->inframe ? $ff_mossite . '/index.php?format=html&tmpl=component' : ($this->runmode == _FF_RUNMODE_FRONTEND ? '' : 'index.php?format=html' . (JRequest::getCmd('tmpl', '') ? '&tmpl=' . JRequest::getCmd('tmpl', '') : '')); echo '<form name="ff_submitform" action="' . $url . '" method="post">' . nl(); } // if switch ($this->runmode) { case _FF_RUNMODE_FRONTEND: echo indentc(1) . '<input type="hidden" name="ff_form" value="' . htmlentities($this->form, ENT_QUOTES, 'UTF-8') . '"/>' . nl(); if ($this->target > 1) { echo indentc(1) . '<input type="hidden" name="ff_target" value="' . htmlentities($this->target, ENT_QUOTES, 'UTF-8') . '"/>' . nl(); } if ($this->inframe) { echo indentc(1) . '<input type="hidden" name="ff_frame" value="1"/>' . nl(); } if ($this->border) { echo indentc(1) . '<input type="hidden" name="ff_border" value="1"/>' . nl(); } if ($this->page != 1) { indentc(1) . '<input type="hidden" name="ff_page" value="' . htmlentities($this->page, ENT_QUOTES, 'UTF-8') . '"/>' . nl(); } if ($this->align != 1) { echo indentc(1) . '<input type="hidden" name="ff_align" value="' . htmlentities($this->align, ENT_QUOTES, 'UTF-8') . '"/>' . nl(); } if ($this->top != 0) { echo indentc(1) . '<input type="hidden" name="ff_top" value="' . htmlentities($this->top, ENT_QUOTES, 'UTF-8') . '"/>' . nl(); } reset($ff_otherparams); while (list($prop, $val) = each($ff_otherparams)) { echo indentc(1) . '<input type="hidden" name="' . htmlentities($prop, ENT_QUOTES, 'UTF-8') . '" value="' . htmlentities($val, ENT_QUOTES, 'UTF-8') . '"/>' . nl(); } break; case _FF_RUNMODE_BACKEND: echo indentc(1) . '<input type="hidden" name="option" value="com_breezingforms"/>' . nl() . indentc(1) . '<input type="hidden" name="act" value="run"/>' . nl() . indentc(1) . '<input type="hidden" name="ff_form" value="' . htmlentities($this->form, ENT_QUOTES, 'UTF-8') . '"/>' . nl() . indentc(1) . '<input type="hidden" name="ff_runmode" value="' . htmlentities($this->runmode, ENT_QUOTES, 'UTF-8') . '"/>' . nl(); if ($this->target > 1) { echo indentc(1) . '<input type="hidden" name="ff_target" value="' . htmlentities($this->target, ENT_QUOTES, 'UTF-8') . '"/>' . nl(); } if ($this->inframe) { echo indentc(1) . '<input type="hidden" name="ff_frame" value="1"/>' . nl(); } if ($this->border) { echo indentc(1) . '<input type="hidden" name="ff_border" value="1"/>' . nl(); } if ($this->page != 1) { indentc(1) . '<input type="hidden" name="ff_page" value="' . htmlentities($this->page, ENT_QUOTES, 'UTF-8') . '"/>' . nl(); } if ($this->align != 1) { echo indentc(1) . '<input type="hidden" name="ff_align" value="' . htmlentities($this->align, ENT_QUOTES, 'UTF-8') . '"/>' . nl(); } if ($this->top != 0) { echo indentc(1) . '<input type="hidden" name="ff_top" value="' . htmlentities($this->top, ENT_QUOTES, 'UTF-8') . '"/>' . nl(); } break; default: // _FF_RUNMODE_PREVIEW: if ($this->inframe) { echo indentc(1) . '<input type="hidden" name="option" value="com_breezingforms"/>' . nl() . indentc(1) . '<input type="hidden" name="ff_frame" value="1"/>' . nl() . indentc(1) . '<input type="hidden" name="ff_form" value="' . htmlentities($this->form, ENT_QUOTES, 'UTF-8') . '"/>' . nl() . indentc(1) . '<input type="hidden" name="ff_runmode" value="' . htmlentities($this->runmode, ENT_QUOTES, 'UTF-8') . '"/>' . nl(); if ($this->page != 1) { indentc(1) . '<input type="hidden" name="ff_page" value="' . htmlentities($this->page, ENT_QUOTES, 'UTF-8') . '"/>' . nl(); } } // if } // if echo indentc(1) . '<input type="hidden" name="ff_contentid" value="' . JRequest::getInt('ff_contentid', 0) . '"/>' . nl() . indentc(1) . '<input type="hidden" name="ff_applic" value="' . JRequest::getWord('ff_applic', '') . '"/>' . nl() . indentc(1) . '<input type="hidden" name="ff_module_id" value="' . JRequest::getInt('ff_module_id', 0) . '"/>' . nl() . indentc(1) . '<input type="hidden" name="ff_status" value="' . htmlentities($this->status, ENT_QUOTES, 'UTF-8') . '"/>' . nl() . indentc(1) . '<input type="hidden" name="ff_message" value="' . htmlentities(addcslashes($message, "..!@\\@..ÿ"), ENT_QUOTES, 'UTF-8') . '"/>' . nl() . indentc(1) . '<input type="hidden" name="ff_form_submitted" value="1"/>' . nl(); if (JRequest::getVar('tmpl') == 'component') { echo indentc(1) . '<input type="hidden" name="tmpl" value="component"/>' . nl(); } if (isset($_REQUEST['cb_form_id']) && isset($_REQUEST['cb_record_id'])) { echo indentc(1) . '<input type="hidden" name="cb_form_id" value="' . JRequest::getInt('cb_form_id', 0) . '"/>' . nl(); echo indentc(1) . '<input type="hidden" name="cb_record_id" value="' . JRequest::getInt('cb_record_id', 0) . '"/>' . nl(); echo indentc(1) . '<input type="hidden" name="return" value="' . htmlentities(JRequest::getVar('return', ''), ENT_QUOTES, 'UTF-8') . '"/>' . nl(); } // TODO: turn off tracing in the options if ($this->traceMode & _FF_TRACEMODE_DIRECT) { $this->dumpTrace(); ob_end_flush(); echo '</pre>'; } else { ob_end_flush(); $this->dumpTrace(); } // if restore_error_handler(); if (!$this->inline) { echo '</form>' . nl() . '<script type="text/javascript">' . nl() . indentc(1) . '<!--' . nl() . indentc(2) . 'document.ff_submitform.submit();' . nl() . indentc(1) . '// -->' . nl() . '</script>' . nl(); } // if if (!defined('VMBFCF_RUNNING')) { $c = ob_get_contents(); ob_end_clean(); echo $c; echo '</body> </html>'; } } unset($_SESSION['ff_editable_overridePlg' . JRequest::getInt('ff_contentid', 0) . $this->form_id]); unset($_SESSION['ff_editablePlg' . JRequest::getInt('ff_contentid', 0) . $this->form_id]); JFactory::getSession()->set('ff_editableMod' . JRequest::getInt('ff_module_id', 0) . $this->form_id, 0); JFactory::getSession()->set('ff_editable_overrideMod' . JRequest::getInt('ff_module_id', 0) . $this->form_id, 0); if (!defined('VMBFCF_RUNNING')) { exit; } }
function submit() { global $database, $ff_config, $ff_comsite, $ff_mossite, $ff_otherparams; $database = JFactory::getDBO(); if (!$this->okrun) return; // currently only available in classic mode if(trim($this->formrow->template_code_processed) == ''){ set_error_handler('_ff_errorHandler'); } ob_start(); $this->record_id = ''; $this->status = _FF_STATUS_OK; $this->message = ''; $this->sendNotificationAfterPayment = false; // handle Begin Submit piece $halt = false; $this->collectSubmitdata(); if(!$halt){ for($i = 0; $i < $this->rowcount; $i++) { $row = $this->rows[$i]; if ($row->type=="Captcha") { require_once(JPATH_SITE . '/components/com_breezingforms/images/captcha/securimage.php'); $securimage = new Securimage(); if(!$securimage->check(JRequest::getVar('bfCaptchaEntry', ''))){ $halt = true; $this->status = _FF_STATUS_CAPTCHA_FAILED; exit; } break; }else if ($row->type=="ReCaptcha") { if(!JFactory::getSession()->get('bfrecapsuccess',false)){ $halt = true; $this->status = _FF_STATUS_CAPTCHA_FAILED; } JFactory::getSession()->set('bfrecapsuccess',false); break; } } require_once(JPATH_SITE.'/administrator/components/com_breezingforms/libraries/Zend/Json/Decoder.php'); require_once(JPATH_SITE.'/administrator/components/com_breezingforms/libraries/Zend/Json/Encoder.php'); $areas = Zend_Json::decode($this->formrow->template_areas); if(is_array($areas)){ switch(JRequest::getVar('ff_payment_method', '')){ case 'PayPal': case 'Sofortueberweisung': foreach($areas As $area){ foreach($area['elements'] As $element){ if($element['internalType'] == 'bfPayPal' || $element['internalType'] == 'bfSofortueberweisung'){ $options = $element['options']; if( isset( $options['sendNotificationAfterPayment'] ) && $options['sendNotificationAfterPayment'] ){ $this->sendNotificationAfterPayment = true; } } } } } } } if(!$halt){ $code = ''; switch ($this->formrow->piece3cond) { case 1: // library $database->setQuery( "select name, code from #__facileforms_pieces ". "where id=".$this->formrow->piece3id." and published=1 " ); $rows = $database->loadObjectList(); if (count($rows)) echo $this->execPiece( $rows[0]->code, BFText::_('COM_BREEZINGFORMS_PROCESS_BSPIECE')." ".$rows[0]->name, 'p', $this->formrow->piece3id, null ); break; case 2: // custom code echo $this->execPiece( $this->formrow->piece3code, BFText::_('COM_BREEZINGFORMS_PROCESS_BSPIECEC'), 'f', $this->form, 3 ); break; default: break; } // switch if ($this->bury()) return; if ($this->status == _FF_STATUS_OK) { if (!$this->formrow->published) { $this->status = _FF_STATUS_UNPUBLISHED; } else { if ($this->status == _FF_STATUS_OK) { if ($this->formrow->dblog > 0) $this->logToDatabase(); if ($this->status == _FF_STATUS_OK){ if ($this->formrow->emailntf > 0){ $this->sendEmailNotification(); } if ($this->formrow->mb_emailntf > 0){ $this->sendMailbackNotification(); } $this->sendMailChimpNotification(); $tickets = JFactory::getSession()->get('bfFlashUploadTickets', array()); mt_srand(); if(isset($tickets[JRequest::getVar('bfFlashUploadTicket', mt_rand(0,mt_getrandmax()))])){ unset($tickets[JRequest::getVar('bfFlashUploadTicket')]); JFactory::getSession()->set('bfFlashUploadTickets', $tickets); } } } // if } // if } // if // handle End Submit piece $code = ''; switch ($this->formrow->piece4cond) { case 1: // library $database->setQuery( "select name, code from #__facileforms_pieces ". "where id=".$this->formrow->piece4id." and published=1 " ); $rows = $database->loadObjectList(); if (count($rows)) echo $this->execPiece( $rows[0]->code, BFText::_('COM_BREEZINGFORMS_PROCESS_ESPIECE')." ".$rows[0]->name, 'p', $this->formrow->piece4id, null ); break; case 2: // custom code echo $this->execPiece( $this->formrow->piece4code, BFText::_('COM_BREEZINGFORMS_PROCESS_ESPIECEC'), 'f', $this->form, 3 ); break; default: break; } // switch if ($this->bury()) return; } switch ($this->status) { case _FF_STATUS_OK: $message = BFText::_('COM_BREEZINGFORMS_PROCESS_SUBMITSUCCESS'); break; case _FF_STATUS_UNPUBLISHED: $message = BFText::_('COM_BREEZINGFORMS_PROCESS_UNPUBLISHED'); break; case _FF_STATUS_SAVERECORD_FAILED: $message = BFText::_('COM_BREEZINGFORMS_PROCESS_SAVERECFAILED'); break; case _FF_STATUS_SAVESUBRECORD_FAILED: $message = BFText::_('COM_BREEZINGFORMS_PROCESS_SAVESUBFAILED'); break; case _FF_STATUS_UPLOAD_FAILED: $message = BFText::_('COM_BREEZINGFORMS_PROCESS_UPLOADFAILED'); break; case _FF_STATUS_SENDMAIL_FAILED: $message = BFText::_('COM_BREEZINGFORMS_PROCESS_SENDMAILFAILED'); break; case _FF_STATUS_ATTACHMENT_FAILED: $message = BFText::_('COM_BREEZINGFORMS_PROCESS_ATTACHMTFAILED'); break; case _FF_STATUS_CAPTCHA_FAILED: $message = BFText::_('COM_BREEZINGFORMS_Captcha entry failed!'); break; case _FF_STATUS_FILE_EXTENSION_NOT_ALLOWED: $message = BFText::_('COM_BREEZINGFORMS_File extension not allowed!'); break; default: // custom piece status and message break; } // switch // built in PayPal action $paymentAction = false; if($this->formrow->template_code != ''){ require_once(JPATH_SITE.'/administrator/components/com_breezingforms/libraries/Zend/Json/Decoder.php'); require_once(JPATH_SITE.'/administrator/components/com_breezingforms/libraries/Zend/Json/Encoder.php'); $areas = Zend_Json::decode($this->formrow->template_areas); if(is_array($areas)){ jimport('joomla.version'); $version = new JVersion(); $j15 = true; if(version_compare($version->getShortVersion(), '1.6', '>=')){ $j15 = false; } $paymentAction = true; switch(JRequest::getVar('ff_payment_method', '')){ case 'PayPal': foreach($areas As $area){ foreach($area['elements'] As $element){ if($element['internalType'] == 'bfPayPal'){ $options = $element['options']; $business = $options['business']; $paypal = 'https://www.paypal.com'; if($options['testaccount']){ $paypal = 'https://www.sandbox.paypal.com'; $business = $options['testBusiness']; } $returnurl = htmlentities(JURI::root()."index.php?option=com_breezingforms&confirmPayPal=true&form_id=".$this->form."&record_id=".$this->record_id); $cancelurl = htmlentities(JURI::root()."index.php?msg=".BFText::_('COM_BREEZINGFORMS_Transaction cancelled by user!')); $html = ''; if(!$this->inline) $html .= '<html><head></head><body>'; JHTML::_('behavior.modal'); $ppselect = JRequest::getVar('ff_nm_bfPaymentSelect', array()); if(count($ppselect) != 0){ $ppselected = explode('|',$ppselect[0]); if(count($ppselected) == 4){ $options['itemname'] = $ppselected[0]; $options['itemnumber'] = $ppselected[1]; $options['amount'] = $ppselected[2]; $options['tax'] = $ppselected[3]; } } // keeping this for compat reasons $ppselect = JRequest::getVar('ff_nm_PayPalSelect', array()); if(count($ppselect) != 0){ $ppselected = explode('|',$ppselect[0]); if(count($ppselected) == 4){ $options['itemname'] = $ppselected[0]; $options['itemnumber'] = $ppselected[1]; $options['amount'] = $ppselected[2]; $options['tax'] = $ppselected[3]; } } // compat end $html .= "<form name=\"ff_submitform\" action=\"".$paypal."/cgi-bin/webscr\" method=\"post\">"; $html .= "<input type=\"hidden\" name=\"cmd\" value=\"_xclick\"/>"; $html .= "<input type=\"hidden\" name=\"business\" value=\"".$business."\"/>"; $html .= "<input type=\"hidden\" name=\"item_name\" value=\"".$options['itemname']."\"/>"; $html .= "<input type=\"hidden\" name=\"item_number\" value=\"".$options['itemnumber']."\"/>"; $html .= "<input type=\"hidden\" name=\"amount\" value=\"".$options['amount']."\"/>"; $html .= "<input type=\"hidden\" name=\"tax\" value=\"".$options['tax']."\"/>"; $html .= "<input type=\"hidden\" name=\"no_shipping\" value=\"1\"/>"; $html .= "<input type=\"hidden\" name=\"no_note\" value=\"1\"/>"; if( $options['useIpn'] ){ $html .= "<input type=\"hidden\" name=\"notify_url\" value=\"".htmlentities(JURI::root()."index.php?option=com_breezingforms&confirmPayPalIpn=true&raw=true&form_id=".$this->form."&record_id=".$this->record_id)."\"/>"; if($options['testaccount']){ $html .= "<input type=\"hidden\" name=\"test_ipn\" value=\"1\"/>"; } }else{ $html .= "<input type=\"hidden\" name=\"notify_url\" value=\"".$returnurl."\"/>"; } $html .= "<input type=\"hidden\" name=\"return\" value=\"".$returnurl."\"/>"; $html .= "<input type=\"hidden\" name=\"cancel_return\" value=\"".$cancelurl."\"/>"; $html .= "<input type=\"hidden\" name=\"rm\" value=\"2\"/>"; $html .= "<input type=\"hidden\" name=\"lc\" value=\"".$options['locale']."\"/>"; //$html .= "<input type=\"hidden\" name=\"pal\" value=\"D6MXR7SEX68LU\"/>"; $html .= "<input type=\"hidden\" name=\"currency_code\" value=\"".strtoupper($options['currencyCode'])."\"/>"; if(!$this->inline) $html .= "</form></body></html>"; // TODO: let the user decide to use modal or simple alert if($j15){ $html .= '<script type="text/javascript">'.nl(). indentc(1).'<!--'.nl(). indentc(2).' SqueezeBox.initialize({}); SqueezeBox.loadModal = function(modalUrl,handler,x,y) { this.initialize(); var options = $merge(options || {}, Json.evaluate("{handler: \'" + handler + "\', size: {x: " + x +", y: " + y + "}}")); this.setOptions(this.presets, options); this.assignOptions(); this.setContent(handler,modalUrl); }; SqueezeBox.loadModal("'.JURI::root().'index.php?raw=true&option=com_breezingforms&showPayPalConnectMsg=true","iframe",300,100); '.nl(). indentc(1).'// -->'.nl(). '</script>'.nl(); } $html .= '<script type="text/javascript">document.ff_submitform.submit();</script>'; echo $html; break; } } } break; case 'Sofortueberweisung': foreach($areas As $area){ foreach($area['elements'] As $element){ if($element['internalType'] == 'bfSofortueberweisung'){ $html = ''; if(!$this->inline) $html .= '<html><head></head><body>'; JHTML::_('behavior.modal'); $options = $element['options']; $ppselect = JRequest::getVar('ff_nm_bfPaymentSelect', array()); if(count($ppselect) != 0){ $ppselected = explode('|',$ppselect[0]); if(count($ppselected) == 4){ $options['reason_1'] = $ppselected[0]; $options['reason_2'] = $ppselected[1]; $options['amount'] = $ppselected[2]; if($ppselected[3] != '' && intval($ppselected[3]) > 0){ $options['amount'] = '' . doubleval($options['amount']) + doubleval($ppselected[3]); } } } $options['amount'] = str_replace('.',',', $options['amount']); $hash = ''; if(isset($options['project_password']) && trim($options['project_password']) != ''){ $data = array( $options['user_id'], // user_id $options['project_id'], // project_id '', // sender_holder '', // sender_account_number '', // sender_bank_code '', // sender_country_id $options['amount'], // amount // currency_id, Pflichtparameter bei Hash-Berechnung $options['currency_id'], $options['reason_1'], // reason_1 $options['reason_2'], // reason_2 $this->form, // user_variable_0 $this->record_id, // user_variable_1 (isset($options['mailback']) && $options['mailback'] ? implode('###',$this->mailbackRecipients) : ''), // user_variable_2 '', // user_variable_3 '', // user_variable_4 '', // user_variable_5 $options['project_password'] // project_password ); $data_implode = implode('|', $data); $gen = sha1($data_implode); $hash = '<input type="hidden" name="hash" value="'.$gen.'" />'; } $mailback = ''; if(isset($options['mailback']) && $options['mailback']){ $mailback = '<input type="hidden" name="user_variable_2" value="'.implode('###',$this->mailbackRecipients).'" />'; } $html .= ' <!-- sofortüberweisung.de --> <form method="post" name="ff_submitform" action="https://www.sofortueberweisung.de/payment/start"> <input type="hidden" name="user_id" value="'.$options['user_id'].'" /> <input type="hidden" name="project_id" value="'.$options['project_id'].'" /> <input type="hidden" name="reason_1" value="'.$options['reason_1'].'" /> <input type="hidden" name="reason_2" value="'.$options['reason_2'].'" /> <input type="hidden" name="amount" value="'.$options['amount'].'" /> <input type="hidden" name="currency_id" value="'.$options['currency_id'].'" /> <input type="hidden" name="language_id" value="'.$options['language_id'].'" /> <input type="hidden" name="user_variable_0" value="'.$this->form.'" /> <input type="hidden" name="user_variable_1" value="'.$this->record_id.'" /> '.$mailback.' '.$hash.' </form> <!-- sofortüberweisung.de --> '; if($j15){ // TODO: let the user decide to use modal or simple alert $html .= '<script type="text/javascript">'.nl(). indentc(1).'<!--'.nl(). indentc(2).' SqueezeBox.initialize({}); SqueezeBox.loadModal = function(modalUrl,handler,x,y) { this.initialize(); var options = $merge(options || {}, Json.evaluate("{handler: \'" + handler + "\', size: {x: " + x +", y: " + y + "}}")); this.setOptions(this.presets, options); this.assignOptions(); this.setContent(handler,modalUrl); }; SqueezeBox.loadModal("'.JURI::root().'index.php?raw=true&option=com_breezingforms&showPayPalConnectMsg=true","iframe",300,100); '.nl(). indentc(1).'// -->'.nl(). '</script>'.nl(); } $html .= '<script type="text/javascript">document.ff_submitform.submit();</script>'; if(!$this->inline) $html .= "</form></body></html>"; echo $html; break; } } } break; default: $paymentAction = false; } } } if(!$paymentAction){ if ($message == '') $message = $this->message; else { if ($this->message != '') $message .= ":".nl().$this->message; } // if if (!$this->inline) { $url = ($this->inframe) ? $ff_mossite.'/index.php?format=html&tmpl=component' : (($this->runmode==_FF_RUNMODE_FRONTEND) ? '' : 'index.php?format=html&tmpl=component'); echo '<form name="ff_submitform" action="'.$url.'" method="post">'.nl(); } // if switch ($this->runmode) { case _FF_RUNMODE_FRONTEND: echo indentc(1).'<input type="hidden" name="ff_form" value="'.$this->form.'"/>'.nl(); if ($this->target > 1) echo indentc(1).'<input type="hidden" name="ff_target" value="'.$this->target.'"/>'.nl(); if ($this->inframe) echo indentc(1).'<input type="hidden" name="ff_frame" value="1"/>'.nl(); if ($this->border) echo indentc(1).'<input type="hidden" name="ff_border" value="1"/>'.nl(); if ($this->page != 1) indentc(1).'<input type="hidden" name="ff_page" value="'.$this->page.'"/>'.nl(); if ($this->align != 1) echo indentc(1).'<input type="hidden" name="ff_align" value="'.$this->align.'"/>'.nl(); if ($this->top != 0) echo indentc(1).'<input type="hidden" name="ff_top" value="'.$this->top.'"/>'.nl(); reset($ff_otherparams); while (list($prop, $val) = each($ff_otherparams)) echo indentc(1).'<input type="hidden" name="'.$prop.'" value="'.$val.'"/>'.nl(); break; case _FF_RUNMODE_BACKEND: echo indentc(1).'<input type="hidden" name="option" value="com_breezingforms"/>'.nl(). indentc(1).'<input type="hidden" name="act" value="run"/>'.nl(). indentc(1).'<input type="hidden" name="ff_form" value="'.$this->form.'"/>'.nl(). indentc(1).'<input type="hidden" name="ff_runmode" value="'.$this->runmode.'"/>'.nl(); if ($this->target > 1) echo indentc(1).'<input type="hidden" name="ff_target" value="'.$this->target.'"/>'.nl(); if ($this->inframe) echo indentc(1).'<input type="hidden" name="ff_frame" value="1"/>'.nl(); if ($this->border) echo indentc(1).'<input type="hidden" name="ff_border" value="1"/>'.nl(); if ($this->page != 1) indentc(1).'<input type="hidden" name="ff_page" value="'.$this->page.'"/>'.nl(); if ($this->align != 1) echo indentc(1).'<input type="hidden" name="ff_align" value="'.$this->align.'"/>'.nl(); if ($this->top != 0) echo indentc(1).'<input type="hidden" name="ff_top" value="'.$this->top.'"/>'.nl(); break; default: // _FF_RUNMODE_PREVIEW: if ($this->inframe) { echo indentc(1).'<input type="hidden" name="option" value="com_breezingforms"/>'.nl(). indentc(1).'<input type="hidden" name="ff_frame" value="1"/>'.nl(). indentc(1).'<input type="hidden" name="ff_form" value="'.$this->form.'"/>'.nl(). indentc(1).'<input type="hidden" name="ff_runmode" value="'.$this->runmode.'"/>'.nl(); if ($this->page != 1) indentc(1).'<input type="hidden" name="ff_page" value="'.$this->page.'"/>'.nl(); } // if } // if echo indentc(1).'<input type="hidden" name="ff_contentid" value="'.JRequest::getInt('ff_contentid',0).'"/>'.nl(). indentc(1).'<input type="hidden" name="ff_applic" value="'.JRequest::getWord('ff_applic','').'"/>'.nl(). indentc(1).'<input type="hidden" name="ff_module_id" value="'.JRequest::getInt('ff_module_id',0).'"/>'.nl(). indentc(1).'<input type="hidden" name="ff_status" value="'.$this->status.'"/>'.nl(). indentc(1).'<input type="hidden" name="ff_message" value="'.addcslashes($message, "\0..\37!@\@\177..\377").'"/>'.nl(); // TODO: turn off tracing in the options if ($this->traceMode & _FF_TRACEMODE_DIRECT) { $this->dumpTrace(); ob_end_flush(); echo '</pre>'; } else { ob_end_flush(); $this->dumpTrace(); } // if restore_error_handler(); if (!$this->inline) { echo '</form>'.nl(). '<script type="text/javascript">'.nl(). indentc(1).'<!--'.nl(). indentc(2).'document.ff_submitform.submit();'.nl(). indentc(1).'// -->'.nl(). '</script>'.nl(). '</body>'.nl(). '</html>'.nl(); } // if } unset($_SESSION['ff_editable_overridePlg'.JRequest::getInt('ff_contentid',0) . $this->form_id]); unset($_SESSION['ff_editablePlg'.JRequest::getInt('ff_contentid',0) . $this->form_id]); JFactory::getSession()->set('ff_editableMod'.JRequest::getInt('ff_module_id',0) . $this->form_id, 0); JFactory::getSession()->set('ff_editable_overrideMod'.JRequest::getInt('ff_module_id',0) . $this->form_id, 0); } // submit