PluginProbe
Tiered Pricing Table for WooCommerce / 2.2.1
Tiered Pricing Table for WooCommerce v2.2.1
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.2.1, at src/TierPricingTablePlugin.php

187 lines 5.0 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.2.1';
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 /**
61 * Add setting to plugin actions at plugins list
62 *
63 * @param array $actions
64 *
65 * @return array
66 */
67 public function addPluginAction( $actions ) {
68 $actions[] = '<a href="' . $this->settings->getLink() . '">' . __( 'Settings', 'tier-pricing-table' ) . '</a>';
69
70 if ( ! tpt_fs()->is_anonymous() && tpt_fs()->is_installed_on_site() ) {
71 $actions[] = '<a href="' . $this->licence->getAccountPageUrl() . '"><b style="color: green">' . __( 'Account',
72 'tier-pricing-table' ) . '</b></a>';
73 }
74
75 $actions[] = '<a href="' . $this->licence->getContactUsPageUrl() . '"><b style="color: green">' . __( 'Contact Us',
76 'tier-pricing-table' ) . '</b></a>';
77
78 return $actions;
79 }
80
81 /**
82 * Run plugin part
83 */
84 public function run() {
85 $valid = count( $this->validateRequiredPlugins() ) === 0 && $this->licence->isValid();
86 $updater = new Updater();
87
88 if ( $valid && ! $updater->checkForUpdates() ) {
89
90 if ( is_admin() ) {
91
92 new Admin( $this->fileManager, $this->licence, $this->settings );
93 } else {
94 new Frontend( $this->fileManager, $this->licence, $this->settings );
95 }
96
97 } else {
98 $updater->update();
99 }
100 }
101
102 /**
103 * Load plugin translations
104 */
105 public function loadTextDomain() {
106 $name = $this->fileManager->getPluginName();
107 load_plugin_textdomain( 'tier-pricing-table', false, $name . '/languages/' );
108 }
109
110 /**
111 * Validate required plugins
112 *
113 * @return array
114 */
115 private function validateRequiredPlugins() {
116 $plugins = [];
117
118 if ( ! function_exists( 'is_plugin_active' ) ) {
119 include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
120 }
121
122 /**
123 * Check if WooCommerce is active
124 **/
125 if ( ! ( is_plugin_active( 'woocommerce/woocommerce.php' ) || is_plugin_active_for_network( 'woocommerce/woocommerce.php' ) ) ) {
126 $plugins[] = '<a target="_blank" href="https://wordpress.org/plugins/woocommerce/">WooCommerce</a>';
127 }
128
129 return $plugins;
130 }
131
132 /**
133 * Check required plugins and push notifications
134 */
135 public function checkRequirePlugins() {
136 $message = __( 'The %s plugin requires %s plugin to be active!', 'tier-pricing-table' );
137
138 $plugins = $this->validateRequiredPlugins();
139
140 if ( count( $plugins ) ) {
141 foreach ( $plugins as $plugin ) {
142 $error = sprintf( $message, 'Tiered Pricing Table', $plugin );
143 $this->notifier->push( $error, AdminNotifier::ERROR, false );
144 }
145 }
146 }
147
148 /**
149 * Fired during plugin uninstall
150 */
151 public static function uninstall() {
152 delete_post_meta_by_key( '_price_rules' );
153
154 delete_option( Settings::SETTINGS_PREFIX . 'display' );
155 delete_option( Settings::SETTINGS_PREFIX . 'position_hook' );
156 delete_option( Settings::SETTINGS_PREFIX . 'head_quantity_text' );
157 delete_option( Settings::SETTINGS_PREFIX . 'head_price_text' );
158 delete_option( Settings::SETTINGS_PREFIX . 'display_type' );
159 delete_option( Settings::SETTINGS_PREFIX . 'selected_quantity_color' );
160 delete_option( Settings::SETTINGS_PREFIX . 'table_title' );
161 delete_option( Settings::SETTINGS_PREFIX . 'table_css_class' );
162 delete_option( Settings::SETTINGS_PREFIX . 'tooltip_size' );
163
164 // Premium
165 delete_option( Settings::SETTINGS_PREFIX . 'show_discount_in_cart' );
166 delete_option( Settings::SETTINGS_PREFIX . 'tiered_price_at_catalog' );
167 delete_option( Settings::SETTINGS_PREFIX . 'show_discount_column' );
168 delete_option( Settings::SETTINGS_PREFIX . 'tiered_price_at_catalog_type' );
169 delete_option( Settings::SETTINGS_PREFIX . 'lowest_prefix' );
170 delete_option( Settings::SETTINGS_PREFIX . 'head_discount_text' );
171 delete_option( Settings::SETTINGS_PREFIX . 'clickable_table_rows' );
172 delete_option( Settings::SETTINGS_PREFIX . 'show_total_price' );
173
174 delete_option( Updater::DB_OPTION );
175 }
176
177 /**
178 * Plugin activation
179 */
180 public function activate() {
181 set_transient( 'tiered_pricing_table_activated', true, 100 );
182 }
183
184 public function deactivate() {
185
186 }
187 }