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 / extensions / wdk-cached-users.php

wdk-cached-users.php in WP Directory Kit 1.5.5, at extensions/wdk-cached-users.php

126 lines 5.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Wdk\Extensions;
4
5 if (!defined('ABSPATH')) exit; // Exit if accessed directly
6
7
8 class WdkCachedUsers
9 {
10 /**
11 * data array
12 *
13 * @var array
14 */
15 public $data = array();
16 public $option_key = 'wdk_users_cached';
17
18 public function __construct($data = array(), $args = null)
19 {
20
21 add_action( 'wp_update_user', array($this, 'update'), 11);
22 add_action( 'init', array($this, 'regenerate_cache_activation'), 11);
23
24 /* call with GET['wdk_cached_users_regenerate'] */
25 add_action( 'init', array($this, 'regenerate_cache_regenerate'), 11);
26
27 }
28
29 public function update($user_id = NULL)
30 {
31 global $Winter_MVC_WDK;
32 $Winter_MVC_WDK->model('cachedusers_m');
33 $Winter_MVC_WDK->load_helper('listing');
34
35 $user_data = wdk_get_user_data($user_id);
36
37 $Winter_MVC_WDK->db->where('cacheduser_user_id', $user_id);
38 $Winter_MVC_WDK->db->delete($Winter_MVC_WDK->cachedusers_m->_table_name);
39
40 $user_all_meta = get_user_meta($user_id);
41 $usermetadata = array_map( function( $a ){ return $a[0]; }, $user_all_meta );
42 $json_data = $usermetadata;
43
44 $meta_fields = array('wdk_address','wdk_phone','wdk_city','wdk_company_name','wdk_facebook','wdk_youtube','wdk_linkedin','wdk_twitter','wdk_instagram','wdk_whatsapp',
45 'wdk_viber','wdk_iban','wdk_telegram','wdk_position_title','session_tokens','wc_last_active','show_welcome_panel','dismissed_wp_pointers','locale','show_admin_bar_front','use_ssl','admin_color',
46 'comment_shortcuts','syntax_highlighting','rich_editing','description','community-events-location','_woocommerce_persistent_cart_1','_woocommerce_tracks_anon_id',
47 $Winter_MVC_WDK->db->prefix.'capabilities',$Winter_MVC_WDK->db->prefix.'user_level',$Winter_MVC_WDK->db->prefix.'user-settings',$Winter_MVC_WDK->db->prefix.'user-settings-time',$Winter_MVC_WDK->db->prefix.'dashboard_quick_press_last_post_id');
48
49 /* remove from json fields from above array */
50 foreach ($meta_fields as $key_meta_field) {
51 if(isset($json_data[$key_meta_field]))
52 unset($json_data[$key_meta_field]);
53 }
54
55 $insert_id = $Winter_MVC_WDK->cachedusers_m->insert(array(
56 'cacheduser_user_id' => $user_id,
57 'cacheduser_profile_url' => $user_data['profile_url'],
58 'cacheduser_avatar_url' => $user_data['avatar'],
59 'cacheduser_display_name' => wdk_get_user_field ($user_id, 'display_name'),
60 'cacheduser_email' => wdk_get_user_field ($user_id, 'user_email'),
61 'cacheduser_wdk_address' => wdk_get_user_field ($user_id, 'wdk_address'),
62 'cacheduser_wdk_phone' => wdk_get_user_field ($user_id, 'wdk_phone'),
63 'cacheduser_wdk_city' => wdk_get_user_field ($user_id, 'wdk_city'),
64 'cacheduser_wdk_company_name' => wdk_get_user_field ($user_id, 'wdk_company_name'),
65 'cacheduser_wdk_facebook' => wdk_get_user_field ($user_id, 'wdk_facebook'),
66 'cacheduser_wdk_youtube' => wdk_get_user_field ($user_id, 'wdk_youtube'),
67 'cacheduser_wdk_linkedin' => wdk_get_user_field ($user_id, 'wdk_linkedin'),
68 'cacheduser_wdk_twitter' => wdk_get_user_field ($user_id, 'wdk_twitter'),
69 'cacheduser_wdk_instagram' => wdk_get_user_field ($user_id, 'wdk_instagram'),
70 'cacheduser_wdk_whatsapp' => wdk_get_user_field ($user_id, 'wdk_whatsapp'),
71 'cacheduser_wdk_viber' => wdk_get_user_field ($user_id, 'wdk_viber'),
72 'cacheduser_wdk_iban' => wdk_get_user_field ($user_id, 'wdk_iban'),
73 'cacheduser_wdk_telegram' => wdk_get_user_field ($user_id, 'wdk_telegram'),
74 'cacheduser_wdk_position_title' => wdk_get_user_field ($user_id, 'wdk_position_title'),
75 'cacheduser_wdk_slug' => wdk_get_user_field ($user_id, 'wdk_slug'),
76 'cacheduser_user_login' => wdk_get_user_field ($user_id, 'user_login'),
77 'cacheduser_agency_name' => wdk_get_user_field ($user_id, 'agency_name'),
78 'cacheduser_description' => wdk_get_user_field ($user_id, 'description'),
79 'cacheduser_user_url' => wdk_get_user_field ($user_id, 'user_url'),
80 'cacheduser_roles' => join(',', ( array ) wdk_get_user_field ($user_id, 'roles')),
81 'cacheduser_json_data' => json_encode($json_data),
82 'cacheduser_date_updated' => date('Y-m-d H:i:s'),
83 ), NULL);
84 }
85
86 public function regenerate_cache_activation()
87 {
88 if(wdk_get_option($this->option_key)) {
89 return true;
90 }
91
92 $this->regenerate_cache($limit=20);
93
94 return TRUE;
95 }
96
97 public function regenerate_cache_regenerate()
98 {
99 if(isset($_GET['wdk_cached_users_regenerate'])) {
100 $this->regenerate_cache();
101
102 return TRUE;
103 }
104 }
105
106 public function regenerate_cache($limit = NULL)
107 {
108 global $wpdb;
109 $sql = "SELECT * FROM $wpdb->users";
110
111 if(!empty($limit))
112 $sql .= " LIMIT ".esc_sql($limit);
113
114 $dbusers = $wpdb->get_results($sql);
115
116 foreach($dbusers as $dbuser) {
117 $this->update(wmvc_show_data('ID', $dbuser));
118 }
119
120 update_option( $this->option_key, 1);
121
122 return TRUE;
123 }
124
125 }
126