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

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