Changeset 2749715
- Timestamp:
- 06/29/2022 02:23:11 PM (4 years ago)
- Location:
- buy-one-click-woocommerce
- Files:
-
- 4 added
- 10 edited
- 1 copied
-
tags/2.1.3 (copied) (copied from buy-one-click-woocommerce/trunk)
-
tags/2.1.3/buycli-index.php (modified) (1 diff)
-
tags/2.1.3/readme.txt (modified) (1 diff)
-
tags/2.1.3/src/Controller/OrderController.php (modified) (4 diffs)
-
tags/2.1.3/src/Core.php (modified) (1 diff)
-
tags/2.1.3/src/Options/General.php (modified) (1 diff)
-
tags/2.1.3/src/Service (added)
-
tags/2.1.3/src/Service/SessionStorage.php (added)
-
trunk/buycli-index.php (modified) (1 diff)
-
trunk/readme.txt (modified) (1 diff)
-
trunk/src/Controller/OrderController.php (modified) (4 diffs)
-
trunk/src/Core.php (modified) (1 diff)
-
trunk/src/Options/General.php (modified) (1 diff)
-
trunk/src/Service (added)
-
trunk/src/Service/SessionStorage.php (added)
Legend:
- Unmodified
- Added
- Removed
-
buy-one-click-woocommerce/tags/2.1.3/buycli-index.php
r2747271 r2749715 5 5 * Plugin URI: http://zixn.ru/plagin-zakazat-v-odin-klik-dlya-woocommerce.html 6 6 * Description: Buy in one click for WooCommerce. The best plugin that adds to your online store purchase button in one click 7 * Version: 2.1. 27 * Version: 2.1.3 8 8 * Author: Djo 9 9 * Author URI: https://zixn.ru -
buy-one-click-woocommerce/tags/2.1.3/readme.txt
r2747271 r2749715 74 74 75 75 == Changelog == 76 = 2.1.3 = 77 * Fixed the get_customer_unique_id call for older versions of WooCommerce 78 * Checking the restrictions on sending the form redone in the session 76 79 = 2.1.2 = 77 80 * The order number for yandex.metrica is taken from WooCommerce -
buy-one-click-woocommerce/tags/2.1.3/src/Controller/OrderController.php
r2747271 r2749715 6 6 7 7 use BuySMSC; 8 use Coderun\BuyOneClick\BuyFunction;9 8 use Coderun\BuyOneClick\BuyHookPlugin; 10 use Coderun\BuyOneClick\Common\Logger;11 9 use Coderun\BuyOneClick\Constant\Options\ActionsForm; 12 10 use Coderun\BuyOneClick\Core; … … 23 21 use Coderun\BuyOneClick\Response\OrderResponse; 24 22 use Coderun\BuyOneClick\Response\ValueObject\Product; 23 use Coderun\BuyOneClick\Service\SessionStorage; 25 24 use Coderun\BuyOneClick\Utils\Email as EmailUtils; 26 25 use Coderun\BuyOneClick\Utils\Sms as SmsUtils; 27 26 use Coderun\BuyOneClick\ValueObject\OrderForm; 28 27 use WC_Order; 29 use WC_Session_Handler;30 28 31 29 use function get_current_user_id; … … 253 251 protected function checkLimitSendForm(int $product_id): void 254 252 { 255 /** @var WC_Session_Handler $session */256 $session = WC()->session;257 253 $commonOptions = Core::getInstance()->getCommonOptions(); 258 $key = sprintf('buy_one_click_woocommerce_%s_%s', $product_id, $session->get_customer_unique_id()); 259 if (!$session->get($key, false)) {//Установка 260 $session->set($key, time()); 254 $uniqueId = $this->getCustomerUniqueId(); 255 if (empty($uniqueId) || $commonOptions->getFormSubmissionLimit() == 0) { 256 return; 257 } 258 $storage = new SessionStorage(); 259 $key = sprintf('buy_one_%s_%s', $product_id, $uniqueId); 260 if ($storage->getSessionValue($key) == null) {//Установка 261 $storage->setSessionValue($key, (time() + $commonOptions->getFormSubmissionLimit())); 261 262 } else { 262 if ( ($session->get($key, 0) + $commonOptions->getFormSubmissionLimit()) > time()) {263 if ($storage->getSessionValue($key, 0) > time()) { 263 264 throw LimitOnSendingFormsException::error($commonOptions->getFormSubmissionLimitMessage()); 264 } 265 } 265 } else { 266 $storage->deleteSessionKey($key); 267 } 268 } 269 return; 266 270 } 267 271 … … 282 286 return ''; 283 287 } 288 289 /** 290 * Уникальный ИД текущего пользователя 291 * 292 * @return string 293 */ 294 protected function getCustomerUniqueId(): string 295 { 296 $session = serialize(WC()->session); 297 preg_match('/(wp_woocommerce_session_[a-zA-Z\d]+)"/i', $session, $matches); 298 $uniqueString = $matches[1] ?? ''; 299 if (strlen($uniqueString) > 0) { 300 $uniqueString = md5($uniqueString); 301 } else if(is_user_logged_in()) { 302 $uniqueString = (string)get_current_user_id(); 303 } 304 return $uniqueString; 305 } 306 284 307 } -
buy-one-click-woocommerce/tags/2.1.3/src/Core.php
r2747271 r2749715 144 144 add_action('woocommerce_email_before_order_table', [Service::getInstance(), 'modificationOrderTemplateWooCommerce'], 10, 3); 145 145 add_action('wp_head', [$this, 'frontVariables']); 146 add_action('init', static function() { 147 if (!session_id()) { 148 session_start(); 149 } 150 }); 146 151 // Обработчики запросов 147 152 $this->initController(); -
buy-one-click-woocommerce/tags/2.1.3/src/Options/General.php
r2747271 r2749715 360 360 * @var int 361 361 */ 362 protected int $formSubmissionLimit ;362 protected int $formSubmissionLimit = 10; 363 363 364 364 /** -
buy-one-click-woocommerce/trunk/buycli-index.php
r2747271 r2749715 5 5 * Plugin URI: http://zixn.ru/plagin-zakazat-v-odin-klik-dlya-woocommerce.html 6 6 * Description: Buy in one click for WooCommerce. The best plugin that adds to your online store purchase button in one click 7 * Version: 2.1. 27 * Version: 2.1.3 8 8 * Author: Djo 9 9 * Author URI: https://zixn.ru -
buy-one-click-woocommerce/trunk/readme.txt
r2747271 r2749715 74 74 75 75 == Changelog == 76 = 2.1.3 = 77 * Fixed the get_customer_unique_id call for older versions of WooCommerce 78 * Checking the restrictions on sending the form redone in the session 76 79 = 2.1.2 = 77 80 * The order number for yandex.metrica is taken from WooCommerce -
buy-one-click-woocommerce/trunk/src/Controller/OrderController.php
r2747271 r2749715 6 6 7 7 use BuySMSC; 8 use Coderun\BuyOneClick\BuyFunction;9 8 use Coderun\BuyOneClick\BuyHookPlugin; 10 use Coderun\BuyOneClick\Common\Logger;11 9 use Coderun\BuyOneClick\Constant\Options\ActionsForm; 12 10 use Coderun\BuyOneClick\Core; … … 23 21 use Coderun\BuyOneClick\Response\OrderResponse; 24 22 use Coderun\BuyOneClick\Response\ValueObject\Product; 23 use Coderun\BuyOneClick\Service\SessionStorage; 25 24 use Coderun\BuyOneClick\Utils\Email as EmailUtils; 26 25 use Coderun\BuyOneClick\Utils\Sms as SmsUtils; 27 26 use Coderun\BuyOneClick\ValueObject\OrderForm; 28 27 use WC_Order; 29 use WC_Session_Handler;30 28 31 29 use function get_current_user_id; … … 253 251 protected function checkLimitSendForm(int $product_id): void 254 252 { 255 /** @var WC_Session_Handler $session */256 $session = WC()->session;257 253 $commonOptions = Core::getInstance()->getCommonOptions(); 258 $key = sprintf('buy_one_click_woocommerce_%s_%s', $product_id, $session->get_customer_unique_id()); 259 if (!$session->get($key, false)) {//Установка 260 $session->set($key, time()); 254 $uniqueId = $this->getCustomerUniqueId(); 255 if (empty($uniqueId) || $commonOptions->getFormSubmissionLimit() == 0) { 256 return; 257 } 258 $storage = new SessionStorage(); 259 $key = sprintf('buy_one_%s_%s', $product_id, $uniqueId); 260 if ($storage->getSessionValue($key) == null) {//Установка 261 $storage->setSessionValue($key, (time() + $commonOptions->getFormSubmissionLimit())); 261 262 } else { 262 if ( ($session->get($key, 0) + $commonOptions->getFormSubmissionLimit()) > time()) {263 if ($storage->getSessionValue($key, 0) > time()) { 263 264 throw LimitOnSendingFormsException::error($commonOptions->getFormSubmissionLimitMessage()); 264 } 265 } 265 } else { 266 $storage->deleteSessionKey($key); 267 } 268 } 269 return; 266 270 } 267 271 … … 282 286 return ''; 283 287 } 288 289 /** 290 * Уникальный ИД текущего пользователя 291 * 292 * @return string 293 */ 294 protected function getCustomerUniqueId(): string 295 { 296 $session = serialize(WC()->session); 297 preg_match('/(wp_woocommerce_session_[a-zA-Z\d]+)"/i', $session, $matches); 298 $uniqueString = $matches[1] ?? ''; 299 if (strlen($uniqueString) > 0) { 300 $uniqueString = md5($uniqueString); 301 } else if(is_user_logged_in()) { 302 $uniqueString = (string)get_current_user_id(); 303 } 304 return $uniqueString; 305 } 306 284 307 } -
buy-one-click-woocommerce/trunk/src/Core.php
r2747271 r2749715 144 144 add_action('woocommerce_email_before_order_table', [Service::getInstance(), 'modificationOrderTemplateWooCommerce'], 10, 3); 145 145 add_action('wp_head', [$this, 'frontVariables']); 146 add_action('init', static function() { 147 if (!session_id()) { 148 session_start(); 149 } 150 }); 146 151 // Обработчики запросов 147 152 $this->initController(); -
buy-one-click-woocommerce/trunk/src/Options/General.php
r2747271 r2749715 360 360 * @var int 361 361 */ 362 protected int $formSubmissionLimit ;362 protected int $formSubmissionLimit = 10; 363 363 364 364 /**
Note: See TracChangeset
for help on using the changeset viewer.