PluginProbe ʕ •ᴥ•ʔ
Admin Columns / 3.4.1
Admin Columns v3.4.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 7 years ago Ajax 7 years ago Autoloader 7 years ago Check 7 years ago Column 7 years ago Deprecated 7 years ago Exception 7 years ago Form 7 years ago Helper 7 years ago Integration 7 years ago ListScreen 7 years ago Message 7 years ago Meta 7 years ago Plugin 7 years ago Preferences 7 years ago Relation 7 years ago Request 7 years ago Response 7 years ago Screen 7 years ago Settings 7 years ago Storage 7 years ago Table 7 years ago ThirdParty 7 years ago Transient 7 years ago API.php 7 years ago Addon.php 7 years ago Admin.php 7 years ago AdminColumns.php 7 years ago ArrayIterator.php 7 years ago Autoloader.php 7 years ago Builder.php 7 years ago Capabilities.php 7 years ago Collection.php 7 years ago Column.php 7 years ago Config.php 7 years ago Dependencies.php 7 years ago Expirable.php 7 years ago Groups.php 7 years ago Helper.php 7 years ago Integration.php 7 years ago IntegrationFactory.php 7 years ago Integrations.php 7 years ago ListScreen.php 7 years ago ListScreenFactory.php 7 years ago ListScreenGroups.php 7 years ago ListScreenPost.php 7 years ago ListScreenWP.php 7 years ago Message.php 7 years ago MetaType.php 7 years ago Middleware.php 7 years ago Plugin.php 7 years ago PluginInformation.php 7 years ago Preferences.php 7 years ago Registrable.php 7 years ago Relation.php 7 years ago Request.php 7 years ago Screen.php 7 years ago ScreenController.php 7 years ago Settings.php 7 years ago Transient.php 7 years ago TypedArrayIterator.php 7 years ago View.php 7 years ago
Preferences.php
143 lines
1 <?php
2
3 namespace AC;
4
5 abstract class Preferences {
6
7 /**
8 * @var int
9 */
10 private $user_id;
11
12 /**
13 * The label for this set of preferences
14 * @var string
15 */
16 private $label;
17
18 /**
19 * Preferences of this user
20 * @var array
21 */
22 protected $data = array();
23
24 /**
25 * Retrieves data from DB
26 * return array|false
27 */
28 abstract protected function load();
29
30 /**
31 * Stores data to DB
32 * @return bool
33 */
34 abstract public function save();
35
36 /**
37 * @param string $label
38 * @param null|int $user_id
39 */
40 public function __construct( $label, $user_id = null ) {
41 if ( null === $user_id ) {
42 $user_id = get_current_user_id();
43 }
44
45 $this->user_id = intval( $user_id );
46 $this->label = sanitize_key( (string) $label );
47
48 $data = $this->load();
49
50 if ( is_array( $data ) ) {
51 foreach ( $data as $k => $v ) {
52 $this->set( $k, $v, false );
53 }
54 }
55 }
56
57 /**
58 * Return the key used to store and retrieve this preference
59 * @return string
60 */
61 protected function get_key() {
62 return 'ac_preferences_' . $this->label;
63 }
64
65 /**
66 * @return int
67 */
68 protected function get_user_id() {
69 return $this->user_id;
70 }
71
72 /**
73 * @param string $key
74 *
75 * @return mixed
76 */
77 public function get( $key ) {
78 if ( ! isset( $this->data[ $key ] ) ) {
79 return false;
80 }
81
82 return $this->data[ $key ];
83 }
84
85 /**
86 * @param string $key
87 * @param mixed $data
88 * @param bool $save Immediately save changes to database
89 *
90 * @return bool
91 */
92 public function set( $key, $data, $save = true ) {
93 $this->data[ $key ] = $data;
94
95 if ( $save ) {
96 return $this->save();
97 }
98
99 return true;
100 }
101
102 /**
103 * @param string $key
104 * @param bool $save Immediately save changes to database
105 *
106 * @return bool
107 */
108 public function delete( $key, $save = true ) {
109 if ( ! $this->get( $key ) ) {
110 return false;
111 }
112
113 unset( $this->data[ $key ] );
114
115 if ( $save ) {
116 return $this->save();
117 }
118
119 return true;
120 }
121
122 /**
123 * Reset site preferences for all users that match on the current label
124 */
125 public function reset_for_all_users() {
126 if ( empty( $this->label ) ) {
127 return false;
128 }
129
130 global $wpdb;
131
132 $sql = "
133 DELETE
134 FROM {$wpdb->usermeta}
135 WHERE meta_key LIKE %s
136 ";
137
138 $sql = $wpdb->prepare( $sql, $wpdb->esc_like( $wpdb->get_blog_prefix() . $this->get_key() ) . '%' );
139
140 return (bool) $wpdb->query( $sql );
141 }
142
143 }