PluginProbe
Tiered Pricing Table for WooCommerce / 2.3.0
Tiered Pricing Table for WooCommerce v2.3.0
7.1.7 7.1.5 7.1.4 7.1.1 6.5.0 6.4.0 6.1.0 trunk 1.0 1.1 2.0 2.0.1 2.0.2 2.1 2.1.1 2.1.2 2.2.0 2.2.1 2.2.2 2.2.3 2.3.0 2.3.1 2.3.2 2.3.3 2.3.4 All 90 releases
tier-pricing-table / src / TierPricingTablePlugin.php

TierPricingTablePlugin.php in Tiered Pricing Table for WooCommerce 2.3.0, at src/TierPricingTablePlugin.php

186 lines 5.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php namespace TierPricingTable;
2
3 use Premmerce\SDK\V2\Notifications\AdminNotifier;
4 use TierPricingTable\Settings\Settings;
5 use Premmerce\SDK\V2\FileManager\FileManager;
6 use TierPricingTable\Admin\Admin;
7 use TierPricingTable\Frontend\Frontend;
8 use TierPricingTable\BackgroundProcessing\Updater\Updater;
9
10 /**
11 * Class TierPricingTablePlugin
12 *
13 * @package TierPricingTable
14 */
15 class TierPricingTablePlugin {
16
17 /**
18 * @var FileManager
19 */
20 private $fileManager;
21
22 /**
23 * @var Settings
24 */
25 private $settings;
26
27 /**
28 * @var AdminNotifier
29 */
30 private $notifier;
31
32 /**
33 * @var Freemius
34 */
35 private $licence;
36
37 const VERSION = '2.3.0';
38
39 const DB_VERSION = '2.0';
40
41 /**
42 * TierPricingTablePlugin constructor.
43 *
44 * @param string $mainFile
45 */
46 public function __construct( $mainFile ) {
47 $this->licence = new Freemius( $mainFile );
48 $this->fileManager = new FileManager( $mainFile, 'tier-pricing-table' );
49 $this->settings = new Settings( $this->fileManager );
50 $this->notifier = new AdminNotifier();
51
52 add_action( 'init', [ $this, 'loadTextDomain' ], - 999 );
53 add_action( 'admin_init', [ $this, 'checkRequirePlugins' ] );
54
55 add_filter( 'plugin_action_links_' . plugin_basename( $this->fileManager->getMainFile() ),
56 [ $this, 'addPluginAction' ], 10, 4 );
57 }
58
59 /**
60 * Add setting to plugin actions at plugins list
61 *
62 * @param array $actions
63 *
64 * @return array
65 */
66 public function addPluginAction( $actions ) {
67 $actions[] = '<a href="' . $this->settings->getLink() . '">' . __( 'Settings', 'tier-pricing-table' ) . '</a>';
68
69 if ( ! tpt_fs()->is_anonymous() && tpt_fs()->is_installed_on_site() ) {
70 $actions[] = '<a href="' . $this->licence->getAccountPageUrl() . '"><b style="color: green">' . __( 'Account',
71 'tier-pricing-table' ) . '</b></a>';
72 }
73
74 $actions[] = '<a href="' . $this->licence->getContactUsPageUrl() . '"><b style="color: green">' . __( 'Contact Us',
75 'tier-pricing-table' ) . '</b></a>';
76
77 return $actions;
78 }
79
80 /**
81 * Run plugin part
82 */
83 public function run() {
84 $valid = count( $this->validateRequiredPlugins() ) === 0 && $this->licence->isValid();
85 $updater = new Updater();
86
87 if ( $valid && ! $updater->checkForUpdates() ) {
88
89 if ( is_admin() ) {
90 new Admin( $this->fileManager, $this->licence, $this->settings );
91 } else {
92 new Frontend( $this->fileManager, $this->licence, $this->settings );
93 }
94
95 } else {
96 $updater->update();
97 }
98 }
99
100 /**
101 * Load plugin translations
102 */
103 public function loadTextDomain() {
104 $name = $this->fileManager->getPluginName();
105 load_plugin_textdomain( 'tier-pricing-table', false, $name . '/languages/' );
106 }
107
108 /**
109 * Validate required plugins
110 *
111 * @return array
112 */
113 private function validateRequiredPlugins() {
114 $plugins = [];
115
116 if ( ! function_exists( 'is_plugin_active' ) ) {
117 include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
118 }
119
120 /**
121 * Check if WooCommerce is active
122 **/
123 if ( ! ( is_plugin_active( 'woocommerce/woocommerce.php' ) || is_plugin_active_for_network( 'woocommerce/woocommerce.php' ) ) ) {
124 $plugins[] = '<a target="_blank" href="https://wordpress.org/plugins/woocommerce/">WooCommerce</a>';
125 }
126
127 return $plugins;
128 }
129
130 /**
131 * Check required plugins and push notifications
132 */
133 public function checkRequirePlugins() {
134 $message = __( 'The %s plugin requires %s plugin to be active!', 'tier-pricing-table' );
135
136 $plugins = $this->validateRequiredPlugins();
137
138 if ( count( $plugins ) ) {
139 foreach ( $plugins as $plugin ) {
140 $error = sprintf( $message, 'Tiered Pricing Table', $plugin );
141 $this->notifier->push( $error, AdminNotifier::ERROR, false );
142 }
143 }
144 }
145
146 /**
147 * Fired during plugin uninstall
148 */
149 public static function uninstall() {
150 delete_post_meta_by_key( '_price_rules' );
151
152 delete_option( Settings::SETTINGS_PREFIX . 'display' );
153 delete_option( Settings::SETTINGS_PREFIX . 'position_hook' );
154 delete_option( Settings::SETTINGS_PREFIX . 'head_quantity_text' );
155 delete_option( Settings::SETTINGS_PREFIX . 'head_price_text' );
156 delete_option( Settings::SETTINGS_PREFIX . 'display_type' );
157 delete_option( Settings::SETTINGS_PREFIX . 'selected_quantity_color' );
158 delete_option( Settings::SETTINGS_PREFIX . 'table_title' );
159 delete_option( Settings::SETTINGS_PREFIX . 'table_css_class' );
160 delete_option( Settings::SETTINGS_PREFIX . 'tooltip_size' );
161
162 // Premium
163 delete_option( Settings::SETTINGS_PREFIX . 'show_discount_in_cart' );
164 delete_option( Settings::SETTINGS_PREFIX . 'tiered_price_at_catalog' );
165 delete_option( Settings::SETTINGS_PREFIX . 'show_discount_column' );
166 delete_option( Settings::SETTINGS_PREFIX . 'tiered_price_at_catalog_type' );
167 delete_option( Settings::SETTINGS_PREFIX . 'lowest_prefix' );
168 delete_option( Settings::SETTINGS_PREFIX . 'head_discount_text' );
169 delete_option( Settings::SETTINGS_PREFIX . 'clickable_table_rows' );
170 delete_option( Settings::SETTINGS_PREFIX . 'show_total_price' );
171 delete_option( Settings::SETTINGS_PREFIX . 'tiered_price_at_product_page' );
172
173 delete_option( Updater::DB_OPTION );
174 }
175
176 /**
177 * Plugin activation
178 */
179 public function activate() {
180 set_transient( 'tiered_pricing_table_activated', true, 100 );
181 }
182
183 public function deactivate() {
184
185 }
186 }