PluginProbe ʕ •ᴥ•ʔ
Weight Based Shipping Table Rate for WooCommerce – Flexible Shipping / 6.12.0
Weight Based Shipping Table Rate for WooCommerce – Flexible Shipping v6.12.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 1 week ago Promo 1 week ago Tracker 1 week ago views 1 week ago AdminPage.php 1 week ago Assets.php 1 week ago DateRange.php 1 week ago Page.php 1 week ago PageViewTracker.php 1 week ago PluginLinks.php 1 week ago ShippingExtensions.php 1 week ago TimedUpdate.php 1 week ago TimedUpdates.php 1 week ago WooCommerceSuggestions.php 1 week 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