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-plugin-flow-common / src / PluginBootstrap.php
flexible-shipping / vendor_prefixed / wpdesk / wp-plugin-flow-common / src Last commit date
Initialization 2 weeks ago PluginBootstrap.php 2 weeks ago plugin-init-php52-free-no-tracker.php 2 weeks ago plugin-init-php52-free.php 2 weeks ago plugin-init-php52.php 2 weeks ago
PluginBootstrap.php
164 lines
1 <?php
2
3 namespace FSVendor\WPDesk\Plugin\Flow;
4
5 use FSVendor\WPDesk\Plugin\Flow\Initialization\InitializationFactory;
6 /**
7 * Bootstrap plugin loading
8 * - check requirements
9 * - prepare plugin info
10 * - delegate plugin building to the initializator
11 */
12 final class PluginBootstrap
13 {
14 const LIBRARY_TEXT_DOMAIN = 'flexible-shipping';
15 const PRIORITY_BEFORE_FLOW_2_5 = -50;
16 /** @var string */
17 private $plugin_version;
18 /** @var string */
19 private $plugin_name;
20 /** @var string */
21 private $plugin_class_name;
22 /** @var string */
23 private $plugin_text_domain;
24 /** @var string */
25 private $plugin_dir;
26 /** @var string */
27 private $plugin_file;
28 /** @var array */
29 private $requirements;
30 /** @var string */
31 private $product_id;
32 /** @var array */
33 private $plugin_shops;
34 /**
35 * Factory to build strategy how initialize that plugin
36 *
37 * @var InitializationFactory
38 */
39 private $initialization_factory;
40 /**
41 * WPDesk_Plugin_Bootstrap constructor.
42 *
43 * @param string $plugin_version
44 * @param string $plugin_release_timestamp
45 * @param string $plugin_name
46 * @param string $plugin_class_name
47 * @param string $plugin_text_domain
48 * @param string $plugin_dir
49 * @param string $plugin_file
50 * @param array $requirements
51 * @param string $product_id
52 * @param InitializationFactory $build_factory
53 * @param array $plugin_shops
54 */
55 public function __construct($plugin_version, $plugin_release_timestamp, $plugin_name, $plugin_class_name, $plugin_text_domain, $plugin_dir, $plugin_file, array $requirements, $product_id, InitializationFactory $build_factory, $plugin_shops)
56 {
57 $this->plugin_version = $plugin_version;
58 $this->plugin_name = $plugin_name;
59 $this->plugin_class_name = $plugin_class_name;
60 $this->plugin_text_domain = $plugin_text_domain;
61 $this->plugin_dir = $plugin_dir;
62 $this->plugin_file = $plugin_file;
63 $this->requirements = $requirements;
64 $this->product_id = $product_id;
65 $this->initialization_factory = $build_factory;
66 $this->plugin_shops = $plugin_shops;
67 }
68 /**
69 * Run the plugin bootstrap
70 */
71 public function run()
72 {
73 $plugin_info = $this->get_plugin_info();
74 $this->init_translations($plugin_info);
75 $strategy = $this->initialization_factory->create_initialization_strategy($plugin_info);
76 $requirements_checker = $this->create_requirements_checker();
77 if ($requirements_checker->are_requirements_met()) {
78 $strategy->run_before_init($plugin_info);
79 }
80 $this->add_activation_hook_for_save_activation_date();
81 add_action('plugins_loaded', static function () use ($strategy, $requirements_checker, $plugin_info) {
82 if ($requirements_checker->are_requirements_met()) {
83 $strategy->run_init($plugin_info);
84 } else {
85 $requirements_checker->render_notices();
86 }
87 }, self::PRIORITY_BEFORE_FLOW_2_5);
88 add_action('before_woocommerce_init', static function () use ($plugin_info) {
89 $features_util_class = '\\' . 'Automattic' . '\\' . 'WooCommerce' . '\\' . 'Utilities' . '\\' . 'FeaturesUtil';
90 if (class_exists($features_util_class)) {
91 $features_util_class::declare_compatibility('custom_order_tables', $plugin_info->get_plugin_file_name(), \true);
92 }
93 });
94 }
95 /**
96 * Initialize activated_plugin action.
97 * Action stores plugin activation date.
98 * Example option name: plugin_activation_flexible-shipping/flexible-shipping.php
99 */
100 private function add_activation_hook_for_save_activation_date()
101 {
102 add_action('activated_plugin', static function ($plugin_file, $network_wide = \false) {
103 if (!$network_wide) {
104 $option_name = 'activation_plugin_' . $plugin_file;
105 $activation_date = get_option($option_name, '');
106 if ('' === $activation_date) {
107 $activation_date = current_time('mysql');
108 update_option($option_name, $activation_date);
109 }
110 }
111 });
112 }
113 /**
114 * Adds text domain used in a library
115 */
116 private function init_translations(\FSVendor\WPDesk_Plugin_Info $plugin_info)
117 {
118 $lang_dir = 'lang';
119 if (method_exists($plugin_info, 'get_language_dir')) {
120 $lang_dir = $plugin_info->get_language_dir();
121 }
122 $text_domain = $plugin_info->get_text_domain();
123 add_filter('doing_it_wrong_trigger_error', function ($doing_it_wrong, $function, $message, $version) use ($text_domain) {
124 if (wp_get_environment_type() === 'production' && $function === '_load_textdomain_just_in_time' && strpos($message, '<code>' . $text_domain . '</code>') !== \false) {
125 return \false;
126 }
127 return $doing_it_wrong;
128 }, 10, 4);
129 \load_plugin_textdomain($plugin_info->get_text_domain(), '', basename($plugin_info->get_plugin_dir()) . "/{$lang_dir}/");
130 }
131 /**
132 * Factory method creates requirement checker to run the checks
133 *
134 * @return \WPDesk_Requirement_Checker
135 */
136 private function create_requirements_checker()
137 {
138 /** @var \WPDesk_Requirement_Checker_Factory $requirements_checker_factory */
139 $requirements_checker_factory = new \FSVendor\WPDesk_Basic_Requirement_Checker_Factory();
140 return $requirements_checker_factory->create_from_requirement_array(__FILE__, $this->plugin_name, $this->requirements, $this->plugin_text_domain);
141 }
142 /**
143 * Factory method creates \WPDesk_Plugin_Info to bootstrap info about plugin in one place
144 *
145 * TODO: move to WPDesk_Plugin_Info factory
146 *
147 * @return \WPDesk_Plugin_Info
148 */
149 private function get_plugin_info()
150 {
151 $plugin_info = new \FSVendor\WPDesk_Plugin_Info();
152 $plugin_info->set_plugin_file_name(plugin_basename($this->plugin_file));
153 $plugin_info->set_plugin_name($this->plugin_name);
154 $plugin_info->set_plugin_dir($this->plugin_dir);
155 $plugin_info->set_class_name($this->plugin_class_name);
156 $plugin_info->set_version($this->plugin_version);
157 $plugin_info->set_product_id($this->product_id);
158 $plugin_info->set_text_domain($this->plugin_text_domain);
159 $plugin_info->set_plugin_url(plugins_url('', $this->plugin_file));
160 $plugin_info->set_plugin_shops($this->plugin_shops);
161 return $plugin_info;
162 }
163 }
164