PluginProbe
Tiered Pricing Table for WooCommerce / 2.2.2
Tiered Pricing Table for WooCommerce v2.2.2
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
← All changes | src/Admin/Admin.php +125 -144 1.02.2.2 View file →
@@ -1,145 +1,126 @@
1 -<?php namespace TierPricingTable\Admin;
2 -
3 -use Premmerce\SDK\V2\FileManager\FileManager;
4 -use TierPricingTable\PriceManager;
5 -use WP_Post;
6 -use WC_Product;
7 -
8 -/**
9 - * Class Admin
10 - *
11 - * @package TierPricingTable\Admin
12 - */
13 -class Admin
14 -{
15 - /**
16 - * @var FileManager
17 - */
18 - private $fileManager;
19 -
20 - /**
21 - * @var Settings
22 - */
23 - private $settings;
24 -
25 - /**
26 - * Admin constructor.
27 - *
28 - * Register menu items and handlers
29 - *
30 - * @param FileManager $fileManager
31 - * @param Settings $settings
32 - */
33 - public function __construct(FileManager $fileManager, Settings $settings)
34 - {
35 - $this->fileManager = $fileManager;
36 - $this->settings = $settings;
37 -
38 - add_action('admin_enqueue_scripts', [$this, 'enqueueAssets']);
39 -
40 - add_action('woocommerce_product_options_pricing', [$this, 'renderPriceRulesSimple']);
41 - add_action('woocommerce_variation_options_pricing', [$this, 'renderPriceRulesVariation'], 1, 3);
42 -
43 - add_action('woocommerce_save_product_variation', [$this, 'updateVariationPriceRules'], 1, 3);
44 - add_action('save_post_product', [$this, 'updateSimplePriceRules']);
45 -
46 - if(get_transient('tier_pricing_table_activated')){
47 - add_action('admin_notices', [$this, 'showActivationMessage']);
48 - }
49 - }
50 -
51 - public function showActivationMessage(){
52 - $link = $this->settings->getLink();
53 - $this->fileManager->includeTemplate('admin/activation-message.php', ['link' => $link]);
54 -
55 - delete_transient('tier_pricing_table_activated');
56 - }
57 -
58 - /**
59 - * Update price quantity rules for variation product
60 - *
61 - * @param int $variation_id
62 - * @param int $loop
63 - */
64 - public function updateVariationPriceRules($variation_id, $loop)
65 - {
66 - if(isset($_POST['_dynamic_price_amount'][$loop])){
67 - $amounts = $_POST['_dynamic_price_amount'][$loop];
68 - $prices = !empty($_POST['_dynamic_price_value'][$loop]) ? $_POST['_dynamic_price_value'][$loop] : [];
69 -
70 - $this->updatePriceRules($amounts, $prices, $variation_id);
71 - }
72 - }
73 -
74 - /**
75 - * Update price quantity rules for simple product
76 - *
77 - * @param int $post_id
78 - */
79 - public function updateSimplePriceRules($post_id)
80 - {
81 - if(isset($_POST['_dynamic_price_amount'])){
82 - $amounts = $_POST['_dynamic_price_amount'];
83 - $prices = !empty($_POST['_dynamic_price_value']) ? $_POST['_dynamic_price_value'] : [];
84 -
85 - $this->updatePriceRules($amounts, $prices, $post_id);
86 - }
87 - }
88 - /**
89 - * Register assets on product create/update page
90 - *
91 - * @param $page
92 - */
93 - public function enqueueAssets($page)
94 - {
95 - global $post;
96 -
97 - if(($page == 'post.php' || $page = 'post_new.php') && $post && $post->post_type == 'product'){
98 - wp_enqueue_script('tier-pricing-table-admin-js', $this->fileManager->locateAsset('admin/main.js'), 'jquery');
99 - wp_enqueue_style('tier-pricing-table-admin-css', $this->fileManager->locateAsset('admin/style.css'));
100 - }
101 - }
102 -
103 - /**
104 - * Update price rules
105 - *
106 - * @param array $amounts
107 - * @param array $prices
108 - * @param int $post_id
109 - */
110 - protected function updatePriceRules($amounts, $prices, $post_id)
111 - {
112 - $rules = [];
113 -
114 - foreach ($amounts as $key => $amount){
115 - if(!empty($amount) && !empty($prices[$key]) && !key_exists($amount, $rules)){
116 - $rules[$amount] = $prices[$key];
117 - }
118 - }
119 -
120 - update_post_meta($post_id, '_price_rules', $rules);
121 - }
122 -
123 - /**
124 - * Render inputs for price rules on simple product
125 - * @global WC_Product $product_object
126 - */
127 - public function renderPriceRulesSimple()
128 - {
129 - global $product_object;
130 -
131 - $this->fileManager->includeTemplate('admin/add-price-rule-simple.php', ['price_rules' => PriceManager::getPriceRules($product_object->get_id())]);
132 - }
133 -
134 - /**
135 - * Render inputs for price rules on variation
136 - *
137 - * @param int $loop
138 - * @param array $variation_data
139 - * @param WP_Post $variation
140 - */
141 - public function renderPriceRulesVariation($loop, $variation_data, $variation)
142 - {
143 - $this->fileManager->includeTemplate('admin/add-price-rule-variation.php', ['price_rules' => PriceManager::getPriceRules($variation->ID), 'i' => $loop, 'variation_data' => $variation_data]);
144 - }
1 +<?php
2 +
3 +namespace TierPricingTable\Admin;
4 +
5 +use TierPricingTable\Freemius ;
6 +use TierPricingTable\Settings\Settings ;
7 +use TierPricingTable\TierPricingTablePlugin ;
8 +use Premmerce\SDK\V2\FileManager\FileManager ;
9 +use TierPricingTable\Admin\ProductManagers\SimpleProductManager ;
10 +use TierPricingTable\Admin\ProductManagers\VariationProductManager ;
11 +use TierPricingTable\Admin\Export\Woocommerce as WooCommerceExport ;
12 +use TierPricingTable\Admin\Import\Woocommerce as WooCommerceImport ;
13 +/**
14 + * Class Admin
15 + *
16 + * @package TierPricingTable\Admin
17 + */
18 +class Admin
19 +{
20 + /**
21 + * @var FileManager
22 + */
23 + private $fileManager ;
24 + /**
25 + * @var Settings
26 + */
27 + private $settings ;
28 + /**
29 + * @var array
30 + */
31 + private $managers ;
32 + /**
33 + * @var Freemius
34 + */
35 + private $licence ;
36 + /**
37 + * Admin constructor.
38 + *
39 + * Register menu items and handlers
40 + *
41 + * @param FileManager $fileManager
42 + * @param Freemius $licence
43 + * @param Settings $settings
44 + */
45 + public function __construct( FileManager $fileManager, Freemius $licence, Settings $settings )
46 + {
47 + $this->fileManager = $fileManager;
48 + $this->settings = $settings;
49 + $this->licence = $licence;
50 + $this->initManagers();
51 + add_action( 'admin_enqueue_scripts', [ $this, 'enqueueAssets' ] );
52 + if ( get_transient( 'tier_pricing_table_activated' ) ) {
53 + add_action( 'admin_notices', [ $this, 'showActivationMessage' ] );
54 + }
55 +
56 + if ( $this->licence->isFree() ) {
57 +
58 + if ( tpt_fs()->is_anonymous() || !tpt_fs()->is_installed_on_site() ) {
59 + $template = 'opt-in-alert.php';
60 + } else {
61 + $template = 'upgrade-alert.php';
62 + }
63 +
64 + add_action( 'woocommerce_settings_' . Settings::SETTINGS_PAGE, function () use( $template ) {
65 + $this->fileManager->includeTemplate( 'admin/alerts/' . $template, [
66 + 'upgradeUrl' => $this->licence->getUpgradeLink(),
67 + 'contactUsUrl' => $this->licence->getContactUsPageUrl(),
68 + ] );
69 + $this->fileManager->includeTemplate( 'admin/only-in-premium-script.php' );
70 + } );
71 + }
72 +
73 + }
74 +
75 + /**
76 + * Init Managers
77 + */
78 + public function initManagers()
79 + {
80 + $this->managers = [
81 + SimpleProductManager::class => new SimpleProductManager( $this->fileManager, $this->settings, $this->licence ),
82 + VariationProductManager::class => new VariationProductManager( $this->fileManager, $this->settings, $this->licence ),
83 + WooCommerceExport::class => new WooCommerceExport(),
84 + WooCommerceImport::class => new WooCommerceImport(),
85 + ];
86 + }
87 +
88 + /**
89 + * Show message about activation plugin and advise next step
90 + */
91 + public function showActivationMessage()
92 + {
93 + $link = $this->settings->getLink();
94 + $this->fileManager->includeTemplate( 'admin/alerts/activation-alert.php', [
95 + 'link' => $link,
96 + ] );
97 + delete_transient( 'tiered_pricing_table_activated' );
98 + }
99 +
100 + /**
101 + * Register assets on product create/update page
102 + *
103 + * @param $page
104 + */
105 + public function enqueueAssets( $page )
106 + {
107 + global $post, $page ;
108 +
109 + if ( isset( $_GET['tab'] ) && $_GET['tab'] == Settings::SETTINGS_PAGE || ($page == 'post.php' || ($page = 'post_new.php')) && $post && $post->post_type == 'product' ) {
110 + wp_enqueue_script(
111 + 'tier-pricing-table-admin-js',
112 + $this->fileManager->locateAsset( 'admin/main.js' ),
113 + 'jquery',
114 + TierPricingTablePlugin::VERSION
115 + );
116 + wp_enqueue_style(
117 + 'tier-pricing-table-admin-css',
118 + $this->fileManager->locateAsset( 'admin/style.css' ),
119 + null,
120 + TierPricingTablePlugin::VERSION
121 + );
122 + }
123 +
124 + }
125 +
145 126 }