PluginProbe
Tiered Pricing Table for WooCommerce / 2.2.0
Tiered Pricing Table for WooCommerce v2.2.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 / Settings / Settings.php

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

344 lines 12.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 at product page',
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 // Premium Here
165 [
166 'title' => __( 'Advanced settings', 'tier-pricing-table' ),
167 'id' => self::SETTINGS_PREFIX . 'premium_options',
168 'type' => 'title',
169 'custom_attributes' => [ 'data-tiered-pricing-premium-setting' => true ]
170 ],
171 [
172 'title' => __( 'Show Tiered Price in Cart as the Discount', 'tier-pricing-table' ),
173 'id' => self::SETTINGS_PREFIX . 'show_discount_in_cart',
174 'desc' => __( 'Example:', 'tier-pricing-table' ) . ' <del>10$</del> 8$',
175 'type' => 'checkbox',
176 'default' => 'yes',
177 'desc_tip' => true,
178 'custom_attributes' => [ 'data-tiered-pricing-premium-setting' => 'yes' ]
179 ],
180 [
181 'title' => __( 'Enable Catalog Tiered Pricing for Products', 'tier-pricing-table' ),
182 'id' => self::SETTINGS_PREFIX . 'tiered_price_at_catalog',
183 'type' => 'checkbox',
184 'default' => 'yes',
185 'desc' => __( 'Shows Tiered Pricing at the Catalog',
186 'tier-pricing-table' ),
187 'desc_tip' => true,
188 'custom_attributes' => [ 'data-tiered-pricing-premium-setting' => true ]
189 ],
190 [
191 'title' => __( 'Enable Catalog Tiered Pricing for Variable Products',
192 'tier-pricing-table' ),
193 'id' => self::SETTINGS_PREFIX . 'tiered_price_at_catalog_for_variable',
194 'type' => 'checkbox',
195 'default' => 'yes',
196 'desc' => __( 'Shows tiered price at the catalog for variable products. Uses the lowest and the highest prices from all variations',
197 'tier-pricing-table' ),
198 'desc_tip' => true,
199 'custom_attributes' => [ 'data-tiered-pricing-premium-setting' => true ]
200 ],
201 [
202 'title' => __( 'Display Tiered Price as', 'tier-pricing-table' ),
203 'id' => self::SETTINGS_PREFIX . 'tiered_price_at_catalog_type',
204 'type' => 'select',
205 'options' => [
206 'range' => __( 'Range (from lowest to highest)', 'tier-pricing-table' ),
207 'lowest' => __( 'Lowest price', 'tier-pricing-table' ),
208 ],
209 'desc' => __( 'How to Display Tiered Price at The Catalog', 'tier-pricing-table' ),
210 'desc_tip' => true,
211 'custom_attributes' => [ 'data-tiered-pricing-premium-setting' => true ]
212 ],
213 [
214 'title' => __( 'Lowest price prefix', 'tier-pricing-table' ),
215 'id' => self::SETTINGS_PREFIX . 'lowest_prefix',
216 'type' => 'text',
217 'default' => __( 'From', 'tier-pricing-table' ),
218 'desc' => __( 'Prefix Before Lowest Tiered Product Price at the Catalog. Example: <b>From 10$</b>',
219 'tier-pricing-table' ),
220 'desc_tip' => true,
221 'custom_attributes' => [ 'data-tiered-pricing-premium-setting' => true ]
222 ],
223 [
224 'title' => __( 'Show discount column for percentage table', 'tier-pricing-table' ),
225 'id' => self::SETTINGS_PREFIX . 'show_discount_column',
226 'type' => 'checkbox',
227 'default' => 'yes',
228 'custom_attributes' => [ 'data-tiered-pricing-premium-setting' => true ]
229 ],
230 [
231 'title' => __( 'Discount column text', 'tier-pricing-table' ),
232 'id' => self::SETTINGS_PREFIX . 'head_discount_text',
233 'type' => 'text',
234 'default' => __( 'Discount (%)', 'tier-pricing-table' ),
235 'desc' => __( 'Name of discount column', 'tier-pricing-table' ),
236 'desc_tip' => true,
237 'custom_attributes' => [ 'data-tiered-pricing-premium-setting' => true ]
238 ],
239 [
240 'title' => __( 'Change Quantity on Click', 'tier-pricing-table' ),
241 'id' => self::SETTINGS_PREFIX . 'clickable_table_rows',
242 'type' => 'checkbox',
243 'default' => 'no',
244 'desc' => __( 'Change product quantity on click at table pricing row',
245 'tier-pricing-table' ),
246 'custom_attributes' => [ 'data-tiered-pricing-premium-setting' => true ]
247 ],
248 [
249 'type' => 'sectionend',
250 'id' => self::SETTINGS_PREFIX . 'premium_options'
251 ],
252 );
253 }
254
255 /**
256 * Register hooks
257 */
258 public function hooks() {
259 add_action( 'init', [ $this, 'initSettings' ] );
260
261 add_filter( 'woocommerce_settings_tabs_' . self::SETTINGS_PAGE, [ $this, 'addTieredPricingTableSettings' ] );
262 add_filter( 'woocommerce_settings_tabs_array', [ $this, 'addSettingsTab' ], 50 );
263 add_action( 'woocommerce_update_options_' . self::SETTINGS_PAGE, [ $this, 'updateSettings' ] );
264 }
265
266 /**
267 * Add own settings tab
268 *
269 * @param array $settings_tabs
270 *
271 * @return mixed
272 */
273 public static function addSettingsTab( $settings_tabs ) {
274
275 $settings_tabs[ self::SETTINGS_PAGE ] = __( 'Tiered Pricing', 'tier-pricing-table' );
276
277 return $settings_tabs;
278 }
279
280 /**
281 * Add settings to WooCommerce
282 */
283 public function addTieredPricingTableSettings() {
284
285 wp_enqueue_script( 'quantity-table-settings-js', $this->fileManager->locateAsset( 'admin/settings.js' ) );
286
287 return woocommerce_admin_fields( $this->settings );
288 }
289
290 /**
291 * Get all settings
292 *
293 * @return array
294 */
295 public function getAll() {
296 return [
297 'display' => $this->get( 'display', 'yes' ),
298 'position_hook' => $this->get( 'position_hook',
299 'woocommerce_after_add_to_cart_button' ),
300 'head_quantity_text' => $this->get( 'head_quantity_text',
301 __( 'Quantity', 'tier-pricing-table' ) ),
302 'head_price_text' => $this->get( 'head_price_text',
303 __( 'Price', 'tier-pricing-table' ) ),
304 'display_type' => $this->get( 'display_type', 'table' ),
305 'selected_quantity_color' => $this->get( 'selected_quantity_color', '#cc99c2' ),
306 'table_title' => $this->get( 'table_title', '' ),
307 'table_css_class' => $this->get( 'table_css_class', '#fff' ),
308 'tooltip_size' => $this->get( 'tooltip_size', 15 ),
309 'tooltip_border' => $this->get( 'tooltip_border', 'yes' ),
310
311 /* Premium */
312 'show_discount_in_cart' => $this->get( 'show_discount_in_cart', 'yes' ),
313 'tiered_price_at_catalog' => $this->get( 'tiered_price_at_catalog', 'yes' ),
314 'tiered_price_at_catalog_for_variable' => $this->get( 'tiered_price_at_catalog_for_variable', 'yes' ),
315 'tiered_price_at_catalog_type' => $this->get( 'tiered_price_at_catalog_type', 'yes' ),
316 'lowest_prefix' => $this->get( 'lowest_prefix', 'yes' ),
317 'show_discount_column' => $this->get( 'show_discount_column', 'yes' ),
318 'clickable_table_rows' => $this->get( 'clickable_table_rows', 'no' ),
319 'head_discount_text' => $this->get( 'head_discount_text',
320 __( 'Discount (%)', 'tier-pricing-table' ) ),
321 ];
322 }
323
324 /**
325 * Get setting by name
326 *
327 * @param string $option_name
328 * @param mixed $default
329 *
330 * @return mixed
331 */
332 public function get( $option_name, $default = null ) {
333 return get_option( self::SETTINGS_PREFIX . $option_name, $default );
334 }
335
336 /**
337 * Get url to settings page
338 *
339 * @return string
340 */
341 public function getLink() {
342 return admin_url( 'admin.php?page=wc-settings&tab=tiered_pricing_table_settings' );
343 }
344 }