Blame view

sources/lib/private/preferences.php 5.85 KB
03e52840d   Kload   Init
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
  <?php
  /**
   * ownCloud
   *
   * @author Frank Karlitschek
   * @author Jakob Sack
   * @copyright 2012 Frank Karlitschek frank@owncloud.org
   *
   * This library is free software; you can redistribute it and/or
   * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
   * License as published by the Free Software Foundation; either
   * version 3 of the License, or any later version.
   *
   * This library is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
   *
   * You should have received a copy of the GNU Affero General Public
   * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
   *
   */
  /*
   *
   * The following SQL statement is just a help for developers and will not be
   * executed!
   *
   * CREATE TABLE  `preferences` (
   * `userid` VARCHAR( 255 ) NOT NULL ,
   * `appid` VARCHAR( 255 ) NOT NULL ,
   * `configkey` VARCHAR( 255 ) NOT NULL ,
   * `configvalue` VARCHAR( 255 ) NOT NULL
   * )
   *
   */
31b7f2792   Kload   Upgrade to ownclo...
36
37
38
  namespace OC;
  
  use \OC\DB\Connection;
03e52840d   Kload   Init
39
40
41
  /**
   * This class provides an easy way for storing user preferences.
   */
31b7f2792   Kload   Upgrade to ownclo...
42
43
44
45
46
47
  class Preferences {
  	protected $conn;
  
  	public function __construct(Connection $conn) {
  		$this->conn = $conn;
  	}
03e52840d   Kload   Init
48
49
50
51
52
53
54
  	/**
  	 * @brief Get all users using the preferences
  	 * @return array with user ids
  	 *
  	 * This function returns a list of all users that have at least one entry
  	 * in the preferences table.
  	 */
31b7f2792   Kload   Upgrade to ownclo...
55
56
57
  	public function getUsers() {
  		$query = 'SELECT DISTINCT `userid` FROM `*PREFIX*preferences`';
  		$result = $this->conn->executeQuery( $query );
03e52840d   Kload   Init
58
59
  
  		$users = array();
31b7f2792   Kload   Upgrade to ownclo...
60
61
  		while( $userid = $result->fetchColumn()) {
  			$users[] = $userid;
03e52840d   Kload   Init
62
63
64
65
66
67
  		}
  
  		return $users;
  	}
  
  	/**
31b7f2792   Kload   Upgrade to ownclo...
68
  	 * @brief Get all apps of an user
03e52840d   Kload   Init
69
70
71
72
73
74
  	 * @param string $user user
  	 * @return array with app ids
  	 *
  	 * This function returns a list of all apps of the user that have at least
  	 * one entry in the preferences table.
  	 */
31b7f2792   Kload   Upgrade to ownclo...
75
76
77
  	public function getApps( $user ) {
  		$query = 'SELECT DISTINCT `appid` FROM `*PREFIX*preferences` WHERE `userid` = ?';
  		$result = $this->conn->executeQuery( $query, array( $user ) );
03e52840d   Kload   Init
78
79
  
  		$apps = array();
31b7f2792   Kload   Upgrade to ownclo...
80
81
  		while( $appid = $result->fetchColumn()) {
  			$apps[] = $appid;
03e52840d   Kload   Init
82
83
84
85
86
87
88
89
90
91
92
93
94
95
  		}
  
  		return $apps;
  	}
  
  	/**
  	 * @brief Get the available keys for an app
  	 * @param string $user user
  	 * @param string $app the app we are looking for
  	 * @return array with key names
  	 *
  	 * This function gets all keys of an app of an user. Please note that the
  	 * values are not returned.
  	 */
31b7f2792   Kload   Upgrade to ownclo...
96
97
98
  	public function getKeys( $user, $app ) {
  		$query = 'SELECT `configkey` FROM `*PREFIX*preferences` WHERE `userid` = ? AND `appid` = ?';
  		$result = $this->conn->executeQuery( $query, array( $user, $app ));
03e52840d   Kload   Init
99
100
  
  		$keys = array();
31b7f2792   Kload   Upgrade to ownclo...
101
102
  		while( $key = $result->fetchColumn()) {
  			$keys[] = $key;
03e52840d   Kload   Init
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
  		}
  
  		return $keys;
  	}
  
  	/**
  	 * @brief Gets the preference
  	 * @param string $user user
  	 * @param string $app app
  	 * @param string $key key
  	 * @param string $default = null, default value if the key does not exist
  	 * @return string the value or $default
  	 *
  	 * This function gets a value from the preferences table. If the key does
  	 * not exist the default value will be returned
  	 */
31b7f2792   Kload   Upgrade to ownclo...
119
  	public function getValue( $user, $app, $key, $default = null ) {
03e52840d   Kload   Init
120
  		// Try to fetch the value, return default if not exists.
31b7f2792   Kload   Upgrade to ownclo...
121
122
123
  		$query = 'SELECT `configvalue` FROM `*PREFIX*preferences`'
  			.' WHERE `userid` = ? AND `appid` = ? AND `configkey` = ?';
  		$row = $this->conn->fetchAssoc( $query, array( $user, $app, $key ));
03e52840d   Kload   Init
124
125
  		if($row) {
  			return $row["configvalue"];
31b7f2792   Kload   Upgrade to ownclo...
126
  		} else {
03e52840d   Kload   Init
127
128
129
130
131
132
133
134
135
136
  			return $default;
  		}
  	}
  
  	/**
  	 * @brief sets a value in the preferences
  	 * @param string $user user
  	 * @param string $app app
  	 * @param string $key key
  	 * @param string $value value
03e52840d   Kload   Init
137
138
139
140
  	 *
  	 * Adds a value to the preferences. If the key did not exist before, it
  	 * will be added automagically.
  	 */
31b7f2792   Kload   Upgrade to ownclo...
141
  	public function setValue( $user, $app, $key, $value ) {
03e52840d   Kload   Init
142
  		// Check if the key does exist
31b7f2792   Kload   Upgrade to ownclo...
143
144
145
146
  		$query = 'SELECT COUNT(*) FROM `*PREFIX*preferences`'
  			.' WHERE `userid` = ? AND `appid` = ? AND `configkey` = ?';
  		$count = $this->conn->fetchColumn( $query, array( $user, $app, $key ));
  		$exists = $count > 0;
03e52840d   Kload   Init
147
148
  
  		if( !$exists ) {
31b7f2792   Kload   Upgrade to ownclo...
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
  			$data = array(
  				'userid' => $user,
  				'appid' => $app,
  				'configkey' => $key,
  				'configvalue' => $value,
  			);
  			$this->conn->insert('*PREFIX*preferences', $data);
  		} else {
  			$data = array(
  				'configvalue' => $value,
  			);
  			$where = array(
  				'userid' => $user,
  				'appid' => $app,
  				'configkey' => $key,
  			);
  			$this->conn->update('*PREFIX*preferences', $data, $where);
03e52840d   Kload   Init
166
  		}
03e52840d   Kload   Init
167
168
169
170
171
172
173
  	}
  
  	/**
  	 * @brief Deletes a key
  	 * @param string $user user
  	 * @param string $app app
  	 * @param string $key key
03e52840d   Kload   Init
174
175
176
  	 *
  	 * Deletes a key.
  	 */
31b7f2792   Kload   Upgrade to ownclo...
177
178
179
180
181
182
183
  	public function deleteKey( $user, $app, $key ) {
  		$where = array(
  			'userid' => $user,
  			'appid' => $app,
  			'configkey' => $key,
  		);
  		$this->conn->delete('*PREFIX*preferences', $where);
03e52840d   Kload   Init
184
185
186
187
188
189
  	}
  
  	/**
  	 * @brief Remove app of user from preferences
  	 * @param string $user user
  	 * @param string $app app
03e52840d   Kload   Init
190
  	 *
31b7f2792   Kload   Upgrade to ownclo...
191
  	 * Removes all keys in preferences belonging to the app and the user.
03e52840d   Kload   Init
192
  	 */
31b7f2792   Kload   Upgrade to ownclo...
193
194
195
196
197
198
  	public function deleteApp( $user, $app ) {
  		$where = array(
  			'userid' => $user,
  			'appid' => $app,
  		);
  		$this->conn->delete('*PREFIX*preferences', $where);
03e52840d   Kload   Init
199
200
201
202
203
  	}
  
  	/**
  	 * @brief Remove user from preferences
  	 * @param string $user user
03e52840d   Kload   Init
204
  	 *
31b7f2792   Kload   Upgrade to ownclo...
205
  	 * Removes all keys in preferences belonging to the user.
03e52840d   Kload   Init
206
  	 */
31b7f2792   Kload   Upgrade to ownclo...
207
208
209
210
211
  	public function deleteUser( $user ) {
  		$where = array(
  			'userid' => $user,
  		);
  		$this->conn->delete('*PREFIX*preferences', $where);
03e52840d   Kload   Init
212
213
214
215
216
  	}
  
  	/**
  	 * @brief Remove app from all users
  	 * @param string $app app
03e52840d   Kload   Init
217
218
219
  	 *
  	 * Removes all keys in preferences belonging to the app.
  	 */
31b7f2792   Kload   Upgrade to ownclo...
220
221
222
223
224
  	public function deleteAppFromAllUsers( $app ) {
  		$where = array(
  			'appid' => $app,
  		);
  		$this->conn->delete('*PREFIX*preferences', $where);
03e52840d   Kload   Init
225
226
  	}
  }
31b7f2792   Kload   Upgrade to ownclo...
227
228
  
  require_once __DIR__.'/legacy/'.basename(__FILE__);