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 / octolize / wp-shipping-extensions / src / ShippingExtensions / Page.php
flexible-shipping / vendor_prefixed / octolize / wp-shipping-extensions / src / ShippingExtensions Last commit date
Plugin 2 weeks ago Promo 2 weeks ago Tracker 2 weeks ago views 2 weeks ago AdminPage.php 2 weeks ago Assets.php 2 weeks ago DateRange.php 2 weeks ago Page.php 2 weeks ago PageViewTracker.php 2 weeks ago PluginLinks.php 2 weeks ago ShippingExtensions.php 2 weeks ago TimedUpdate.php 2 weeks ago TimedUpdates.php 2 weeks ago WooCommerceSuggestions.php 2 weeks ago
Page.php
149 lines
1 <?php
2
3 namespace FSVendor\Octolize\ShippingExtensions;
4
5 use FSVendor\Octolize\ShippingExtensions\Plugin\Plugin;
6 use FSVendor\Octolize\ShippingExtensions\Plugin\PluginFactory;
7 use FSVendor\Octolize\ShippingExtensions\Plugin\PluginSorter;
8 use FSVendor\Octolize\ShippingExtensions\Tracker\ViewPageTracker;
9 use FSVendor\WPDesk\PluginBuilder\Plugin\Hookable;
10 /**
11 * .
12 */
13 class Page implements Hookable
14 {
15 private const PARENT_SLUG = 'woocommerce';
16 public const MENU_SLUG = 'octolize-shipping-extensions';
17 public const SCREEN_ID = 'woocommerce_page_' . self::MENU_SLUG;
18 /**
19 * @var string
20 */
21 private $assets_url;
22 /**
23 * @var ViewPageTracker
24 */
25 private $view_page_tracker;
26 /**
27 * @param string $assets_url .
28 * @param ViewPageTracker $view_page_tracker .
29 */
30 public function __construct(string $assets_url, ViewPageTracker $view_page_tracker)
31 {
32 $this->assets_url = $assets_url;
33 $this->view_page_tracker = $view_page_tracker;
34 }
35 /**
36 * @return void
37 */
38 public function hooks(): void
39 {
40 add_action('admin_menu', [$this, 'add_page'], 100);
41 }
42 /**
43 * @return void
44 */
45 public function add_page(): void
46 {
47 add_submenu_page(self::PARENT_SLUG, _x('Shipping Extensions', 'Page title', 'flexible-shipping'), $this->get_menu_title(), 'manage_options', self::MENU_SLUG, [$this, 'render_page']);
48 }
49 /**
50 * @return void
51 */
52 public function render_page(): void
53 {
54 wp_enqueue_style(Assets::HANDLE);
55 $assets_url = $this->assets_url;
56 $plugins = $this->get_plugins();
57 $categories = $this->get_categories();
58 $header_promo = $this->get_header_promo();
59 require_once __DIR__ . '/views/html-shipping-extensions-page.php';
60 }
61 /**
62 * @return string
63 */
64 private function get_menu_title(): string
65 {
66 $menu_title = nl2br(_x("Shipping\nExtensions", 'Menu Title', 'flexible-shipping'));
67 if ($this->should_add_badge()) {
68 $menu_title .= ' <span class="update-plugins"><span class="update-count">1</span></span>';
69 }
70 return $menu_title;
71 }
72 /**
73 * @return bool
74 */
75 private function should_add_badge(): bool
76 {
77 if (isset($_GET['page']) && sanitize_key(wp_unslash($_GET['page'])) === self::MENU_SLUG) {
78 return \false;
79 }
80 return apply_filters('octolize/shipping-extensions/should-add-badge', !$this->view_page_tracker->option_exists(), $this->view_page_tracker);
81 }
82 /**
83 * @return Plugin[]
84 */
85 private function get_plugins(): array
86 {
87 $plugins = PluginFactory::get_plugins();
88 list($plugins_priority, $categories_priority) = $this->get_plugins_and_categorites_priority();
89 $sorter = new PluginSorter($plugins, $plugins_priority, $categories_priority);
90 return array_values($sorter->sort());
91 }
92 /**
93 * @return array
94 */
95 private function get_plugins_and_categorites_priority(): array
96 {
97 $active_plugins = get_option('active_plugins');
98 $categories = PluginFactory::get_categories();
99 $plugins_priority = [];
100 $categories_priority = [];
101 if (in_array('flexible-shipping/flexible-shipping.php', $active_plugins, \true)) {
102 $plugins_priority[] = 'flexible-shipping-pro/flexible-shipping-pro.php';
103 $plugins_priority[] = 'fs-bundle';
104 $categories_priority[] = $categories[PluginFactory::CATEGORY_CUSTOMIZABLE_RATES];
105 $categories_priority[] = $categories[PluginFactory::CATEGORY_SHIPPING_LABELS];
106 $categories_priority[] = $categories[PluginFactory::CATEGORY_LIVE_RATES];
107 $categories_priority[] = $categories[PluginFactory::CATEGORY_BUNDLES];
108 }
109 if (in_array('flexible-shipping-ups/flexible-shipping-ups.php', $active_plugins, \true)) {
110 $plugins_priority[] = 'flexible-shipping-ups-pro/flexible-shipping-ups-pro.php';
111 $plugins_priority[] = 'flexible-shipping-ups-labels/flexible-shipping-ups-labels.php';
112 $plugins_priority[] = 'ups-bundle';
113 $plugins_priority[] = 'flexible-shipping-conditional-methods/flexible-shipping-conditional-methods.php';
114 $categories_priority[] = $categories[PluginFactory::CATEGORY_LIVE_RATES];
115 $categories_priority[] = $categories[PluginFactory::CATEGORY_CUSTOMIZABLE_RATES];
116 $categories_priority[] = $categories[PluginFactory::CATEGORY_SHIPPING_LABELS];
117 $categories_priority[] = $categories[PluginFactory::CATEGORY_BUNDLES];
118 }
119 if (in_array('flexible-shipping-fedex/flexible-shipping-fedex.php', $active_plugins, \true)) {
120 $plugins_priority[] = 'flexible-shipping-fedex-pro/flexible-shipping-fedex-pro.php';
121 $plugins_priority[] = 'flexible-shipping-conditional-methods/flexible-shipping-conditional-methods.php';
122 $categories_priority[] = $categories[PluginFactory::CATEGORY_LIVE_RATES];
123 $categories_priority[] = $categories[PluginFactory::CATEGORY_CUSTOMIZABLE_RATES];
124 $categories_priority[] = $categories[PluginFactory::CATEGORY_SHIPPING_LABELS];
125 $categories_priority[] = $categories[PluginFactory::CATEGORY_BUNDLES];
126 }
127 if (in_array('flexible-shipping-dhl-express/flexible-shipping-dhl-express.php', $active_plugins, \true)) {
128 $plugins_priority[] = 'flexible-shipping-dhl-express-pro/flexible-shipping-dhl-express-pro.php';
129 $plugins_priority[] = 'flexible-shipping-conditional-methods/flexible-shipping-conditional-methods.php';
130 $categories_priority[] = $categories[PluginFactory::CATEGORY_LIVE_RATES];
131 $categories_priority[] = $categories[PluginFactory::CATEGORY_CUSTOMIZABLE_RATES];
132 $categories_priority[] = $categories[PluginFactory::CATEGORY_SHIPPING_LABELS];
133 $categories_priority[] = $categories[PluginFactory::CATEGORY_BUNDLES];
134 }
135 return [$plugins_priority, $categories_priority];
136 }
137 /**
138 * @return array
139 */
140 private function get_categories(): array
141 {
142 return array_values(PluginFactory::get_categories());
143 }
144 private function get_header_promo(): array
145 {
146 return array_values(apply_filters('octolize/shipping-extensions/header-promo', []));
147 }
148 }
149