PluginProbe
WP Directory Kit / 1.5.3
WP Directory Kit v1.5.3
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.3, at application/models/Settings_m.php

632 lines 37.0 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 );
171
172 $this->fields_list_tabs['templates'] [] = array(
173 'field' => 'wdk_multilingual_float_language_picker',
174 'field_label' => __('Float Language Picker', 'wpdirectorykit'),
175 'field_type' => 'CHECKBOX',
176 'hint' => __('Multilingual float language picker required WDK Multilingual addon', 'wpdirectorykit'),
177 '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>'),
178 'rules' => '',
179 );
180
181 /* Fields */
182 $this->fields_list_tabs['fields'] = array(
183 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' => ''),
184 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' => ''),
185
186 array(
187 'field' => 'wdk_multi_locations_search_field_type',
188 'field_label' => __('Location field Search', 'wpdirectorykit'),
189 'field_type' => 'RADIO',
190 'hint' => __('Visible on search form', 'wpdirectorykit'),
191 'rules' => '',
192 'values' => array(
193 '' => esc_html__('Single Tree Dropdown', 'wpdirectorykit'),
194 'select2' => esc_html__('Multi Select Dropdown', 'wpdirectorykit'),
195 'wdk_treefield_dropdown' => esc_html__('Multiple Dropdowns', 'wpdirectorykit'),
196 'wdk_treefield_checkboxes' => esc_html__('Single Tree Dropdown with checkboxes', 'wpdirectorykit'),
197 )
198 ),
199
200 array(
201 'field' => 'wdk_multi_categories_search_field_type',
202 'field_label' => __('Categoreis field Search', 'wpdirectorykit'),
203 'field_type' => 'RADIO',
204 'hint' => __('Visible on search form. Hiding field in search form based on category is only possible when using single tree dropdown', 'wpdirectorykit'),
205 'rules' => '',
206 'values' => array(
207 '' => esc_html__('Single Tree Dropdown', 'wpdirectorykit'),
208 'select2' => esc_html__('Multi Select Dropdown', 'wpdirectorykit'),
209 'wdk_treefield_dropdown' => esc_html__('Multiple Dropdowns', 'wpdirectorykit'),
210 'wdk_treefield_checkboxes' => esc_html__('Single Tree Dropdown with checkboxes', 'wpdirectorykit'),
211 )
212 ),
213
214 array(
215 'field' => 'wdk_multi_locations_edit_field_type',
216 'field_label' => __('Location field edit', 'wpdirectorykit'),
217 'field_type' => 'RADIO',
218 'hint' => __('Visible on edit form', 'wpdirectorykit'),
219 'rules' => '',
220 'values' => array(
221 '' => esc_html__('Single Tree Dropdown', 'wpdirectorykit'),
222 'wdk_treefield_dropdown' => esc_html__('Multiple Dropdowns', 'wpdirectorykit'),
223 )
224 ),
225
226 array(
227 'field' => 'wdk_multi_categories_edit_field_type',
228 'field_label' => __('Categoreis field edit', 'wpdirectorykit'),
229 'field_type' => 'RADIO',
230 'hint' => __('Visible on edit form. Hiding field in edit form based on category is only possible when using single tree dropdown', 'wpdirectorykit'),
231 'rules' => '',
232 'values' => array(
233 '' => esc_html__('Single Tree Dropdown', 'wpdirectorykit'),
234 'wdk_treefield_dropdown' => esc_html__('Multiple Dropdowns', 'wpdirectorykit'),
235 )
236 ),
237
238 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' => ''),
239 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' => ''),
240 array(
241 'field' => 'wdk_listing_plangs_documents_disable',
242 'field_label' => __('Disable "Listing plans and documents"', 'wpdirectorykit'),
243 'hint' => '',
244 'field_type' => 'CHECKBOX',
245 'rules' => '',
246 ),
247 array(
248 'field' => 'wdk_listing_images_disable',
249 'field_label' => __('Disable "Listing images"', 'wpdirectorykit'),
250 'hint' => '',
251 'field_type' => 'CHECKBOX',
252 'rules' => '',
253 ),
254
255
256 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' => ''),
257 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' => ''),
258 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' => ''),
259 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' => ''),
260 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' => ''),
261 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' => ''),
262 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' => ''),
263 array(
264 'field' => 'wdk_is_alt_agent_enabled',
265 'field_label' => __('Enable Alternate Agent for Listing', 'wpdirectorykit'),
266 'hint' => __('Enable this option to allow assigning an alternate agent to the listing.', 'wpdirectorykit'),
267 'field_type' => 'CHECKBOX',
268 'rules' => '',
269 ),
270 array(
271 'field' => 'wdk_sub_listings_enable',
272 'field_label' => __('Related Listings', 'wpdirectorykit'),
273 'field_type' => 'CHECKBOX',
274 'rules' => '',
275 ),
276 array(
277 'field' => 'wdk_listings_images_required_enable',
278 'field_label' => __('Listing Images required', 'wpdirectorykit'),
279 'field_type' => 'CHECKBOX',
280 'rules' => '',
281 ),
282 array(
283 'field' => 'wdk_enable_filter_zero_decimal',
284 'field_label' => __('Enable filter zero decimal', 'wpdirectorykit'),
285 'field_type' => 'CHECKBOX',
286 'rules' => '',
287 ),
288 array(
289 'field' => 'wdk_disable_custom_muber_format',
290 'field_label' => __('Disable the custom number format', 'wpdirectorykit'),
291 'hint' => __('Disable the custom number format and use the default WordPress number formatting.', 'wpdirectorykit'),
292 'field_type' => 'CHECKBOX',
293 'rules' => '',
294 ),
295 array(
296 'field' => 'wdk_number_format_decimal_point',
297 'field_label' => __('Number Decimal Places', 'wpdirectorykit'),
298 'hint' => __('Default based on language selected in WordPress', 'wpdirectorykit'),
299 'field_type' => 'DROPDOWN',
300 'empty_default' => esc_attr((!empty(get_option('wdk_number_format_decimal_point')) ? get_option('wdk_number_format_decimal_point') : get_option('decimal_point', ','))),
301 'values' => array(
302 '.' => __('Dot (.)', 'wpdirectorykit'),
303 "'" => __('Quote (\')', 'wpdirectorykit'),
304 ',' => __('Comma (,)', 'wpdirectorykit'),
305 ' ' => __('Space', 'wpdirectorykit'),
306 ),
307 'rules' => ''
308 ),
309 array(
310 'field' => 'wdk_number_format_thousands_sep',
311 'field_label' => __('Number Format Thousands sep', 'wpdirectorykit'),
312 'hint' => __('Default based on language selected in WordPress', 'wpdirectorykit'),
313 'field_type' => 'DROPDOWN',
314 'empty_default' => esc_attr((!empty(get_option('wdk_number_format_thousands_sep')) ? get_option('wdk_number_format_thousands_sep') : get_option('thousands_separator', ','))),
315 'rules' => '',
316 'values' => array(
317 '.' => __('Dot (.)', 'wpdirectorykit'),
318 ',' => __('Comma (,)', 'wpdirectorykit'),
319 "'" => __('Quote (\')', 'wpdirectorykit'),
320 ' ' => __('Space', 'wpdirectorykit'),
321 ),
322 ),
323 array(
324 'field' => 'wdk_number_format_decimals',
325 'field_label' => __('Number Format Decimal count', 'wpdirectorykit'),
326 'hint' => __('Default based on language selected in WordPress', 'wpdirectorykit'),
327 'field_type' => 'NUMBER',
328 'min' => '0',
329 'max' => '5',
330 'step' => '1',
331 'rules' => '',
332 'empty_default' => esc_attr(get_option('wdk_number_format_decimals', get_option('wdk_number_format_decimals', get_option('woocommerce_price_num_decimals', 2)))),
333 ),
334 array(
335 'field' => 'wdk_number_format_decimals',
336 'field_label' => __('Current Number Format', 'wpdirectorykit'),
337 'hint' => __('Example price format based on WordPress language or above configuration (1234567.89)', 'wpdirectorykit'),
338 'field_type' => 'RAW',
339 'rules' => '',
340 'raw' => '<span id="wdk_example_price_format" class="label label-info" style="font-size:14px">'.wdk_number_format_i18n(1234567.89).'</span>',
341 ),
342 array(
343 'field' => 'wdk_custom_listings_link_field',
344 'field_label' => __('Custom Field, like extern link for listing preview', 'wpdirectorykit'),
345 'hint' => __('Value for this field, replace listing preview link if not empty', 'wpdirectorykit'),
346 'field_type' => 'DROPDOWN',
347 'values' => $fields_list_inputs,
348 'rules' => '',
349 ),
350 );
351
352 /* Api-s */
353 $this->fields_list_tabs['apis'] = array(
354 array(
355 'field' => 'wdk_recaptcha_site_key',
356 'field_label' => __('Recaptcha site key', 'wpdirectorykit'),
357 '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>'),
358 'field_type' => 'INPUTBOX',
359 'rules' => '',
360 ),
361 array(
362 'field' => 'wdk_recaptcha_secret_key',
363 'field_label' => __('Recaptcha site secret key', 'wpdirectorykit'),
364 'hint' => __('Add Google Recaptcha secret key', 'wpdirectorykit'),
365 'field_type' => 'INPUTBOX',
366 'rules' => '',
367 ),
368 array(
369 'field' => 'wdk_recaptcha_site_key_v3',
370 'field_label' => __('Recaptcha site key v3', 'wpdirectorykit'),
371 '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>'),
372 'field_type' => 'INPUTBOX',
373 'rules' => '',
374 ),
375 array(
376 'field' => 'wdk_recaptcha_secret_key_v3',
377 'field_label' => __('Recaptcha site secret key v3', 'wpdirectorykit'),
378 'hint' => __('Add Google Recaptcha secret key', 'wpdirectorykit'),
379 'field_type' => 'INPUTBOX',
380 'rules' => '',
381 ),
382 array(
383 'field' => 'wdk_geo_google_api_key',
384 'field_label' => __('Google API Key', 'wpdirectorykit'),
385 '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>'),
386 'field_type' => 'INPUTBOX',
387 'rules' => '',
388 ),
389 array(
390 'field' => 'wdk_import_google_api_enable',
391 'field_label' => __('Google API for import listings', 'wpdirectorykit'),
392 'hint' => __('Google API key will be used to autodetect GPS coordinates when importing listing', 'wpdirectorykit'),
393 'field_type' => 'CHECKBOX',
394 'rules' => '',
395 ),
396 array(
397 'field' => 'wdk_geo_coding_results_location',
398 'field_label' => __('Auto Search based on Geo Coding', 'wpdirectorykit'),
399 'hint' => __('if this is enabled, auto search listings based on found geo location', 'wpdirectorykit'),
400 'field_type' => 'CHECKBOX',
401 'rules' => '',
402 ),
403 );
404
405 $this->fields_list_tabs['general'] = array(
406 array('field' => 'wdk_default_lat', 'field_label' => __('Default GPS Position', 'wpdirectorykit'), 'hint' => '', 'field_type' => 'MAP', 'rules' => ''),
407 array('field' => 'wdk_default_lng', 'field_label' => __('Default GPS Longitude', 'wpdirectorykit'), 'hint' => '', 'field_type' => 'INPUTBOX', 'rules' => '', 'class' => 'hidden'),
408 array('field' => 'wdk_fixed_map_results_position', 'field_label' => __('Fix map center on default location', 'wpdirectorykit'), 'hint' => '', 'field_type' => 'CHECKBOX', 'rules' => '', 'class' => ''),
409
410
411 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'),
412 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),
413 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),
414 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' => ''),
415
416 array(
417 'field' => 'wdk_card_video_enable',
418 'field_label' => __('Card Video From gallery in result card enable', 'wpdirectorykit'),
419 'hint' => __('If you upload video on first place in listing, will become visible in result card', 'wpdirectorykit'),
420 'field_type' => 'CHECKBOX',
421 'rules' => '',
422 ),
423 array(
424 'field' => 'wdk_listing_category_required',
425 'field_label' => __('Category is required field', 'wpdirectorykit'),
426 'hint' => __('if this is enabled, listing required category field', 'wpdirectorykit'),
427 'field_type' => 'CHECKBOX',
428 'rules' => '',
429 ),
430 array(
431 'field' => 'wdk_listing_location_required',
432 'field_label' => __('Location is required field', 'wpdirectorykit'),
433 'hint' => __('if this is enabled, listing required location field', 'wpdirectorykit'),
434 'field_type' => 'CHECKBOX',
435 'rules' => '',
436 ),
437
438 array(
439 'field' => 'wdk_default_currency_symbol',
440 'field_label' => __('Default Currency Symbol', 'wpdirectorykit'),
441 'hint' => __('Put default currency symbol like $', 'wpdirectorykit'),
442 'field_type' => 'INPUTBOX',
443 'rules' => '',
444 ),
445 array(
446 'field' => 'wdk_disable_toolbar_on_content_editor',
447 'field_label' => __('Disable toolbar on content editor', 'wpdirectorykit'),
448 'field_type' => 'CHECKBOX',
449 'rules' => '',
450 ),
451
452 array(
453 'field' => 'wdk_remove_direct_listing_images',
454 'field_label' => __('Remove images from media when listing is removed', 'wpdirectorykit'),
455 'hint' => __('Enable this option to remove attached images from the media library automatically when a listing is deleted.', 'wpdirectorykit'),
456 'field_type' => 'CHECKBOX',
457 'rules' => '',
458 ),
459 array(
460 'field' => 'wdk_experimental_features',
461 'field_label' => __('Experimental features', 'wpdirectorykit'),
462 'hint' => '',
463 'field_type' => 'CHECKBOX',
464 'rules' => '',
465 ),
466 );
467
468 if(function_exists('run_wdk_geo')) {
469 $this->fields_list_tabs['apis'][] = array(
470 'field' => 'wdk_geo_autodetect_by_google_js_enable',
471 'field_label' => __('Enable location autodetect by Google JS', 'wpdirectorykit'),
472 'hint' => __('This using Google JS API, require API key and user need to allow this in Browser (is most accurate)', 'wpdirectorykit'),
473 'field_type' => 'CHECKBOX',
474 'rules' => '',
475 );
476
477 $this->fields_list_tabs['apis'][] = array(
478 'field' => 'wdk_geo_autodetect_by_ip_enable',
479 'field_label' => __('Enable location autodatect by IP', 'wpdirectorykit'),
480 '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'),
481 'field_type' => 'CHECKBOX',
482 'rules' => '',
483 );
484 }
485
486 /* Templates */
487 $this->fields_list_tabs['experimental'] = array(
488 array(
489 'field' => 'wdk_experimental_search_popup',
490 'field_label' => __('Search Popup', 'wpdirectorykit'),
491 'hint' => __('Element open search form in popup', 'wpdirectorykit'),
492 'field_type' => 'CHECKBOX',
493 'rules' => '',
494 ),
495 array(
496 'field' => 'wdk_experimental_listing_card_elementor_layout',
497 'field_label' => __('Listing Card', 'wpdirectorykit'),
498 'hint' => __('Allow Listing card layout in elementor', 'wpdirectorykit'),
499 'field_type' => 'CHECKBOX',
500 'rules' => '',
501 ),
502 array(
503 'field' => 'wdk_experimental_listing_popup',
504 'field_label' => __('Listing Preview Popup', 'wpdirectorykit'),
505 'hint' => __('Open Listing preview in popup', 'wpdirectorykit'),
506 'field_type' => 'CHECKBOX',
507 'rules' => '',
508 ),
509 array(
510 'field' => 'wdk_experimental_ajax_results',
511 'field_label' => __('Ajax results listings', 'wpdirectorykit'),
512 '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'),
513 'field_type' => 'CHECKBOX',
514 'rules' => '',
515 ),
516 );
517
518 /* Autosuggestion */
519 $this->fields_list_tabs['autosuggestion'] = array(
520 array(
521 'field' => 'wdk_autosuggestion_google_api_key',
522 'field_label' => __('Google Api Key', 'wdk-autosuggestion'),
523 'field_type' => 'INPUTBOX',
524 'rules' => '',
525 ),
526 array(
527 'field' => 'wdk_autosuggestion_google_cities',
528 'field_label' => __('Autosuggestion Google Cities', 'wdk-autosuggestion'),
529 'field_type' => 'TEXTAREA',
530 'rules' => '',
531 'hint' => __('Put selectors separate by comma, like .field_1,.field_3 (required Google Api Key)', 'wdk-autosuggestion'),
532 ),
533 array(
534 'field' => 'wdk_autosuggestion_google_countries',
535 'field_label' => __('Autosuggestion Google Countries', 'wdk-autosuggestion'),
536 'field_type' => 'TEXTAREA',
537 'rules' => '',
538 'hint' => __('Put selectors separate by comma, like .field_1,.field_3 (required Google Api Key)', 'wdk-autosuggestion'),
539 ),
540
541 array(
542 'field' => 'wdk_autosuggestion_rapidapi_api_key',
543 'field_label' => __('Rapidapi', 'wdk-autosuggestion'),
544 'field_type' => 'INPUTBOX',
545 'rules' => '',
546 '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>'),
547 ),
548 array(
549 'field' => 'wdk_autosuggestion_rapidapi_cities',
550 'field_label' => __('Autosuggestion Rapid Api Cities', 'wdk-autosuggestion'),
551 'field_type' => 'TEXTAREA',
552 'rules' => '',
553 'hint' => __('Put selectors separate by comma, like .field_1,.field_3 (required Rapid Api Key)', 'wdk-autosuggestion'),
554 ),
555 array(
556 'field' => 'wdk_autosuggestion_rapidapi_countries',
557 'field_label' => __('Autosuggestion Rapid Api Countries', 'wdk-autosuggestion'),
558 'field_type' => 'TEXTAREA',
559 'rules' => '',
560 'hint' => __('Put selectors separate by comma, like .field_1,.field_3 (required Rapid Api Key)', 'wdk-autosuggestion'),
561 ),
562 array(
563 'field' => 'wdk_autosuggestion_countriesapi_countries',
564 'field_label' => __('Autosuggestion REST Countries API Countries', 'wdk-autosuggestion'),
565 'field_type' => 'TEXTAREA',
566 'rules' => '',
567 'hint' => __('Put selectors separate by comma, like .field_1,.field_3', 'wdk-autosuggestion'),
568 ),
569 );
570
571 foreach ($this->fields_list_tabs as $tab_fields) {
572 foreach ($tab_fields as $field) {
573 $this->fields_list[] = $field;
574 }
575 }
576 }
577
578 /* [START] For dynamic data table */
579
580 public function get_available_fields()
581 {
582 $fields = $this->db->list_fields($this->_table_name);
583
584 return $fields;
585 }
586
587 public function total_lang($where = array())
588 {
589 $this->db->select('COUNT(*) as total_count');
590 $this->db->from($this->_table_name);
591 $this->db->where($where);
592 $this->db->order_by($this->_order_by);
593 $query = $this->db->get();
594 $res = $this->db->results();
595
596 if(isset($res[0]->total_count))
597 return $res[0]->total_count;
598
599 return 0;
600 }
601
602 public function get_pagination_lang($limit, $offset, $where = array())
603 {
604 $this->db->select('*');
605 $this->db->from($this->_table_name);
606 $this->db->where($where);
607 $this->db->limit($limit);
608 $this->db->offset($offset);
609 $this->db->order_by($this->_order_by);
610 $query = $this->db->get();
611
612 if ($this->db->num_rows() > 0)
613 return $this->db->results();
614
615 return array();
616 }
617
618 public function check_deletable($id)
619 {
620 return true;
621 }
622
623 /* [END] For dynamic data table */
624
625
626 /* only admin can edit */
627 public function is_related($item_id, $user_id, $method = 'edit')
628 {
629 return false;
630 }
631 }
632