PluginProbe ʕ •ᴥ•ʔ
Admin Columns / 3.1.1
Admin Columns v3.1.1
7.0.19 2.3.5 2.4 2.4.1 2.4.10 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.4.8 2.4.9 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.6.1 2.5.6.2 2.5.6.3 2.5.6.4 3.0 3.0.1 3.0.2 3.0.3 3.0.5 3.0.7 3.1 3.1.1 3.1.10 3.1.2 3.1.3 3.1.5 3.2.3 3.2.7 3.3.1 3.4.1 3.4.6 3.4.8 4.0.1 4.0.3 4.1.6 4.2.2 4.2.5 4.3 4.3.2 4.4.1 4.4.4 4.4.5 4.5.5 4.6.1 4.7.18 4.7.19 4.7.20 4.7.7 7.0.13 7.0.14 7.0.16 trunk 1.0 1.1 1.1.3 1.2 1.2.1 1.3 1.3.1 1.4 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.5.1 1.4.6 1.4.6.1 1.4.6.2 1.4.6.3 1.4.6.4 1.4.7 1.4.8 1.4.9 2.0.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.2 2.2.1 2.2.1.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.5.1 2.2.6 2.2.6.1 2.2.6.2 2.2.6.3 2.2.6.4 2.2.7 2.2.8 2.2.8.1 2.2.9 2.3.1 2.3.2 2.3.3
codepress-admin-columns / classes / Preferences.php
codepress-admin-columns / classes Last commit date
Admin 8 years ago Column 8 years ago Form 8 years ago Helper 8 years ago ListScreen 8 years ago Meta 8 years ago Notice 8 years ago Plugin 8 years ago Relation 8 years ago Settings 8 years ago ThirdParty 8 years ago API.php 8 years ago Addon.php 8 years ago Admin.php 8 years ago Autoloader.php 8 years ago Collection.php 8 years ago Column.php 8 years ago Groups.php 8 years ago Helper.php 8 years ago ListScreen.php 8 years ago ListScreenPost.php 8 years ago ListScreenWP.php 8 years ago Plugin.php 8 years ago PluginInformation.php 8 years ago Preferences.php 8 years ago Relation.php 8 years ago TableScreen.php 8 years ago View.php 8 years ago ViewInterface.php 8 years ago
Preferences.php
140 lines
1 <?php
2
3 if ( ! defined( 'ABSPATH' ) ) {
4 exit;
5 }
6
7 class AC_Preferences {
8
9 /**
10 * @var int
11 */
12 private $user_id;
13
14 /**
15 * Preferences of this user
16 *
17 * @var array
18 */
19 protected $data = array();
20
21 /**
22 * The label for this set of preferences
23 *
24 * @var string
25 */
26 protected $label;
27
28 /**
29 * @param string $label
30 * @param null|int $user_id
31 */
32 public function __construct( $label, $user_id = null ) {
33 if ( null === $user_id ) {
34 $user_id = get_current_user_id();
35 }
36
37 $this->user_id = intval( $user_id );
38 $this->label = sanitize_key( (string) $label );
39 $this->load();
40 }
41
42 /**
43 * Return the key used to store and retrieve this preference
44 *
45 * @return string
46 */
47 private function get_key() {
48 return 'ac_preferences_' . $this->label;
49 }
50
51 private function load() {
52 $data = get_user_option( $this->get_key(), $this->user_id );
53
54 if ( is_array( $data ) ) {
55 foreach ( $data as $k => $v ) {
56 $this->set( $k, $v, false );
57 }
58 }
59 }
60
61 /**
62 * @return bool
63 */
64 public function save() {
65 return (bool) update_user_option( $this->user_id, $this->get_key(), $this->data );
66 }
67
68 /**
69 * @param string $key
70 *
71 * @return mixed
72 */
73 public function get( $key ) {
74 if ( ! isset( $this->data[ $key ] ) ) {
75 return false;
76 }
77
78 return $this->data[ $key ];
79 }
80
81 /**
82 * @param string $key
83 * @param mixed $data
84 * @param bool $save Immediately save changes to database
85 *
86 * @return bool
87 */
88 public function set( $key, $data, $save = true ) {
89 $this->data[ $key ] = $data;
90
91 if ( $save ) {
92 return $this->save();
93 }
94
95 return true;
96 }
97
98 /**
99 * @param string $key
100 * @param bool $save Immediately save changes to database
101 *
102 * @return bool
103 */
104 public function delete( $key, $save = true ) {
105 if ( ! $this->get( $key ) ) {
106 return false;
107 }
108
109 unset( $this->data[ $key ] );
110
111 if ( $save ) {
112 return $this->save();
113 }
114
115 return true;
116 }
117
118 /**
119 * Reset all preferences for all users that match on the current label
120 */
121 public function reset_for_all_users() {
122 if ( empty( $this->label ) ) {
123 return false;
124 }
125
126 global $wpdb;
127
128 $sql = "
129 DELETE
130 FROM {$wpdb->usermeta}
131 WHERE meta_key LIKE %s
132 ";
133
134 $sql = $wpdb->prepare( $sql, $wpdb->esc_like( $wpdb->get_blog_prefix() . $this->get_key() ) . '%' );
135
136 return (bool) $wpdb->query( $sql );
137 }
138
139 }
140