PluginProbe ʕ •ᴥ•ʔ
Weight Based Shipping Table Rate for WooCommerce – Flexible Shipping / 6.11.0
Weight Based Shipping Table Rate for WooCommerce – Flexible Shipping v6.11.0
6.12.1 6.12.0 6.11.0 6.10.0 6.9.1 6.9.0 6.8.1 6.8.0 6.7.4 6.7.3 6.7.2 6.7.0 4.21.7 4.22.0 4.22.1 4.23.0 4.23.1 4.23.2 4.23.3 4.24.0 4.24.1 4.24.10 4.24.11 4.24.12 4.24.13 4.24.14 4.24.15 4.24.16 4.24.17 4.24.18 4.24.19 4.24.2 4.24.4 4.24.6 4.24.7 4.24.8 4.24.9 4.25.0 4.25.1 4.25.2 4.25.4 4.25.5 4.25.6 4.25.7 4.25.8 4.3.0 4.3.1 4.4.0 4.4.1 4.5.0 4.5.1 4.6.0 4.6.1 4.7.0 4.7.1 4.7.2 4.8.0 4.8.1 4.8.3 4.8.4 4.8.5 4.9.0 5.0.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.0.9 5.1.0 5.1.1 5.1.2 5.1.3 5.2.0 5.3.0 5.3.1 5.3.3 5.3.4 5.3.5 6.0.0 6.1.0 6.1.1 6.1.2 6.2.0 6.2.1 6.2.2 6.2.3 6.2.4 6.3.0 trunk 6.4.0 1.4 6.4.1 1.4.1 6.4.2 1.5 6.4.3 1.6 6.4.5 1.6.1 6.5.0 1.6.2 6.5.1 1.7 6.5.2 1.8 6.5.3 1.9 6.5.4 1.9.1 6.5.5 1.9.10 6.5.6 1.9.11 6.5.7 1.9.12 6.5.8 1.9.2 6.6.0 1.9.3 6.6.1 1.9.4 6.6.2 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0 2.0.1 2.1 2.1.1 2.1.10 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 3.0.6 3.0.7 3.1 3.1.1 3.1.10 3.1.11 3.1.12 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.10.0 3.11.0 3.11.1 3.11.2 3.11.3 3.11.4 3.12.0 3.13.0 3.14.0 3.14.1 3.14.2 3.14.3 3.14.4 3.15.0 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.2.0 3.3.1 3.3.10 3.3.11 3.3.12 3.3.13 3.3.14 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.3.8 3.3.9 3.4.0 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.7.0 3.8.0 3.9.0 3.9.1 3.9.10 3.9.11 3.9.12 3.9.13 3.9.15 3.9.16 3.9.17 3.9.18 3.9.19 3.9.2 3.9.20 3.9.21 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.9 4.0.0 4.0.1 4.0.10 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.0.9 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.11.0 4.11.1 4.11.2 4.11.3 4.11.4 4.11.5 4.11.6 4.11.7 4.11.8 4.11.9 4.12.0 4.13.0 4.13.1 4.13.2 4.13.3 4.14.0 4.14.1 4.14.2 4.15.0 4.16.0 4.16.1 4.16.2 4.17.0 4.18.0 4.18.1 4.18.2 4.18.3 4.18.4 4.18.5 4.18.6 4.19.0 4.19.1 4.2.0 4.20.0 4.20.1 4.20.2 4.20.3 4.21.0 4.21.1 4.21.2 4.21.3 4.21.4 4.21.5
flexible-shipping / vendor_prefixed / wpdesk / wp-logs / src / WC / WooCommerceCapture.php
flexible-shipping / vendor_prefixed / wpdesk / wp-logs / src / WC Last commit date
Exception 2 weeks ago WooCommerceCapture.php 2 weeks ago WooCommerceHandler.php 2 weeks ago WooCommerceMonologPlugin.php 2 weeks ago
WooCommerceCapture.php
133 lines
1 <?php
2
3 namespace FSVendor\WPDesk\Logger\WC;
4
5 use FSVendor\Monolog\Logger;
6 use FSVendor\WPDesk\Logger\WC\Exception\WCLoggerAlreadyCaptured;
7 /**
8 * Can capture default WooCommerce logger
9 *
10 * @package WPDesk\Logger
11 */
12 class WooCommerceCapture
13 {
14 const WOOCOMMERCE_LOGGER_FILTER = 'woocommerce_logging_class';
15 const WOOCOMMERCE_AFTER_IS_LOADED_ACTION = 'woocommerce_loaded';
16 /** @var string Minimal version of WooCommerce supported by logger capture */
17 const SUPPORTED_WC_VERSION = '3.5.0';
18 /**
19 * Is logger filter captured by library.
20 *
21 * @var bool
22 */
23 private $isCaptured = \false;
24 /**
25 * Our monolog
26 *
27 * @var Logger
28 */
29 private $monolog;
30 /**
31 * Original WC Logger
32 *
33 * @var \WC_Logger_Interface
34 */
35 private $originalWCLogger;
36 /**
37 * WordPress hook function to return our logger
38 *
39 * @var ?callable
40 */
41 private $captureHookFunction;
42 /**
43 * WordPress hook function to return original wc logger
44 *
45 * @var ?callable
46 */
47 private $freeHookFunction;
48 public function __construct(Logger $monolog)
49 {
50 $this->monolog = $monolog;
51 }
52 /**
53 * Prepares callable property captureHookFunction.
54 * For it to work WC have to be loaded
55 */
56 private function prepareCaptureHookCallable()
57 {
58 $monolog = $this->monolog;
59 if ($this->captureHookFunction === null) {
60 $this->captureHookFunction = function () use ($monolog) {
61 return new WooCommerceMonologPlugin($monolog, $this->originalWCLogger);
62 };
63 $this->monolog->pushHandler(new WooCommerceHandler($this->originalWCLogger));
64 }
65 }
66 /**
67 * Is this version of WooCommerce is supported by logger capture
68 *
69 * @return bool
70 */
71 public static function isSupportedWCVersion()
72 {
73 return class_exists(\WooCommerce::class) && version_compare(\WooCommerce::instance()->version, self::SUPPORTED_WC_VERSION, '>=');
74 }
75 /**
76 * Capture WooCommerce logger and inject our decorated Logger
77 */
78 public function captureWcLogger()
79 {
80 if (self::isSupportedWCVersion()) {
81 if ($this->isCaptured) {
82 throw new WCLoggerAlreadyCaptured('Try to free wc logger first.');
83 }
84 if ($this->isWooCommerceLoggerAvailable()) {
85 $this->prepareFreeHookCallable();
86 $this->prepareCaptureHookCallable();
87 remove_filter(self::WOOCOMMERCE_LOGGER_FILTER, $this->freeHookFunction);
88 add_filter(self::WOOCOMMERCE_LOGGER_FILTER, $this->captureHookFunction);
89 $this->isCaptured = \true;
90 } elseif (function_exists('add_action')) {
91 add_action(self::WOOCOMMERCE_AFTER_IS_LOADED_ACTION, [$this, 'captureWcLogger']);
92 } else {
93 $this->monolog->alert('Cannot capture WC - WordPress is not available.');
94 }
95 } else {
96 $this->monolog->alert('Cannot capture WC - WooCommerce version is not supported.');
97 }
98 }
99 /**
100 * Can i fetch WC Logger?
101 *
102 * @return bool
103 */
104 private function isWooCommerceLoggerAvailable()
105 {
106 return function_exists('wc_get_logger');
107 }
108 /**
109 * Prepares callable property freeHookFunction.
110 * For it to work WC have to be loaded
111 */
112 private function prepareFreeHookCallable()
113 {
114 if ($this->freeHookFunction === null) {
115 $this->originalWCLogger = $logger = wc_get_logger();
116 $this->freeHookFunction = function () use ($logger) {
117 return $logger;
118 };
119 }
120 }
121 /**
122 * Remove WooCommerce logger injection
123 */
124 public function freeWcLogger()
125 {
126 if ($this->isCaptured) {
127 remove_filter(self::WOOCOMMERCE_LOGGER_FILTER, $this->captureHookFunction);
128 add_filter(self::WOOCOMMERCE_LOGGER_FILTER, $this->freeHookFunction);
129 $this->isCaptured = \false;
130 }
131 }
132 }
133