PluginProbe
WP Directory Kit / 1.5.5
WP Directory Kit v1.5.5
1.5.9 1.5.7 1.5.6 1.5.5 1.5.4 1.5.3 trunk 1.1.0 1.1.6 1.1.8 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.8 All 37 releases
wpdirectorykit / application / models / Settings_m.php

Settings_m.php in WP Directory Kit 1.5.5, at application/models/Settings_m.php

648 lines 37.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 // If this file is called directly, abort.
4 if ( ! defined( 'WPINC' ) ) {
5 die;
6 }
7
8 class Settings_m extends Winter_MVC_Model {
9
10 public $_table_name = 'options';
11 public $_order_by = 'option_id';
12 public $_primary_key = 'option_id';
13 public $_own_columns = array();
14 public $_timestamps = TRUE;
15 protected $_primary_filter = 'intval';
16 public $fields_list = array();
17 public $fields_list_tabs = array();
18
19 public function __construct(){
20 parent::__construct();
21
22 $pages = array('' => __('Not Selected', 'wpdirectorykit'));
23 foreach(get_pages(array('sort_column' => 'post_title')) as $page)
24 {
25 $pages[$page->ID] = $page->post_title.' #'.$page->ID;
26 }
27
28 $WMVC = &wdk_get_instance();
29 $WMVC->model('field_m');
30 $fields_data = $WMVC->field_m->get();
31 $fields_list = array('' => esc_html__('Not Selected', 'wpdirectorykit'));
32 $fields_list_inputs = array('' => esc_html__('Not Selected', 'wpdirectorykit'));
33 $order_i = 0;
34
35 $fields_list ['section'] = esc_html__('-- Section Custom fields --', 'wpdirectorykit');
36 $fields_list ['post_title'] = esc_html__('WP Title', 'wpdirectorykit');
37 $fields_list ['post_content'] = esc_html__('WP Content', 'wpdirectorykit');
38
39 foreach($fields_data as $field)
40 {
41 if(wmvc_show_data('field_type', $field) == 'SECTION') {
42 $fields_list ['section__'.wmvc_show_data('idfield', $field)] = '-- '.esc_html__('Section', 'wpdirectorykit').' '.wmvc_show_data('field_label', $field).' --';
43 } else {
44 $fields_list[wmvc_show_data('idfield', $field)] = '#'.wmvc_show_data('idfield', $field).' '.wmvc_show_data('field_label', $field).'['.wmvc_show_data('field_type', $field).']';
45 }
46
47 if(wmvc_show_data('field_type', $field) == 'INPUTBOX') {
48 $fields_list_inputs [wmvc_show_data('idfield', $field)] = '#'.wmvc_show_data('idfield', $field).' '.wmvc_show_data('field_label', $field).'['.wmvc_show_data('field_type', $field).']';
49 }
50 }
51
52 /* General */
53
54 $this->fields_list_tabs['general'] = array(
55 array('field' => 'wdk_default_lat', 'field_label' => __('Default GPS Position', 'wpdirectorykit'), 'hint' => '', 'field_type' => 'MAP', 'rules' => ''),
56 array('field' => 'wdk_default_lng', 'field_label' => __('Default GPS Longitude', 'wpdirectorykit'), 'hint' => '', 'field_type' => 'INPUTBOX', 'rules' => '', 'class' => 'hidden'),
57 array('field' => 'wdk_fixed_map_results_position', 'field_label' => __('Fix map center on default location', 'wpdirectorykit'), 'hint' => '', 'field_type' => 'CHECKBOX', 'rules' => '', 'class' => ''),
58
59 array('field' => 'wdk_is_category_enabled', 'field_label' => __('Enable Categories', 'wpdirectorykit'), 'hint' => __('If you don\'t need categories features you can disable that here', 'wpdirectorykit'), 'field_type' => 'CHECKBOX', 'rules' => ''),
60 array('field' => 'wdk_is_location_enabled', 'field_label' => __('Enable Locations', 'wpdirectorykit'), 'hint' => __('If you don\'t need location features you can disable that here', 'wpdirectorykit'), 'field_type' => 'CHECKBOX', 'rules' => '', 'class' => ''),
61
62
63 array('field' => 'wdk_is_featured_enabled', 'field_label' => __('Enable Field and Feature Featured Listing', 'wpdirectorykit'), 'hint' => __('Select regular page which ill be used for listing preview page on frontend, you can create new one also for this purpose', 'wpdirectorykit'), 'field_type' => 'CHECKBOX', 'rules' => ''),
64 array('field' => 'wdk_is_rank_enabled', 'field_label' => __('Enable Field and Feature Rank Listing', 'wpdirectorykit'), 'hint' => __('Select regular page which ill be used for listing preview page on frontend, you can create new one also for this purpose', 'wpdirectorykit'), 'field_type' => 'CHECKBOX', 'rules' => ''),
65 array('field' => 'wdk_is_user_editor_enabled', 'field_label' => __('Enable Field and Feature Agent Listing', 'wpdirectorykit'), 'hint' => __('Select regular page which ill be used for listing preview page on frontend, you can create new one also for this purpose', 'wpdirectorykit'), 'field_type' => 'CHECKBOX', 'rules' => ''),
66 array('field' => 'wdk_is_post_content_enable', 'field_label' => __('Enable Field and Feature Post Content Listing', 'wpdirectorykit'), 'hint' => __('Select regular page which ill be used for listing preview page on frontend, you can create new one also for this purpose', 'wpdirectorykit'), 'field_type' => 'CHECKBOX', 'rules' => ''),
67 array('field' => 'wdk_is_alt_agent_enabled', 'field_label' => __('Enable Field and Feature Agent Listing', 'wpdirectorykit'), 'hint' => __('Select regular page which ill be used for listing preview page on frontend, you can create new one also for this purpose', 'wpdirectorykit'), 'field_type' => 'CHECKBOX', 'rules' => ''),
68
69 array('field' => 'wdk_slug_listing_preview_page', 'field_label' => __('Custom Listing Preview Page Slug', 'wpdirectorykit'), 'hint' => __('Slug used for listing preview page, if empty, default will be used', 'wpdirectorykit'), 'field_type' => 'INPUTBOX', 'rules' => 'wdk_slug_format'),
70 array('field' => 'wdk_listing_page', 'field_label' => __('Listing Page', 'wpdirectorykit'), 'hint' => __('Select regular page which ill be used for listing preview page on frontend, you can create new one also for this purpose', 'wpdirectorykit'), 'field_type' => 'DROPDOWN', 'rules' => '', 'values' => $pages),
71 array('field' => 'wdk_results_page', 'field_label' => __('Results Page', 'wpdirectorykit'), 'hint' => __('Select regular page which ill be used for results page on frontend, you can create new one also for this purpose', 'wpdirectorykit'), 'field_type' => 'DROPDOWN', 'rules' => '', 'values' => $pages),
72 array('field' => 'wdk_is_results_page_require', 'field_label' => __('Always use results page', 'wpdirectorykit'), 'hint' => __('Always even if on current page you have results where can be showed', 'wpdirectorykit'), 'field_type' => 'CHECKBOX', 'rules' => ''),
73
74 array(
75 'field' => 'wdk_card_video_enable',
76 'field_label' => __('Card Video From gallery in result card enable', 'wpdirectorykit'),
77 'hint' => __('If you upload video on first place in listing, will become visible in result card', 'wpdirectorykit'),
78 'field_type' => 'CHECKBOX',
79 'rules' => '',
80 ),
81 array(
82 'field' => 'wdk_listing_category_required',
83 'field_label' => __('Category is required field', 'wpdirectorykit'),
84 'hint' => __('if this is enabled, listing required category field', 'wpdirectorykit'),
85 'field_type' => 'CHECKBOX',
86 'rules' => '',
87 ),
88 array(
89 'field' => 'wdk_listing_location_required',
90 'field_label' => __('Location is required field', 'wpdirectorykit'),
91 'hint' => __('if this is enabled, listing required location field', 'wpdirectorykit'),
92 'field_type' => 'CHECKBOX',
93 'rules' => '',
94 ),
95
96 array(
97 'field' => 'wdk_sub_listings_enable',
98 'field_label' => __('Related Listings', 'wpdirectorykit'),
99 'field_type' => 'CHECKBOX',
100 'rules' => '',
101 ),
102 array(
103 'field' => 'wdk_listings_images_required_enable',
104 'field_label' => __('Listing Images required', 'wpdirectorykit'),
105 'field_type' => 'CHECKBOX',
106 'rules' => '',
107 ),
108 array(
109 'field' => 'wdk_default_currency_symbol',
110 'field_label' => __('Default Currency Symbol1', 'wpdirectorykit'),
111 'hint' => __('Put default currency symbol like $', 'wpdirectorykit'),
112 'field_type' => 'INPUTBOX',
113 'rules' => '',
114 ),
115 );
116
117
118 /* Templates */
119 $this->fields_list_tabs['templates'] = array(
120 array(
121 'field' => 'wdk_placeholder',
122 'field_label' => __('Cooming soon listing image', 'wpdirectorykit'),
123 'hint' => '',
124 'field_type' => 'UPLOAD',
125 'rules' => '',
126 ),
127 array(
128 'field' => 'wdk_card_slider_enable',
129 'field_label' => __('Show slider in result card', 'wpdirectorykit'),
130 'hint' => '',
131 'field_type' => 'CHECKBOX',
132 'rules' => '',
133 ),
134 array(
135 'field' => 'wdk_card_video_field',
136 'field_label' => __('Card video field', 'wpdirectorykit'),
137 'hint' => '',
138 'field_type' => 'DROPDOWN',
139 'values' => $fields_list_inputs,
140 'rules' => '',
141 'hint' => '',
142 ),
143 array(
144 'field' => 'wdk_mobile_bottom_navbar_enable',
145 'field_label' => __('Mobile bottom navbar', 'wpdirectorykit'),
146 'field_type' => 'CHECKBOX',
147 'rules' => '',
148 ),
149 array(
150 'field' => 'wdk_mobile_bottom_show_menu_disable',
151 'field_label' => __('Mobile bottom navbar, hide menu button', 'wpdirectorykit'),
152 'hint' => __('Menu button only works, when using menu from ElementInvader addons plugins', 'wpdirectorykit'),
153 'field_type' => 'CHECKBOX',
154 'rules' => '',
155 ),
156 array(
157 'field' => 'wdk_field_search_suggestion_disable',
158 'field_label' => __('Smart Search Suggestion Disable', 'wpdirectorykit'),
159 'field_type' => 'CHECKBOX',
160 'rules' => '',
161 ),
162
163 array(
164 'field' => 'wdk_disable_custom_muber_format',
165 'field_label' => __('Remove images from media when listing is removed', 'wpdirectorykit'),
166 'hint' => __('Disable the custom number format and use the default WordPress number formatting.', 'wpdirectorykit'),
167 'field_type' => 'CHECKBOX',
168 'rules' => '',
169 ),
170 array(
171 'field' => 'wdk_disable_outline_on_focus',
172 'field_label' => __('Disable outline on focus', 'wpdirectorykit'),
173 'hint' => __('Removes the outline style from form elements when they are focused.', 'wpdirectorykit'),
174 'field_type' => 'CHECKBOX',
175 'rules' => '',
176 ),
177
178 );
179
180 $this->fields_list_tabs['templates'] [] = array(
181 'field' => 'wdk_multilingual_float_language_picker',
182 'field_label' => __('Float Language Picker', 'wpdirectorykit'),
183 'field_type' => 'CHECKBOX',
184 'hint' => __('Multilingual float language picker required WDK Multilingual addon', 'wpdirectorykit'),
185 'hint' => wdk_sprintf(__('Multilingual float language picker required %1$s WDK Multilingual addon%2$s','wpdirectorykit'),'<a target="_blank" href="https://wpdirectorykit.com/plugins.html">','</a>'),
186 'rules' => '',
187 );
188
189 /* Fields */
190 $this->fields_list_tabs['fields'] = array(
191 array('field' => 'wdk_seo_keywords', 'field_label' => __('SEO Listing Page Keywords', 'wpdirectorykit'), 'hint' => __('Set field for meta tag keywords', 'wpdirectorykit'), 'field_type' => 'DROPDOWN', 'values' => $fields_list, 'rules' => ''),
192 array('field' => 'wdk_seo_description', 'field_label' => __('SEO Listing Page Description', 'wpdirectorykit'), 'hint' => __('Set field for meta tag description', 'wpdirectorykit'), 'field_type' => 'DROPDOWN', 'values' => $fields_list, 'rules' => ''),
193
194 array(
195 'field' => 'wdk_seo_listing_title',
196 'field_label' => __('SEO Title', 'wpdirectorykit'),
197 'field_type' => 'SEO_INPUTBOX',
198 'hint' => wdk_sprintf(__('Example: %1$s', 'wpdirectorykit'), '{field_title} - {field_location} - {field_33}'),
199 'rules' => '',
200 ),
201
202 array(
203 'field' => 'wdk_multi_locations_search_field_type',
204 'field_label' => __('Location field Search', 'wpdirectorykit'),
205 'field_type' => 'RADIO',
206 'hint' => __('Visible on search form', 'wpdirectorykit'),
207 'rules' => '',
208 'values' => array(
209 '' => esc_html__('Single Tree Dropdown', 'wpdirectorykit'),
210 'select2' => esc_html__('Multi Select Dropdown', 'wpdirectorykit'),
211 'wdk_treefield_dropdown' => esc_html__('Multiple Dropdowns', 'wpdirectorykit'),
212 'wdk_treefield_checkboxes' => esc_html__('Single Tree Dropdown with checkboxes', 'wpdirectorykit'),
213 )
214 ),
215
216 array(
217 'field' => 'wdk_multi_categories_search_field_type',
218 'field_label' => __('Categoreis field Search', 'wpdirectorykit'),
219 'field_type' => 'RADIO',
220 'hint' => __('Visible on search form. Hiding field in search form based on category is only possible when using single tree dropdown', 'wpdirectorykit'),
221 'rules' => '',
222 'values' => array(
223 '' => esc_html__('Single Tree Dropdown', 'wpdirectorykit'),
224 'select2' => esc_html__('Multi Select Dropdown', 'wpdirectorykit'),
225 'wdk_treefield_dropdown' => esc_html__('Multiple Dropdowns', 'wpdirectorykit'),
226 'wdk_treefield_checkboxes' => esc_html__('Single Tree Dropdown with checkboxes', 'wpdirectorykit'),
227 )
228 ),
229
230 array(
231 'field' => 'wdk_multi_locations_edit_field_type',
232 'field_label' => __('Location field edit', 'wpdirectorykit'),
233 'field_type' => 'RADIO',
234 'hint' => __('Visible on edit form', 'wpdirectorykit'),
235 'rules' => '',
236 'values' => array(
237 '' => esc_html__('Single Tree Dropdown', 'wpdirectorykit'),
238 'wdk_treefield_dropdown' => esc_html__('Multiple Dropdowns', 'wpdirectorykit'),
239 )
240 ),
241
242 array(
243 'field' => 'wdk_multi_categories_edit_field_type',
244 'field_label' => __('Categoreis field edit', 'wpdirectorykit'),
245 'field_type' => 'RADIO',
246 'hint' => __('Visible on edit form. Hiding field in edit form based on category is only possible when using single tree dropdown', 'wpdirectorykit'),
247 'rules' => '',
248 'values' => array(
249 '' => esc_html__('Single Tree Dropdown', 'wpdirectorykit'),
250 'wdk_treefield_dropdown' => esc_html__('Multiple Dropdowns', 'wpdirectorykit'),
251 )
252 ),
253
254 array('field' => 'wdk_multi_locations_other_enable', 'field_label' => __('Enable multi location on edit listing', 'wpdirectorykit'), 'hint' => __('Enable multi location on edit listing', 'wpdirectorykit'), 'field_type' => 'CHECKBOX', 'rules' => ''),
255 array('field' => 'wdk_multi_categories_other_enable', 'field_label' => __('Enable multi categories on edit listing', 'wpdirectorykit'), 'hint' => __('Enable multi categories on edit listing', 'wpdirectorykit'), 'field_type' => 'CHECKBOX', 'rules' => ''),
256 array(
257 'field' => 'wdk_listing_plangs_documents_disable',
258 'field_label' => __('Disable "Listing plans and documents"', 'wpdirectorykit'),
259 'hint' => '',
260 'field_type' => 'CHECKBOX',
261 'rules' => '',
262 ),
263 array(
264 'field' => 'wdk_listing_images_disable',
265 'field_label' => __('Disable "Listing images"', 'wpdirectorykit'),
266 'hint' => '',
267 'field_type' => 'CHECKBOX',
268 'rules' => '',
269 ),
270
271
272 array('field' => 'wdk_is_category_enabled', 'field_label' => __('Enable Categories', 'wpdirectorykit'), 'hint' => __('If you don\'t need categories features you can disable that here', 'wpdirectorykit'), 'field_type' => 'CHECKBOX', 'rules' => ''),
273 array('field' => 'wdk_is_location_enabled', 'field_label' => __('Enable Locations', 'wpdirectorykit'), 'hint' => __('If you don\'t need location features you can disable that here', 'wpdirectorykit'), 'field_type' => 'CHECKBOX', 'rules' => '', 'class' => ''),
274 array('field' => 'wdk_is_address_enabled', 'field_label' => __('Enable Address', 'wpdirectorykit'), 'hint' => __('Enable this option to display the address field on the listing submission page', 'wpdirectorykit'), 'field_type' => 'CHECKBOX', 'rules' => ''),
275 array('field' => 'wdk_is_featured_enabled', 'field_label' => __('Enable Field and Feature Featured Listing', 'wpdirectorykit'), 'hint' => __('Enable this option to allow marking listings as Featured on the submission page.', 'wpdirectorykit'), 'field_type' => 'CHECKBOX', 'rules' => ''),
276 array('field' => 'wdk_is_rank_enabled', 'field_label' => __('Enable Field and Feature Rank Listing', 'wpdirectorykit'), 'hint' => __('Enable this option to allow assigning a rank to listings on the submission page.', 'wpdirectorykit'), 'field_type' => 'CHECKBOX', 'rules' => ''),
277 array('field' => 'wdk_is_user_editor_enabled', 'field_label' => __('Enable Field and Feature Agent Listing', 'wpdirectorykit'), 'hint' => __('Enable this option to allow selecting an agent for the listing.', 'wpdirectorykit'), 'field_type' => 'CHECKBOX', 'rules' => ''),
278 array('field' => 'wdk_is_post_content_enable', 'field_label' => __('Enable Field and Feature Post Content Listing', 'wpdirectorykit'), 'hint' => __('Enable this option to show the post content field on the submission page.', 'wpdirectorykit'), 'field_type' => 'CHECKBOX', 'rules' => ''),
279 array(
280 'field' => 'wdk_is_alt_agent_enabled',
281 'field_label' => __('Enable Alternate Agent for Listing', 'wpdirectorykit'),
282 'hint' => __('Enable this option to allow assigning an alternate agent to the listing.', 'wpdirectorykit'),
283 'field_type' => 'CHECKBOX',
284 'rules' => '',
285 ),
286 array(
287 'field' => 'wdk_sub_listings_enable',
288 'field_label' => __('Related Listings', 'wpdirectorykit'),
289 'field_type' => 'CHECKBOX',
290 'rules' => '',
291 ),
292 array(
293 'field' => 'wdk_listings_images_required_enable',
294 'field_label' => __('Listing Images required', 'wpdirectorykit'),
295 'field_type' => 'CHECKBOX',
296 'rules' => '',
297 ),
298 array(
299 'field' => 'wdk_enable_filter_zero_decimal',
300 'field_label' => __('Enable filter zero decimal', 'wpdirectorykit'),
301 'field_type' => 'CHECKBOX',
302 'rules' => '',
303 ),
304 array(
305 'field' => 'wdk_disable_custom_muber_format',
306 'field_label' => __('Disable the custom number format', 'wpdirectorykit'),
307 'hint' => __('Disable the custom number format and use the default WordPress number formatting.', 'wpdirectorykit'),
308 'field_type' => 'CHECKBOX',
309 'rules' => '',
310 ),
311 array(
312 'field' => 'wdk_number_format_decimal_point',
313 'field_label' => __('Number Decimal Places', 'wpdirectorykit'),
314 'hint' => __('Default based on language selected in WordPress', 'wpdirectorykit'),
315 'field_type' => 'DROPDOWN',
316 'empty_default' => esc_attr((!empty(get_option('wdk_number_format_decimal_point')) ? get_option('wdk_number_format_decimal_point') : get_option('decimal_point', ','))),
317 'values' => array(
318 '.' => __('Dot (.)', 'wpdirectorykit'),
319 "'" => __('Quote (\')', 'wpdirectorykit'),
320 ',' => __('Comma (,)', 'wpdirectorykit'),
321 ' ' => __('Space', 'wpdirectorykit'),
322 ),
323 'rules' => ''
324 ),
325 array(
326 'field' => 'wdk_number_format_thousands_sep',
327 'field_label' => __('Number Format Thousands sep', 'wpdirectorykit'),
328 'hint' => __('Default based on language selected in WordPress', 'wpdirectorykit'),
329 'field_type' => 'DROPDOWN',
330 'empty_default' => esc_attr((!empty(get_option('wdk_number_format_thousands_sep')) ? get_option('wdk_number_format_thousands_sep') : get_option('thousands_separator', ','))),
331 'rules' => '',
332 'values' => array(
333 '.' => __('Dot (.)', 'wpdirectorykit'),
334 ',' => __('Comma (,)', 'wpdirectorykit'),
335 "'" => __('Quote (\')', 'wpdirectorykit'),
336 ' ' => __('Space', 'wpdirectorykit'),
337 ),
338 ),
339 array(
340 'field' => 'wdk_number_format_decimals',
341 'field_label' => __('Number Format Decimal count', 'wpdirectorykit'),
342 'hint' => __('Default based on language selected in WordPress', 'wpdirectorykit'),
343 'field_type' => 'NUMBER',
344 'min' => '0',
345 'max' => '5',
346 'step' => '1',
347 'rules' => '',
348 'empty_default' => esc_attr(get_option('wdk_number_format_decimals', get_option('wdk_number_format_decimals', get_option('woocommerce_price_num_decimals', 2)))),
349 ),
350 array(
351 'field' => 'wdk_number_format_decimals',
352 'field_label' => __('Current Number Format', 'wpdirectorykit'),
353 'hint' => __('Example price format based on WordPress language or above configuration (1234567.89)', 'wpdirectorykit'),
354 'field_type' => 'RAW',
355 'rules' => '',
356 'raw' => '<span id="wdk_example_price_format" class="label label-info" style="font-size:14px">'.wdk_number_format_i18n(1234567.89).'</span>',
357 ),
358 array(
359 'field' => 'wdk_custom_listings_link_field',
360 'field_label' => __('Custom Field, like extern link for listing preview', 'wpdirectorykit'),
361 'hint' => __('Value for this field, replace listing preview link if not empty', 'wpdirectorykit'),
362 'field_type' => 'DROPDOWN',
363 'values' => $fields_list_inputs,
364 'rules' => '',
365 ),
366 );
367
368 /* Api-s */
369 $this->fields_list_tabs['apis'] = array(
370 array(
371 'field' => 'wdk_recaptcha_site_key',
372 'field_label' => __('Recaptcha site key', 'wpdirectorykit'),
373 'hint' => __('Please add Recaptcha site and Secret keys for enable recaptcha Add Google Recaptcha site key (use V2 recaptcha key)', 'wpdirectorykit').'. '.wdk_sprintf(__('Get key %1$s here %2$s','wpdirectorykit'),'<a target="_blank" href="https://www.google.com/recaptcha/admin">','</a>'),
374 'field_type' => 'INPUTBOX',
375 'rules' => '',
376 ),
377 array(
378 'field' => 'wdk_recaptcha_secret_key',
379 'field_label' => __('Recaptcha site secret key', 'wpdirectorykit'),
380 'hint' => __('Add Google Recaptcha secret key', 'wpdirectorykit'),
381 'field_type' => 'INPUTBOX',
382 'rules' => '',
383 ),
384 array(
385 'field' => 'wdk_recaptcha_site_key_v3',
386 'field_label' => __('Recaptcha site key v3', 'wpdirectorykit'),
387 'hint' => __('Please add Recaptcha site and Secret keys for enable recaptcha Add Google Recaptcha site key (use V3 recaptcha key)', 'wpdirectorykit').'. '.wdk_sprintf(__('Get key %1$s here %2$s','wpdirectorykit'),'<a target="_blank" href="https://www.google.com/recaptcha/admin">','</a>'),
388 'field_type' => 'INPUTBOX',
389 'rules' => '',
390 ),
391 array(
392 'field' => 'wdk_recaptcha_secret_key_v3',
393 'field_label' => __('Recaptcha site secret key v3', 'wpdirectorykit'),
394 'hint' => __('Add Google Recaptcha secret key', 'wpdirectorykit'),
395 'field_type' => 'INPUTBOX',
396 'rules' => '',
397 ),
398 array(
399 'field' => 'wdk_geo_google_api_key',
400 'field_label' => __('Google API Key', 'wpdirectorykit'),
401 'hint' => __('Google API Key, for address to gps coordinates conversion', 'wpdirectorykit').'. '.wdk_sprintf(__('Get key %1$s here %2$s','wpdirectorykit'),'<a target="_blank" href="https://developers.google.com/maps/documentation/javascript/get-api-key">','</a>'),
402 'field_type' => 'INPUTBOX',
403 'rules' => '',
404 ),
405 array(
406 'field' => 'wdk_import_google_api_enable',
407 'field_label' => __('Google API for import listings', 'wpdirectorykit'),
408 'hint' => __('Google API key will be used to autodetect GPS coordinates when importing listing', 'wpdirectorykit'),
409 'field_type' => 'CHECKBOX',
410 'rules' => '',
411 ),
412 array(
413 'field' => 'wdk_geo_coding_results_location',
414 'field_label' => __('Auto Search based on Geo Coding', 'wpdirectorykit'),
415 'hint' => __('if this is enabled, auto search listings based on found geo location', 'wpdirectorykit'),
416 'field_type' => 'CHECKBOX',
417 'rules' => '',
418 ),
419 );
420
421 $this->fields_list_tabs['general'] = array(
422 array('field' => 'wdk_default_lat', 'field_label' => __('Default GPS Position', 'wpdirectorykit'), 'hint' => '', 'field_type' => 'MAP', 'rules' => ''),
423 array('field' => 'wdk_default_lng', 'field_label' => __('Default GPS Longitude', 'wpdirectorykit'), 'hint' => '', 'field_type' => 'INPUTBOX', 'rules' => '', 'class' => 'hidden'),
424 array('field' => 'wdk_fixed_map_results_position', 'field_label' => __('Fix map center on default location', 'wpdirectorykit'), 'hint' => '', 'field_type' => 'CHECKBOX', 'rules' => '', 'class' => ''),
425
426
427 array('field' => 'wdk_slug_listing_preview_page', 'field_label' => __('Custom Listing Preview Page Slug', 'wpdirectorykit'), 'hint' => __('Slug used for listing preview page, if empty, default will be used', 'wpdirectorykit'), 'field_type' => 'INPUTBOX', 'rules' => 'wdk_slug_format'),
428 array('field' => 'wdk_listing_page', 'field_label' => __('Listing Page', 'wpdirectorykit'), 'hint' => __('Select regular page which ill be used for listing preview page on frontend, you can create new one also for this purpose', 'wpdirectorykit'), 'field_type' => 'DROPDOWN', 'rules' => '', 'values' => $pages),
429 array('field' => 'wdk_results_page', 'field_label' => __('Results Page', 'wpdirectorykit'), 'hint' => __('Select regular page which ill be used for results page on frontend, you can create new one also for this purpose', 'wpdirectorykit'), 'field_type' => 'DROPDOWN', 'rules' => '', 'values' => $pages),
430 array('field' => 'wdk_is_results_page_require', 'field_label' => __('Always use results page', 'wpdirectorykit'), 'hint' => __('Always even if on current page you have results where can be showed', 'wpdirectorykit'), 'field_type' => 'CHECKBOX', 'rules' => ''),
431
432 array(
433 'field' => 'wdk_card_video_enable',
434 'field_label' => __('Card Video From gallery in result card enable', 'wpdirectorykit'),
435 'hint' => __('If you upload video on first place in listing, will become visible in result card', 'wpdirectorykit'),
436 'field_type' => 'CHECKBOX',
437 'rules' => '',
438 ),
439 array(
440 'field' => 'wdk_listing_category_required',
441 'field_label' => __('Category is required field', 'wpdirectorykit'),
442 'hint' => __('if this is enabled, listing required category field', 'wpdirectorykit'),
443 'field_type' => 'CHECKBOX',
444 'rules' => '',
445 ),
446 array(
447 'field' => 'wdk_listing_location_required',
448 'field_label' => __('Location is required field', 'wpdirectorykit'),
449 'hint' => __('if this is enabled, listing required location field', 'wpdirectorykit'),
450 'field_type' => 'CHECKBOX',
451 'rules' => '',
452 ),
453
454 array(
455 'field' => 'wdk_default_currency_symbol',
456 'field_label' => __('Default Currency Symbol', 'wpdirectorykit'),
457 'hint' => __('Put default currency symbol like $', 'wpdirectorykit'),
458 'field_type' => 'INPUTBOX',
459 'rules' => '',
460 ),
461 array(
462 'field' => 'wdk_disable_toolbar_on_content_editor',
463 'field_label' => __('Disable toolbar on content editor', 'wpdirectorykit'),
464 'field_type' => 'CHECKBOX',
465 'rules' => '',
466 ),
467
468 array(
469 'field' => 'wdk_remove_direct_listing_images',
470 'field_label' => __('Remove images from media when listing is removed', 'wpdirectorykit'),
471 'hint' => __('Enable this option to remove attached images from the media library automatically when a listing is deleted.', 'wpdirectorykit'),
472 'field_type' => 'CHECKBOX',
473 'rules' => '',
474 ),
475 array(
476 'field' => 'wdk_experimental_features',
477 'field_label' => __('Experimental features', 'wpdirectorykit'),
478 'hint' => '',
479 'field_type' => 'CHECKBOX',
480 'rules' => '',
481 ),
482 );
483
484 if(function_exists('run_wdk_geo')) {
485 $this->fields_list_tabs['apis'][] = array(
486 'field' => 'wdk_geo_autodetect_by_google_js_enable',
487 'field_label' => __('Enable location autodetect by Google JS', 'wpdirectorykit'),
488 'hint' => __('This using Google JS API, require API key and user need to allow this in Browser (is most accurate)', 'wpdirectorykit'),
489 'field_type' => 'CHECKBOX',
490 'rules' => '',
491 );
492
493 $this->fields_list_tabs['apis'][] = array(
494 'field' => 'wdk_geo_autodetect_by_ip_enable',
495 'field_label' => __('Enable location autodatect by IP', 'wpdirectorykit'),
496 'hint' => __('This using Free API www.geoplugin.net, not require API key and is not so accurate as Google version, if both enabled then this will be used if Google failed', 'wpdirectorykit'),
497 'field_type' => 'CHECKBOX',
498 'rules' => '',
499 );
500 }
501
502 /* Templates */
503 $this->fields_list_tabs['experimental'] = array(
504 array(
505 'field' => 'wdk_experimental_search_popup',
506 'field_label' => __('Search Popup', 'wpdirectorykit'),
507 'hint' => __('Element open search form in popup', 'wpdirectorykit'),
508 'field_type' => 'CHECKBOX',
509 'rules' => '',
510 ),
511 array(
512 'field' => 'wdk_experimental_listing_card_elementor_layout',
513 'field_label' => __('Listing Card', 'wpdirectorykit'),
514 'hint' => __('Allow Listing card layout in elementor', 'wpdirectorykit'),
515 'field_type' => 'CHECKBOX',
516 'rules' => '',
517 ),
518 array(
519 'field' => 'wdk_experimental_listing_popup',
520 'field_label' => __('Listing Preview Popup', 'wpdirectorykit'),
521 'hint' => __('Open Listing preview in popup', 'wpdirectorykit'),
522 'field_type' => 'CHECKBOX',
523 'rules' => '',
524 ),
525 array(
526 'field' => 'wdk_experimental_ajax_results',
527 'field_label' => __('Ajax results listings', 'wpdirectorykit'),
528 'hint' => __('Allow ajax load listings for map, results container. Reload results with pagination/search form. After activate settings, also action "Reload content with ajax" in elementor options', 'wpdirectorykit'),
529 'field_type' => 'CHECKBOX',
530 'rules' => '',
531 ),
532 );
533
534 /* Autosuggestion */
535 $this->fields_list_tabs['autosuggestion'] = array(
536 array(
537 'field' => 'wdk_autosuggestion_google_api_key',
538 'field_label' => __('Google Api Key', 'wdk-autosuggestion'),
539 'field_type' => 'INPUTBOX',
540 'rules' => '',
541 ),
542 array(
543 'field' => 'wdk_autosuggestion_google_cities',
544 'field_label' => __('Autosuggestion Google Cities', 'wdk-autosuggestion'),
545 'field_type' => 'TEXTAREA',
546 'rules' => '',
547 'hint' => __('Put selectors separate by comma, like .field_1,.field_3 (required Google Api Key)', 'wdk-autosuggestion'),
548 ),
549 array(
550 'field' => 'wdk_autosuggestion_google_countries',
551 'field_label' => __('Autosuggestion Google Countries', 'wdk-autosuggestion'),
552 'field_type' => 'TEXTAREA',
553 'rules' => '',
554 'hint' => __('Put selectors separate by comma, like .field_1,.field_3 (required Google Api Key)', 'wdk-autosuggestion'),
555 ),
556
557 array(
558 'field' => 'wdk_autosuggestion_rapidapi_api_key',
559 'field_label' => __('Rapidapi', 'wdk-autosuggestion'),
560 'field_type' => 'INPUTBOX',
561 'rules' => '',
562 'hint' => wdk_sprintf(__('Please add Rapid Api Key, Get key %1$s here %2$s, then activate GeoDB Cities API','wpdirectorykit'),'<a target="_blank" href="https://rapidapi.com/products/pricing/">','</a>'),
563 ),
564 array(
565 'field' => 'wdk_autosuggestion_rapidapi_cities',
566 'field_label' => __('Autosuggestion Rapid Api Cities', 'wdk-autosuggestion'),
567 'field_type' => 'TEXTAREA',
568 'rules' => '',
569 'hint' => __('Put selectors separate by comma, like .field_1,.field_3 (required Rapid Api Key)', 'wdk-autosuggestion'),
570 ),
571 array(
572 'field' => 'wdk_autosuggestion_rapidapi_countries',
573 'field_label' => __('Autosuggestion Rapid Api Countries', 'wdk-autosuggestion'),
574 'field_type' => 'TEXTAREA',
575 'rules' => '',
576 'hint' => __('Put selectors separate by comma, like .field_1,.field_3 (required Rapid Api Key)', 'wdk-autosuggestion'),
577 ),
578 array(
579 'field' => 'wdk_autosuggestion_countriesapi_countries',
580 'field_label' => __('Autosuggestion REST Countries API Countries', 'wdk-autosuggestion'),
581 'field_type' => 'TEXTAREA',
582 'rules' => '',
583 'hint' => __('Put selectors separate by comma, like .field_1,.field_3', 'wdk-autosuggestion'),
584 ),
585 );
586
587 foreach ($this->fields_list_tabs as $tab_fields) {
588 foreach ($tab_fields as $field) {
589 $this->fields_list[] = $field;
590 }
591 }
592 }
593
594 /* [START] For dynamic data table */
595
596 public function get_available_fields()
597 {
598 $fields = $this->db->list_fields($this->_table_name);
599
600 return $fields;
601 }
602
603 public function total_lang($where = array())
604 {
605 $this->db->select('COUNT(*) as total_count');
606 $this->db->from($this->_table_name);
607 $this->db->where($where);
608 $this->db->order_by($this->_order_by);
609 $query = $this->db->get();
610 $res = $this->db->results();
611
612 if(isset($res[0]->total_count))
613 return $res[0]->total_count;
614
615 return 0;
616 }
617
618 public function get_pagination_lang($limit, $offset, $where = array())
619 {
620 $this->db->select('*');
621 $this->db->from($this->_table_name);
622 $this->db->where($where);
623 $this->db->limit($limit);
624 $this->db->offset($offset);
625 $this->db->order_by($this->_order_by);
626 $query = $this->db->get();
627
628 if ($this->db->num_rows() > 0)
629 return $this->db->results();
630
631 return array();
632 }
633
634 public function check_deletable($id)
635 {
636 return true;
637 }
638
639 /* [END] For dynamic data table */
640
641
642 /* only admin can edit */
643 public function is_related($item_id, $user_id, $method = 'edit')
644 {
645 return false;
646 }
647 }
648