Просмотр исходного кода

Merge branch 'master' of https://github.com/unaio/una

roman.lesnikov@gmail.com 4 лет назад
Родитель
Сommit
944e0ec5d6
25 измененных файлов с 338 добавлено и 1796 удалено
  1. 3 0
      inc/classes/BxDolUploader.php
  2. 0 15
      modules/boonex/artificer/data/template/system/create_post_form.html
  3. 0 6
      modules/boonex/artificer/data/template/system/form_field_switcher.html
  4. 1 8
      modules/boonex/decorous/data/template/system/css/default.less
  5. 25 25
      modules/boonex/english/data/langs/system/en.xml
  6. 1 8
      modules/boonex/lucid/data/template/system/css/default.less
  7. 0 5
      modules/boonex/ocean/data/template/studio/css/forms.css
  8. 0 5
      modules/boonex/ocean/data/template/system/css/forms.css
  9. 0 138
      modules/boonex/payment/classes/BxPaymentProvider2Checkout.php
  10. 0 549
      modules/boonex/payment/classes/BxPaymentProviderBitPay.php
  11. 0 327
      modules/boonex/payment/classes/BxPaymentProviderRecurly.php
  12. 259 370
      modules/boonex/payment/install/langs/en.xml
  13. 0 43
      modules/boonex/payment/install/sql/install.sql
  14. 2 9
      modules/boonex/protean/data/template/system/css/default.less
  15. 0 111
      modules/boonex/russian/data/langs/bx_payment/ru.xml
  16. 25 25
      modules/boonex/russian/data/langs/system/ru.xml
  17. 1 1
      modules/boonex/tasks/js/tasks.js
  18. 4 8
      plugins_public/tailwind/css/tailwind.css
  19. 0 0
      plugins_public/tailwind/css/tailwind.min.css
  20. 0 7
      studio/template/css/forms.css
  21. 5 5
      template/create_post_form.html
  22. 5 100
      template/css/forms.css
  23. 1 24
      template/css/general.css
  24. 5 6
      template/form_field_switcher.html
  25. 1 1
      template/scripts/BxBaseServices.php

+ 3 - 0
inc/classes/BxDolUploader.php

@@ -237,6 +237,9 @@ abstract class BxDolUploader extends BxDolFactory
 
     public function getUploadErrorMessages ($sFormat = 'HTML')
     {
+        if (!$this->_sUploadErrorMessages)
+            return '';
+
         if ('HTML' == $sFormat)
             return nl2br($this->_sUploadErrorMessages);
         else

+ 0 - 15
modules/boonex/artificer/data/template/system/create_post_form.html

@@ -1,15 +0,0 @@
-<div id="sys-create-post-form" class="sys-create-post-form relative">
-    <div class="sys-cpf-cnt">
-        <div id="sys-cpf-form">
-            <div class="sys-cpf-form sys-cpf-default flex items-center">
-                <div class="sys-cpf-user">__user_thumb__</div>
-                <div class="sys-cpf-content w-full ml-3 my-2 text-gray-500 dark:text-gray-400">
-                    <div onclick="__js_object__.getForm('__default__')">__placeholder__</div>
-                </div>
-            </div>
-            <div class="sys-cpf-form sys-cpf-__default__" style="display:none">__form__</div>
-            <div class="sys-cpf-close absolute hidden right-0 bottom-0"><a class="bx-btn" href="javascript:void(0)" onclick="__js_object__.hideForm(this)"><i class="sys-icon times"></i></a></div>
-        </div>
-    </div>
-</div>
-__js_content__

+ 0 - 6
modules/boonex/artificer/data/template/system/form_field_switcher.html

@@ -1,6 +0,0 @@
-<div class="bx-switcher-cont __class__ relative">
-    <button type="button" class="relative inline-flex flex-shrink-0 h-6 w-11 ring-1 ring-gray-300 dark:ring-gray-700 border-2 border-transparent rounded-full cursor-pointer transition-colors ease-in-out duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500" role="switch" aria-checked="false">
-        <span aria-hidden="true" class="inline-block h-5 w-5 rounded-full shadow transform ring-0 transition ease-in-out duration-200 pointer-events-none"></span>
-    </button>
-    __checkbox__
-</div>  

+ 1 - 8
modules/boonex/decorous/data/template/system/css/default.less

@@ -806,15 +806,8 @@
         border-color: @bx-color-border-form-input-active;
         background-color: @bx-color-form-input-active;
     }
