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
tier-pricing-table / src / Settings / Settings.php

Settings.php in Tiered Pricing Table for WooCommerce 2.2.2, at src/Settings/Settings.php

366 lines 13.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php namespace TierPricingTable\Settings;
2
3 use Premmerce\SDK\V2\FileManager\FileManager;
4
5 /**
6 * Class Settings
7 *
8 * @package TierPricingTable\Settings
9 */
10 class Settings {
11
12 const SETTINGS_PREFIX = 'tier_pricing_table_';
13
14 const SETTINGS_PAGE = 'tiered_pricing_table_settings';
15
16 /**
17 * @var FileManager
18 */
19 private $fileManager;
20
21 /**
22 * @var array
23 */
24 private $settings;
25
26 /**
27 * Settings constructor.
28 *
29 * @param FileManager $fileManager
30 */
31 public function __construct( FileManager $fileManager ) {
32 $this->fileManager = $fileManager;
33
34 $this->hooks();
35 }
36
37 /**
38 * Handle updating settings
39 */
40 public function updateSettings() {
41 woocommerce_update_options( $this->settings );
42 }
43
44 /**
45 * Init all settings
46 */
47 public function initSettings() {
48 $this->settings = array(
49 [
50 'title' => __( 'Tiered price table settings', 'tier-pricing-table' ),
51 'desc' => __( 'This controls how tiered pricing table will be displayed in your store',
52 'tier-pricing-table' ),
53 'id' => self::SETTINGS_PREFIX . 'options',
54 'type' => 'title',
55 ],
56 [
57 'title' => __( 'Show tiered price table', 'tier-pricing-table' ),
58 'id' => self::SETTINGS_PREFIX . 'display',
59 'type' => 'checkbox',
60 'default' => 'yes',
61 'desc' => __( 'Display a table on frontend? Prices will change even if it is off',
62 'tier-pricing-table' ),
63 'desc_tip' => true,
64 ],
65 [
66 'title' => __( 'Display', 'tier-pricing-table' ),
67 'id' => self::SETTINGS_PREFIX . 'display_type',
68 'type' => 'select',
69 'options' => [
70 'tooltip' => __( 'Tooltip', 'tier-pricing-table' ),
71 'table' => __( 'Table', 'tier-pricing-table' ),
72 ],
73 'desc' => __( 'Type of displaying', 'tier-pricing-table' ),
74 'desc_tip' => true,
75 'default' => 'table',
76 ],
77 [
78 'title' => __( 'Tooltip icon color', 'tier-pricing-table' ),
79 'id' => self::SETTINGS_PREFIX . 'tooltip_color',
80 'type' => 'color',
81 'default' => '#cc99c2',
82 'desc' => __( 'Color of icon', 'tier-pricing-table' ),
83 'desc_tip' => true,
84 ],
85 [
86 'title' => __( 'Tooltip icon size (px)', 'tier-pricing-table' ),
87 'id' => self::SETTINGS_PREFIX . 'tooltip_size',
88 'type' => 'number',
89 'default' => '15',
90 'desc' => __( 'Size of icon', 'tier-pricing-table' ),
91 'desc_tip' => true,
92 ],
93 [
94 'title' => __( 'Tooltip border', 'tier-pricing-table' ),
95 'id' => self::SETTINGS_PREFIX . 'tooltip_border',
96 'type' => 'checkbox',
97 'default' => 'yes',
98 'desc' => __( 'Enable tooltip border', 'tier-pricing-table' ),
99 ],
100 [
101 'title' => __( 'Table title', 'tier-pricing-table' ),
102 'id' => self::SETTINGS_PREFIX . 'table_title',
103 'type' => 'text',
104 'default' => '',
105 'desc' => __( 'The name is being displayed above the table', 'tier-pricing-table' ),
106 'desc_tip' => true,
107 ],
108 [
109 'title' => __( 'Table position', 'tier-pricing-table' ),
110 'id' => self::SETTINGS_PREFIX . 'position_hook',
111 'type' => 'select',
112 'options' => [
113 'woocommerce_before_add_to_cart_button' => __( 'Above buy button', 'tier-pricing-table' ),
114 'woocommerce_after_add_to_cart_button' => __( 'Below buy button', 'tier-pricing-table' ),
115 'woocommerce_before_add_to_cart_form' => __( 'Above add to cart form', 'tier-pricing-table' ),
116 'woocommerce_after_add_to_cart_form' => __( 'Below add to cart form', 'tier-pricing-table' ),
117 'woocommerce_single_product_summary' => __( 'Above product title', 'tier-pricing-table' ),
118 'woocommerce_before_single_product_summary' => __( 'Before product summary', 'tier-pricing-table' ),
119 'woocommerce_after_single_product_summary' => __( 'After product summary', 'tier-pricing-table' ),
120 ],
121 'desc' => __( 'Where to display the table', 'tier-pricing-table' ),
122 'desc_tip' => true,
123 ],
124 [
125 'title' => __( 'Active price background color', 'tier-pricing-table' ),
126 'id' => self::SETTINGS_PREFIX . 'selected_quantity_color',
127 'type' => 'color',
128 'css' => 'width:6em;',
129 'default' => '#cc99c2',
130 'desc' => __( 'Active tiered price background color', 'tier-pricing-table' ),
131 'desc_tip' => true,
132 ],
133 [
134 'title' => __( 'Quantity text', 'tier-pricing-table' ),
135 'id' => self::SETTINGS_PREFIX . 'head_quantity_text',
136 'type' => 'text',
137 'default' => __( 'Quantity', 'tier-pricing-table' ),
138 'desc' => __( 'Name of quantity column. Leave Price text and Quantity text blank to do not show table head',
139 'tier-pricing-table' ),
140 'desc_tip' => true,
141 ],
142 [
143 'title' => __( 'Price text', 'tier-pricing-table' ),
144 'id' => self::SETTINGS_PREFIX . 'head_price_text',
145 'type' => 'text',
146 'default' => __( 'Price', 'tier-pricing-table' ),
147 'desc' => __( 'Name of price column. Leave Price text and Quantity text blank to do not show table head',
148 'tier-pricing-table' ),
149 'desc_tip' => true,
150 ],
151 [
152 'title' => __( 'CSS class', 'tier-pricing-table' ),
153 'id' => self::SETTINGS_PREFIX . 'table_css_class',
154 'type' => 'text',
155 'default' => '',
156 'desc' => __( 'Add your own CSS styles for the class. The class would be added to the table.',
157 'tier-pricing-table' ),
158 'desc_tip' => true,
159 ],
160 [
161 'type' => 'sectionend',
162 'id' => self::SETTINGS_PREFIX . 'options'
163 ],
164
165 // Premium Here
166 [
167 'title' => __( 'Advanced settings', 'tier-pricing-table' ),
168 'id' => self::SETTINGS_PREFIX . 'premium_options',
169 'type' => 'title',
170 'custom_attributes' => [ 'data-tiered-pricing-premium-setting' => true ]
171 ],
172 [
173 'title' => __( 'Show Tiered Price in Cart as the Discount', 'tier-pricing-table' ),
174 'id' => self::SETTINGS_PREFIX . 'show_discount_in_cart',
175 'desc' => __( 'Example:', 'tier-pricing-table' ) . ' <del>10$</del> 8$',
176 'type' => 'checkbox',
177 'default' => 'yes',
178 'desc_tip' => true,
179 'custom_attributes' => [ 'data-tiered-pricing-premium-setting' => 'yes' ]
180 ],
181 [
182 'title' => __( 'Enable price formatting on the catalog page, widgets, etc',
183 'tier-pricing-table' ),
184 'id' => self::SETTINGS_PREFIX . 'tiered_price_at_catalog',
185 'type' => 'checkbox',
186 'default' => 'yes',
187 'desc' => __( 'Change price formatting on the whole site (show range or minimal price)',
188 'tier-pricing-table' ),
189 'desc_tip' => true,
190 'custom_attributes' => [ 'data-tiered-pricing-premium-setting' => true ]
191 ],
192 [
193 'title' => __( 'Enable price formatting on product page ', 'tier-pricing-table' ),
194 'id' => self::SETTINGS_PREFIX . 'tiered_price_at_product_page',
195 'type' => 'checkbox',
196 'default' => 'no',
197 'desc' => __( 'Change price for product at product page (show range or minimal price)',
198 'tier-pricing-table' ),
199 'desc_tip' => true,
200 'custom_attributes' => [ 'data-tiered-pricing-premium-setting' => true ]
201 ],
202 [
203 'title' => __( 'Enable catalog, widget price formatting for variable products',
204 'tier-pricing-table' ),
205 'id' => self::SETTINGS_PREFIX . 'tiered_price_at_catalog_for_variable',
206 'type' => 'checkbox',
207 'default' => 'yes',
208 'desc' => __( 'Show tiered price at the catalog for variable products. Uses the lowest and the highest prices from all variations',
209 'tier-pricing-table' ),
210 'desc_tip' => true,
211 'custom_attributes' => [ 'data-tiered-pricing-premium-setting' => true ]
212 ],
213 [
214 'title' => __( 'Display Tiered Price as', 'tier-pricing-table' ),
215 'id' => self::SETTINGS_PREFIX . 'tiered_price_at_catalog_type',
216 'type' => 'select',
217 'options' => [
218 'range' => __( 'Range (from lowest to highest)', 'tier-pricing-table' ),
219 'lowest' => __( 'Lowest price', 'tier-pricing-table' ),
220 ],
221 'desc' => __( 'How to Display Tiered Price at The Catalog', 'tier-pricing-table' ),
222 'desc_tip' => true,
223 'custom_attributes' => [ 'data-tiered-pricing-premium-setting' => true ]
224 ],
225 [
226 'title' => __( 'Lowest price prefix', 'tier-pricing-table' ),
227 'id' => self::SETTINGS_PREFIX . 'lowest_prefix',
228 'type' => 'text',
229 'default' => __( 'From', 'tier-pricing-table' ),
230 'desc' => __( 'Prefix Before Lowest Tiered Product Price at the Catalog. Example: <b>From 10$</b>',
231 'tier-pricing-table' ),
232 'desc_tip' => true,
233 'custom_attributes' => [ 'data-tiered-pricing-premium-setting' => true ]
234 ],
235 [
236 'title' => __( 'Show discount column for percentage table', 'tier-pricing-table' ),
237 'id' => self::SETTINGS_PREFIX . 'show_discount_column',
238 'type' => 'checkbox',
239 'default' => 'yes',
240 'custom_attributes' => [ 'data-tiered-pricing-premium-setting' => true ]
241 ],
242 [
243 'title' => __( 'Discount column text', 'tier-pricing-table' ),
244 'id' => self::SETTINGS_PREFIX . 'head_discount_text',
245 'type' => 'text',
246 'default' => __( 'Discount (%)', 'tier-pricing-table' ),
247 'desc' => __( 'Name of discount column', 'tier-pricing-table' ),
248 'desc_tip' => true,
249 'custom_attributes' => [ 'data-tiered-pricing-premium-setting' => true ]
250 ],
251 [
252 'title' => __( 'Set tiered price on click', 'tier-pricing-table' ),
253 'id' => self::SETTINGS_PREFIX . 'clickable_table_rows',
254 'type' => 'checkbox',
255 'default' => 'no',
256 'desc' => __( 'Change product quantity on click at table pricing row',
257 'tier-pricing-table' ),
258 'custom_attributes' => [ 'data-tiered-pricing-premium-setting' => true ]
259 ],
260 [
261 'title' => __( 'Show total price', 'tier-pricing-table' ),
262 'id' => self::SETTINGS_PREFIX . 'show_total_price',
263 'type' => 'checkbox',
264 'default' => 'no',
265 'desc' => __( 'Calculate and show total price at product page',
266 'tier-pricing-table' ),
267 'custom_attributes' => [ 'data-tiered-pricing-premium-setting' => true ]
268 ],
269 [
270 'type' => 'sectionend',
271 'id' => self::SETTINGS_PREFIX . 'premium_options'
272 ],
273 );
274 }
275
276 /**
277 * Register hooks
278 */
279 public function hooks() {
280 add_action( 'init', [ $this, 'initSettings' ] );
281
282 add_filter( 'woocommerce_settings_tabs_' . self::SETTINGS_PAGE, [ $this, 'addTieredPricingTableSettings' ] );
283 add_filter( 'woocommerce_settings_tabs_array', [ $this, 'addSettingsTab' ], 50 );
284 add_action( 'woocommerce_update_options_' . self::SETTINGS_PAGE, [ $this, 'updateSettings' ] );
285 }
286
287 /**
288 * Add own settings tab
289 *
290 * @param array $settings_tabs
291 *
292 * @return mixed
293 */
294 public static function addSettingsTab( $settings_tabs ) {
295
296 $settings_tabs[ self::SETTINGS_PAGE ] = __( 'Tiered Pricing', 'tier-pricing-table' );
297
298 return $settings_tabs;
299 }
300
301 /**
302 * Add settings to WooCommerce
303 */
304 public function addTieredPricingTableSettings() {
305
306 wp_enqueue_script( 'quantity-table-settings-js', $this->fileManager->locateAsset( 'admin/settings.js' ) );
307
308 return woocommerce_admin_fields( $this->settings );
309 }
310
311 /**
312 * Get all settings
313 *
314 * @return array
315 */
316 public function getAll() {
317 return [
318 'display' => $this->get( 'display', 'yes' ),
319 'position_hook' => $this->get( 'position_hook',
320 'woocommerce_after_add_to_cart_button' ),
321 'head_quantity_text' => $this->get( 'head_quantity_text',
322 __( 'Quantity', 'tier-pricing-table' ) ),
323 'head_price_text' => $this->get( 'head_price_text',
324 __( 'Price', 'tier-pricing-table' ) ),
325 'display_type' => $this->get( 'display_type', 'table' ),
326 'selected_quantity_color' => $this->get( 'selected_quantity_color', '#cc99c2' ),
327 'table_title' => $this->get( 'table_title', '' ),
328 'table_css_class' => $this->get( 'table_css_class', '#fff' ),
329 'tooltip_size' => $this->get( 'tooltip_size', 15 ),
330 'tooltip_border' => $this->get( 'tooltip_border', 'yes' ),
331
332 /* Premium */
333 'show_discount_in_cart' => $this->get( 'show_discount_in_cart', 'yes' ),
334 'tiered_price_at_catalog' => $this->get( 'tiered_price_at_catalog', 'yes' ),
335 'tiered_price_at_catalog_for_variable' => $this->get( 'tiered_price_at_catalog_for_variable', 'yes' ),
336 'tiered_price_at_catalog_type' => $this->get( 'tiered_price_at_catalog_type', 'yes' ),
337 'lowest_prefix' => $this->get( 'lowest_prefix', 'yes' ),
338 'show_discount_column' => $this->get( 'show_discount_column', 'yes' ),
339 'clickable_table_rows' => $this->get( 'clickable_table_rows', 'no' ),
340 'show_total_price' => $this->get( 'show_total_price', 'no' ),
341 'head_discount_text' => $this->get( 'head_discount_text',
342 __( 'Discount (%)', 'tier-pricing-table' ) ),
343 ];
344 }
345
346 /**
347 * Get setting by name
348 *
349 * @param string $option_name
350 * @param mixed $default
351 *
352 * @return mixed
353 */
354 public function get( $option_name, $default = null ) {
355 return get_option( self::SETTINGS_PREFIX . $option_name, $default );
356 }
357
358 /**
359 * Get url to settings page
360 *
361 * @return string
362 */
363 public function getLink() {
364 return admin_url( 'admin.php?page=wc-settings&tab=tiered_pricing_table_settings' );
365 }
366 }