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

141 lines 4.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\Admin\Settings;
5 use Premmerce\SDK\V2\FileManager\FileManager;
6 use TierPricingTable\Admin\Admin;
7 use TierPricingTable\Frontend\Frontend;
8
9 /**
10 * Class TierPricingTablePlugin
11 *
12 * @package TierPricingTable
13 */
14 class TierPricingTablePlugin {
15
16 /**
17 * @var FileManager
18 */
19 private $fileManager;
20
21 /**
22 * @var Settings
23 */
24 private $settings;
25
26 /**
27 * @var AdminNotifier
28 */
29 private $notifier;
30
31 /**
32 * TierPricingTablePlugin constructor.
33 *
34 * @param string $mainFile
35 */
36 public function __construct($mainFile) {
37
38 $this->fileManager = new FileManager($mainFile, 'tier-pricing-table');
39 $this->settings = new Settings($this->fileManager);
40 $this->notifier = new AdminNotifier();
41
42 add_action('plugins_loaded', [ $this, 'loadTextDomain' ]);
43 add_action( 'admin_init', [ $this, 'checkRequirePlugins'] );
44
45 add_filter( 'plugin_action_links_' . plugin_basename($this->fileManager->getMainFile()), [$this, 'addPluginAction'], 10, 4 );
46 }
47
48 public function addPluginAction($actions)
49 {
50 $actions[] = '<a href="' . $this->settings->getLink() . '">' . __('Settings', 'tier-pricing-table') . '</a>';
51 return $actions;
52 }
53
54 /**
55 * Run plugin part
56 */
57 public function run() {
58
59 $valid = count( $this->validateRequiredPlugins() ) === 0;
60
61 if ( $valid ) {
62 if ( is_admin() ) {
63 new Admin( $this->fileManager, $this->settings );
64 } else {
65 $GLOBALS['price_table_frontend'] = new Frontend( $this->fileManager, $this->settings );
66 }
67 }
68 }
69
70 /**
71 * Load plugin translations
72 */
73 public function loadTextDomain()
74 {
75 $name = $this->fileManager->getPluginName();
76 load_plugin_textdomain('tier-pricing-table', false, $name . '/languages/');
77 }
78
79 /**
80 * Validate required plugins
81 *
82 * @return array
83 */
84 private function validateRequiredPlugins()
85 {
86 $plugins = [];
87
88 if ( ! function_exists('is_plugin_active')) {
89 include_once(ABSPATH . 'wp-admin/includes/plugin.php');
90 }
91
92 /**
93 * Check if WooCommerce is active
94 **/
95 if ( ! (is_plugin_active('woocommerce/woocommerce.php') || is_plugin_active_for_network('woocommerce/woocommerce.php'))) {
96 $plugins[] = '<a target="_blank" href="https://wordpress.org/plugins/woocommerce/">WooCommerce</a>';
97 }
98
99 return $plugins;
100 }
101
102 /**
103 * Check required plugins and push notifications
104 */
105 public function checkRequirePlugins()
106 {
107 $message = __('The %s plugin requires %s plugin to be active!', 'tier-pricing-table');
108
109 $plugins = $this->validateRequiredPlugins();
110
111 if (count($plugins)) {
112 foreach ($plugins as $plugin) {
113 $error = sprintf($message, 'Tier Pricing Table', $plugin);
114 $this->notifier->push($error, AdminNotifier::ERROR, false);
115 }
116 }
117 }
118
119 /**
120 * Fired during plugin uninstall
121 */
122 public static function uninstall() {
123 delete_post_meta_by_key( '_price_rules' );
124 }
125
126 public function activate(){
127 set_transient('tier_pricing_table_activated', true, 100);
128
129 add_option(Settings::PREFIX . 'display', 'yes');
130 add_option(Settings::PREFIX . 'position_hook', 'woocommerce_after_add_to_cart_button');
131 add_option(Settings::PREFIX . 'head_quantity_text', __('Quantity', 'tier-pricing-table'));
132 add_option(Settings::PREFIX . 'head_price_text', __('Price', 'tier-pricing-table'));
133 add_option(Settings::PREFIX . 'display_type', 'tooltip');
134 add_option(Settings::PREFIX . 'selected_quantity_color', '#cc99c2');
135 add_option(Settings::PREFIX . 'table_title', '');
136 add_option(Settings::PREFIX . 'table_css_class', '#fff');
137 add_option(Settings::PREFIX . 'tooltip_size', 15);
138 }
139
140 public function deactivate(){}
141 }