PluginProbe
Tiered Pricing Table for WooCommerce / trunk
Tiered Pricing Table for WooCommerce vtrunk
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 +49 -138 1.1trunk View file →
@@ -1,10 +1,14 @@
1 1 <?php namespace TierPricingTable\Admin;
2 2
3 -use Premmerce\SDK\V2\FileManager\FileManager;
4 -use TierPricingTable\PriceManager;
5 -use WP_Post;
6 -use WC_Product;
3 +use TierPricingTable\Admin\ProductPage\AdvanceOptionsForVariableProduct;
4 +use TierPricingTable\Admin\ProductPage\Product;
5 +use TierPricingTable\Admin\ProductPage\TieredPricingTab;
6 +use TierPricingTable\Admin\ProductPage\RoleCustomerPricingTab;
7 +use TierPricingTable\Admin\WelcomePage\WelcomePage;
8 +use TierPricingTable\Core\ServiceContainerTrait;
9 +use TierPricingTable\TierPricingTablePlugin;
10 +use TierPricingTable\Admin\Tips\TipsManager;
7 11
8 12 /**
9 13 * Class Admin
10 14 *
@@ -9,138 +13,45 @@
9 13 * Class Admin
10 14 *
11 15 * @package TierPricingTable\Admin
12 16 */
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] = wc_format_decimal($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 - *
126 - * @global WC_Product $product_object
127 - */
128 - public function renderPriceRulesSimple()
129 - {
130 - global $product_object;
131 -
132 - $this->fileManager->includeTemplate('admin/add-price-rule-simple.php', ['price_rules' => PriceManager::getPriceRules($product_object->get_id())]);
133 - }
134 -
135 - /**
136 - * Render inputs for price rules on variation
137 - *
138 - * @param int $loop
139 - * @param array $variation_data
140 - * @param WP_Post $variation
141 - */
142 - public function renderPriceRulesVariation($loop, $variation_data, $variation)
143 - {
144 - $this->fileManager->includeTemplate('admin/add-price-rule-variation.php', ['price_rules' => PriceManager::getPriceRules($variation->ID), 'i' => $loop, 'variation_data' => $variation_data]);
145 - }
146 -}
17 +class Admin {
18 +
19 + use ServiceContainerTrait;
20 +
21 + /**
22 + * Array of Managers
23 + *
24 + * @var array
25 + */
26 + private $managers;
27 +
28 + /**
29 + * Admin constructor.
30 + *
31 + * Register menu items and handlers
32 + *
33 + */
34 + public function __construct() {
35 + new Product();
36 + new TieredPricingTab();
37 + new RoleCustomerPricingTab();
38 + new AdvanceOptionsForVariableProduct();
39 + new TipsManager();
40 +
41 + new WelcomePage();
42 +
43 + add_action( 'admin_enqueue_scripts', [ $this, 'enqueueAssets' ], 10, 2 );
44 + }
45 +
46 + /**
47 + * Register assets on product create/update page
48 + */
49 + public function enqueueAssets() {
50 + wp_enqueue_script( 'tiered-pricing-table-admin-js',
51 + $this->getContainer()->getFileManager()->locateJSAsset( 'admin/main' ), [ 'jquery' ],
52 + TierPricingTablePlugin::VERSION );
53 + wp_enqueue_style( 'tiered-pricing-table-admin-css',
54 + $this->getContainer()->getFileManager()->locateCSSAsset( 'admin/style.css' ), array(),
55 + TierPricingTablePlugin::VERSION );
56 + }
57 +}