PluginProbe
WP Directory Kit / 1.5.9
WP Directory Kit v1.5.9
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
← All changes | application/controllers/Wdk_listing.php +117 -26 1.2.9 → 1.5.9 View file →
@@ -5,8 +5,87 @@
5 5
6 6 public function __construct(){
7 7 parent::__construct();
8 8 }
9 +
10 + public function copy()
11 + {
12 + $this->load->model('field_m');
13 + $this->load->model('listing_m');
14 + $this->load->model('listingfield_m');
15 + $this->load->model('listingusers_m');
16 + $this->load->model('category_m');
17 + $this->load->model('location_m');
18 + $this->load->model('user_m');
19 + $this->load->model('categorieslistings_m');
20 + $this->load->model('locationslistings_m');
21 +
22 + $from_id = intval($_GET['from_id']);
23 + $to_lang = sanitize_text_field(wp_unslash($_GET['to_lang']));
24 +
25 + // fetch data
26 + $listing_post = get_post( $from_id );
27 +
28 + $listing_db_data = $this->listing_m->get($from_id, TRUE);
29 +
30 + $listingfield_db_data = $this->listingfield_m->get($from_id, TRUE);
31 + $listingusers_db_data = $this->listingusers_m->get($from_id);
32 +
33 + $lang_from_code = pll_get_post_language($from_id);
34 +
35 + $post_data = array(
36 + 'post_title' => wp_strip_all_tags($listing_post->post_title).' '.$to_lang,
37 + 'post_content' => $listing_post->post_content,
38 + 'post_status' => 'publish',
39 + 'post_type' => 'wdk-listing',
40 + 'post_author' => get_current_user_id()
41 + // Other fields as needed
42 + );
43 +
44 + // Insert the custom post into the database
45 + $post_id = wp_insert_post($post_data);
46 +
47 + pll_set_post_language($post_id, $to_lang);
48 +
49 + // Link the translations together
50 + pll_save_post_translations(array(
51 + $lang_from_code => $from_id,
52 + $to_lang => $post_id,
53 + ));
54 +
55 + $listing_data = array('post_id' => $post_id);
56 +
57 +
58 + $listing_data_fields = array('category_id', 'location_id', 'address', 'lat', 'lng', 'listing_images','listing_plans_documents', 'is_featured', 'is_activated','is_approved', 'package_id','rank','subscription_id',
59 + 'user_id_editor', 'listing_parent_post_id','listing_related_ids');
60 + foreach($listing_data_fields as $field_name)
61 + {
62 + if(isset($listing_db_data->$field_name))
63 + $listing_data[$field_name] = $listing_db_data->$field_name;
64 + }
65 +
66 + $listing_data['date_modified'] = gmdate('Y-m-d H:i:s');
67 +
68 + // copy listing data
69 + $this->listing_m->insert($listing_data, NULL);
70 +
71 + if($this->db->last_error() != '')
72 + exit('DB Error: '.esc_html($this->db->last_error()));
73 +
74 + $this->data['listing_fields'] = $this->field_m->get();
75 +
76 + foreach($this->data['listing_fields'] as $field_data)
77 + {
78 + if(isset($listing_db_data->{'field_'.$field_data->idfield.'_'.$field_data->field_type}))
79 + $listing_data['field_'.$field_data->idfield] = $listing_db_data->{'field_'.$field_data->idfield.'_'.$field_data->field_type};
80 + }
81 +
82 + $this->listingfield_m->insert_custom_fields($this->data['listing_fields'], $listing_data, NULL);
83 +
84 + //exit($this->db->last_query());
85 +
86 + wp_redirect(get_admin_url() . "admin.php?page=wdk_listing&id=".$post_id);
87 + }
9 88
10 89 // Edit listing method
11 90 public function index()
12 91 {
@@ -112,26 +191,17 @@
112 191 $Winter_MVC_wdk_membership->model('subscription_user_m');
113 192 $Winter_MVC_wdk_membership->model('subscription_m');
114 193
115 194 $this->db->select('*');
116 - $this->db->join($Winter_MVC_wdk_membership->subscription_m->_table_name.' ON '.$Winter_MVC_wdk_membership->subscription_m->_table_name.'.idsubscription = '.$Winter_MVC_wdk_membership->subscription_user_m->_table_name.'.subscription_id');
117 195 $this->db->join($this->db->prefix.'wdk_categories ON '.$this->db->prefix.'wdk_categories.idcategory = '.$Winter_MVC_wdk_membership->subscription_m->_table_name.'.category_id', TRUE, 'LEFT');
118 196 $this->db->join($this->db->prefix.'wdk_locations ON '.$this->db->prefix.'wdk_locations.idlocation = '.$Winter_MVC_wdk_membership->subscription_m->_table_name.'.location_id', TRUE, 'LEFT');
119 - $this->db->where(array(
120 - '(date_expire > \''.current_time( 'mysql' ).'\')'=>NULL,
121 - '(user_id = \''.wmvc_show_data('user_id_editor', $this->data['db_data'], false).'\')'=>NULL,
122 - '(status = \'ACTIVE\')'=>NULL,
123 - )
124 - );
125 -
126 - $subscriptions = $Winter_MVC_wdk_membership->subscription_user_m->get();
197 + $subscriptions = $Winter_MVC_wdk_membership->subscription_m->get();
127 198 if (count($subscriptions) > 0) {
128 199 foreach($subscriptions as $subscription) {
129 - $this->data['subscriptions'][wdk_show_data('subscription_id',$subscription,'', TRUE, TRUE)] = wdk_show_data('subscription_id', $subscription,'', TRUE, TRUE)
200 + $this->data['subscriptions'][wdk_show_data('idsubscription', $subscription,'', TRUE, TRUE)] = wdk_show_data('idsubscription', $subscription,'', TRUE, TRUE)
130 201 .', '.wdk_show_data('subscription_name', $subscription,'', TRUE, TRUE)
131 202 .', '.wdk_show_data('location_title',$subscription, esc_html__('Any', 'wpdirectorykit'), TRUE, TRUE).' '. esc_html__('Location', 'wpdirectorykit')
132 - .', '.wdk_show_data('category_title',$subscription, esc_html__('Any', 'wpdirectorykit'), TRUE, TRUE).' '. esc_html__('Category', 'wpdirectorykit')
133 - .'('.wdk_get_date(wdk_show_data('date_expire', $subscription,'', TRUE, TRUE)).')';
203 + .', '.wdk_show_data('category_title',$subscription, esc_html__('Any', 'wpdirectorykit'), TRUE, TRUE).' '. esc_html__('Category', 'wpdirectorykit');
134 204 }
135 205 }
136 206 }
137 207
@@ -149,9 +219,9 @@
149 219 ),
150 220 array(
151 221 'field' => 'post_content',
152 222 'label' => __('Content', 'wpdirectorykit'),
153 - 'rules' => 'required'
223 + 'rules' => (wdk_get_option('wdk_is_post_content_enable', FALSE)) ? 'required' : ''
154 224 ),
155 225 array(
156 226 'field' => 'category_id',
157 227 'label' => __('Category', 'wpdirectorykit'),
@@ -236,13 +306,9 @@
236 306 'field' => 'listing_parent_post_id',
237 307 'label' => __('Listing parent id', 'wpdirectorykit'),
238 308 'rules' => ''
239 309 ),
240 - array(
241 - 'field' => 'listing_related_ids',
242 - 'label' => __('Listing childs', 'wpdirectorykit'),
243 - 'rules' => ''
244 - ),
310 +
245 311 );
246 312
247 313 $rules[] = array(
248 314 'field' => 'rank',
@@ -250,8 +316,16 @@
250 316 'rules' => 'numeric'
251 317 );
252 318
253 319
320 + if(wdk_get_option('wdk_sub_listings_enable')) {
321 + $rules[] = array(
322 + 'field' => 'listing_related_ids',
323 + 'label' => __('Listing childs', 'wpdirectorykit'),
324 + 'rules' => 'wdk_related_validation'
325 + );
326 + }
327 +
254 328 foreach($this->data['fields'] as $key => $field)
255 329 {
256 330 if($field->field_type == 'SECTION'){
257 331 $this->data['fields'][$key]->is_required = '';
@@ -312,8 +386,9 @@
312 386 $this->data['db_data']['field_'.$field->idfield.'_'.$field->field_type];
313 387 }
314 388
315 389 $this->form->add_error_message('wdk_gps_single', __('Gps field is not valid, should be like xx.xxxxxx (between -180 and 180)', 'wpdirectorykit'));
390 + $this->form->add_error_message('wdk_related_validation', __('Related listings must not contain child listings and cannot be child listings themselves.', 'wpdirectorykit'));
316 391 if($this->form->run($rules))
317 392 {
318 393 // Check _wpnonce
319 394 check_admin_referer( 'wdk-listing-edit_'.$listing_post_id, '_wpnonce' );
@@ -320,8 +395,12 @@
320 395
321 396 $data = $this->listing_m->prepare_data(wdk_get_post(), $rules, FALSE);
322 397 // Save standard wp post
323 398
399 + if(!isset($data['post_content'])) {
400 + $data['post_content'] = '';
401 + }
402 +
324 403 // Create post object
325 404 $listing_post = array(
326 405 'ID' => $listing_post_id,
327 406 'post_type' => 'wdk-listing',
@@ -339,14 +418,20 @@
339 418 $listing_data = array('post_id' => $id);
340 419
341 420 $listing_data_fields = array('category_id', 'location_id', 'address', 'lat', 'lng', 'listing_images','listing_plans_documents', 'is_featured', 'is_activated','is_approved', 'package_id','rank','subscription_id',
342 421 'user_id_editor', 'listing_parent_post_id','listing_related_ids');
422 +
343 423 foreach($listing_data_fields as $field_name)
344 424 {
345 - $listing_data[$field_name] = $data[$field_name];
425 + $listing_data[$field_name] = $data[$field_name] ?? '';
346 426 }
347 427
348 - $image_ids = explode(',', $data['listing_images']);
428 + if(empty($listing_data['user_id_editor']))
429 + $listing_data['user_id_editor'] = $this->data['db_data']['user_id_editor'] = get_current_user_id();
430 +
431 + $image_ids = array();
432 + if(!empty($data['listing_images']))
433 + $image_ids = explode(',', $data['listing_images']);
349 434
350 435 $listing_data['listing_images_path'] = '';
351 436 $listing_data['listing_images_path_medium'] = '';
352 437
@@ -366,9 +451,9 @@
366 451 }
367 452
368 453 $image_url = wp_get_attachment_image_url($image_id, 'large');
369 454 if($image_url) {
370 - $parsed = parse_url($image_url);
455 + $parsed = wp_parse_url($image_url);
371 456 $next_path = substr($parsed['path'], strpos($parsed['path'], 'uploads/')+8);
372 457
373 458 if(!empty($listing_data['listing_images_path_medium']))
374 459 $listing_data['listing_images_path_medium'] .= ',';
@@ -376,8 +461,11 @@
376 461 $listing_data['listing_images_path_medium'] .= $next_path;
377 462 }
378 463 }
379 464 }
465 +
466 + /* add featured images */
467 + set_post_thumbnail($id, reset($image_ids));
380 468 }
381 469
382 470 if((wmvc_user_in_role('administrator') || current_user_can('wdk_listings_manage')) && $this->input->post('slug')) {
383 471 // update the post slug
@@ -407,9 +495,9 @@
407 495 $package = $Winter_MVC_wdk_payments->package_m->get(wmvc_show_data('package_id', $listing_data_field, false), TRUE);
408 496 if ($packages) {
409 497 if(!isset($listing_data['rank']) || empty($listing_data['rank']))
410 498 $listing_data['rank'] = wdk_show_data('featured_rank',$package, 0, TRUE, TRUE);
411 - $listing_data['date_package_expire'] = date('Y-m-d H:i:s', strtotime('+'.wdk_show_data('days_limit',$package, 0, TRUE, TRUE).'days'));
499 + $listing_data['date_package_expire'] = gmdate('Y-m-d H:i:s', strtotime('+'.wdk_show_data('days_limit',$package, 0, TRUE, TRUE).'days'));
412 500 }
413 501 }
414 502
415 503 /* dates set */
@@ -415,9 +503,9 @@
415 503 /* dates set */
416 504 if(isset($this->data['db_data']['date']))
417 505 $listing_data['date'] = $this->data['db_data']['date'];
418 506
419 - $listing_data['date_modified'] = date('Y-m-d H:i:s');
507 + $listing_data['date_modified'] = gmdate('Y-m-d H:i:s');
420 508
421 509 if(empty($listing_db_data))
422 510 {
423 511 $id_ret = $this->listing_m->insert($listing_data, NULL);
@@ -427,9 +515,9 @@
427 515 $id_ret = $this->listing_m->insert($listing_data, $id);
428 516 }
429 517
430 518 if($this->db->last_error() != '')
431 - exit('DB Error: '.$this->db->last_error());
519 + exit('DB Error: '.esc_html($this->db->last_error()));
432 520
433 521 //var_dump($id_ret);
434 522
435 523 // insert users/agents
@@ -491,9 +579,9 @@
491 579
492 580 global $wpdb;
493 581 foreach($this->data['fields'] as $key => $field)
494 582 {
495 - if($field->field_type == 'TEXTAREA'){
583 + if($field->field_type == 'TEXTAREA' && !empty($data['field_'.$field->idfield])){
496 584 $data[ 'field_'.$field->idfield ] = wp_encode_emoji( $data['field_'.$field->idfield] );
497 585 }
498 586 }
499 587
@@ -505,13 +593,16 @@
505 593 {
506 594 $this->listingfield_m->insert_custom_fields($this->data['listing_fields'], $data, $id);
507 595 }
508 596
597 + if($this->db->last_error() != '')
598 + exit('DB Error: '.esc_html($this->db->last_error()));
599 +
509 600 $this->load->model('editlog_m');
510 601 $this->editlog_m->insert(array(
511 602 'user_id' => get_current_user_id(),
512 603 'post_id' => $id,
513 - 'date' => date('Y-m-d H:i:s'),
604 + 'date' => gmdate('Y-m-d H:i:s'),
514 605 'ip' => $_SERVER['REMOTE_ADDR']
515 606 ));
516 607
517 608