-    .bx-form-value .bx-switcher-cont {
-        border-color: @bx-color-border-form-input;
-        border-width: @bx-border-width-form-input;
-
+    .bx-form-value .bx-switcher-cont.on > button {
         background-color: @bx-color-form-input;
-
-        -webkit-box-shadow: @bx-shadow-form-input;
-        -moz-box-shadow: @bx-shadow-form-input;
-        box-shadow: @bx-shadow-form-input;
     }
 
     /* button large */

+ 25 - 25
modules/boonex/english/data/langs/system/en.xml

@@ -3454,33 +3454,33 @@ If it is not enabled then please consider implement this optimization, since it
 	<string name="_sys_txt_access_denied"><![CDATA[Access denied]]></string>
 	<string name="_sys_txt_account_pending"><![CDATA[Your account is pending approval, please wait until it is activated.]]></string>
 	<string name="_sys_txt_account_profile_context_change_suggestion"><![CDATA[This is your profile, you can <a href="{0}">change your current profile</a> to this profile]]></string>
-  <string name="_sys_txt_account_profile_context_change_to_another_suggestion"><![CDATA[You can <a href="{0}">change your current profile</a> to this profile]]></string>
-  <string name="_sys_txt_account_profile_context_changed_success"><![CDATA[Current profile has been successfully changed to: <b>{0}</b>]]></string>
-	<string name="_sys_txt_account_suspended"><![CDATA[Your account is suspended.]]></string>
-	<string name="_sys_txt_account_unconfirmed_email"><![CDATA[Your email address is unconfirmed. Please, check your email ({1}) for a confirmation letter and click email confirmation link. Can't find the letter? Check your SPAM folder or <a href="{0}">send the verification letter again</a>.]]></string>
-	<string name="_sys_txt_account_unconfirmed_phone"><![CDATA[Your phone is unconfirmed. Please, confirm it on <a href="{0}">verification page</a>.]]></string>
-	<string name="_sys_txt_account_profile_system"><![CDATA[Please <a href="{0}">create a profile</a> to start using the site.]]></string>
-	<string name="_sys_txt_captcha_not_available"><![CDATA[CAPTCHA not available]]></string>
-  <string name="_sys_txt_categories_button_caption_add"><![CDATA[Add]]></string>
-  <string name="_sys_txt_categories_button_caption_addnew"><![CDATA[Create own category]]></string>
-  <string name="_sys_txt_change_image"><![CDATA[Change Picture]]></string>
+    <string name="_sys_txt_account_profile_context_change_to_another_suggestion"><![CDATA[You can <a href="{0}">change your current profile</a> to this profile]]></string>
+    <string name="_sys_txt_account_profile_context_changed_success"><![CDATA[Current profile has been successfully changed to: <b>{0}</b>]]></string>
+    <string name="_sys_txt_account_suspended"><![CDATA[Your account is suspended.]]></string>
+    <string name="_sys_txt_account_unconfirmed_email"><![CDATA[Your email address is unconfirmed. Please, check your email ({1}) for a confirmation letter and click email confirmation link. Can't find the letter? Check your SPAM folder or <a href="{0}">send the verification letter again</a>.]]></string>
+    <string name="_sys_txt_account_unconfirmed_phone"><![CDATA[Your phone is unconfirmed. Please, confirm it on <a href="{0}">verification page</a>.]]></string>
+    <string name="_sys_txt_account_profile_system"><![CDATA[Please <a href="{0}">create a profile</a> to start using the site.]]></string>
+    <string name="_sys_txt_captcha_not_available"><![CDATA[CAPTCHA not available]]></string>
+    <string name="_sys_txt_categories_button_caption_add"><![CDATA[Add]]></string>
+    <string name="_sys_txt_categories_button_caption_addnew"><![CDATA[Create own category]]></string>
+    <string name="_sys_txt_change_image"><![CDATA[Change Picture]]></string>
     <string name="_sys_txt_cmt_loading"><![CDATA[Loading...]]></string>
-	<string name="_sys_txt_confirm_email_already_confirmed"><![CDATA[Your email address is already confirmed.]]></string>
-	<string name="_sys_txt_confirm_email_desc"><![CDATA[Please enter confirmation code which was sent to your email address, or just click confirmation link in the same email message.]]></string>
-	<string name="_sys_txt_confirm_email_error_occured"><![CDATA[Error occurred, please try to login to your account and resend verification email.]]></string>
-	<string name="_sys_txt_confirm_email_sent"><![CDATA[Email verification letter was sent, please check your inbox.]]></string>
-	<string name="_sys_txt_confirm_email_sent_failed"><![CDATA[Error occurred, please report error to site administrator.]]></string>
-	<string name="_sys_txt_confirm_email_success"><![CDATA[You email address was successfully confirmed.]]></string>
-	
-	<string name="_sys_txt_confirm_phone_already_confirmed"><![CDATA[Your phone is already confirmed.]]></string>
-	<string name="_sys_txt_confirm_phone_set_phone_error_occured"><![CDATA[Error occurred, please try to login to your account and repeat verification.]]></string>
-	<string name="_sys_txt_confirm_phone_send_sms_error_occured"><![CDATA[Error occurred, please report error to site administrator.]]></string>
-	<string name="_sys_txt_confirm_phone_sms_text"><![CDATA[Your phone's verification code is {0}.]]></string>
-	<string name="_sys_txt_confirm_phone_confirm_success"><![CDATA[Your phone number has been confirmed.]]></string>
-	<string name="_sys_txt_confirm_phone_set_phone_desc_set_phone"><![CDATA[Please enter a phone number for sending verification SMS.]]></string>
-	<string name="_sys_txt_confirm_phone_set_phone_desc_phone_confirmation"><![CDATA[Please enter verification code from the SMS.]]></string>
+    <string name="_sys_txt_confirm_email_already_confirmed"><![CDATA[Your email address is already confirmed.]]></string>
+    <string name="_sys_txt_confirm_email_desc"><![CDATA[Please enter confirmation code which was sent to your email address, or just click confirmation link in the same email message.]]></string>
+    <string name="_sys_txt_confirm_email_error_occured"><![CDATA[Error occurred, please try to login to your account and resend verification email.]]></string>
+    <string name="_sys_txt_confirm_email_sent"><![CDATA[Email verification letter was sent, please check your inbox.]]></string>
+    <string name="_sys_txt_confirm_email_sent_failed"><![CDATA[Error occurred, please report error to site administrator.]]></string>
+    <string name="_sys_txt_confirm_email_success"><![CDATA[You email address was successfully confirmed.]]></string>
+
+    <string name="_sys_txt_confirm_phone_already_confirmed"><![CDATA[Your phone is already confirmed.]]></string>
+    <string name="_sys_txt_confirm_phone_set_phone_error_occured"><![CDATA[Error occurred, please try to login to your account and repeat verification.]]></string>
+    <string name="_sys_txt_confirm_phone_send_sms_error_occured"><![CDATA[Error occurred, please report error to site administrator.]]></string>
+    <string name="_sys_txt_confirm_phone_sms_text"><![CDATA[Your phone's verification code is {0}.]]></string>
+    <string name="_sys_txt_confirm_phone_confirm_success"><![CDATA[Your phone number has been confirmed.]]></string>
+    <string name="_sys_txt_confirm_phone_set_phone_desc_set_phone"><![CDATA[Please enter a phone number for sending verification SMS.]]></string>
+    <string name="_sys_txt_confirm_phone_set_phone_desc_phone_confirmation"><![CDATA[Please enter verification code from the SMS.]]></string>
 
-	<string name="_sys_txt_create_post_placeholder"><![CDATA[What's happening, {0}]]></string>
+    <string name="_sys_txt_create_post_placeholder"><![CDATA[Write here, {0}...]]></string>
 
     <string name="_sys_txt_current_picture"><![CDATA[Current Picture]]></string>
     <string name="_sys_txt_data_successfully_submitted"><![CDATA[Done]]></string>

+ 1 - 8
modules/boonex/lucid/data/template/system/css/default.less

@@ -833,15 +833,8 @@
         border-color: @bx-color-border-form-input-active;
         background-color: @bx-color-form-input-active;
     }
-    .bx-form-value .bx-switcher-cont {
-        border-color: @bx-color-border-form-input;
-        border-width: @bx-border-width-form-input;
-
+    .bx-form-value .bx-switcher-cont.on > button {
         background-color: @bx-color-form-input;
-
-        -webkit-box-shadow: @bx-shadow-form-input;
-        -moz-box-shadow: @bx-shadow-form-input;
-        box-shadow: @bx-shadow-form-input;
     }
 
 

+ 0 - 5
modules/boonex/ocean/data/template/studio/css/forms.css

@@ -27,9 +27,4 @@
 .bx-form-input-text:focus,
 .bx-form-input-wrapper-password.bx-form-input-focus {
     border-color:#57889e;
-}
-
-/* switcher */
-.bx-switcher-cont {
-    border-color: #6097b0;
 }

+ 0 - 5
modules/boonex/ocean/data/template/system/css/forms.css

@@ -30,9 +30,4 @@
 .bx-form-input-price:focus,
 .bx-form-input-wrapper-password.bx-form-input-focus {
     border-color:#57889e;
-}
-
-/* switcher */
-.bx-switcher-cont {
-    border-color: #6097b0;
 }

+ 0 - 138
modules/boonex/payment/classes/BxPaymentProvider2Checkout.php

@@ -1,138 +0,0 @@
-<?php defined('BX_DOL') or die('hack attempt');
-/**
- * Copyright (c) UNA, Inc - https://una.io
- * MIT License - https://opensource.org/licenses/MIT
- *
- * @defgroup    Payment Payment
- * @ingroup     UnaModules
- *
- * @{
- */
-
-define('TUCO_MODE_LIVE', 1);
-define('TUCO_MODE_TEST', 2);
-
-define('TUCO_PAYMENT_METHOD_CC', 'CC');
-define('TUCO_PAYMENT_METHOD_CK', 'CK');
-define('TUCO_PAYMENT_METHOD_AL', 'AL');
-define('TUCO_PAYMENT_METHOD_PPI', 'PPI');
-
-class BxPaymentProvider2Checkout extends BxBaseModPaymentProvider implements iBxBaseModPaymentProvider
-{
-    protected $_sDataReturnUrl;
-
-    function __construct($aConfig)
-    {
-		$this->MODULE = 'bx_payment';
-
-        parent::__construct($aConfig);
-
-        $this->_bRedirectOnResult = true;
-        $this->_sDataReturnUrl = $this->_oModule->_oConfig->getUrl('URL_RETURN_DATA') . $this->_sName . '/';
-    }
-
-    public function initializeCheckout($iPendingId, $aCartInfo)
-    {
-    	$bTest = (int)$this->getOption('mode') == TUCO_MODE_TEST;
-
-        $aFormData = array(
-            'sid' => $this->getOption('account_id'),
-        	'mode' => '2CO',
-        	'demo' => $bTest ? 'Y' : '',
-        	'merchant_order_id' => $iPendingId,
-            'total' => sprintf("%.2f", (float)$aCartInfo['items_price']),
-        	'currency_code' => $aCartInfo['vendor_currency_code'],
-            'pay_method' => $this->getOption('payment_method'),
-            'x_receipt_link_url' => $this->_sDataReturnUrl . $aCartInfo['vendor_id']
-        );
-
-        $iIndex = 0;
-        $sPriceKey = $this->_oModule->_oConfig->getKey('KEY_ARRAY_PRICE_SINGLE');
-        foreach($aCartInfo['items'] as $aItem) {
-        	$aFormData['li_' . $iIndex . '_type'] = 'product';
-            $aFormData['li_' . $iIndex . '_name'] = $aItem['title'];
-            $aFormData['li_' . $iIndex . '_price'] = $aItem[$sPriceKey];
-            $aFormData['li_' . $iIndex . '_quantity'] = $aItem['quantity'];
-            $aFormData['li_' . $iIndex . '_tangible'] = 'N';
-
-            $iIndex++;
-        }
-
-        $sActionURL = 'https://' . ($bTest ? 'sandbox' : 'www') . '.2checkout.com/checkout/purchase';
-        $this->_oModule->_oTemplate->displayPageCodeRedirect($sActionURL, $aFormData);
-        exit;
-    }
-
-    public function finalizeCheckout(&$aData)
-    {
-        return $this->_registerCheckout($aData);
-    }
-
-    /**
-     *
-     * @param $aData - data from payment provider.
-     * @param $bSubscription - Is not needed. May be used in the future for subscriptions.
-     * @param $iPendingId - Is not needed. May be used in the future for subscriptions.
-     * @return array with results.
-     */
-    protected function _registerCheckout(&$aData, $bSubscription = false, $iPendingId = 0)
-    {
-        if(empty($this->_aOptions) && isset($aData['merchant_order_id']))
-            $this->_aOptions = $this->getOptionsByPending($aData['merchant_order_id']);
-
-        if(empty($this->_aOptions))
-            return array('code' => 2, 'message' => _t('_payment_2co_err_no_vendor_given'));
-
-        $aResult = $this->_validateCheckout($aData);
-        if(empty($aResult['pending_id']))
-            return $aResult;
-
-        $aPending = $this->_oModule->_oDb->getOrderPending(array('type' => 'id', 'id' => (int)$aResult['pending_id']));
-        if(!empty($aPending['order']) || !empty($aPending['error_code']) || !empty($aPending['error_msg']) || (int)$aPending['processed'] != 0)
-            return array('code' => 6, 'message' => _t('_payment_2co_err_already_processed'));
-
-        $this->_oModule->_oDb->updateOrderPending((int)$aResult['pending_id'], array(
-            'order' => $aData['order_number'],
-            'error_code' => $aResult['code'],
-            'error_msg' => $aResult['message']
-        ));
-        return $aResult;
-    }
-
-    protected function _validateCheckout(&$aData)
-    {
-        if(empty($aData['order_number']) || empty($aData['total']) || empty($aData['key']) || empty($aData['merchant_order_id']))
-            return array('code' => 3, 'message' => _t('_payment_2co_err_no_data_given'));
-
-        $sOrder = bx_process_input($aData['order_number'], BX_TAGS_STRIP);
-        $sAmount = bx_process_input($aData['total'], BX_TAGS_STRIP);
-        $iPendingId = (int)$aData['merchant_order_id'];
-
-        if($aData['key'] != $this->_generateKey($sOrder, $sAmount))
-            return array('code' => 4, 'message' => _t('_payment_2co_err_wrong_key'), 'pending_id' => $iPendingId);
-
-        $aPending = $this->_oModule->_oDb->getOrderPending(array('type' => 'id', 'id' => $iPendingId));
-        if((float)$sAmount != (float)$aPending['amount'])
-            return array('code' => 5, 'message' => _t('_payment_2co_err_wrong_payment'), 'pending_id' => $iPendingId);
-
-        return array(
-        	'code' => BX_PAYMENT_RESULT_SUCCESS, 
-        	'message' => _t('_payment_2co_msg_verified'), 
-        	'pending_id' => $iPendingId,
-        	'client_name' => _t('_payment_txt_buyer_name_mask', bx_process_input($aData['first_name']), bx_process_input($aData['last_name'])),
-        	'client_email' => bx_process_input($aData['email']),
-        	'paid' => true
-        );
-    }
-
-    protected function _generateKey($sOrder, $sAmount)
-    {
-    	if((int)$this->getOption('mode') == TUCO_MODE_TEST)
-    		$sOrder = '1';
-
-        $sKey = $this->getOption('secret_word') . $this->getOption('account_id') . $sOrder . $sAmount;
-        return strtoupper(md5($sKey));
-    }
-}
-
-/** @} */

+ 0 - 549
modules/boonex/payment/classes/BxPaymentProviderBitPay.php

@@ -1,549 +0,0 @@
-<?php defined('BX_DOL') or die('hack attempt');
-/**
- * Copyright (c) UNA, Inc - https://una.io
- * MIT License - https://opensource.org/licenses/MIT
- *
- * @defgroup    Payment Payment
- * @ingroup     UnaModules
- *
- * @{
- */
-
-define('BP_STATUS_NEW', 'new');
-define('BP_STATUS_PAID', 'paid');
-define('BP_STATUS_CONFIRMED', 'confirmed');
-define('BP_STATUS_COMPLETE', 'complete');
-define('BP_STATUS_EXPIRED', 'expired');
-define('BP_STATUS_INVALID', 'invalid');
-
-define('BP_SPEED_HIGH', 'high');
-define('BP_SPEED_MEDIUM', 'medium');
-define('BP_SPEED_LOW', 'low');
-
-class BxPaymentProviderBitPay extends BxBaseModPaymentProvider implements iBxBaseModPaymentProvider
-{
-    function __construct($aConfig)
-    {
-    	$this->MODULE = 'bx_payment';
-
-        parent::__construct($aConfig);
-
-        $this->_initializeOptions();
-    }
-
-    public function initializeCheckout($iPendingId, $aCartInfo)
-    {
-    	$this->aBpOptions['redirectURL'] .= $aCartInfo['vendor_id'];
-
-    	$this->aBpOptions['notificationURL'] .= $aCartInfo['vendor_id'];
-    	$this->aBpOptions['notificationURL'] = bx_append_url_params($this->aBpOptions['notificationURL'], array('bxssl' => 1));
-
-	    switch ($aCartInfo['vendor_currency_code']) {
-			case 'USD':
-			case 'EUR':
-			case 'BTC':
-				$this->aBpOptions['currency'] = $aCartInfo['vendor_currency_code'];
-		}
-
-		$aPosData = array(
-			'vnd' => (string)$aCartInfo['vendor_id'], 
-			'clt' => (string)$aCartInfo['client_id'], 
-			'pnd' => (string)$iPendingId
-		);
-		$aOptions = array(
-			'itemDesc' => 'Payment to ' . $aCartInfo['vendor_profile_name']
-		);
-		$aResponse = $this->createInvoice($iPendingId, (float)$aCartInfo['items_price'], $aPosData, $aOptions);
-		if(!empty($aResponse['error']))
-			return _t(is_array($aResponse['error']) ? $aResponse['error']['message'] : $aResponse['error']);
-
-		header('Location: ' . $aResponse['url']);
-		exit;
-    }
-
-    public function finalizeCheckout(&$aData)
-    {
-    	$aData = $this->_verifyNotification();
-    	if($aData === false)
-    		return array('code' => 2, 'message' => _t('_payment_bp_err_no_data_given'));
-
-		if(empty($this->_aOptions) && isset($aData['posData']['d']['pnd'])) {
-            $this->_aOptions = $this->getOptionsByPending($aData['posData']['d']['pnd']);
-			if(empty($this->_aOptions))
-            	return array('code' => 3, 'message' => _t('_payment_bp_err_no_vendor_given'));
-
-            $this->_initializeOptions();
-		}
-
-		$aPosData = $this->_verifyPosData($aData['posData']);
-		if($aPosData === false)
-			return array('code' => 4, 'message' => _t('_payment_bp_err_incorrect_data'));
-
-		//--- Update pending transaction ---//
-		$sStatus = $aData['status'];
-		$sMessage = '';
-
-		$sResult = $this->_verifyAmount($aPosData, $aData['price']);
-		if($sResult === false) {
-			$sStatus = BP_STATUS_INVALID;
-			$sMessage = _t('_payment_bp_err_wrong_amount');
-		}
-
-		$iPendingId = (int)$aPosData['pnd'];
-		$sOrderId = Bx_process_input($aData['id']);
-        $this->_oModule->_oDb->updateOrderPending($iPendingId, array(
-            'order' => $sOrderId,
-            'error_code' => $sStatus,
-            'error_msg' => $sMessage
-        ));
-
-        $aPending = $this->_oModule->_oDb->getOrderPending(array('type' => 'id', 'id' => $iPendingId));
-        if((int)$aPending['processed'] != 0)
-            return array('code' => 6, 'message' => _t('_payment_bp_err_already_processed'));
-
-        //--- Process purchased items in the database if STATUS became CONFIRMED (HIGH and MEDIUM speed), COMPLETE (LOW speed)
-		$sSpeed = $this->aBpOptions['transactionSpeed'];
-		if(!((in_array($sSpeed, array(BP_SPEED_HIGH, BP_SPEED_MEDIUM)) && $sStatus == BP_STATUS_CONFIRMED) || ($sSpeed == BP_SPEED_LOW && $sStatus == BP_STATUS_COMPLETE)))
-			return array('code' => 7, 'message' => _t('_payment_bp_err_no_confirmation_given'));		
-
-		return array(
-			'code' => BX_PAYMENT_RESULT_SUCCESS, 
-			'message' => '', 
-			'pending_id' => $iPendingId,
-			'paid' => true
-		);
-    }
-
-    public function finalizedCheckout()
-    {
-    	return array(
-    		'message' => _t('_payment_bp_msg_checkout_finished')
-    	);
-    }
-
-	/**
-	 *
-	 * Creates BitPay invoice via Bitpay::curl.
-	 *
-	 * @param string $orderId, string $price, string $posData, array $options
-	 * @return array $response
-	 * @throws Exception $e
-	 *
-	 */
-	public function createInvoice($orderId, $price, $posData, $options = array()) {
-		// $orderId: Used to display an orderID to the buyer. In the account summary view, this value is used to
-		// identify a ledger entry if present. Maximum length is 100 characters.
-		//
-		// $price: by default, $price is expressed in the currency you set in Bitpay::aOptions['currency'].
-		//
-		// $posData: this field is included in status updates or requests to get an invoice.  It is intended to be used by
-		// the merchant to uniquely identify an order associated with an invoice in their system.  Aside from that, Bit-Pay does
-		// not use the data in this field.  The data in this field can be anything that is meaningful to the merchant.
-		// Maximum length is 100 characters.
-		//
-		// Note:  Using the posData hash option will APPEND the hash to the posData field and could push you over the 100
-		//        character limit.
-		//
-		// $options keys can include any of:
-		//	'itemDesc', 'itemCode', 'notificationEmail', 'notificationURL', 'redirectURL', 'apiKey'
-		//	'currency', 'physical', 'fullNotifications', 'transactionSpeed', 'buyerName',
-		//	'buyerAddress1', 'buyerAddress2', 'buyerCity', 'buyerState', 'buyerZip', 'buyerEmail', 'buyerPhone'
-		//
-		// If a given option is not provided here, the value of that option will default to what is found in Bitpay::aOptions
-
-		try {
-			$options = array_merge($this->aBpOptions, $options);  // $options override any options found in Bitpay::aOptions
-			$pos = array('d' => $posData);
-
-			if ($this->aBpOptions['verifyPos']) 
-				$pos['h'] = $this->_hash(serialize($posData), $options['apiKey']);
-
-			$options['posData'] = json_encode($pos);
-			if(strlen($options['posData']) > 100)
-				return array('error' => '_payment_bp_err_posdata_exceed_limit');
-
-			$options['orderID'] = $orderId;
-			$options['price'] = $price;
-
-			$postOptions = array('orderID', 'itemDesc', 'itemCode', 'notificationEmail', 'notificationURL', 'redirectURL', 
-	        	'posData', 'price', 'currency', 'physical', 'fullNotifications', 'transactionSpeed', 'buyerName', 
-	            'buyerAddress1', 'buyerAddress2', 'buyerCity', 'buyerState', 'buyerZip', 'buyerEmail', 'buyerPhone');
-
-			foreach($postOptions as $o) {
-				if (array_key_exists($o, $options))
-					$post[$o] = $options[$o];
-			}
-			$post = json_encode($post);
-
-			$response = $this->_curl('https://bitpay.com/api/invoice/', $options['apiKey'], $post);
-
-			if($this->aBpOptions['useLogging']) {
-				$this->log('Create Invoice: ');
-				$this->log('-- Data: ' . $post);
-				$this->log('Response: ');
-				$this->log($response);
-			}
-
-			return $response;
-
-		}
-		catch (Exception $e) {
-			if($this->aBpOptions['useLogging'])
-				$this->log('Error: ' . $e->getMessage());
-
-			return array('error' => $e->getMessage());
-		}
-	}
-
-	/**
-	 *
-	 * Retrieves an invoice from BitPay.  $options can include 'apiKey'
-	 *
-	 * @param string $invoiceId, boolean $apiKey
-	 * @return mixed $json
-	 * @throws Exception $e
-	 *
-	 */
-	public function getInvoice($invoiceId, $apiKey=false) {
-		try {
-			if (!$apiKey)
-				$apiKey = $this->aBpOptions['apiKey'];
-
-			$response = $this->_curl('https://bitpay.com/api/invoice/'.$invoiceId, $apiKey);
-
-			if (is_string($response))
-				return $response; // error
-
-			$response['posData'] = json_decode($response['posData'], true);
-			$response['posData'] = $response['posData']['d'];
-
-			return $response;
-		}
-		catch (Exception $e) {
-			if($this->aBpOptions['useLogging'])
-				$this->log('Error: ' . $e->getMessage());
-
-			return 'Error: ' . $e->getMessage();
-		}
-	}
-
-	/**
-	 *
-	 * Retrieves a list of all supported currencies
-	 * and returns associative array.
-	 * 
-	 * @param none
-	 * @return array $currencies
-	 * @throws Exception $e
-	 * 
-	 */
-	function getCurrencyList() {
-		$currencies = array();
-		$rate_url = 'https://bitpay.com/api/rates';
-
-		try {
-			$clist = json_decode(file_get_contents($rate_url),true);
-
-			foreach($clist as $key => $value)
-				$currencies[$value['code']] = $value['name'];
-
-			return $currencies;
-		}
-		catch (Exception $e) {
-			if($this->aBpOptions['useLogging'])
-				$this->log('Error: ' . $e->getMessage());
-
-			return 'Error: ' . $e->getMessage();
-		}
-	}
-
-	/**
-	 * 
-	 * Retrieves the current rate based on $code.
-	 * The default code us USD, so calling the 
-	 * function without a parameter will return
-	 * the current BTC/USD price.
-	 * 
-	 * @param string $code
-	 * @return string $rate
-	 * @throws Exception $e
-	 * 
-	 */
-	public function getRate($code = 'USD') {
-		$rate_url = 'https://bitpay.com/api/rates';
-
-		try {
-			$clist = json_decode(file_get_contents($rate_url),true);
-
-			foreach($clist as $key => $value) {
-				if($value['code'] == $code)
-					$rate = number_format($value['rate'], 2, '.', '');
-			}
-
-			return $rate;
-		}
-		catch (Exception $e) {
-			if($this->aBpOptions['useLogging'])
-				$this->log('Error: ' . $e->getMessage());
-			return 'Error: ' . $e->getMessage();
-		}
-	}
-
-	protected function _initializeOptions() {
-		// REQUIRED Api key you created at bitpay.com
-		$this->aBpOptions['apiKey'] = $this->getOption('api_key');
-
-		// whether to verify POS data by hashing above api key.  If set to false, you should
-		// have some way of verifying that callback data comes from bitpay.com
-		// note: this option can only be changed here.  It cannot be set dynamically. 
-		$this->aBpOptions['verifyPos'] = true;
-
-		// email where invoice update notifications should be sent
-		$this->aBpOptions['notificationEmail'] = $this->getOption('notification_email');
-
-		// url where bit-pay server should send update notifications.  See API doc for more details.
-		// example: $bpNotificationUrl = 'http://www.example.com/callback.php';
-		$this->aBpOptions['notificationURL'] = $this->_oModule->_oConfig->getUrl('URL_RETURN_DATA', array(), true) . $this->_sName . '/';
-
-		// url where the customer should be directed to after paying for the order
-		// example: $bpNotificationUrl = 'http://www.example.com/confirmation.php';
-		$this->aBpOptions['redirectURL'] = BX_DOL_URL_ROOT . $this->_oModule->_oConfig->getBaseUri() . 'act_checkout_finished/' . $this->_sName . '/';
-
-		// This is the currency used for the price setting.  A list of other pricing
-		// currencies supported is found at bitpay.com
-		$this->aBpOptions['currency'] = 'BTC';
-
-		// Indicates whether anything is to be shipped with the order
-		// (if false, the buyer will be informed that nothing is to be shipped)
-		$this->aBpOptions['physical'] = false;
-
-		// If set to false, then notificaitions are only
-		// sent when an invoice is confirmed (according the the
-		// transactionSpeed setting). If set to true, then a notification
-		// will be sent on every status change
-		$this->aBpOptions['fullNotifications'] = $this->getOption('full_notifications') == 'on';
-
-		// transaction speed: low/medium/high.   See API docs for more details.
-		$this->aBpOptions['transactionSpeed'] = $this->getOption('transaction_speed'); 
-
-		// Change to 'true' if you would like automatic logging of invoices and errors.
-		// Otherwise you will have to call the bpLog function manually to log any information.
-		$this->aBpOptions['useLogging'] = true;
-	}
-
-	/**
-	 *
-	 * Call from your notification handler to convert $_POST data to an object containing invoice data
-	 *
-	 * @param boolean $apiKey
-	 * @return mixed $json
-	 * @throws Exception $e
-	 *
-	 */
-	protected function _verifyNotification() {
-		try {
-			$this->log('Notification received: ' . date("m.d.y H:i:s"));
-
-			$post = file_get_contents("php://input");
-			if(!$post) {
-				$this->log('Error: No post data');
-				return false;
-			}
-
-			$json = json_decode($post, true);
-			$this->log('-- Data: ' . $post);
-			$this->log($json);
-
-			if(is_string($json))
-				return false;
-
-			if(!array_key_exists('posData', $json)) {
-				$this->log('Error: No posData');
-				return false;
-			}
-
-			$json['posData'] = json_decode($json['posData'], true);
-			if(empty($json['posData']) || !is_array($json['posData'])) {
-				$this->log('Error: Empty posData');
-				return false;
-			}
-
-			return $json;
-		}
-		catch (Exception $e) {
-			if($this->aBpOptions['useLogging'])
-				$this->log('Error: ' . $e->getMessage());
-
-			return false;
-		}
-	}
-
-	/**
-	 *
-	 * Call from your notification handler to verify posData
-	 *
-	 * @param array $aPosData
-	 * @return boolean
-	 *
-	 */
-	protected function _verifyPosData($aPosData) {
-		if(!$this->aBpOptions['verifyPos']) {
-			if(empty($aPosData['d']) || !is_array($aPosData['d'])) {
-				$this->log('Error: Payment data cannot be found.');
-				return false;
-			}
-
-			return $aPosData['d'];
-		}
-
-		if($this->_hash(serialize($aPosData['d']), $this->aBpOptions['apiKey']) != $aPosData['h']) {
-			$this->log('Error: Authentication failed (bad posData hash).');
-			return false;
-		}
-
-		return $aPosData['d'];
-	}
-
-	protected function _verifyAmount($aPosData, $fAmount) {
-    	$iPendingId = (int)$aPosData['pnd'];
-
-        $aPending = $this->_oModule->_oDb->getOrderPending(array('type' => 'id', 'id' => $iPendingId));
-        if(empty($aPending) || !is_array($aPending) || $fAmount != (float)$aPending['amount'])
-            return false;	        	
-
-        return true;
-	}
-
-	/**
-	 * 
-	 * Decodes JSON response and returns
-	 * associative array.
-	 * 
-	 * @param string $response
-	 * @return array $arrResponse
-	 * @throws Exception $e
-	 * 
-	 */
-	protected function _decodeResponse($response) {
-		try {
-			if (empty($response) || !(is_string($response)))
-				return array('error' => 'BxPmtBitPay::_decodeResponse expects a string parameter.');
-
-			return json_decode($response, true);
-		} 
-		catch (Exception $e) {
-			if($this->aBpOptions['useLogging'])
-				$this->log('Error: ' . $e->getMessage());
-
-			return array('error' => $e->getMessage());
-		}
-	}
-
-	/**
-	 *
-	 * Generates a base64 encoded keyed hash.
-	 *
-	 * @param string $data, string $key
-	 * @return string $hmac
-	 * @throws Exception $e
-	 *
-	 */
-	protected function _hash($data, $key) {
-		try {
-			$hmac = base64_encode(hash_hmac('sha256', $data, $key, TRUE));
-			return strtr($hmac, array('+' => '-', '/' => '_', '=' => ''));
-		}
-		catch (Exception $e) {
-			if($this->aBpOptions['useLogging'])
-				$this->log('Error: ' . $e->getMessage());
-
-			return 'Error: ' . $e->getMessage();
-		}
-	}
-
-	/**
-	 *
-	 * Handles post/get to BitPay via curl.
-	 *
-	 * @param string $url, string $apiKey, boolean $post
-	 * @return mixed $response
-	 * @throws Exception $e
-	 *
-	 */
-	protected function _curl($url, $apiKey, $post = false) {
-		if(!isset($url) || trim($url) == '' || !isset($apiKey) || trim($apiKey) == '') {
-			// Invalid parameter specified
-			if($this->aBpOptions['useLogging'])
-				$this->log('Error: You must supply non-empty url and apiKey parameters.');
-
-	    	return array('error' => 'You must supply non-empty url and apiKey parameters.');
-		}
-
-		try {
-			$curl = curl_init();
-			$length = 0;
-
-			if ($post) {
-				curl_setopt($curl, CURLOPT_POST, 1);
-				curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
-				$length = strlen($post);
-			}
-
-			$uname = base64_encode($apiKey);
-
-			if($uname) {
-				$header = array(
-					'Content-Type: application/json',
-					'Content-Length: ' . $length,
-					'Authorization: Basic ' . $uname,
-				);
-
-				curl_setopt($curl, CURLOPT_URL, $url);
-				curl_setopt($curl, CURLOPT_PORT, 443);
-				curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
-				curl_setopt($curl, CURLOPT_TIMEOUT, 10);
-				curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC ) ;
-				curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 1); // verify certificate
-				curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); // check existence of CN and verify that it matches hostname
-				curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
-				curl_setopt($curl, CURLOPT_FORBID_REUSE, 1);
-				curl_setopt($curl, CURLOPT_FRESH_CONNECT, 1);
-
-				$responseString = curl_exec($curl);
-
-				if($responseString == false) {
-					$response = array('error' => curl_error($curl));
-					if($this->aBpOptions['useLogging'])
-						$this->log('Error: ' . curl_error($curl));
-				} 
-				else {
-					$response = json_decode($responseString, true);
-					if (!$response) {
-						$response = array('error' => 'invalid json: '.$responseString);
-						if($this->aBpOptions['useLogging'])
-							$this->log('Error - Invalid JSON: ' . $responseString);
-					}
-				}
-
-				curl_close($curl);
-				return $response;
-			} 
-			else {
-				curl_close($curl);
-	
-				if($this->aBpOptions['useLogging'])
-					$this->log('Invalid data found in apiKey value passed to Bitpay::curl method. (Failed: base64_encode(apikey))');
-
-				return array('error' => 'Invalid data found in apiKey value passed to Bitpay::curl method. (Failed: base64_encode(apikey))');
-			}
-		}
-		catch (Exception $e) {
-			@curl_close($curl);
-			if($this->aBpOptions['useLogging'])
-			$this->log('Error: ' . $e->getMessage());
-			return array('error' => $e->getMessage());
-		}
-	}
-}
-
-/** @} */

+ 0 - 327
modules/boonex/payment/classes/BxPaymentProviderRecurly.php

@@ -1,327 +0,0 @@
-<?php defined('BX_DOL') or die('hack attempt');
-/**
- * Copyright (c) UNA, Inc - https://una.io
- * MIT License - https://opensource.org/licenses/MIT
- *
- * @defgroup    Payment Payment
- * @ingroup     UnaModules
- *
- * @{
- */
-
-require_once(BX_DIRECTORY_PATH_PLUGINS . 'recurly/recurly.php');
-
-define('RCRL_MODE_LIVE', 1);
-define('RCRL_MODE_TEST', 2);
-
-class BxPaymentProviderRecurly extends BxBaseModPaymentProvider implements iBxBaseModPaymentProvider
-{
-	protected $_aIncludeJs;
-	protected $_aIncludeCss;
-
-	protected $_sFormCard;
-	protected $_sFormDisplayCardAdd;
-
-	protected $_iMode;
-	protected $_bCheckAmount;
-
-    function __construct($aConfig)
-    {
-    	$this->MODULE = 'bx_payment';
-
-        parent::__construct($aConfig);
-
-        $this->_aIncludeJs = array(
-        	'https://js.recurly.com/v4/recurly.js'
-        );
-        $this->_aIncludeCss = array(
-        	'recurly.css'
-        );
-
-        $this->_sFormCard = 'bx_payment_form_rcrl_card';
-        $this->_sFormDisplayCardAdd = 'bx_payment_form_rcrl_card_add';
-
-        $this->_bUseSsl = true;
-        $this->_bCheckAmount = false; // Disabled for easier processing of discounted subscriptions.
-    }
-
-    public function initOptions($aOptions)
-    {
-    	parent::initOptions($aOptions);
-
-    	$this->_iMode = (int)$this->getOption('mode');
-    }
-
-	public function addJsCss()
-    {
-    	if(!$this->isActive())
-    		return;
-
-		$this->_oModule->_oTemplate->addJs($this->_aIncludeJs);
-		$this->_oModule->_oTemplate->addCss($this->_aIncludeCss);
-    }
-
-    public function initializeCheckout($iPendingId, $aCartInfo)
-    {
-    	$aItem = array_shift($aCartInfo['items']);
-    	if(empty($aItem) || !is_array($aItem))
-    		return $this->_sLangsPrefix . 'err_empty_items';
-
-		$aClient = $this->_oModule->getProfileInfo();
-		$aVendor = $this->_oModule->getProfileInfo($aCartInfo['vendor_id']);
-
-		$mixedResult = $this->createCardForm($iPendingId, $aItem, $aClient, $aVendor);
-		if($mixedResult === false)
-			return $this->_sLangsPrefix . 'err_cannot_perform';
-
-		return array_merge(array('code' => 0), $mixedResult);
-    }
-
-    public function finalizeCheckout(&$aData)
-    {
-    	$iPendingId = bx_process_input($aData['pending_id'], BX_DATA_INT);
-    	$sItem = bx_process_input($aData['item']);
-    	$sToken = bx_process_input($aData['token']);
-    	$aClient = array(
-    		'first_name' => bx_process_input($aData['first_name']),
-    		'last_name' => bx_process_input($aData['last_name']),
-    		'email' => bx_process_input($aData['email'])
-    	);
-
-        if(empty($sToken) || empty($iPendingId))
-        	return array('code' => 1, 'message' => $this->_sLangsPrefix . 'pp_err_no_data_given');
-		
-		$aPending = $this->_oModule->_oDb->getOrderPending(array('type' => 'id', 'id' => $iPendingId));
-        if(!empty($aPending['order']) || !empty($aPending['error_code']) || !empty($aPending['error_msg']) || (int)$aPending['processed'] != 0)
-            return array('code' => 3, 'message' => $this->_sLangsPrefix . 'err_already_processed');
-
-		$oSubscription = $this->createSubscription($sToken, $sItem, $aClient);
-		if($oSubscription === false)
-			return $this->_sLangsPrefix . 'err_cannot_perform';
-
-		/*
-		 * TODO: Need to get subscription ID to save it in DB as Order
-		 */
-		$sSubscription = '';
-
-		$aResult = array(
-			'code' => BX_PAYMENT_RESULT_SUCCESS,
-        	'message' => $this->_sLangsPrefix . 'rcrl_msg_subscribed',
-			'pending_id' => $iPendingId,
-			'client_name' => _t($this->_sLangsPrefix . 'txt_buyer_name_mask', $aClient['first_name'], $aClient['last_name']),
-			'client_email' => $aClient['email'],
-			'paid' => false
-		);
-
-        //--- Update pending transaction ---//
-        $this->_oModule->_oDb->updateOrderPending($iPendingId, array(
-            'order' => $sSubscription,
-            'error_code' => $aResult['code'],
-            'error_msg' => _t($aResult['message'])
-        ));
-
-        return $aResult;
-    }
-
-    public function notify()
-    {
-    	/*
-    	 * TODO: Integrate necessary Webhook events. 
-    	 */
-		//$iResult = $this->_processEvent();
-		//http_response_code($iResult);
-    }
-
-    public function createCardForm($iPendingId, $aItem, $aClient, $aVendor)
-    {
-		$oForm = BxDolForm::getObjectInstance($this->_sFormCard, $this->_sFormDisplayCardAdd, $this->_oModule->_oTemplate);
-        $oForm->aFormAttrs['action'] = bx_append_url_params($this->getReturnDataUrl($aVendor['id']), array(
-			'pending_id' => $iPendingId
-		));
-
-        $oForm->aInputs['pending_id']['value'] = $iPendingId;
-        $oForm->aInputs['item']['value'] = $aItem['name'];
-
-		$aCardFields = array('card_number', 'card_cvv');
-		foreach($aCardFields as $sCardField) {
-			$oForm->aInputs[$sCardField]['content'] = $this->_oModule->_oTemplate->parseHtmlByName('rcrl_card_field.html', array(
-				'attrs' => bx_convert_array2attrs($oForm->aInputs[$sCardField]['attrs'])
-			));
-		}
-		$oForm->aInputs['card_expire']['content'] = $this->_oModule->_oTemplate->parseHtmlByName('rcrl_card_field_date.html', array(
-			'attrs_month' => bx_convert_array2attrs(array('data-recurly' => 'month')),
-			'attrs_year' => bx_convert_array2attrs(array('data-recurly' => 'year'))
-		));
-
-        $oForm->initChecker();
-        if($oForm->isSubmittedAndValid()) {
-        	$sFormMethod = $oForm->aFormAttrs['method'];
-
-        	/*
-        	 * TODO: Need to reload form on internal error or update the code to work via this check and then redirect to Finalize.
-        	 * Issue with "form reloading". Currently Recurly doesn't allow to "call payment form" multiple times (https://github.com/recurly/recurly-js/issues/239). 
-        	 */ 
-        }
-
-        $aTmplConfig = BxTemplConfig::getInstance()->__get('aLessConfig');
-        
-        $sId = 'bx-payment-rcrl-card-add';
-    	$sTitle = _t($this->_sLangsPrefix . 'popup_title_rcrl_card_add');
-        $sContent = BxTemplFunctions::getInstance()->popupBox($sId, $sTitle, $this->_oModule->_oTemplate->parseHtmlByName('rcrl_card_popup_add.html', array(
-            'public_key' => $this->getOption('api_key_public'),
-            'font_family' => $aTmplConfig['bx-font-family'],
-            'font_size' => $aTmplConfig['bx-font-size-default'],
-            'font_color' => $aTmplConfig['bx-font-color-default'],
-            'form_id' => $oForm->aFormAttrs['id'],
-            'form' => $oForm->getCode(true),
-        )));
-
-        return array('popup' => array(
-            'html' => $sContent, 
-            'options' => array(
-                'closeOnOuterClick' => false, 
-                'onBeforeShow' => 'bxRecurlyFieldsInit();', 
-                'onHide' => 'bxRecurlyFieldsDestroy();'
-            )
-        ));
-    }
-
-	public function createSubscription($sToken, $sItem, $aClient)
-	{
-		$oSubscription = false;
-
-		try {
-			$oSubscription = new Recurly_Subscription();
-			$oSubscription->plan_code = $sItem;
-
-			$oSubscription->account = new Recurly_Account();
-			$oSubscription->account->account_code = 'pat_smith';
-			$oSubscription->account->first_name = $aClient['first_name'];
-			$oSubscription->account->last_name = $aClient['last_name'];
-			$oSubscription->account->email = $aClient['email'];
-
-			$oSubscription->account->billing_info = new Recurly_BillingInfo();
-			$oSubscription->account->billing_info->token_id = $sToken;
-
-			$oSubscription->create();
-		}
-		catch (Exception $oException) {
-			$iError = $oException->getCode();
-			$sError = $oException->getMessage();
-
-			$this->log('Create Subscription Error: ' . $sError . '(' . $iError . ')');
-
-			return false;
-		}
-
-		return $oSubscription;
-	}
-
-	public function retrieveSubscription($sSubscriptionId)
-	{
-		$oSubscription = null;
-
-		try {
-			
-		}
-		catch (Exception $oException) {
-			$iError = $oException->getCode();
-			$sError = $oException->getMessage();
-
-			$this->log('Retrieve Subscription Error: ' . $sError . '(' . $iError . ')');
-
-			return false;
-		}
-
-		return $oSubscription;
-	}
-
-	public function deleteSubscription($sSubscriptionId)
-	{
-		try {
-
-		}
-		catch (Exception $oException) {
-			$aError = $oException->getJsonBody();
-
-			$this->log('Delete Subscription Error: ' . $aError['error']['message']);
-			$this->log($aError);
-
-			return false;
-		}
-
-		return true;
-	}
-
-	protected function _processEvent()
-	{
-    	$sInput = @file_get_contents("php://input");
-		$aEvent = json_decode($sInput, true);
-		if(empty($aEvent) || !is_array($aEvent)) 
-			return 404;
-
-		$sType = $aEvent['event_type'];
-		if(!in_array($sType, array('payment_succeeded', ' payment_refunded', 'subscription_cancelled')))
-			return 200;
-
-		$this->log('Webhooks: ' . (!empty($sType) ? $sType : ''));
-		$this->log($aEvent);
-
-		$sMethod = '_processEvent' . bx_gen_method_name($sType, array('.', '_', '-'));
-    	if(!method_exists($this, $sMethod))
-    		return 200;
-
-    	return $this->$sMethod($aEvent) ? 200 : 403;
-    }
-
-	protected function _processEventPaymentSucceeded(&$aEvent)
-	{
-		$mixedResult = $this->_getData($aEvent, true);
-		if($mixedResult === false)
-			return false;
-
-		list($aPending, $aTransaction) = $mixedResult;
-
-		$fTransactionAmount = (float)$aTransaction['amount'] / 100;
-		$sTransactionCurrency = strtoupper($aTransaction['currency_code']);
-		if($this->_bCheckAmount && ((float)$aPending['amount'] != $fTransactionAmount || strcasecmp($this->_oModule->_oConfig->getDefaultCurrencyCode(), $sTransactionCurrency) !== 0))
-			return false;
-
-		return $this->_oModule->registerPayment($aPending);
-	}
-
-	protected function _processEventPaymentRefunded(&$aEvent)
-	{
-		$mixedResult = $this->_getData($aEvent);
-		if($mixedResult === false)
-			return false;
-
-		list($aPending) = $mixedResult;
-		return $this->_oModule->refundPayment($aPending);
-	}
-
-	protected function _processEventSubscriptionCancelled(&$aEvent)
-	{
-		$mixedResult = $this->_getData($aEvent);
-		if($mixedResult === false)
-			return false;
-
-		list($aPending) = $mixedResult;
-		return $this->_oModule->getObjectSubscriptions()->cancelLocal($aPending);
-	}
-
-	protected function _getData(&$aEvent, $bWithStatusCheck = false)
-	{
-		$aTransaction = $aEvent['content']['transaction'];
-		if(empty($aTransaction) || ($bWithStatusCheck && $aTransaction['status'] != 'success'))
-			return false;
-
-		$aPending = $this->_oModule->_oDb->getOrderPending(array('type' => 'order', 'order' => $aTransaction['subscription_id']));
-		if(empty($aPending) || !is_array($aPending))
-			return false;
-
-		return array($aPending, $aTransaction);
-	}
-}
-
-/** @} */

+ 259 - 370
modules/boonex/payment/install/langs/en.xml

@@ -339,380 +339,269 @@
 <p>Go to the <a href="{pending_orders_link}">pending orders page</a> to process the order once the payment is received.</p>
 {email_footer}]]></string>
 
-	<!-- MESSAGES, WARNINGS and ERRORS -->
-	<string name="_bx_payment_msg_no_results"><![CDATA[Empty]]></string>
-	<string name="_bx_payment_msg_redirecting"><![CDATA[Redirecting... Please wait.]]></string>
-	<string name="_bx_payment_msg_item_added"><![CDATA[The item was successfully added to your shopping cart.]]></string>
-	<string name="_bx_payment_msg_item_deleted"><![CDATA[The item was successfully deleted from your shopping cart.]]></string>
-	<string name="_bx_payment_msg_successfully_performed"><![CDATA[The action was successfully performed.]]></string>
-	<string name="_bx_payment_msg_successfully_processed_free"><![CDATA[Free item was successfully processed]]></string>
-	<string name="_bx_payment_msg_cancelation_request_sent"><![CDATA[Cancellation request was sent. Please wait.]]></string>
-        <string name="_bx_payment_msg_confirm_cancelation"><![CDATA[Are you sure you want to cancel your subscription?]]></string>
-        <string name="_bx_payment_msg_single_seller"><![CDATA[Single seller mode is enabled. <a href="{0}">Got to</a> single shopping cart.]]></string>
-	<string name="_bx_payment_err_access_db"><![CDATA[Database access error.]]></string>
-	<string name="_bx_payment_err_cannot_validate"><![CDATA[Can't connect to remote host for validation.]]></string>
-	<string name="_bx_payment_err_empty_items"><![CDATA[There are no items selected.]]></string>
-	<string name="_bx_payment_err_empty_order"><![CDATA[The order is empty.]]></string>
-	<string name="_bx_payment_err_inactive_vendor"><![CDATA[The vendor status is not active.]]></string>
-	<string name="_bx_payment_err_incorrect_provider"><![CDATA[Incorrect or unavailable payment provider.]]></string>
-	<string name="_bx_payment_err_not_accept_payments"><![CDATA[The vendor does not accept payments.]]></string>
-	<string name="_bx_payment_err_nothing_selected"><![CDATA[You need to select at least one item.]]></string>
-	<string name="_bx_payment_err_self_purchase"><![CDATA[Buying from your own store is not permitted.]]></string>
-	<string name="_bx_payment_err_required_login"><![CDATA[You need to login.]]></string>
-	<string name="_bx_payment_err_unknown_vendor"><![CDATA[Unknown vendor.]]></string>
-	<string name="_bx_payment_err_wrong_data"><![CDATA[Incorrect input data.]]></string>
-	<string name="_bx_payment_err_not_found_pending"><![CDATA[Pending order was not found.]]></string>
-	<string name="_bx_payment_err_cannot_perform"><![CDATA[Cannot perform the action. Please report.]]></string>
-	<string name="_bx_payment_err_wrong_quantity"><![CDATA[Incorrect quantity specified.]]></string>
-	<string name="_bx_payment_err_already_processed"><![CDATA[This payment has already processed.]]></string>
-	<string name="_bx_payment_err_already_registered"><![CDATA[Subscription with the same data was already registered.]]></string>
-        <string name="_bx_payment_err_not_supported"><![CDATA[Operation isn't supported.]]></string>
-
-	<!-- Other -->
-	<string name="_bx_payment_txt_add_to_cart"><![CDATA[Add to Cart]]></string>
-	<string name="_bx_payment_txt_subscribe"><![CDATA[Subscribe]]></string>
-	<string name="_bx_payment_txt_payment_to"><![CDATA[Payment to {0}]]></string>
-	<string name="_bx_payment_txt_payment_to_for"><![CDATA[Payment to {0} for:]]></string>
-	<string name="_bx_payment_txt_checkout_to"><![CDATA[Continue checkouting to {0}]]></string>
-	<string name="_bx_payment_txt_checkout_with"><![CDATA[Checkout with {0}]]></string>
-        <string name="_bx_payment_txt_checkout_with_cash"><![CDATA[Checkout with cash]]></string>
-        <string name="_bx_payment_txt_checkout_for"><![CDATA[A message was sent to the seller ({0}), that you want to pay with cash for the following items. He should contact you shortly.]]></string>
-        <string name="_bx_payment_txt_checkout_qt"><![CDATA[qt.]]></string>
-        <string name="_bx_payment_txt_checkout_item"><![CDATA[{0} ({1}qt.)<br />]]></string>
-	<string name="_bx_payment_txt_client"><![CDATA[Client]]></string>
-        <string name="_bx_payment_txt_license"><![CDATA[License]]></string>
-	<string name="_bx_payment_txt_seller"><![CDATA[Seller]]></string>
-        <string name="_bx_payment_txt_author"><![CDATA[Author]]></string>
-	<string name="_bx_payment_txt_order"><![CDATA[Order ID]]></string>
-        <string name="_bx_payment_txt_price"><![CDATA[Price]]></string>
-	<string name="_bx_payment_txt_processed_with"><![CDATA[Processed with]]></string>
-	<string name="_bx_payment_txt_message"><![CDATA[Result]]></string>
-	<string name="_bx_payment_txt_date"><![CDATA[Date]]></string>
-	<string name="_bx_payment_txt_products"><![CDATA[Products]]></string>
-	<string name="_bx_payment_txt_buyer_name_mask"><![CDATA[{0} {1}]]></string>
-	<string name="_bx_payment_txt_none"><![CDATA[none]]></string>
-	<string name="_bx_payment_txt_name_manual"><![CDATA[Manually]]></string>
-	<string name="_bx_payment_txt_yes"><![CDATA[Yes]]></string>
-	<string name="_bx_payment_txt_no"><![CDATA[No]]></string>
-        <string name="_bx_payment_txt_unsubscribe_yes"><![CDATA[Cancel automatically]]></string>
-        <string name="_bx_payment_txt_unsubscribe_no"><![CDATA[Do not cancel]]></string>
-        <string name="_bx_payment_txt_all_authors"><![CDATA[All Authors]]></string>
-        <string name="_bx_payment_txt_all_clients"><![CDATA[All Clients]]></string>
-        <string name="_bx_payment_txt_all_modules"><![CDATA[All Modules]]></string>
-        <string name="_bx_payment_txt_all_items"><![CDATA[All Items]]></string>
-        <string name="_bx_payment_txt_status_scheduled"><![CDATA[Scheduled]]></string>
-        <string name="_bx_payment_txt_status_trial"><![CDATA[Trial]]></string>
-        <string name="_bx_payment_txt_status_active"><![CDATA[Active]]></string>
-        <string name="_bx_payment_txt_status_paid"><![CDATA[Paid]]></string>
-        <string name="_bx_payment_txt_status_unpaid"><![CDATA[Unpaid]]></string>
-        <string name="_bx_payment_txt_status_overdue"><![CDATA[Overdue]]></string>
-        <string name="_bx_payment_txt_status_paused"><![CDATA[Paused]]></string>
-        <string name="_bx_payment_txt_status_canceled"><![CDATA[Canceled]]></string>
-        <string name="_bx_payment_txt_status_unknown"><![CDATA[Unknown]]></string>
-        <string name="_bx_payment_txt_invoice_title"><![CDATA[Invoice {0} from {1}]]></string>
-        <string name="_bx_payment_txt_invoice_description"><![CDATA[For a period between {0} and {1}]]></string>
-        <string name="_bx_payment_txt_payment_description"><![CDATA[Payment on {0} site.]]></string>
-
-        <!-- Offline payment provider -->
-	<string name="_bx_payment_off_cpt"><![CDATA[Offline]]></string>
-	<string name="_bx_payment_off_dsc"><![CDATA[For offline payments like cash, etransfer, etc.]]></string>
-	<string name="_bx_payment_off_active_cpt"><![CDATA[Active]]></string>
-	<string name="_bx_payment_off_active_dsc"><![CDATA[Activate(Deactivate) provider]]></string>
-        <string name="_bx_payment_off_checkout_email_cpt"><![CDATA[Email]]></string>
-        <string name="_bx_payment_off_checkout_email_dsc"><![CDATA[Email to send notifications about checkout attempts to. Leave empty to receive notifications on your profile email.]]></string>
-        <string name="_bx_payment_off_err_not_available"><![CDATA[Offline payment provider isn't available for online payments.]]></string>
-        <string name="_bx_payment_txt_name_offline"><![CDATA[Cash]]></string>
-	<string name="_bx_payment_txt_cart_offline"><![CDATA[Cash]]></string>
-
-        <!-- Credits payment provider -->
-	<string name="_bx_payment_cdt_cpt"><![CDATA[Credits]]></string>
-	<string name="_bx_payment_cdt_dsc"><![CDATA[Credits payment provider]]></string>
-	<string name="_bx_payment_cdt_active_cpt"><![CDATA[Active]]></string>
-	<string name="_bx_payment_cdt_active_dsc"><![CDATA[Activate(Deactivate) provider]]></string>
-        <string name="_bx_payment_cdt_msg_charged"><![CDATA[Payment was successfully processed.]]></string>
-        <string name="_bx_payment_cdt_msg_subscribed"><![CDATA[Thank you! Subscription created. Please, check your email for further instructions.]]></string>
-        <string name="_bx_payment_cdt_err_not_available"><![CDATA[Checkout with Credits isn't available now.]]></string>
-        <string name="_bx_payment_cdt_err_wrong_transaction"><![CDATA[Transaction verification failed.]]></string>
-        <string name="_bx_payment_txt_name_credits"><![CDATA[Credits]]></string>
-	<string name="_bx_payment_txt_cart_credits"><![CDATA[Credits]]></string>
-
-	<!-- PayPal payment provider -->
-	<string name="_bx_payment_pp_cpt"><![CDATA[PayPal]]></string>
-	<string name="_bx_payment_pp_dsc"><![CDATA[PayPal payment provider]]></string>
-	<string name="_bx_payment_pp_active_cpt"><![CDATA[Active]]></string>
-	<string name="_bx_payment_pp_active_dsc"><![CDATA[Activate(Deactivate) provider]]></string>
-	<string name="_bx_payment_pp_mode_cpt"><![CDATA[Mode]]></string>
-	<string name="_bx_payment_pp_mode_dsc"><![CDATA[Mode to process payments]]></string>
-	<string name="_bx_payment_pp_mode_live"><![CDATA[live]]></string>
-	<string name="_bx_payment_pp_mode_test"><![CDATA[test]]></string>
-	<string name="_bx_payment_pp_business_cpt"><![CDATA[Business]]></string>
-	<string name="_bx_payment_pp_business_dsc"><![CDATA[Business email address]]></string>
-	<string name="_bx_payment_pp_prc_type_cpt"><![CDATA[Process type]]></string>
-	<string name="_bx_payment_pp_prc_type_dsc"><![CDATA[The type in which data is to be processed]]></string>
-	<string name="_bx_payment_pp_prc_type_direct"><![CDATA[direct]]></string>
-	<string name="_bx_payment_pp_prc_type_pdt"><![CDATA[PDT]]></string>
-	<string name="_bx_payment_pp_prc_type_ipn"><![CDATA[IPN]]></string>
-	<string name="_bx_payment_pp_token_cpt"><![CDATA[Identity token]]></string>
-	<string name="_bx_payment_pp_token_dsc"><![CDATA[Identity token]]></string>
-	<string name="_bx_payment_pp_sandbox_cpt"><![CDATA[Sandbox]]></string>
-	<string name="_bx_payment_pp_sandbox_dsc"><![CDATA[Sandbox email address]]></string>
-	<string name="_bx_payment_pp_return_data_url_cpt"><![CDATA[Data return URL]]></string>
-	<string name="_bx_payment_pp_err_no_data_given"><![CDATA[No data given.]]></string>
-	<string name="_bx_payment_pp_err_not_completed"><![CDATA[Payment is not completed.]]></string>
-	<string name="_bx_payment_pp_err_wrong_vendor"><![CDATA[Wrong vendor.]]></string>
-	<string name="_bx_payment_pp_err_wrong_business"><![CDATA[Wrong receiver email.]]></string>
-	<string name="_bx_payment_pp_err_wrong_transaction"><![CDATA[Transaction verification failed.]]></string>
-	<string name="_bx_payment_pp_err_wrong_verification_status"><![CDATA[No verification status received.]]></string>
-	<string name="_bx_payment_pp_err_wrong_amount"><![CDATA[Wrong amount.]]></string>
-	<string name="_bx_payment_pp_err_wrong_custom_data"><![CDATA[Incorrect custom data.]]></string>
-	<string name="_bx_payment_pp_msg_verified"><![CDATA[Payment was successfully processed.]]></string>
-	<string name="_bx_payment_txt_name_paypal"><![CDATA[PayPal]]></string>
-	<string name="_bx_payment_txt_cart_paypal"><![CDATA[PayPal]]></string>
-
-        <!-- PayPal API payment provider -->
-	<string name="_bx_payment_pp_api_cpt"><![CDATA[PayPal API]]></string>
-	<string name="_bx_payment_pp_api_dsc"><![CDATA[PayPal payment provider (API based integration)]]></string>
-	<string name="_bx_payment_pp_api_active_cpt"><![CDATA[Active]]></string>
-	<string name="_bx_payment_pp_api_active_dsc"><![CDATA[Activate(Deactivate) provider]]></string>
-        <string name="_bx_payment_pp_api_hidden_cpt"><![CDATA[Hidden]]></string>
-	<string name="_bx_payment_pp_api_hidden_dsc"><![CDATA[Hide provider if you don't want to accept new payments but already have active subscriptions.]]></string>
-	<string name="_bx_payment_pp_api_mode_cpt"><![CDATA[Mode]]></string>
-	<string name="_bx_payment_pp_api_mode_dsc"><![CDATA[Mode to process payments]]></string>
-	<string name="_bx_payment_pp_api_mode_live"><![CDATA[live]]></string>
-	<string name="_bx_payment_pp_api_mode_test"><![CDATA[test]]></string>
-        <string name="_bx_payment_pp_api_live_account_cpt"><![CDATA[Account (live)]]></string>
-        <string name="_bx_payment_pp_api_live_account_dsc"><![CDATA[Email address which is used to access your PayPal account.]]></string>
-        <string name="_bx_payment_pp_api_live_client_id_cpt"><![CDATA[Client ID (live)]]></string>
-        <string name="_bx_payment_pp_api_live_client_id_dsc"><![CDATA[A part of application's credentials.]]></string>
-        <string name="_bx_payment_pp_api_live_secret_cpt"><![CDATA[Secret (live)]]></string>
-        <string name="_bx_payment_pp_api_live_secret_dsc"><![CDATA[A part of application's credentials.]]></string>
-        <string name="_bx_payment_pp_api_test_account_cpt"><![CDATA[Account (test)]]></string>
-        <string name="_bx_payment_pp_api_test_account_dsc"><![CDATA[Email address which is used to access your PayPal account.]]></string>
-        <string name="_bx_payment_pp_api_test_client_id_cpt"><![CDATA[Client ID (test)]]></string>
-        <string name="_bx_payment_pp_api_test_client_id_dsc"><![CDATA[A part of application's credentials.]]></string>
-        <string name="_bx_payment_pp_api_test_secret_cpt"><![CDATA[Secret (test)]]></string>
-        <string name="_bx_payment_pp_api_test_secret_dsc"><![CDATA[A part of application's credentials.]]></string>
-        <string name="_bx_payment_pp_api_return_data_url_cpt"><![CDATA[Data return URL]]></string>
-        <string name="_bx_payment_pp_api_notify_url_cpt"><![CDATA[Webhooks URL]]></string>
-        <string name="_bx_payment_pp_api_err_cannot_capture"><![CDATA[Can't finalize checkout.]]></string>
-        <string name="_bx_payment_pp_api_err_no_item"><![CDATA[There is nothing to subscribe.]]></string>
-        <string name="_bx_payment_pp_api_err_no_subscription"><![CDATA[The subscription data isn't available or incorrect.]]></string>
-        <string name="_bx_payment_pp_api_err_subscription_not_confirmed"><![CDATA[Subscription wasn't confirmed.]]></string>
-        <string name="_bx_payment_pp_api_msg_captured"><![CDATA[Payment was successfully processed.]]></string>
-        <string name="_bx_payment_pp_api_msg_subscribed"><![CDATA[Thank you! Subscription created. Please, check your email for further instructions.]]></string>
-        <string name="_bx_payment_txt_name_paypal_api"><![CDATA[PayPal]]></string>
-	<string name="_bx_payment_txt_cart_paypal_api"><![CDATA[PayPal]]></string>
-        <string name="_bx_payment_txt_subscribe_paypal_api"><![CDATA[PayPal]]></string>
-
-	<!-- 2Checkout payment provider -->
-	<string name="_bx_payment_2co_cpt"><![CDATA[2Checkout]]></string>
-	<string name="_bx_payment_2co_dsc"><![CDATA[2Checkout payment provider]]></string>
-	<string name="_bx_payment_2co_active_cpt"><![CDATA[Active]]></string>
-	<string name="_bx_payment_2co_active_dsc"><![CDATA[Activate(Deactivate) provider]]></string>
-	<string name="_bx_payment_2co_mode_cpt"><![CDATA[Mode]]></string>
-	<string name="_bx_payment_2co_mode_dsc"><![CDATA[Mode to process payments]]></string>
-	<string name="_bx_payment_2co_mode_live"><![CDATA[live]]></string>
-	<string name="_bx_payment_2co_mode_test"><![CDATA[test]]></string>
-	<string name="_bx_payment_2co_account_id_cpt"><![CDATA[Account number]]></string>
-	<string name="_bx_payment_2co_account_id_dsc"><![CDATA[Your 2Checkout vendor account number]]></string>
-	<string name="_bx_payment_2co_payment_method_cpt"><![CDATA[Payment Method]]></string>
-	<string name="_bx_payment_2co_payment_method_dsc"><![CDATA[This will set the default selection on the payment method step during the checkout process]]></string>
-	<string name="_bx_payment_2co_payment_method_cc"><![CDATA[Credit Card(CC)]]></string>
-	<string name="_bx_payment_2co_payment_method_ppi"><![CDATA[PayPal(PPI)]]></string>
-	<string name="_bx_payment_2co_secret_word_cpt"><![CDATA[Secret Word]]></string>
-	<string name="_bx_payment_2co_secret_word_dsc"><![CDATA[Secret word is used to calculate a check hash]]></string>
-	<string name="_bx_payment_2co_return_data_url_cpt"><![CDATA[Data return URL]]></string>
-	<string name="_bx_payment_2co_err_no_vendor_given"><![CDATA[Unknown vendor]]></string>
-	<string name="_bx_payment_2co_err_no_data_given"><![CDATA[No data given.]]></string>
-	<string name="_bx_payment_2co_err_wrong_key"><![CDATA[Check key is incorrect.]]></string>
-	<string name="_bx_payment_2co_err_wrong_payment"><![CDATA[Wrong payment.]]></string>
-	<string name="_bx_payment_2co_err_already_processed"><![CDATA[This payment has already processed]]></string>
-	<string name="_bx_payment_2co_msg_verified"><![CDATA[Successfully verified.]]></string>
-	<string name="_bx_payment_txt_name_2checkout"><![CDATA[2Checkout]]></string>
-	<string name="_bx_payment_txt_cart_2checkout"><![CDATA[2Checkout]]></string>
-
-	<!-- BitPay payment provider -->
-	<string name="_bx_payment_bp_cpt"><![CDATA[BitPay]]></string>
-	<string name="_bx_payment_bp_dsc"><![CDATA[BitPay payment provider]]></string>
-	<string name="_bx_payment_bp_active_cpt"><![CDATA[Active]]></string>
-	<string name="_bx_payment_bp_active_dsc"><![CDATA[Activate(Deactivate) provider]]></string>
-	<string name="_bx_payment_bp_active_err"><![CDATA[You should have SSL certificate (HTTPS connection) to activate and use BitPay on your site.]]></string>
-	<string name="_bx_payment_bp_api_key_cpt"><![CDATA[API Key]]></string>
-	<string name="_bx_payment_bp_api_key_dsc"><![CDATA[Your merchant BitPay API Access key]]></string>
-	<string name="_bx_payment_bp_transaction_speed_cpt"><![CDATA[Transaction speed]]></string>
-	<string name="_bx_payment_bp_transaction_speed_dsc"><![CDATA[Determines when an invoice is confirmed]]></string>
-	<string name="_bx_payment_bp_transaction_speed_high"><![CDATA[High]]></string>
-	<string name="_bx_payment_bp_transaction_speed_medium"><![CDATA[Medium]]></string>
-	<string name="_bx_payment_bp_transaction_speed_low"><![CDATA[Low]]></string>
-	<string name="_bx_payment_bp_full_notifications_cpt"><![CDATA[Enable full notifications]]></string>
-	<string name="_bx_payment_bp_full_notifications_dsc"><![CDATA[When enabled notifications will be sent on every status change, otherwise when an invoice is confirmed only.]]></string>
-	<string name="_bx_payment_bp_notification_email_cpt"><![CDATA[Notification Email]]></string>
-	<string name="_bx_payment_bp_notification_email_dsc"><![CDATA[Email where invoice update notifications will be sent. Leave empty to disable.]]></string>
-	<string name="_bx_payment_bp_err_posdata_exceed_limit"><![CDATA[The value of posData exceeds limit. Contact with administrator.]]></string>
-	<string name="_bx_payment_bp_err_no_data_given"><![CDATA[No data given.]]></string>
-	<string name="_bx_payment_bp_err_no_vendor_given"><![CDATA[Unknown vendor.]]></string>
-	<string name="_bx_payment_bp_err_incorrect_data"><![CDATA[Incorrect order data.]]></string>
-	<string name="_bx_payment_bp_err_wrong_amount"><![CDATA[Wrong payment amount.]]></string>
-	<string name="_bx_payment_bp_err_already_processed"><![CDATA[This payment has already processed.]]></string>
-	<string name="_bx_payment_bp_err_no_confirmation_given"><![CDATA[Payment is waiting for full confirmation from the Bitcoin network.]]></string>
-	<string name="_bx_payment_bp_msg_checkout_finished"><![CDATA[A payment has been confirmed. Once the transaction is fully confirmed on the Bitcoin network, the payment will be processed automatically here. Then the purchased product(s) will be displayed in shopping cart history.<br /><b>Note.</b> If it doesn't happen for some reason, you need to contact with product\'s vendor and provide him with your payment's details. He'll be able to process payment manually if the payment was received.]]></string>
-	<string name="_bx_payment_txt_name_bitpay"><![CDATA[BitPay]]></string>
-	<string name="_bx_payment_txt_cart_bitpay"><![CDATA[BitPay]]></string>
-
-	<!-- Chargebee payment provider -->
-	<string name="_bx_payment_cbee_cpt"><![CDATA[Chargebee]]></string>
-	<string name="_bx_payment_cbee_dsc"><![CDATA[If enabled, users can checkout using Chargebee's hosted pages.]]></string>
-	<string name="_bx_payment_cbee_v3_cpt"><![CDATA[Chargebee]]></string>
+    <!-- MESSAGES, WARNINGS and ERRORS -->
+    <string name="_bx_payment_msg_no_results"><![CDATA[Empty]]></string>
+    <string name="_bx_payment_msg_redirecting"><![CDATA[Redirecting... Please wait.]]></string>
+    <string name="_bx_payment_msg_item_added"><![CDATA[The item was successfully added to your shopping cart.]]></string>
+    <string name="_bx_payment_msg_item_deleted"><![CDATA[The item was successfully deleted from your shopping cart.]]></string>
+    <string name="_bx_payment_msg_successfully_performed"><![CDATA[The action was successfully performed.]]></string>
+    <string name="_bx_payment_msg_successfully_processed_free"><![CDATA[Free item was successfully processed]]></string>
+    <string name="_bx_payment_msg_cancelation_request_sent"><![CDATA[Cancellation request was sent. Please wait.]]></string>
+    <string name="_bx_payment_msg_confirm_cancelation"><![CDATA[Are you sure you want to cancel your subscription?]]></string>
+    <string name="_bx_payment_msg_single_seller"><![CDATA[Single seller mode is enabled. <a href="{0}">Got to</a> single shopping cart.]]></string>
+    <string name="_bx_payment_err_access_db"><![CDATA[Database access error.]]></string>
+    <string name="_bx_payment_err_cannot_validate"><![CDATA[Can't connect to remote host for validation.]]></string>
+    <string name="_bx_payment_err_empty_items"><![CDATA[There are no items selected.]]></string>
+    <string name="_bx_payment_err_empty_order"><![CDATA[The order is empty.]]></string>
+    <string name="_bx_payment_err_inactive_vendor"><![CDATA[The vendor status is not active.]]></string>
+    <string name="_bx_payment_err_incorrect_provider"><![CDATA[Incorrect or unavailable payment provider.]]></string>
+    <string name="_bx_payment_err_not_accept_payments"><![CDATA[The vendor does not accept payments.]]></string>
+    <string name="_bx_payment_err_nothing_selected"><![CDATA[You need to select at least one item.]]></string>
+    <string name="_bx_payment_err_self_purchase"><![CDATA[Buying from your own store is not permitted.]]></string>
+    <string name="_bx_payment_err_required_login"><![CDATA[You need to login.]]></string>
+    <string name="_bx_payment_err_unknown_vendor"><![CDATA[Unknown vendor.]]></string>
+    <string name="_bx_payment_err_wrong_data"><![CDATA[Incorrect input data.]]></string>
+    <string name="_bx_payment_err_not_found_pending"><![CDATA[Pending order was not found.]]></string>
+    <string name="_bx_payment_err_cannot_perform"><![CDATA[Cannot perform the action. Please report.]]></string>
+    <string name="_bx_payment_err_wrong_quantity"><![CDATA[Incorrect quantity specified.]]></string>
+    <string name="_bx_payment_err_already_processed"><![CDATA[This payment has already processed.]]></string>
+    <string name="_bx_payment_err_already_registered"><![CDATA[Subscription with the same data was already registered.]]></string>
+    <string name="_bx_payment_err_not_supported"><![CDATA[Operation isn't supported.]]></string>
+
+    <!-- Other -->
+    <string name="_bx_payment_txt_add_to_cart"><![CDATA[Add to Cart]]></string>
+    <string name="_bx_payment_txt_subscribe"><![CDATA[Subscribe]]></string>
+    <string name="_bx_payment_txt_payment_to"><![CDATA[Payment to {0}]]></string>
+    <string name="_bx_payment_txt_payment_to_for"><![CDATA[Payment to {0} for:]]></string>
+    <string name="_bx_payment_txt_checkout_to"><![CDATA[Continue checkouting to {0}]]></string>
+    <string name="_bx_payment_txt_checkout_with"><![CDATA[Checkout with {0}]]></string>
+    <string name="_bx_payment_txt_checkout_with_cash"><![CDATA[Checkout with cash]]></string>
+    <string name="_bx_payment_txt_checkout_for"><![CDATA[A message was sent to the seller ({0}), that you want to pay with cash for the following items. He should contact you shortly.]]></string>
+    <string name="_bx_payment_txt_checkout_qt"><![CDATA[qt.]]></string>
+    <string name="_bx_payment_txt_checkout_item"><![CDATA[{0} ({1}qt.)<br />]]></string>
+    <string name="_bx_payment_txt_client"><![CDATA[Client]]></string>
+    <string name="_bx_payment_txt_license"><![CDATA[License]]></string>
+    <string name="_bx_payment_txt_seller"><![CDATA[Seller]]></string>
+    <string name="_bx_payment_txt_author"><![CDATA[Author]]></string>
+    <string name="_bx_payment_txt_order"><![CDATA[Order ID]]></string>
+    <string name="_bx_payment_txt_price"><![CDATA[Price]]></string>
+    <string name="_bx_payment_txt_processed_with"><![CDATA[Processed with]]></string>
+    <string name="_bx_payment_txt_message"><![CDATA[Result]]></string>
+    <string name="_bx_payment_txt_date"><![CDATA[Date]]></string>
+    <string name="_bx_payment_txt_products"><![CDATA[Products]]></string>
+    <string name="_bx_payment_txt_buyer_name_mask"><![CDATA[{0} {1}]]></string>
+    <string name="_bx_payment_txt_none"><![CDATA[none]]></string>
+    <string name="_bx_payment_txt_name_manual"><![CDATA[Manually]]></string>
+    <string name="_bx_payment_txt_yes"><![CDATA[Yes]]></string>
+    <string name="_bx_payment_txt_no"><![CDATA[No]]></string>
+    <string name="_bx_payment_txt_unsubscribe_yes"><![CDATA[Cancel automatically]]></string>
+    <string name="_bx_payment_txt_unsubscribe_no"><![CDATA[Do not cancel]]></string>
+    <string name="_bx_payment_txt_all_authors"><![CDATA[All Authors]]></string>
+    <string name="_bx_payment_txt_all_clients"><![CDATA[All Clients]]></string>
+    <string name="_bx_payment_txt_all_modules"><![CDATA[All Modules]]></string>
+    <string name="_bx_payment_txt_all_items"><![CDATA[All Items]]></string>
+    <string name="_bx_payment_txt_status_scheduled"><![CDATA[Scheduled]]></string>
+    <string name="_bx_payment_txt_status_trial"><![CDATA[Trial]]></string>
+    <string name="_bx_payment_txt_status_active"><![CDATA[Active]]></string>
+    <string name="_bx_payment_txt_status_paid"><![CDATA[Paid]]></string>
+    <string name="_bx_payment_txt_status_unpaid"><![CDATA[Unpaid]]></string>
+    <string name="_bx_payment_txt_status_overdue"><![CDATA[Overdue]]></string>
+    <string name="_bx_payment_txt_status_paused"><![CDATA[Paused]]></string>
+    <string name="_bx_payment_txt_status_canceled"><![CDATA[Canceled]]></string>
+    <string name="_bx_payment_txt_status_unknown"><![CDATA[Unknown]]></string>
+    <string name="_bx_payment_txt_invoice_title"><![CDATA[Invoice {0} from {1}]]></string>
+    <string name="_bx_payment_txt_invoice_description"><![CDATA[For a period between {0} and {1}]]></string>
+    <string name="_bx_payment_txt_payment_description"><![CDATA[Payment on {0} site.]]></string>
+
+    <!-- Offline payment provider -->
+    <string name="_bx_payment_off_cpt"><![CDATA[Offline]]></string>
+    <string name="_bx_payment_off_dsc"><![CDATA[For offline payments like cash, etransfer, etc.]]></string>
+    <string name="_bx_payment_off_active_cpt"><![CDATA[Active]]></string>
+    <string name="_bx_payment_off_active_dsc"><![CDATA[Activate(Deactivate) provider]]></string>
+    <string name="_bx_payment_off_checkout_email_cpt"><![CDATA[Email]]></string>
+    <string name="_bx_payment_off_checkout_email_dsc"><![CDATA[Email to send notifications about checkout attempts to. Leave empty to receive notifications on your profile email.]]></string>
+    <string name="_bx_payment_off_err_not_available"><![CDATA[Offline payment provider isn't available for online payments.]]></string>
+    <string name="_bx_payment_txt_name_offline"><![CDATA[Cash]]></string>
+    <string name="_bx_payment_txt_cart_offline"><![CDATA[Cash]]></string>
+
+    <!-- Credits payment provider -->
+    <string name="_bx_payment_cdt_cpt"><![CDATA[Credits]]></string>
+    <string name="_bx_payment_cdt_dsc"><![CDATA[Credits payment provider]]></string>
+    <string name="_bx_payment_cdt_active_cpt"><![CDATA[Active]]></string>
+    <string name="_bx_payment_cdt_active_dsc"><![CDATA[Activate(Deactivate) provider]]></string>
+    <string name="_bx_payment_cdt_msg_charged"><![CDATA[Payment was successfully processed.]]></string>
+    <string name="_bx_payment_cdt_msg_subscribed"><![CDATA[Thank you! Subscription created. Please, check your email for further instructions.]]></string>
+    <string name="_bx_payment_cdt_err_not_available"><![CDATA[Checkout with Credits isn't available now.]]></string>
+    <string name="_bx_payment_cdt_err_wrong_transaction"><![CDATA[Transaction verification failed.]]></string>
+    <string name="_bx_payment_txt_name_credits"><![CDATA[Credits]]></string>
+    <string name="_bx_payment_txt_cart_credits"><![CDATA[Credits]]></string>
+
+    <!-- PayPal payment provider -->
+    <string name="_bx_payment_pp_cpt"><![CDATA[PayPal]]></string>
+    <string name="_bx_payment_pp_dsc"><![CDATA[PayPal payment provider]]></string>
+    <string name="_bx_payment_pp_active_cpt"><![CDATA[Active]]></string>
+    <string name="_bx_payment_pp_active_dsc"><![CDATA[Activate(Deactivate) provider]]></string>
+    <string name="_bx_payment_pp_mode_cpt"><![CDATA[Mode]]></string>
+    <string name="_bx_payment_pp_mode_dsc"><![CDATA[Mode to process payments]]></string>
+    <string name="_bx_payment_pp_mode_live"><![CDATA[live]]></string>
+    <string name="_bx_payment_pp_mode_test"><![CDATA[test]]></string>
+    <string name="_bx_payment_pp_business_cpt"><![CDATA[Business]]></string>
+    <string name="_bx_payment_pp_business_dsc"><![CDATA[Business email address]]></string>
+    <string name="_bx_payment_pp_prc_type_cpt"><![CDATA[Process type]]></string>
+    <string name="_bx_payment_pp_prc_type_dsc"><![CDATA[The type in which data is to be processed]]></string>
+    <string name="_bx_payment_pp_prc_type_direct"><![CDATA[direct]]></string>
+    <string name="_bx_payment_pp_prc_type_pdt"><![CDATA[PDT]]></string>
+    <string name="_bx_payment_pp_prc_type_ipn"><![CDATA[IPN]]></string>
+    <string name="_bx_payment_pp_token_cpt"><![CDATA[Identity token]]></string>
+    <string name="_bx_payment_pp_token_dsc"><![CDATA[Identity token]]></string>
+    <string name="_bx_payment_pp_sandbox_cpt"><![CDATA[Sandbox]]></string>
+    <string name="_bx_payment_pp_sandbox_dsc"><![CDATA[Sandbox email address]]></string>
+    <string name="_bx_payment_pp_return_data_url_cpt"><![CDATA[Data return URL]]></string>
+    <string name="_bx_payment_pp_err_no_data_given"><![CDATA[No data given.]]></string>
+    <string name="_bx_payment_pp_err_not_completed"><![CDATA[Payment is not completed.]]></string>
+    <string name="_bx_payment_pp_err_wrong_vendor"><![CDATA[Wrong vendor.]]></string>
+    <string name="_bx_payment_pp_err_wrong_business"><![CDATA[Wrong receiver email.]]></string>
+    <string name="_bx_payment_pp_err_wrong_transaction"><![CDATA[Transaction verification failed.]]></string>
+    <string name="_bx_payment_pp_err_wrong_verification_status"><![CDATA[No verification status received.]]></string>
+    <string name="_bx_payment_pp_err_wrong_amount"><![CDATA[Wrong amount.]]></string>
+    <string name="_bx_payment_pp_err_wrong_custom_data"><![CDATA[Incorrect custom data.]]></string>
+    <string name="_bx_payment_pp_msg_verified"><![CDATA[Payment was successfully processed.]]></string>
+    <string name="_bx_payment_txt_name_paypal"><![CDATA[PayPal]]></string>
+    <string name="_bx_payment_txt_cart_paypal"><![CDATA[PayPal]]></string>
+
+    <!-- PayPal API payment provider -->
+    <string name="_bx_payment_pp_api_cpt"><![CDATA[PayPal API]]></string>
+    <string name="_bx_payment_pp_api_dsc"><![CDATA[PayPal payment provider (API based integration)]]></string>
+    <string name="_bx_payment_pp_api_active_cpt"><![CDATA[Active]]></string>
+    <string name="_bx_payment_pp_api_active_dsc"><![CDATA[Activate(Deactivate) provider]]></string>
+    <string name="_bx_payment_pp_api_hidden_cpt"><![CDATA[Hidden]]></string>
+    <string name="_bx_payment_pp_api_hidden_dsc"><![CDATA[Hide provider if you don't want to accept new payments but already have active subscriptions.]]></string>
+    <string name="_bx_payment_pp_api_mode_cpt"><![CDATA[Mode]]></string>
+    <string name="_bx_payment_pp_api_mode_dsc"><![CDATA[Mode to process payments]]></string>
+    <string name="_bx_payment_pp_api_mode_live"><![CDATA[live]]></string>
+    <string name="_bx_payment_pp_api_mode_test"><![CDATA[test]]></string>
+    <string name="_bx_payment_pp_api_live_account_cpt"><![CDATA[Account (live)]]></string>
+    <string name="_bx_payment_pp_api_live_account_dsc"><![CDATA[Email address which is used to access your PayPal account.]]></string>
+    <string name="_bx_payment_pp_api_live_client_id_cpt"><![CDATA[Client ID (live)]]></string>
+    <string name="_bx_payment_pp_api_live_client_id_dsc"><![CDATA[A part of application's credentials.]]></string>
+    <string name="_bx_payment_pp_api_live_secret_cpt"><![CDATA[Secret (live)]]></string>
+    <string name="_bx_payment_pp_api_live_secret_dsc"><![CDATA[A part of application's credentials.]]></string>
+    <string name="_bx_payment_pp_api_test_account_cpt"><![CDATA[Account (test)]]></string>
+    <string name="_bx_payment_pp_api_test_account_dsc"><![CDATA[Email address which is used to access your PayPal account.]]></string>
+    <string name="_bx_payment_pp_api_test_client_id_cpt"><![CDATA[Client ID (test)]]></string>
+    <string name="_bx_payment_pp_api_test_client_id_dsc"><![CDATA[A part of application's credentials.]]></string>
+    <string name="_bx_payment_pp_api_test_secret_cpt"><![CDATA[Secret (test)]]></string>
+    <string name="_bx_payment_pp_api_test_secret_dsc"><![CDATA[A part of application's credentials.]]></string>
+    <string name="_bx_payment_pp_api_return_data_url_cpt"><![CDATA[Data return URL]]></string>
+    <string name="_bx_payment_pp_api_notify_url_cpt"><![CDATA[Webhooks URL]]></string>
+    <string name="_bx_payment_pp_api_err_cannot_capture"><![CDATA[Can't finalize checkout.]]></string>
+    <string name="_bx_payment_pp_api_err_no_item"><![CDATA[There is nothing to subscribe.]]></string>
+    <string name="_bx_payment_pp_api_err_no_subscription"><![CDATA[The subscription data isn't available or incorrect.]]></string>
+    <string name="_bx_payment_pp_api_err_subscription_not_confirmed"><![CDATA[Subscription wasn't confirmed.]]></string>
+    <string name="_bx_payment_pp_api_msg_captured"><![CDATA[Payment was successfully processed.]]></string>
+    <string name="_bx_payment_pp_api_msg_subscribed"><![CDATA[Thank you! Subscription created. Please, check your email for further instructions.]]></string>
+    <string name="_bx_payment_txt_name_paypal_api"><![CDATA[PayPal]]></string>
+    <string name="_bx_payment_txt_cart_paypal_api"><![CDATA[PayPal]]></string>
+    <string name="_bx_payment_txt_subscribe_paypal_api"><![CDATA[PayPal]]></string>
+
+    <!-- Chargebee payment provider -->
+    <string name="_bx_payment_cbee_cpt"><![CDATA[Chargebee]]></string>
+    <string name="_bx_payment_cbee_dsc"><![CDATA[If enabled, users can checkout using Chargebee's hosted pages.]]></string>
+    <string name="_bx_payment_cbee_v3_cpt"><![CDATA[Chargebee]]></string>
     <string name="_bx_payment_cbee_v3_dsc"><![CDATA[If enabled, users can checkout using Chargebee's drop-in script.]]></string>
-	<string name="_bx_payment_cbee_active_cpt"><![CDATA[Active]]></string>
-	<string name="_bx_payment_cbee_active_dsc"><![CDATA[Activate(Deactivate) provider. Note. It's recommended to use SSL for better payment processing.]]></string>
-        <string name="_bx_payment_cbee_hidden_cpt"><![CDATA[Hidden]]></string>
-	<string name="_bx_payment_cbee_hidden_dsc"><![CDATA[Hide provider if you don't want to accept new payments but already have active subscriptions.]]></string>
-	<string name="_bx_payment_cbee_mode_cpt"><![CDATA[Mode]]></string>
-	<string name="_bx_payment_cbee_mode_dsc"><![CDATA[Mode to process payments]]></string>
-	<string name="_bx_payment_cbee_mode_live"><![CDATA[live]]></string>
-	<string name="_bx_payment_cbee_mode_test"><![CDATA[test]]></string>
-	<string name="_bx_payment_cbee_live_site_cpt"><![CDATA[Site (live)]]></string>
-	<string name="_bx_payment_cbee_live_site_dsc"><![CDATA[Your site name registered in Chargebee for 'live' mode]]></string>
-	<string name="_bx_payment_cbee_live_api_key_cpt"><![CDATA[API Key (live)]]></string>
-	<string name="_bx_payment_cbee_live_api_key_dsc"><![CDATA[Your Chargebee API Access key for 'live' mode]]></string>
-	<string name="_bx_payment_cbee_test_site_cpt"><![CDATA[Site (test)]]></string>
-	<string name="_bx_payment_cbee_test_site_dsc"><![CDATA[Your site name registered in Chargebee for 'test' mode]]></string>
-	<string name="_bx_payment_cbee_test_api_key_cpt"><![CDATA[API Key (test)]]></string>
-	<string name="_bx_payment_cbee_test_api_key_dsc"><![CDATA[Your Chargebee API Access key for 'test' mode]]></string>
-	<string name="_bx_payment_cbee_check_amount_cpt"><![CDATA[Enable amount checking]]></string>
-	<string name="_bx_payment_cbee_check_amount_dsc"><![CDATA[Enable amount checking for Chargebee Webhooks (recomended). However checking should be disabled when discounts and coupons are used.]]></string>
-	<string name="_bx_payment_cbee_ssl_cpt"><![CDATA[Enable SSL]]></string>
-	<string name="_bx_payment_cbee_ssl_dsc"><![CDATA[Enable SSL connection to communicate with Chargebee. Note. URLs below will be updated after saving.]]></string>
-        <string name="_bx_payment_cbee_cancellation_email_cpt"><![CDATA[Cancellation Email]]></string>
-        <string name="_bx_payment_cbee_expiration_email_cpt"><![CDATA[Expiration Email]]></string>
-	<string name="_bx_payment_cbee_return_data_url_cpt"><![CDATA[Data return URL]]></string>
-	<string name="_bx_payment_cbee_notify_url_cpt"><![CDATA[Webhooks URL]]></string>
-        <string name="_bx_payment_cbee_msg_charged"><![CDATA[Payment was successfully processed.]]></string>
-	<string name="_bx_payment_cbee_msg_subscribed"><![CDATA[Thank you! Subscription created. Please, check your email for further instructions.]]></string>
-	<string name="_bx_payment_cbee_txt_checkout_with_single"><![CDATA[Checkout with {0}]]></string>
+    <string name="_bx_payment_cbee_active_cpt"><![CDATA[Active]]></string>
+    <string name="_bx_payment_cbee_active_dsc"><![CDATA[Activate(Deactivate) provider. Note. It's recommended to use SSL for better payment processing.]]></string>
+    <string name="_bx_payment_cbee_hidden_cpt"><![CDATA[Hidden]]></string>
+    <string name="_bx_payment_cbee_hidden_dsc"><![CDATA[Hide provider if you don't want to accept new payments but already have active subscriptions.]]></string>
+    <string name="_bx_payment_cbee_mode_cpt"><![CDATA[Mode]]></string>
+    <string name="_bx_payment_cbee_mode_dsc"><![CDATA[Mode to process payments]]></string>
+    <string name="_bx_payment_cbee_mode_live"><![CDATA[live]]></string>
+    <string name="_bx_payment_cbee_mode_test"><![CDATA[test]]></string>
+    <string name="_bx_payment_cbee_live_site_cpt"><![CDATA[Site (live)]]></string>
+    <string name="_bx_payment_cbee_live_site_dsc"><![CDATA[Your site name registered in Chargebee for 'live' mode]]></string>
+    <string name="_bx_payment_cbee_live_api_key_cpt"><![CDATA[API Key (live)]]></string>
+    <string name="_bx_payment_cbee_live_api_key_dsc"><![CDATA[Your Chargebee API Access key for 'live' mode]]></string>
+    <string name="_bx_payment_cbee_test_site_cpt"><![CDATA[Site (test)]]></string>
+    <string name="_bx_payment_cbee_test_site_dsc"><![CDATA[Your site name registered in Chargebee for 'test' mode]]></string>
+    <string name="_bx_payment_cbee_test_api_key_cpt"><![CDATA[API Key (test)]]></string>
+    <string name="_bx_payment_cbee_test_api_key_dsc"><![CDATA[Your Chargebee API Access key for 'test' mode]]></string>
+    <string name="_bx_payment_cbee_check_amount_cpt"><![CDATA[Enable amount checking]]></string>
+    <string name="_bx_payment_cbee_check_amount_dsc"><![CDATA[Enable amount checking for Chargebee Webhooks (recomended). However checking should be disabled when discounts and coupons are used.]]></string>
+    <string name="_bx_payment_cbee_ssl_cpt"><![CDATA[Enable SSL]]></string>
+    <string name="_bx_payment_cbee_ssl_dsc"><![CDATA[Enable SSL connection to communicate with Chargebee. Note. URLs below will be updated after saving.]]></string>
+    <string name="_bx_payment_cbee_cancellation_email_cpt"><![CDATA[Cancellation Email]]></string>
+    <string name="_bx_payment_cbee_expiration_email_cpt"><![CDATA[Expiration Email]]></string>
+    <string name="_bx_payment_cbee_return_data_url_cpt"><![CDATA[Data return URL]]></string>
+    <string name="_bx_payment_cbee_notify_url_cpt"><![CDATA[Webhooks URL]]></string>
+    <string name="_bx_payment_cbee_msg_charged"><![CDATA[Payment was successfully processed.]]></string>
+    <string name="_bx_payment_cbee_msg_subscribed"><![CDATA[Thank you! Subscription created. Please, check your email for further instructions.]]></string>
+    <string name="_bx_payment_cbee_txt_checkout_with_single"><![CDATA[Checkout with {0}]]></string>
     <string name="_bx_payment_cbee_txt_checkout_with_recurring"><![CDATA[Checkout with {0}]]></string>
     <string name="_bx_payment_cbee_menu_item_title_manager"><![CDATA[Self-serve Portal]]></string>
-	<string name="_bx_payment_txt_name_chargebee"><![CDATA[Chargebee]]></string>
-	<string name="_bx_payment_txt_name_chargebee_v3"><![CDATA[Chargebee]]></string>
-	<string name="_bx_payment_txt_cart_chargebee"><![CDATA[Chargebee]]></string>
-	<string name="_bx_payment_txt_cart_chargebee_v3"><![CDATA[Chargebee]]></string>
-
-	<!-- Recurly payment provider -->
-	<string name="_bx_payment_rcrl_cpt"><![CDATA[Recurly]]></string>
-	<string name="_bx_payment_rcrl_dsc"><![CDATA[Recurly payment provider]]></string>
-	<string name="_bx_payment_rcrl_active_cpt"><![CDATA[Active]]></string>
-	<string name="_bx_payment_rcrl_active_dsc"><![CDATA[Activate(Deactivate) provider.]]></string>
-	<string name="_bx_payment_rcrl_active_err"><![CDATA[You should have SSL certificate (HTTPS connection) to activate and use Recurly on your site.]]></string>
-        <string name="_bx_payment_rcrl_hidden_cpt"><![CDATA[Hidden]]></string>
-	<string name="_bx_payment_rcrl_hidden_dsc"><![CDATA[Hide provider if you don't want to accept new payments but already have active subscriptions.]]></string>
-	<string name="_bx_payment_rcrl_mode_cpt"><![CDATA[Mode]]></string>
-	<string name="_bx_payment_rcrl_mode_dsc"><![CDATA[Mode to process payments]]></string>
-	<string name="_bx_payment_rcrl_mode_live"><![CDATA[live]]></string>
-	<string name="_bx_payment_rcrl_mode_test"><![CDATA[test]]></string>
-	<string name="_bx_payment_rcrl_site_cpt"><![CDATA[Site]]></string>
-	<string name="_bx_payment_rcrl_site_dsc"><![CDATA[Your site name registered in Recurly]]></string>
-	<string name="_bx_payment_rcrl_api_key_private_cpt"><![CDATA[Private API Key]]></string>
-	<string name="_bx_payment_rcrl_api_key_private_dsc"><![CDATA[Your Recurly Private API Access key]]></string>
-	<string name="_bx_payment_rcrl_api_key_public_cpt"><![CDATA[Public API Key]]></string>
-	<string name="_bx_payment_rcrl_api_key_public_dsc"><![CDATA[Your Recurly Public API Access key]]></string>
-	<string name="_bx_payment_rcrl_return_data_url_cpt"><![CDATA[Data return URL]]></string>
-	<string name="_bx_payment_rcrl_notify_url_cpt"><![CDATA[Webhooks URL]]></string>
-	<string name="_bx_payment_rcrl_msg_subscribed"><![CDATA[Thank you! Subscription created. Please, check your email for further instructions.]]></string>
-	<string name="_bx_payment_txt_name_recurly"><![CDATA[Recurly]]></string>
-	<string name="_bx_payment_txt_cart_recurly"><![CDATA[Recurly]]></string>
-
-	<string name="_bx_payment_form_rcrl_card"><![CDATA[Recurly: Card Form]]></string>
-	<string name="_bx_payment_form_rcrl_card_display_add"><![CDATA[Recurly: Add Card Display]]></string>
-	<string name="_bx_payment_form_rcrl_card_input_pending_id_sys"><![CDATA[Pending ID]]></string>
-	<string name="_bx_payment_form_rcrl_card_input_item_sys"><![CDATA[Item]]></string>
-	<string name="_bx_payment_form_rcrl_card_input_token_sys"><![CDATA[Token]]></string>
-	<string name="_bx_payment_form_rcrl_card_input_first_name_sys"><![CDATA[First Name]]></string>
-	<string name="_bx_payment_form_rcrl_card_input_first_name"><![CDATA[First Name]]></string>
-	<string name="_bx_payment_form_rcrl_card_input_first_name_err"><![CDATA[You need to fill in your first name here.]]></string>
-	<string name="_bx_payment_form_rcrl_card_input_last_name_sys"><![CDATA[Last Name]]></string>
-	<string name="_bx_payment_form_rcrl_card_input_last_name"><![CDATA[Last Name]]></string>
-	<string name="_bx_payment_form_rcrl_card_input_last_name_err"><![CDATA[You need to fill in your last name here.]]></string>
-	<string name="_bx_payment_form_rcrl_card_input_email_sys"><![CDATA[Email]]></string>
-	<string name="_bx_payment_form_rcrl_card_input_email"><![CDATA[Email]]></string>
-	<string name="_bx_payment_form_rcrl_card_input_email_err"><![CDATA[You need to fill in your email here.]]></string>
-	<string name="_bx_payment_form_rcrl_card_input_card_number_sys"><![CDATA[Card Number]]></string>
-	<string name="_bx_payment_form_rcrl_card_input_card_number"><![CDATA[Card Number]]></string>
-	<string name="_bx_payment_form_rcrl_card_input_card_number_inf"><![CDATA[16 digits without spaces describing your card number]]></string>
-	<string name="_bx_payment_form_rcrl_card_input_card_expire_sys"><![CDATA[Expiry Date]]></string>
-	<string name="_bx_payment_form_rcrl_card_input_card_expire"><![CDATA[Expiry Date]]></string>
-	<string name="_bx_payment_form_rcrl_card_input_card_expire_month"><![CDATA[Month]]></string>
-	<string name="_bx_payment_form_rcrl_card_input_card_expire_year"><![CDATA[Year]]></string>
-	<string name="_bx_payment_form_rcrl_card_input_card_expire_inf"><![CDATA[Use 'mm yyyy' format]]></string>
-	<string name="_bx_payment_form_rcrl_card_input_card_cvv_sys"><![CDATA[CVV]]></string>
-	<string name="_bx_payment_form_rcrl_card_input_card_cvv"><![CDATA[CVV]]></string>
-	<string name="_bx_payment_form_rcrl_card_input_card_cvv_inf"><![CDATA[Three digits from the back side of your card.]]></string>
-	<string name="_bx_payment_form_rcrl_card_input_submit_sys"><![CDATA[Submit]]></string>
-	<string name="_bx_payment_form_rcrl_card_input_submit"><![CDATA[Submit]]></string>
-	<string name="_bx_payment_form_rcrl_card_input_cancel_sys"><![CDATA[Cancel]]></string>
-	<string name="_bx_payment_form_rcrl_card_input_cancel"><![CDATA[Cancel]]></string>
-	
-	<string name="_bx_payment_popup_title_rcrl_card_add"><![CDATA[Card details]]></string>
-
-	<!-- Stripe payment provider -->
-	<string name="_bx_payment_strp_cpt"><![CDATA[Stripe]]></string>
-	<string name="_bx_payment_strp_dsc"><![CDATA[Stripe payment provider]]></string>
-        <string name="_bx_payment_strp_v3_cpt"><![CDATA[Stripe]]></string>
-	<string name="_bx_payment_strp_v3_dsc"><![CDATA[Stripe payment provider with 3D Secure authentication for Strong Customer Authentication (SCA) support. Note, it doesn't allow to use recurring payments with trial period.]]></string>
-	<string name="_bx_payment_strp_active_cpt"><![CDATA[Active]]></string>
-	<string name="_bx_payment_strp_active_dsc"><![CDATA[Activate(Deactivate) provider. Note. It's recommended to use SSL for better payment processing.]]></string>
-        <string name="_bx_payment_strp_hidden_cpt"><![CDATA[Hidden]]></string>
-	<string name="_bx_payment_strp_hidden_dsc"><![CDATA[Hide provider if you don't want to accept new payments but already have active subscriptions.]]></string>
-	<string name="_bx_payment_strp_mode_cpt"><![CDATA[Mode]]></string>
-	<string name="_bx_payment_strp_mode_dsc"><![CDATA[Mode to process payments]]></string>
-	<string name="_bx_payment_strp_mode_live"><![CDATA[live]]></string>
-	<string name="_bx_payment_strp_mode_test"><![CDATA[test]]></string>
-	<string name="_bx_payment_strp_live_pub_key_cpt"><![CDATA[Public Key (live)]]></string>
-	<string name="_bx_payment_strp_live_pub_key_dsc"><![CDATA[Your Public Key generated in Stripe for 'live' mode]]></string>
-	<string name="_bx_payment_strp_live_sec_key_cpt"><![CDATA[Secret Key (live)]]></string>
-	<string name="_bx_payment_strp_live_sec_key_dsc"><![CDATA[Your Stripe Secret Key for 'live' mode]]></string>
-	<string name="_bx_payment_strp_test_pub_key_cpt"><![CDATA[Public Key (test)]]></string>
-	<string name="_bx_payment_strp_test_pub_key_dsc"><![CDATA[Your Public Key generated in Stripe for 'test' mode]]></string>
-	<string name="_bx_payment_strp_test_sec_key_cpt"><![CDATA[Secret Key (test)]]></string>
-	<string name="_bx_payment_strp_test_sec_key_dsc"><![CDATA[Your Stripe Secret Key for 'test' mode]]></string>
-	<string name="_bx_payment_strp_check_amount_cpt"><![CDATA[Enable amount checking]]></string>
-	<string name="_bx_payment_strp_check_amount_dsc"><![CDATA[Enable amount checking for Stripe Webhooks (recomended). However checking should be disabled when discounts and coupons are used.]]></string>
-	<string name="_bx_payment_strp_ssl_cpt"><![CDATA[Enable SSL]]></string>
-	<string name="_bx_payment_strp_ssl_dsc"><![CDATA[Enable SSL connection to communicate with Stripe. Note. URLs below will be updated after saving.]]></string>
-	<string name="_bx_payment_strp_notify_url_cpt"><![CDATA[Webhooks URL]]></string>
-	<string name="_bx_payment_strp_cancellation_email_cpt"><![CDATA[Cancellation Email]]></string>
-        <string name="_bx_payment_strp_expiration_email_cpt"><![CDATA[Expiration Email]]></string>
-	<string name="_bx_payment_strp_msg_charged"><![CDATA[Payment was successfully processed.]]></string>
-	<string name="_bx_payment_strp_msg_subscribed"><![CDATA[Thank you! Subscription created. Please, check your email for further instructions.]]></string>
-	<string name="_bx_payment_strp_msg_details_changed"><![CDATA[Subscription details were changed.]]></string>
+    <string name="_bx_payment_txt_name_chargebee"><![CDATA[Chargebee]]></string>
+    <string name="_bx_payment_txt_name_chargebee_v3"><![CDATA[Chargebee]]></string>
+    <string name="_bx_payment_txt_cart_chargebee"><![CDATA[Chargebee]]></string>
+    <string name="_bx_payment_txt_cart_chargebee_v3"><![CDATA[Chargebee]]></string>
+
+    <!-- Stripe payment provider -->
+    <string name="_bx_payment_strp_cpt"><![CDATA[Stripe]]></string>
+    <string name="_bx_payment_strp_dsc"><![CDATA[Stripe payment provider]]></string>
+    <string name="_bx_payment_strp_v3_cpt"><![CDATA[Stripe]]></string>
+    <string name="_bx_payment_strp_v3_dsc"><![CDATA[Stripe payment provider with 3D Secure authentication for Strong Customer Authentication (SCA) support. Note, it doesn't allow to use recurring payments with trial period.]]></string>
+    <string name="_bx_payment_strp_active_cpt"><![CDATA[Active]]></string>
+    <string name="_bx_payment_strp_active_dsc"><![CDATA[Activate(Deactivate) provider. Note. It's recommended to use SSL for better payment processing.]]></string>
+    <string name="_bx_payment_strp_hidden_cpt"><![CDATA[Hidden]]></string>
+    <string name="_bx_payment_strp_hidden_dsc"><![CDATA[Hide provider if you don't want to accept new payments but already have active subscriptions.]]></string>
+    <string name="_bx_payment_strp_mode_cpt"><![CDATA[Mode]]></string>
+    <string name="_bx_payment_strp_mode_dsc"><![CDATA[Mode to process payments]]></string>
+    <string name="_bx_payment_strp_mode_live"><![CDATA[live]]></string>
+    <string name="_bx_payment_strp_mode_test"><![CDATA[test]]></string>
+    <string name="_bx_payment_strp_live_pub_key_cpt"><![CDATA[Public Key (live)]]></string>
+    <string name="_bx_payment_strp_live_pub_key_dsc"><![CDATA[Your Public Key generated in Stripe for 'live' mode]]></string>
+    <string name="_bx_payment_strp_live_sec_key_cpt"><![CDATA[Secret Key (live)]]></string>
+    <string name="_bx_payment_strp_live_sec_key_dsc"><![CDATA[Your Stripe Secret Key for 'live' mode]]></string>
+    <string name="_bx_payment_strp_test_pub_key_cpt"><![CDATA[Public Key (test)]]></string>
+    <string name="_bx_payment_strp_test_pub_key_dsc"><![CDATA[Your Public Key generated in Stripe for 'test' mode]]></string>
+    <string name="_bx_payment_strp_test_sec_key_cpt"><![CDATA[Secret Key (test)]]></string>
+    <string name="_bx_payment_strp_test_sec_key_dsc"><![CDATA[Your Stripe Secret Key for 'test' mode]]></string>
+    <string name="_bx_payment_strp_check_amount_cpt"><![CDATA[Enable amount checking]]></string>
+    <string name="_bx_payment_strp_check_amount_dsc"><![CDATA[Enable amount checking for Stripe Webhooks (recomended). However checking should be disabled when discounts and coupons are used.]]></string>
+    <string name="_bx_payment_strp_ssl_cpt"><![CDATA[Enable SSL]]></string>
+    <string name="_bx_payment_strp_ssl_dsc"><![CDATA[Enable SSL connection to communicate with Stripe. Note. URLs below will be updated after saving.]]></string>
+    <string name="_bx_payment_strp_notify_url_cpt"><![CDATA[Webhooks URL]]></string>
+    <string name="_bx_payment_strp_cancellation_email_cpt"><![CDATA[Cancellation Email]]></string>
+    <string name="_bx_payment_strp_expiration_email_cpt"><![CDATA[Expiration Email]]></string>
+    <string name="_bx_payment_strp_msg_charged"><![CDATA[Payment was successfully processed.]]></string>
+    <string name="_bx_payment_strp_msg_subscribed"><![CDATA[Thank you! Subscription created. Please, check your email for further instructions.]]></string>
+    <string name="_bx_payment_strp_msg_details_changed"><![CDATA[Subscription details were changed.]]></string>
     <string name="_bx_payment_strp_err_details_changed"><![CDATA[Cannot change subscription details. Recheck provided data and try again.]]></string>
-	<string name="_bx_payment_strp_msg_billing_changed"><![CDATA[Billing information was changed.]]></string>
-	<string name="_bx_payment_strp_err_billing_changed"><![CDATA[Cannot change billing information. Recheck provided data and try again.]]></string>
-	<string name="_bx_payment_strp_txt_checkout_with_single"><![CDATA[Checkout with {0}]]></string>
-	<string name="_bx_payment_strp_txt_checkout_with_recurring"><![CDATA[Checkout with {0}]]></string>
-	<string name="_bx_payment_strp_menu_item_title_details"><![CDATA[Details]]></string>
-	<string name="_bx_payment_strp_menu_item_title_details_change"><![CDATA[Change Details]]></string>
-	<string name="_bx_payment_strp_menu_item_title_billing"><![CDATA[Billing Info]]></string>
-	<string name="_bx_payment_strp_menu_item_title_billing_change"><![CDATA[Change Billing Info]]></string>
-	<string name="_bx_payment_strp_txt_plan"><![CDATA[Plan]]></string>
-	<string name="_bx_payment_strp_txt_cost"><![CDATA[Cost]]></string>
-	<string name="_bx_payment_strp_txt_cost_mask"><![CDATA[{0} {1} / {2}]]></string>
-	<string name="_bx_payment_strp_txt_status"><![CDATA[Status]]></string>
-	<string name="_bx_payment_strp_txt_created"><![CDATA[Created]]></string>
-	<string name="_bx_payment_strp_txt_started"><![CDATA[Started]]></string>
-	<string name="_bx_payment_strp_txt_trial_start"><![CDATA[Trial start]]></string>
-	<string name="_bx_payment_strp_txt_trial_end"><![CDATA[Trial end]]></string>
-	<string name="_bx_payment_strp_txt_cperiod_start"><![CDATA[Current period start]]></string>
-	<string name="_bx_payment_strp_txt_cperiod_end"><![CDATA[Current period end]]></string>
-	<string name="_bx_payment_strp_txt_card_brand"><![CDATA[Brand]]></string>
-	<string name="_bx_payment_strp_txt_card_origin"><![CDATA[Origin]]></string>
-	<string name="_bx_payment_strp_txt_card_type"><![CDATA[Type]]></string>
-	<string name="_bx_payment_strp_txt_card_number"><![CDATA[Number]]></string>
-	<string name="_bx_payment_strp_txt_card_number_mask"><![CDATA[....{0}]]></string>
-	<string name="_bx_payment_strp_txt_card_expires"><![CDATA[Expires]]></string>
-	<string name="_bx_payment_strp_txt_card_expires_mask"><![CDATA[{0} / {1}]]></string>
-	<string name="_bx_payment_strp_txt_card_cvc"><![CDATA[CVC check]]></string>
-	<string name="_bx_payment_strp_txt_card_cvc_passed"><![CDATA[passed]]></string>
+    <string name="_bx_payment_strp_msg_billing_changed"><![CDATA[Billing information was changed.]]></string>
+    <string name="_bx_payment_strp_err_billing_changed"><![CDATA[Cannot change billing information. Recheck provided data and try again.]]></string>
+    <string name="_bx_payment_strp_txt_checkout_with_single"><![CDATA[Checkout with {0}]]></string>
+    <string name="_bx_payment_strp_txt_checkout_with_recurring"><![CDATA[Checkout with {0}]]></string>
+    <string name="_bx_payment_strp_menu_item_title_details"><![CDATA[Details]]></string>
+    <string name="_bx_payment_strp_menu_item_title_details_change"><![CDATA[Change Details]]></string>
+    <string name="_bx_payment_strp_menu_item_title_billing"><![CDATA[Billing Info]]></string>
+    <string name="_bx_payment_strp_menu_item_title_billing_change"><![CDATA[Change Billing Info]]></string>
+    <string name="_bx_payment_strp_txt_plan"><![CDATA[Plan]]></string>
+    <string name="_bx_payment_strp_txt_cost"><![CDATA[Cost]]></string>
+    <string name="_bx_payment_strp_txt_cost_mask"><![CDATA[{0} {1} / {2}]]></string>
+    <string name="_bx_payment_strp_txt_status"><![CDATA[Status]]></string>
+    <string name="_bx_payment_strp_txt_created"><![CDATA[Created]]></string>
+    <string name="_bx_payment_strp_txt_started"><![CDATA[Started]]></string>
+    <string name="_bx_payment_strp_txt_trial_start"><![CDATA[Trial start]]></string>
+    <string name="_bx_payment_strp_txt_trial_end"><![CDATA[Trial end]]></string>
+    <string name="_bx_payment_strp_txt_cperiod_start"><![CDATA[Current period start]]></string>
+    <string name="_bx_payment_strp_txt_cperiod_end"><![CDATA[Current period end]]></string>
+    <string name="_bx_payment_strp_txt_card_brand"><![CDATA[Brand]]></string>
+    <string name="_bx_payment_strp_txt_card_origin"><![CDATA[Origin]]></string>
+    <string name="_bx_payment_strp_txt_card_type"><![CDATA[Type]]></string>
+    <string name="_bx_payment_strp_txt_card_number"><![CDATA[Number]]></string>
+    <string name="_bx_payment_strp_txt_card_number_mask"><![CDATA[....{0}]]></string>
+    <string name="_bx_payment_strp_txt_card_expires"><![CDATA[Expires]]></string>
+    <string name="_bx_payment_strp_txt_card_expires_mask"><![CDATA[{0} / {1}]]></string>
+    <string name="_bx_payment_strp_txt_card_cvc"><![CDATA[CVC check]]></string>
+    <string name="_bx_payment_strp_txt_card_cvc_passed"><![CDATA[passed]]></string>
 
     <string name="_bx_payment_form_strp_details"><![CDATA[Stripe: Details Form]]></string>
     <string name="_bx_payment_form_strp_details_display_edit"><![CDATA[Stripe: Edit Details Display]]></string>

+ 0 - 43
modules/boonex/payment/install/sql/install.sql

@@ -212,34 +212,6 @@ INSERT INTO `bx_payment_providers_options`(`provider_id`, `name`, `type`, `capti
 (@iProviderId, 'pp_api_return_data_url', 'value', '_bx_payment_pp_api_return_data_url_cpt', '', '', '', '', '', 10),
 (@iProviderId, 'pp_api_notify_url', 'value', '_bx_payment_pp_api_notify_url_cpt', '', '', '', '', '', 11);
 
-
--- 2Checkout payment provider
-INSERT INTO `bx_payment_providers`(`name`, `caption`, `description`, `option_prefix`, `for_visitor`, `for_single`, `for_recurring`, `active`, `order`, `class_name`) VALUES
-('2checkout', '_bx_payment_2co_cpt', '_bx_payment_2co_dsc', '2co_', 1, 1, 0, 0, 20, 'BxPaymentProvider2Checkout');
-SET @iProviderId = LAST_INSERT_ID();
-
-INSERT INTO `bx_payment_providers_options`(`provider_id`, `name`, `type`, `caption`, `description`, `extra`, `check_type`, `check_params`, `check_error`, `order`) VALUES
-(@iProviderId, '2co_active', 'checkbox', '_bx_payment_2co_active_cpt', '_bx_payment_2co_active_dsc', '', '', '', '', 1),
-(@iProviderId, '2co_mode', 'select', '_bx_payment_2co_mode_cpt', '_bx_payment_2co_mode_dsc', '1|_bx_payment_2co_mode_live,2|_bx_payment_2co_mode_test', '', '', '', 2),
-(@iProviderId, '2co_account_id', 'text', '_bx_payment_2co_account_id_cpt', '_bx_payment_2co_account_id_dsc', '', '', '', '', 3),
-(@iProviderId, '2co_payment_method', 'select', '_bx_payment_2co_payment_method_cpt', '_bx_payment_2co_payment_method_dsc', 'CC|_bx_payment_2co_payment_method_cc,PPI|_bx_payment_2co_payment_method_ppi', '', '', '', 4),
-(@iProviderId, '2co_secret_word', 'text', '_bx_payment_2co_secret_word_cpt', '_bx_payment_2co_secret_word_dsc', '', '', '', '', 5),
-(@iProviderId, '2co_return_data_url', 'value', '_bx_payment_2co_return_data_url_cpt', '', '', '', '', '', 6);
-
-
--- BitPay payment provider
-INSERT INTO `bx_payment_providers`(`name`, `caption`, `description`, `option_prefix`, `for_visitor`, `for_single`, `for_recurring`, `active`, `order`, `class_name`) VALUES
-('bitpay', '_bx_payment_bp_cpt', '_bx_payment_bp_dsc', 'bp_', 0, 1, 0, 0, 30, 'BxPaymentProviderBitPay');
-SET @iProviderId = LAST_INSERT_ID();
-
-INSERT INTO `bx_payment_providers_options`(`provider_id`, `name`, `type`, `caption`, `description`, `extra`, `check_type`, `check_params`, `check_error`, `order`) VALUES
-(@iProviderId, 'bp_active', 'checkbox', '_bx_payment_bp_active_cpt', '_bx_payment_bp_active_dsc', '', 'https', '', '_bx_payment_bp_active_err', 1),
-(@iProviderId, 'bp_api_key', 'text', '_bx_payment_bp_api_key_cpt', '_bx_payment_bp_api_key_dsc', '', '', '', '', 2),
-(@iProviderId, 'bp_transaction_speed', 'select', '_bx_payment_bp_transaction_speed_cpt', '_bx_payment_bp_transaction_speed_dsc', 'high|_bx_payment_bp_transaction_speed_high,medium|_bx_payment_bp_transaction_speed_medium,low|_bx_payment_bp_transaction_speed_low', '', '', '', 3),
-(@iProviderId, 'bp_full_notifications', 'checkbox', '_bx_payment_bp_full_notifications_cpt', '_bx_payment_bp_full_notifications_dsc', '', '', '', '', 4),
-(@iProviderId, 'bp_notification_email', 'text', '_bx_payment_bp_notification_email_cpt', '_bx_payment_bp_notification_email_dsc', '', 'EmailOrEmpty', '', '_bx_payment_form_input_email_err_cor_or_emp', 5);
-
-
 -- Chargebee payment provider
 INSERT INTO `bx_payment_providers`(`name`, `caption`, `description`, `option_prefix`, `for_visitor`, `for_single`, `for_recurring`, `active`, `order`, `class_name`) VALUES
 ('chargebee', '_bx_payment_cbee_cpt', '_bx_payment_cbee_dsc', 'cbee_', 1, 0, 1, 1, 40, 'BxPaymentProviderChargebee');
@@ -280,21 +252,6 @@ INSERT INTO `bx_payment_providers_options`(`provider_id`, `name`, `type`, `capti
 (@iProviderId, 'cbee_v3_return_data_url', 'value', '_bx_payment_cbee_return_data_url_cpt', '', '', '', '', '', 12),
 (@iProviderId, 'cbee_v3_notify_url', 'value', '_bx_payment_cbee_notify_url_cpt', '', '', '', '', '', 13);
 
--- Recurly payment provider
-INSERT INTO `bx_payment_providers`(`name`, `caption`, `description`, `option_prefix`, `for_visitor`, `for_single`, `for_recurring`, `active`, `order`, `class_name`) VALUES
-('recurly', '_bx_payment_rcrl_cpt', '_bx_payment_rcrl_dsc', 'rcrl_', 1, 0, 1, 0, 50, 'BxPaymentProviderRecurly');
-SET @iProviderId = LAST_INSERT_ID();
-
-INSERT INTO `bx_payment_providers_options`(`provider_id`, `name`, `type`, `caption`, `description`, `extra`, `check_type`, `check_params`, `check_error`, `order`) VALUES
-(@iProviderId, 'rcrl_active', 'checkbox', '_bx_payment_rcrl_active_cpt', '_bx_payment_rcrl_active_dsc', '', 'https', '', '_bx_payment_rcrl_active_err', 1),
-(@iProviderId, 'rcrl_hidden', 'checkbox', '_bx_payment_rcrl_hidden_cpt', '_bx_payment_rcrl_hidden_dsc', '', '', '', '', 2),
-(@iProviderId, 'rcrl_mode', 'select', '_bx_payment_rcrl_mode_cpt', '_bx_payment_rcrl_mode_dsc', '1|_bx_payment_rcrl_mode_live,2|_bx_payment_rcrl_mode_test', '', '', '', 3),
-(@iProviderId, 'rcrl_site', 'text', '_bx_payment_rcrl_site_cpt', '_bx_payment_rcrl_site_dsc', '', '', '', '', 4),
-(@iProviderId, 'rcrl_api_key_private', 'text', '_bx_payment_rcrl_api_key_private_cpt', '_bx_payment_rcrl_api_key_private_dsc', '', '', '', '', 5),
-(@iProviderId, 'rcrl_api_key_public', 'text', '_bx_payment_rcrl_api_key_public_cpt', '_bx_payment_rcrl_api_key_public_dsc', '', '', '', '', 6),
-(@iProviderId, 'rcrl_return_data_url', 'value', '_bx_payment_rcrl_return_data_url_cpt', '', '', '', '', '', 7),
-(@iProviderId, 'rcrl_notify_url', 'value', '_bx_payment_rcrl_notify_url_cpt', '', '', '', '', '', 8);
-
 -- Stripe payment provider
 INSERT INTO `bx_payment_providers`(`name`, `caption`, `description`, `option_prefix`, `for_visitor`, `for_single`, `for_recurring`, `active`, `order`, `class_name`) VALUES
 ('stripe', '_bx_payment_strp_cpt', '_bx_payment_strp_dsc', 'strp_', 1, 1, 1, 1, 60, 'BxPaymentProviderStripe');

+ 2 - 9
modules/boonex/protean/data/template/system/css/default.less

@@ -775,16 +775,9 @@
         background-color: @bx-color-form-input-active;
     }
 
-    .bx-form-value .bx-switcher-cont,
-    .bx-grid-table .bx-switcher-cont {
-        border-color: @bx-color-border-form-input;
-        border-width: @bx-border-width-form-input;
-
+    .bx-form-value .bx-switcher-cont.on > button,
+    .bx-grid-table .bx-switcher-cont.on > button {
         background-color: @bx-color-form-input;
-
-        -webkit-box-shadow: @bx-shadow-form-input;
-        -moz-box-shadow: @bx-shadow-form-input;
-        box-shadow: @bx-shadow-form-input;
     }
 
     /* button normal */

+ 0 - 111
modules/boonex/russian/data/langs/bx_payment/ru.xml

@@ -506,61 +506,6 @@
     <string name="_bx_payment_txt_cart_paypal_api"><![CDATA[PayPal]]></string>
     <string name="_bx_payment_txt_subscribe_paypal_api"><![CDATA[PayPal]]></string>
 
-    <!-- 2Checkout payment provider -->
-    <string name="_bx_payment_2co_cpt"><![CDATA[2Checkout]]></string>
-    <string name="_bx_payment_2co_dsc"><![CDATA[Платежная система 2Checkout]]></string>
-    <string name="_bx_payment_2co_active_cpt"><![CDATA[Активировать]]></string>
-    <string name="_bx_payment_2co_active_dsc"><![CDATA[Активировать(деактивировать) платежную систему.]]></string>
-    <string name="_bx_payment_2co_mode_cpt"><![CDATA[Режим]]></string>
-    <string name="_bx_payment_2co_mode_dsc"><![CDATA[Режим обработки платежей]]></string>
-    <string name="_bx_payment_2co_mode_live"><![CDATA[рабочий]]></string>
-    <string name="_bx_payment_2co_mode_test"><![CDATA[тестовый]]></string>
-    <string name="_bx_payment_2co_account_id_cpt"><![CDATA[Номер счета]]></string>
-    <string name="_bx_payment_2co_account_id_dsc"><![CDATA[Номер Вашего торгового счета в 2Checkout]]></string>
-    <string name="_bx_payment_2co_payment_method_cpt"><![CDATA[Метод оплаты]]></string>
-    <string name="_bx_payment_2co_payment_method_dsc"><![CDATA[Данный метода оплаты будет использоваться по умолчанию во время процесса]]></string>
-    <string name="_bx_payment_2co_payment_method_cc"><![CDATA[Кредитная карта (CC)]]></string>
-    <string name="_bx_payment_2co_payment_method_ppi"><![CDATA[PayPal (PPI)]]></string>
-    <string name="_bx_payment_2co_secret_word_cpt"><![CDATA[Секретное слово]]></string>
-    <string name="_bx_payment_2co_secret_word_dsc"><![CDATA[Секретное слово используется для подсчета проверочного хэша]]></string>
-    <string name="_bx_payment_2co_return_data_url_cpt"><![CDATA[URL для возврата данных]]></string>
-    <string name="_bx_payment_2co_err_no_vendor_given"><![CDATA[Неизвестный продавец.]]></string>
-    <string name="_bx_payment_2co_err_no_data_given"><![CDATA[Нет переданных данных.]]></string>
-    <string name="_bx_payment_2co_err_wrong_key"><![CDATA[Проверочный ключ неправильный.]]></string>
-    <string name="_bx_payment_2co_err_wrong_payment"><![CDATA[Неправильный метод оплаты.]]></string>
-    <string name="_bx_payment_2co_err_already_processed"><![CDATA[Этот платеж был уже обработан.]]></string>
-    <string name="_bx_payment_2co_msg_verified"><![CDATA[Успешно верифицировано.]]></string>
-    <string name="_bx_payment_txt_name_2checkout"><![CDATA[2Checkout]]></string>
-    <string name="_bx_payment_txt_cart_2checkout"><![CDATA[2Checkout]]></string>
-
-    <!-- BitPay payment provider -->
-    <string name="_bx_payment_bp_cpt"><![CDATA[BitPay]]></string>
-    <string name="_bx_payment_bp_dsc"><![CDATA[Платежная система BitPay]]></string>
-    <string name="_bx_payment_bp_active_cpt"><![CDATA[Активировать]]></string>
-    <string name="_bx_payment_bp_active_dsc"><![CDATA[Активировать(деактивировать) платежную систему.]]></string>
-    <string name="_bx_payment_bp_active_err"><![CDATA[Нужен SSL сертификат (для HTTPS соединения), чтобы активировать и использовать BitPay.]]></string>
-    <string name="_bx_payment_bp_api_key_cpt"><![CDATA[API ключ]]></string>
-    <string name="_bx_payment_bp_api_key_dsc"><![CDATA[API ключ платежной системы BitPay]]></string>
-    <string name="_bx_payment_bp_transaction_speed_cpt"><![CDATA[Скорость транзакции]]></string>
-    <string name="_bx_payment_bp_transaction_speed_dsc"><![CDATA[Определяет как скоро счет будет подтвержден.]]></string>
-    <string name="_bx_payment_bp_transaction_speed_high"><![CDATA[Высокая]]></string>
-    <string name="_bx_payment_bp_transaction_speed_medium"><![CDATA[Средняя]]></string>
-    <string name="_bx_payment_bp_transaction_speed_low"><![CDATA[Низкая]]></string>
-    <string name="_bx_payment_bp_full_notifications_cpt"><![CDATA[Активировать полное оповещение]]></string>
-    <string name="_bx_payment_bp_full_notifications_dsc"><![CDATA[В активном режиме оповещения будут отправляться при каждой смене статуса счета, в противном случае - одинажды при подтверждении счета.]]></string>
-    <string name="_bx_payment_bp_notification_email_cpt"><![CDATA[Email для оповещений]]></string>
-    <string name="_bx_payment_bp_notification_email_dsc"><![CDATA[Email, на который будут оправляться оповещения о изменениях статуса счета. Оставьте пустым для отключения данной функции.]]></string>
-    <string name="_bx_payment_bp_err_posdata_exceed_limit"><![CDATA[Значение posData превысило допустимый лимит. Свяжитесь с администратором.]]></string>
-    <string name="_bx_payment_bp_err_no_data_given"><![CDATA[Нет переданных данных.]]></string>
-    <string name="_bx_payment_bp_err_no_vendor_given"><![CDATA[Неизвестный продавец.]]></string>
-    <string name="_bx_payment_bp_err_incorrect_data"><![CDATA[Некорректные данные платежа.]]></string>
-    <string name="_bx_payment_bp_err_wrong_amount"><![CDATA[Неправильная сумма платежа.]]></string>
-    <string name="_bx_payment_bp_err_already_processed"><![CDATA[Этот  платеж уже обработан.]]></string>
-    <string name="_bx_payment_bp_err_no_confirmation_given"><![CDATA[Платеж ожидает полного подтверждения от Bitcoin сети.]]></string>
-    <string name="_bx_payment_bp_msg_checkout_finished"><![CDATA[Платеж был подтвержден. Когда транзакция будет полностью подтверждена в Bitcoin сети, платеж будет автоматически обработан. Купленный продукт(ы) появится в истории платежей.<br /><b>Внимание.</b> Если это по какой-либо причине не произойдёт, Вам необходимо связаться с продавцом продукта и предоставить ему детали вашего платежа. Он сможет обработать платеж вручную, если средства были получены.]]></string>
-    <string name="_bx_payment_txt_name_bitpay"><![CDATA[BitPay]]></string>
-    <string name="_bx_payment_txt_cart_bitpay"><![CDATA[BitPay]]></string>
-
     <!-- Chargebee payment provider -->
     <string name="_bx_payment_cbee_cpt"><![CDATA[Chargebee]]></string>
     <string name="_bx_payment_cbee_dsc"><![CDATA[Пользователи могут оплачивать, используя готовые страницы оплаты от Chargebee.]]></string>
@@ -600,62 +545,6 @@
     <string name="_bx_payment_txt_cart_chargebee"><![CDATA[Chargebee]]></string>
     <string name="_bx_payment_txt_cart_chargebee_v3"><![CDATA[Chargebee]]></string>
 
-    <!-- Recurly payment provider -->
-    <string name="_bx_payment_rcrl_cpt"><![CDATA[Recurly]]></string>
-    <string name="_bx_payment_rcrl_dsc"><![CDATA[Платежная система Recurly]]></string>
-    <string name="_bx_payment_rcrl_active_cpt"><![CDATA[Активировать]]></string>
-    <string name="_bx_payment_rcrl_active_dsc"><![CDATA[Активировать(деактивировать) платежную систему.]]></string>
-    <string name="_bx_payment_rcrl_active_err"><![CDATA[Нужен SSL сертификат (для HTTPS соединения), чтобы активировать и использовать Recurly.]]></string>
-    <string name="_bx_payment_rcrl_hidden_cpt"><![CDATA[Скрыть]]></string>
-    <string name="_bx_payment_rcrl_hidden_dsc"><![CDATA[Платежную систему можно Скрыть, если Вы не хотите принимать новые платежи, но у вас уже есть активные подписки.]]></string>
-    <string name="_bx_payment_rcrl_mode_cpt"><![CDATA[Режим]]></string>
-    <string name="_bx_payment_rcrl_mode_dsc"><![CDATA[Режим обработки платежей]]></string>
-    <string name="_bx_payment_rcrl_mode_live"><![CDATA[рабочий]]></string>
-    <string name="_bx_payment_rcrl_mode_test"><![CDATA[тестовый]]></string>
-    <string name="_bx_payment_rcrl_site_cpt"><![CDATA[Имя сайта]]></string>
-    <string name="_bx_payment_rcrl_site_dsc"><![CDATA[Имя вашего сайта зарегистрированного в Recurly]]></string>
-    <string name="_bx_payment_rcrl_api_key_private_cpt"><![CDATA[Приватный API ключ]]></string>
-    <string name="_bx_payment_rcrl_api_key_private_dsc"><![CDATA[Ваш Приватный API ключ доступа, предоставленный Recurly.]]></string>
-    <string name="_bx_payment_rcrl_api_key_public_cpt"><![CDATA[Публичный API ключ]]></string>
-    <string name="_bx_payment_rcrl_api_key_public_dsc"><![CDATA[Ваш Публичный API ключ доступа, предоставленный Recurly.]]></string>
-    <string name="_bx_payment_rcrl_return_data_url_cpt"><![CDATA[URL для возврата данных]]></string>
-    <string name="_bx_payment_rcrl_notify_url_cpt"><![CDATA[URL для получения webhook-ов]]></string>
-    <string name="_bx_payment_rcrl_msg_subscribed"><![CDATA[Спасибо! Подписка была создана. Пожалуйста, проверьте ваш емэйл для получения дальнейших инструкций.]]></string>
-    <string name="_bx_payment_txt_name_recurly"><![CDATA[Recurly]]></string>
-    <string name="_bx_payment_txt_cart_recurly"><![CDATA[Recurly]]></string>
-
-    <string name="_bx_payment_form_rcrl_card"><![CDATA[Recurly: форма ввода карты]]></string>
-    <string name="_bx_payment_form_rcrl_card_display_add"><![CDATA[Recurly: добавление карты]]></string>
-    <string name="_bx_payment_form_rcrl_card_input_pending_id_sys"><![CDATA[Обрабатываемый заказ]]></string>
-    <string name="_bx_payment_form_rcrl_card_input_item_sys"><![CDATA[Товар]]></string>
-    <string name="_bx_payment_form_rcrl_card_input_token_sys"><![CDATA[Токен]]></string>
-    <string name="_bx_payment_form_rcrl_card_input_first_name_sys"><![CDATA[Имя]]></string>
-    <string name="_bx_payment_form_rcrl_card_input_first_name"><![CDATA[Имя]]></string>
-    <string name="_bx_payment_form_rcrl_card_input_first_name_err"><![CDATA[Введите ваше имя.]]></string>
-    <string name="_bx_payment_form_rcrl_card_input_last_name_sys"><![CDATA[Фамилия]]></string>
-    <string name="_bx_payment_form_rcrl_card_input_last_name"><![CDATA[Фамилия]]></string>
-    <string name="_bx_payment_form_rcrl_card_input_last_name_err"><![CDATA[Введите вашу фамилию.]]></string>
-    <string name="_bx_payment_form_rcrl_card_input_email_sys"><![CDATA[Email]]></string>
-    <string name="_bx_payment_form_rcrl_card_input_email"><![CDATA[Email]]></string>
-    <string name="_bx_payment_form_rcrl_card_input_email_err"><![CDATA[Введите ваш email.]]></string>
-    <string name="_bx_payment_form_rcrl_card_input_card_number_sys"><![CDATA[Номер карты]]></string>
-    <string name="_bx_payment_form_rcrl_card_input_card_number"><![CDATA[Номер карты]]></string>
-    <string name="_bx_payment_form_rcrl_card_input_card_number_inf"><![CDATA[Введите 16-ти значный номер вашей карты.]]></string>
-    <string name="_bx_payment_form_rcrl_card_input_card_expire_sys"><![CDATA[Дата окончания]]></string>
-    <string name="_bx_payment_form_rcrl_card_input_card_expire"><![CDATA[Дата окончания]]></string>
-    <string name="_bx_payment_form_rcrl_card_input_card_expire_month"><![CDATA[Месяц]]></string>
-    <string name="_bx_payment_form_rcrl_card_input_card_expire_year"><![CDATA[Год]]></string>
-    <string name="_bx_payment_form_rcrl_card_input_card_expire_inf"><![CDATA[Используйте 'mm yyyy' формат ввода.]]></string>
-    <string name="_bx_payment_form_rcrl_card_input_card_cvv_sys"><![CDATA[CVV]]></string>
-    <string name="_bx_payment_form_rcrl_card_input_card_cvv"><![CDATA[CVV]]></string>
-    <string name="_bx_payment_form_rcrl_card_input_card_cvv_inf"><![CDATA[Три цифры, которые Вы можете найти на обратной стороне вашей карты.]]></string>
-    <string name="_bx_payment_form_rcrl_card_input_submit_sys"><![CDATA[Отправить]]></string>
-    <string name="_bx_payment_form_rcrl_card_input_submit"><![CDATA[Отправить]]></string>
-    <string name="_bx_payment_form_rcrl_card_input_cancel_sys"><![CDATA[Отменить]]></string>
-    <string name="_bx_payment_form_rcrl_card_input_cancel"><![CDATA[Отменить]]></string>
-
-    <string name="_bx_payment_popup_title_rcrl_card_add"><![CDATA[Детали карты]]></string>
-
     <!-- Stripe payment provider -->
     <string name="_bx_payment_strp_cpt"><![CDATA[Stripe]]></string>
     <string name="_bx_payment_strp_dsc"><![CDATA[Платежная система Stripe]]></string>

+ 25 - 25
modules/boonex/russian/data/langs/system/ru.xml

@@ -3417,34 +3417,34 @@
 	<string name="_sys_tour_homepage_account_menu_title"><![CDATA[Узнай меню своей учётной записи]]></string>
 	<string name="_sys_tour_homepage_account_menu_txt"><![CDATA[Здесь можно добавлять и управлять профилями, следить за уведомлениями, открывать настройки своей учётной записи. Администраторы и модераторы сайта могут использовать это меню, чтобы открыть приборную панель со ссылками по администрации сайта.]]></string>
 
-	<string name="_sys_txt_access_denied"><![CDATA[Доступ запрещён]]></string>
-	<string name="_sys_txt_account_pending"><![CDATA[Ваш аккаунт ожидает одобрения, пожалуйста, дождитесь его активации.]]></string>
-	<string name="_sys_txt_account_profile_context_change_suggestion"><![CDATA[Это Ваш профиль, Вы можете <a href="{0}">изменить свой текущий профиль</a> на этот]]></string>
-  <string name="_sys_txt_account_profile_context_change_to_another_suggestion"><![CDATA[Вы можете <a href="{0}">изменить свой текущий профиль</a> на этот]]></string>
-	<string name="_sys_txt_account_profile_context_changed_success"><![CDATA[Текущий профиль удачно изменён на: <b>{0}</b>]]></string>
-	<string name="_sys_txt_account_suspended"><![CDATA[Ваш аккаунт заблокирован.]]></string>
-	<string name="_sys_txt_account_unconfirmed_email"><![CDATA[Ваш email не подтверждён. Пожалуйста, проверьте свой эл. ящик ({1}) на наличие письма подтверждения и перейдите по ссылке в нём. <br />Не можете найти письмо? Проверьте папку "спам" или <a href="{0}">снова запросите письмо верификации</a>.]]></string>
-	<string name="_sys_txt_account_unconfirmed_phone"><![CDATA[Ваш телефон не подтверждён. Пожалуйста, подтвердите его на  <a href="{0}">странице верификации</a>.]]></string>
-	<string name="_sys_txt_account_profile_system"><![CDATA[Пожалуйста, <a href="{0}">создайте профиль</a>, чтобы начать пользоваться сайтом.]]></string>
-	<string name="_sys_txt_captcha_not_available"><![CDATA[CAPTCHA недоступна]]></string>
+    <string name="_sys_txt_access_denied"><![CDATA[Доступ запрещён]]></string>
+    <string name="_sys_txt_account_pending"><![CDATA[Ваш аккаунт ожидает одобрения, пожалуйста, дождитесь его активации.]]></string>
+    <string name="_sys_txt_account_profile_context_change_suggestion"><![CDATA[Это Ваш профиль, Вы можете <a href="{0}">изменить свой текущий профиль</a> на этот]]></string>
+    <string name="_sys_txt_account_profile_context_change_to_another_suggestion"><![CDATA[Вы можете <a href="{0}">изменить свой текущий профиль</a> на этот]]></string>
+    <string name="_sys_txt_account_profile_context_changed_success"><![CDATA[Текущий профиль удачно изменён на: <b>{0}</b>]]></string>
+    <string name="_sys_txt_account_suspended"><![CDATA[Ваш аккаунт заблокирован.]]></string>
+    <string name="_sys_txt_account_unconfirmed_email"><![CDATA[Ваш email не подтверждён. Пожалуйста, проверьте свой эл. ящик ({1}) на наличие письма подтверждения и перейдите по ссылке в нём. <br />Не можете найти письмо? Проверьте папку "спам" или <a href="{0}">снова запросите письмо верификации</a>.]]></string>
+    <string name="_sys_txt_account_unconfirmed_phone"><![CDATA[Ваш телефон не подтверждён. Пожалуйста, подтвердите его на  <a href="{0}">странице верификации</a>.]]></string>
+    <string name="_sys_txt_account_profile_system"><![CDATA[Пожалуйста, <a href="{0}">создайте профиль</a>, чтобы начать пользоваться сайтом.]]></string>
+    <string name="_sys_txt_captcha_not_available"><![CDATA[CAPTCHA недоступна]]></string>
     <string name="_sys_txt_change_image"><![CDATA[Изменить картинку]]></string>
     <string name="_sys_txt_cmt_loading"><![CDATA[Загрузка...]]></string>
-	<string name="_sys_txt_confirm_email_already_confirmed"><![CDATA[Ваш email уже подтверждён.]]></string>
-	<string name="_sys_txt_confirm_email_desc"><![CDATA[Пожалуйста, введите код подтверждения, который был послан на Ваш эл. адрес, или просто перейдите по ссылке в присланном сообщении.]]></string>
-	<string name="_sys_txt_confirm_email_error_occured"><![CDATA[Произошла ошибка, пожалуйста, войдите в свой аккаунт и снова запросите письмо верификации.]]></string>
-	<string name="_sys_txt_confirm_email_sent"><![CDATA[Письмо верификации было отослано, пожалуйста, проверьте свой эл. ящик.]]></string>
-	<string name="_sys_txt_confirm_email_sent_failed"><![CDATA[Произошла ошибка, пожалуйста, уведомите о ней администратора сайта.]]></string>
-	<string name="_sys_txt_confirm_email_success"><![CDATA[Ваш эл. адрес был удачно подтверждён.]]></string>
-	
-	<string name="_sys_txt_confirm_phone_already_confirmed"><![CDATA[Ваш телефон уже подтверждён.]]></string>
-	<string name="_sys_txt_confirm_phone_set_phone_error_occured"><![CDATA[Произошла ошибка, пожалуйста, войдите в свой аккаунт и снова перейдите на страничку верификации.]]></string>
-	<string name="_sys_txt_confirm_phone_send_sms_error_occured"><![CDATA[Произошла ошибка, пожалуйста, уведомите о ней администратора сайта.]]></string>
-	<string name="_sys_txt_confirm_phone_sms_text"><![CDATA[Ваш код проверки телефона - {0}.]]></string>
-	<string name="_sys_txt_confirm_phone_confirm_success"><![CDATA[Ваш телефон успешно подтверждён.]]></string>
-	<string name="_sys_txt_confirm_phone_set_phone_desc_set_phone"><![CDATA[Пожалуйста, введите телефонный номер на который будет отправлено SMS с кодом подтверждения.]]></string>
-	<string name="_sys_txt_confirm_phone_set_phone_desc_phone_confirmation"><![CDATA[Пожалуйста, введите код проверки из SMS]]></string>
+    <string name="_sys_txt_confirm_email_already_confirmed"><![CDATA[Ваш email уже подтверждён.]]></string>
+    <string name="_sys_txt_confirm_email_desc"><![CDATA[Пожалуйста, введите код подтверждения, который был послан на Ваш эл. адрес, или просто перейдите по ссылке в присланном сообщении.]]></string>
+    <string name="_sys_txt_confirm_email_error_occured"><![CDATA[Произошла ошибка, пожалуйста, войдите в свой аккаунт и снова запросите письмо верификации.]]></string>
+    <string name="_sys_txt_confirm_email_sent"><![CDATA[Письмо верификации было отослано, пожалуйста, проверьте свой эл. ящик.]]></string>
+    <string name="_sys_txt_confirm_email_sent_failed"><![CDATA[Произошла ошибка, пожалуйста, уведомите о ней администратора сайта.]]></string>
+    <string name="_sys_txt_confirm_email_success"><![CDATA[Ваш эл. адрес был удачно подтверждён.]]></string>
 
-	<string name="_sys_txt_create_post_placeholder"><![CDATA[Что нового, {0}]]></string>
+    <string name="_sys_txt_confirm_phone_already_confirmed"><![CDATA[Ваш телефон уже подтверждён.]]></string>
+    <string name="_sys_txt_confirm_phone_set_phone_error_occured"><![CDATA[Произошла ошибка, пожалуйста, войдите в свой аккаунт и снова перейдите на страничку верификации.]]></string>
+    <string name="_sys_txt_confirm_phone_send_sms_error_occured"><![CDATA[Произошла ошибка, пожалуйста, уведомите о ней администратора сайта.]]></string>
+    <string name="_sys_txt_confirm_phone_sms_text"><![CDATA[Ваш код проверки телефона - {0}.]]></string>
+    <string name="_sys_txt_confirm_phone_confirm_success"><![CDATA[Ваш телефон успешно подтверждён.]]></string>
+    <string name="_sys_txt_confirm_phone_set_phone_desc_set_phone"><![CDATA[Пожалуйста, введите телефонный номер на который будет отправлено SMS с кодом подтверждения.]]></string>
+    <string name="_sys_txt_confirm_phone_set_phone_desc_phone_confirmation"><![CDATA[Пожалуйста, введите код проверки из SMS]]></string>
+
+    <string name="_sys_txt_create_post_placeholder"><![CDATA[Напишите здесь, {0}]]></string>
 
     <string name="_sys_txt_current_picture"><![CDATA[Текущая картинка]]></string>
     <string name="_sys_txt_data_successfully_submitted"><![CDATA[Выполнено]]></string>

+ 1 - 1
modules/boonex/tasks/js/tasks.js

@@ -21,7 +21,7 @@ BxTasksView.prototype.init = function () {
 
 BxTasksView.prototype.setCompleted = function (iId, oObj) {
     var $this = this;
-	var iVal = ($(oObj).attr('checked') != 'checked' ? 0 : 1);
+	var iVal = ($(oObj).prop('checked') ? 1 : 0);
 	$this._setCompleted(iId, iVal);
 }
 

+ 4 - 8
plugins_public/tailwind/css/tailwind.css

@@ -14,10 +14,6 @@
 
 @layer components {
     /* Global: HTML tags */
-    a {
-        @apply hover:underline;
-    }
-
     ol, ul {
         @apply pl-10 list-outside;
     }
@@ -725,16 +721,16 @@
 
 
     /* Common elements: Forms: Switcher Input */
-    .bx-artificer .bx-switcher-cont.on button {
+    .bx-switcher-cont.on button {
         @apply bg-white dark:bg-gray-800;
     }
-    .bx-artificer .bx-switcher-cont.on button span {
+    .bx-switcher-cont.on button span {
         @apply bg-green-500 dark:bg-green-500 translate-x-5;
     }
-    .bx-artificer .bx-switcher-cont.off button {
+    .bx-switcher-cont.off button {
         @apply bg-gray-200 dark:bg-gray-900;
     }
-    .bx-artificer .bx-switcher-cont.off button span {
+    .bx-switcher-cont.off button span {
         @apply bg-white dark:bg-gray-500 translate-x-0;
     }
 

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
plugins_public/tailwind/css/tailwind.min.css


+ 0 - 7
studio/template/css/forms.css

@@ -65,13 +65,6 @@
     background-color: rgba(255, 255, 255, 1);
 }
 
-.bx-form-value .bx-switcher-cont {
-    border-color: rgba(136, 143, 153, 1);
-    border-width: 1px;
-
-    background-color: rgba(255, 255, 255, 1);
-}
-
 .bx-form-value .bx-form-input-select_multiple,
 .bx-form-value .bx-form-input-radio_set,
 .bx-form-value .bx-form-input-checkbox_set {

+ 5 - 5
template/create_post_form.html

@@ -1,14 +1,14 @@
-<div id="sys-create-post-form" class="sys-create-post-form">
+<div id="sys-create-post-form" class="sys-create-post-form relative">
     <div class="sys-cpf-cnt">
         <div id="sys-cpf-form">
-            <div class="sys-cpf-form sys-cpf-default">
+            <div class="sys-cpf-form sys-cpf-default flex items-center p-4 bg-gray-50 hover:bg-white dark:bg-gray-900/50 dark:hover:bg-gray-900 shadow hover:shadow-md ring-1 ring-gray-300 dark:ring-gray-700 rounded-md cursor-pointer" onclick="__js_object__.getForm('__default__')">
                 <div class="sys-cpf-user">__user_thumb__</div>
-                <div class="sys-cpf-content bx-def-thumb-size-min-height bx-def-thumb-size-left-indent bx-def-font-grayed">
-                    <div class="bx-def-thumb-size" onclick="__js_object__.getForm('__default__')">__placeholder__</div>
+                <div class="sys-cpf-content flex text-base ml-4 text-gray-500 dark:text-gray-400">
+                    <div>__placeholder__</div>
                 </div>
             </div>
             <div class="sys-cpf-form sys-cpf-__default__" style="display:none">__form__</div>
-            <div class="sys-cpf-close"><a class="bx-btn" href="javascript:void(0)" onclick="__js_object__.hideForm(this)"><i class="sys-icon times"></i></a></div>
+            <div class="sys-cpf-close absolute hidden right-0 bottom-0"><a class="bx-btn" href="javascript:void(0)" onclick="__js_object__.hideForm(this)"><i class="sys-icon times"></i></a></div>
         </div>
     </div>
 </div>

+ 5 - 100
template/css/forms.css

@@ -379,104 +379,12 @@
     overflow: auto;
 }
 
-/* switcher */
-.bx-switcher-cont {
-    position:relative;
-    box-sizing: content-box;
-
-    width:60px;
-    width:3.8rem;
-    height:24px;
-    height:1.5rem;
-    overflow:hidden;
-    cursor:pointer;
-
-    background-color:#fff;
-
-    border:2px solid #79bd9a;
-    border:0.125rem solid #79bd9a;
-    -moz-border-radius: 1rem;
-    -webkit-border-radius: 1rem;
-    border-radius: 1rem;
-}
+/* switcher element */
 .bx-switcher-cont input {
-    position:absolute; 
-    top:-32px;
-    top:-2rem;
-}
-.bx-switcher-canvas {
-    position:relative;
-    width:90px;
-    width:5.7rem;
-
-    -webkit-transition: left 0.2s ease-in-out;
-    -moz-transition: left 0.2s ease-in-out;
-    -ms-transition: left 0.2s ease-in-out;
-    -o-transition: left 0.2s ease-in-out;
-}
-.bx-switcher-cont.on .bx-switcher-canvas {
-    left:3px;
-    left:0.2rem;
-}
-.bx-switcher-cont.off .bx-switcher-canvas {
-    left:-34px;
-    left:-2.1rem;
-}
-.bx-switcher-on,
-.bx-switcher-off,
-.bx-switcher-handler {
-    position:absolute;	
-    top:0rem;
-    line-height:24px;
-    line-height:1.5rem;
-    color:#999;
-}
-.bx-switcher-on {
-    left:0rem;
-    width:34px;
-    width:2.1rem;
-    height:24px;
-    height:1.5rem;
-    margin-left:8px;
-    margin-left:0.5rem;
-}
-.bx-switcher-off {	
-    left:65px;
-    left:4.05rem;
-    width:34px;
-    width:2.1rem;
-    height:24px;
-    height:1.5rem;
-    margin-left:3px;
-    margin-left:0.2rem;
-}
-.bx-switcher-handler {
-    left:36px;
-    left:2.23rem;
-    top:2px;
-    top:0.13rem;
-    width:20px;
-    width:1.25rem;
-	height:20px;
-	height:1.25rem;
-	margin:0rem;
-
-    -moz-border-radius: 1rem;
-    -webkit-border-radius: 1rem;
-    border-radius: 1rem;
-
-    -webkit-transition: background-color 0.2s ease-in-out;
-    -moz-transition: background-color 0.2s ease-in-out;
-    -ms-transition: background-color 0.2s ease-in-out;
-    -o-transition: background-color 0.2s ease-in-out;
-    transition: background-color 0.2s ease-in-out;
-}
-.bx-switcher-cont.on .bx-switcher-handler {
-    background-color:#d0efa2;
-}
-.bx-switcher-cont.off .bx-switcher-handler {
-    background-color:#e7938a;
+   display: none !important;
 }
+
+/* oneline element */
 .bx-form-element-wrapper-oneline .bx-form-element {
     display: -webkit-flex;
     display: flex;
@@ -494,13 +402,10 @@
 .bx-form-caption-oneline {
     margin-bottom: 0;
 }
-.bx-form-caption-oneline-switcher {
-    line-height:26px;
-}
+
 .bx-form-input-wrapper-submit .bx-btn {
     float: none;
 }
-
 .bx-form-input-wrapper-input_set .bx-btn {
     float:left;
 }

+ 1 - 24
template/css/general.css

@@ -521,31 +521,8 @@ div.bx-account-unit-online {
 .sys-cpf-form {
     position: relative;
 }
-.sys-cpf-form .sys-cpf-user {
-    position: absolute;
-    top: 0;
-    left: 0;
-}
-.sys-cpf-form .sys-cpf-content {
-    display: -webkit-flex;
-    display: flex;
-    -webkit-align-items: center;
-    align-items: center;
-}
-.sys-cpf-form.sys-cpf-default .sys-cpf-content {
-    -webkit-align-items: stretch;
-    align-items: stretch;   
-}
-.sys-cpf-form.sys-cpf-default .sys-cpf-content > div {
-    display: -webkit-flex;
-    display: flex;
-    -webkit-align-items: center;
-    align-items: center;
-    width: 100%;
-    cursor: text;
-}
 .sys-cpf-form .bx-uploader-ghost .bx-base-general-icon-wrapper img {
-	max-width: 9.375rem;
+    max-width: 9.375rem;
 }
 .sys-cpf-close {
     position: absolute;

+ 5 - 6
template/form_field_switcher.html

@@ -1,7 +1,6 @@
-<div class="bx-switcher-cont __class__">__checkbox__
-    <div class="bx-switcher-canvas">
-        <div class="bx-switcher-on"><i class="sys-icon check"></i></div>
-        <div class="bx-switcher-off"><i class="sys-icon times"></i></div>
-        <div class="bx-switcher-handler">&nbsp;</div>
-    </div>
+<div class="bx-switcher-cont __class__ relative">
+    <button type="button" class="relative inline-flex flex-shrink-0 h-6 w-11 ring-1 ring-gray-300 dark:ring-gray-700 border-2 border-transparent rounded-full cursor-pointer transition-colors ease-in-out duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500" role="switch" aria-checked="false">
+        <span aria-hidden="true" class="inline-block h-5 w-5 rounded-full shadow transform ring-0 transition ease-in-out duration-200 pointer-events-none"></span>
+    </button>
+    __checkbox__
 </div>

+ 1 - 1
template/scripts/BxBaseServices.php

@@ -644,7 +644,7 @@ class BxBaseServices extends BxDol implements iBxDolProfileService
             'content' => BxDolTemplate::getInstance()->parseHtmlByName('create_post_form.html', array(
                 'default' => $sDefault,
                 'placeholder' => $sPlaceholder,
-                'user_thumb' => $oProfile->getUnit(0, array('template' => 'unit_wo_info')),
+                'user_thumb' => $oProfile->getUnit(0, array('template' => 'unit_wo_info_links')),
                 'form' => BxDolService::call($sDefault, 'get_create_post_form', array(array('context_id' => $mixedContextId, 'ajax_mode' => true, 'absolute_action_url' => true, 'custom' => $aCustom))),
                 'js_object' => $sJsObject,
                 'js_content' => $sJsContent

Некоторые файлы не были показаны из-за большого количества измененных файлов