PluginProbe
Tiered Pricing Table for WooCommerce / 2.1.2
Tiered Pricing Table for WooCommerce v2.1.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.1.2, at src/Settings/Settings.php

330 lines 11.9 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_single_product_summary' => __( 'Above product title', 'tier-pricing-table' ),
116 'woocommerce_before_single_product_summary' => __( 'Before product summary', 'tier-pricing-table' ),
117 'woocommerce_after_single_product_summary' => __( 'After product summary', 'tier-pricing-table' ),
118 ],
119 'desc' => __( 'Where to display the table', 'tier-pricing-table' ),
120 'desc_tip' => true,
121 ],
122 [
123 'title' => __( 'Active price background color', 'tier-pricing-table' ),
124 'id' => self::SETTINGS_PREFIX . 'selected_quantity_color',
125 'type' => 'color',
126 'css' => 'width:6em;',
127 'default' => '#cc99c2',
128 'desc' => __( 'Active tiered price background color', 'tier-pricing-table' ),
129 'desc_tip' => true,
130 ],
131 [
132 'title' => __( 'Quantity text', 'tier-pricing-table' ),
133 'id' => self::SETTINGS_PREFIX . 'head_quantity_text',
134 'type' => 'text',
135 'default' => __( 'Quantity', 'tier-pricing-table' ),
136 'desc' => __( 'Name of quantity column. Leave Price text and Quantity text blank to do not show table head',
137 'tier-pricing-table' ),
138 'desc_tip' => true,
139 ],
140 [
141 'title' => __( 'Price text', 'tier-pricing-table' ),
142 'id' => self::SETTINGS_PREFIX . 'head_price_text',
143 'type' => 'text',
144 'default' => __( 'Price', 'tier-pricing-table' ),
145 'desc' => __( 'Name of price column. Leave Price text and Quantity text blank to do not show table head',
146 'tier-pricing-table' ),
147 'desc_tip' => true,
148 ],
149 [
150 'title' => __( 'CSS class', 'tier-pricing-table' ),
151 'id' => self::SETTINGS_PREFIX . 'table_css_class',
152 'type' => 'text',
153 'default' => '',
154 'desc' => __( 'You can add your own css styles for this class. The class will be added to the table',
155 'tier-pricing-table' ),
156 'desc_tip' => true,
157 ],
158 [
159 'type' => 'sectionend',
160 'id' => self::SETTINGS_PREFIX . 'options'
161 ],
162 // Premium Here
163 [
164 'title' => __( 'Advanced settings', 'tier-pricing-table' ),
165 'id' => self::SETTINGS_PREFIX . 'premium_options',
166 'type' => 'title',
167 'custom_attributes' => [ 'data-tiered-pricing-premium-setting' => true ]
168 ],
169 [
170 'title' => __( 'Show tiered price in cart as discount', 'tier-pricing-table' ),
171 'id' => self::SETTINGS_PREFIX . 'show_discount_in_cart',
172 'desc' => __( 'Example:', 'tier-pricing-table' ) . ' <del>10$</del> 8$',
173 'type' => 'checkbox',
174 'default' => 'yes',
175 'desc_tip' => true,
176 'custom_attributes' => [ 'data-tiered-pricing-premium-setting' => 'yes' ]
177 ],
178 [
179 'title' => __( 'Show Tiered Price at product catalog (shop page)', 'tier-pricing-table' ),
180 'id' => self::SETTINGS_PREFIX . 'tiered_price_at_catalog',
181 'type' => 'checkbox',
182 'default' => 'yes',
183 'desc' => __( 'Enable\Disable showing tiered price at catalog', 'tier-pricing-table' ),
184 'desc_tip' => true,
185 'custom_attributes' => [ 'data-tiered-pricing-premium-setting' => true ]
186 ],
187 [
188 'title' => __( 'Use for variable product', 'tier-pricing-table' ),
189 'id' => self::SETTINGS_PREFIX . 'tiered_price_at_catalog_for_variable',
190 'type' => 'checkbox',
191 'default' => 'yes',
192 'desc' => __( 'Enable\Disable showing tiered price at catalog for variable product. Use lowest and highest prices from all variations',
193 'tier-pricing-table' ),
194 'desc_tip' => true,
195 'custom_attributes' => [ 'data-tiered-pricing-premium-setting' => true ]
196 ],
197 [
198 'title' => __( 'Display type as', 'tier-pricing-table' ),
199 'id' => self::SETTINGS_PREFIX . 'tiered_price_at_catalog_type',
200 'type' => 'select',
201 'options' => [
202 'range' => __( 'Range (from lowest to highest)', 'tier-pricing-table' ),
203 'lowest' => __( 'Lowest price', 'tier-pricing-table' ),
204 ],
205 'desc' => __( 'How to display price at catalog', 'tier-pricing-table' ),
206 'desc_tip' => true,
207 'custom_attributes' => [ 'data-tiered-pricing-premium-setting' => true ]
208 ],
209 [
210 'title' => __( 'Lowest price prefix', 'tier-pricing-table' ),
211 'id' => self::SETTINGS_PREFIX . 'lowest_prefix',
212 'type' => 'text',
213 'default' => __( 'From', 'tier-pricing-table' ),
214 'desc' => __( 'Prefix before lowest product price at catalog. Example: <b>From 10$</b>',
215 'tier-pricing-table' ),
216 'desc_tip' => true,
217 'custom_attributes' => [ 'data-tiered-pricing-premium-setting' => true ]
218 ],
219 [
220 'title' => __( 'Show discount column for percentage table', 'tier-pricing-table' ),
221 'id' => self::SETTINGS_PREFIX . 'show_discount_column',
222 'type' => 'checkbox',
223 'default' => 'yes',
224 'custom_attributes' => [ 'data-tiered-pricing-premium-setting' => true ]
225 ],
226 [
227 'title' => __( 'Discount text', 'tier-pricing-table' ),
228 'id' => self::SETTINGS_PREFIX . 'head_discount_text',
229 'type' => 'text',
230 'default' => __( 'Discount (%)', 'tier-pricing-table' ),
231 'desc' => __( 'Name of discount column', 'tier-pricing-table' ),
232 'desc_tip' => true,
233 'custom_attributes' => [ 'data-tiered-pricing-premium-setting' => true ]
234 ],
235 [
236 'type' => 'sectionend',
237 'id' => self::SETTINGS_PREFIX . 'premium_options'
238 ],
239 );
240 }
241
242 /**
243 * Register hooks
244 */
245 public function hooks() {
246 add_action( 'init', [ $this, 'initSettings' ] );
247
248 add_filter( 'woocommerce_settings_tabs_' . self::SETTINGS_PAGE, [ $this, 'addTieredPricingTableSettings' ] );
249 add_filter( 'woocommerce_settings_tabs_array', [ $this, 'addSettingsTab' ], 50 );
250 add_action( 'woocommerce_update_options_' . self::SETTINGS_PAGE, [ $this, 'updateSettings' ] );
251 }
252
253 /**
254 * Add own settings tab
255 *
256 * @param array $settings_tabs
257 *
258 * @return mixed
259 */
260 public static function addSettingsTab( $settings_tabs ) {
261
262 $settings_tabs[ self::SETTINGS_PAGE ] = __( 'Tiered Pricing', 'tier-pricing-table' );
263
264 return $settings_tabs;
265 }
266
267 /**
268 * Add settings to WooCommerce
269 */
270 public function addTieredPricingTableSettings() {
271
272 wp_enqueue_script( 'quantity-table-settings-js', $this->fileManager->locateAsset( 'admin/settings.js' ) );
273
274 return woocommerce_admin_fields( $this->settings );
275 }
276
277 /**
278 * Get all settings
279 *
280 * @return array
281 */
282 public function getAll() {
283 return [
284 'display' => $this->get( 'display', 'yes' ),
285 'position_hook' => $this->get( 'position_hook',
286 'woocommerce_after_add_to_cart_button' ),
287 'head_quantity_text' => $this->get( 'head_quantity_text',
288 __( 'Quantity', 'tier-pricing-table' ) ),
289 'head_price_text' => $this->get( 'head_price_text',
290 __( 'Price', 'tier-pricing-table' ) ),
291 'display_type' => $this->get( 'display_type', 'table' ),
292 'selected_quantity_color' => $this->get( 'selected_quantity_color', '#cc99c2' ),
293 'table_title' => $this->get( 'table_title', '' ),
294 'table_css_class' => $this->get( 'table_css_class', '#fff' ),
295 'tooltip_size' => $this->get( 'tooltip_size', 15 ),
296 'tooltip_border' => $this->get( 'tooltip_border', 'yes' ),
297
298 /* Premium */
299 'show_discount_in_cart' => $this->get( 'show_discount_in_cart', 'yes' ),
300 'tiered_price_at_catalog' => $this->get( 'tiered_price_at_catalog', 'yes' ),
301 'tiered_price_at_catalog_for_variable' => $this->get( 'tiered_price_at_catalog_for_variable', 'yes' ),
302 'tiered_price_at_catalog_type' => $this->get( 'tiered_price_at_catalog_type', 'yes' ),
303 'lowest_prefix' => $this->get( 'lowest_prefix', 'yes' ),
304 'show_discount_column' => $this->get( 'show_discount_column', 'yes' ),
305 'head_discount_text' => $this->get( 'head_discount_text',
306 __( 'Discount (%)', 'tier-pricing-table' ) ),
307 ];
308 }
309
310 /**
311 * Get setting by name
312 *
313 * @param string $option_name
314 * @param mixed $default
315 *
316 * @return mixed
317 */
318 public function get( $option_name, $default = null ) {
319 return get_option( self::SETTINGS_PREFIX . $option_name, $default );
320 }
321
322 /**
323 * Get url to settings page
324 *
325 * @return string
326 */
327 public function getLink() {
328 return admin_url( 'admin.php?page=wc-settings&tab=tiered_pricing_table_settings' );
329 }
330 }