Blame view
sources/lib/private/preferences.php
5.85 KB
|
03e52840d
|
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
|
36 37 38 |
namespace OC; use \OC\DB\Connection; |
|
03e52840d
|
39 40 41 |
/** * This class provides an easy way for storing user preferences. */ |
|
31b7f2792
|
42 43 44 45 46 47 |
class Preferences {
protected $conn;
public function __construct(Connection $conn) {
$this->conn = $conn;
}
|
|
03e52840d
|
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
|
55 56 57 |
public function getUsers() {
$query = 'SELECT DISTINCT `userid` FROM `*PREFIX*preferences`';
$result = $this->conn->executeQuery( $query );
|
|
03e52840d
|
58 59 |
$users = array(); |
|
31b7f2792
|
60 61 |
while( $userid = $result->fetchColumn()) {
$users[] = $userid;
|
|
03e52840d
|
62 63 64 65 66 67 |
} return $users; } /** |
|
31b7f2792
|
68 |
* @brief Get all apps of an user |
|
03e52840d
|
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
|
75 76 77 |
public function getApps( $user ) {
$query = 'SELECT DISTINCT `appid` FROM `*PREFIX*preferences` WHERE `userid` = ?';
$result = $this->conn->executeQuery( $query, array( $user ) );
|
|
03e52840d
|
78 79 |
$apps = array(); |
|
31b7f2792
|
80 81 |
while( $appid = $result->fetchColumn()) {
$apps[] = $appid;
|
|
03e52840d
|
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
|
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
|
99 100 |
$keys = array(); |
|
31b7f2792
|
101 102 |
while( $key = $result->fetchColumn()) {
$keys[] = $key;
|
|
03e52840d
|
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
|
119 |
public function getValue( $user, $app, $key, $default = null ) {
|
|
03e52840d
|
120 |
// Try to fetch the value, return default if not exists. |
|
31b7f2792
|
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
|
124 125 |
if($row) {
return $row["configvalue"];
|
|
31b7f2792
|
126 |
} else {
|
|
03e52840d
|
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
|
137 138 139 140 |
* * Adds a value to the preferences. If the key did not exist before, it * will be added automagically. */ |
|
31b7f2792
|
141 |
public function setValue( $user, $app, $key, $value ) {
|
|
03e52840d
|
142 |
// Check if the key does exist |
|
31b7f2792
|
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
|
147 148 |
if( !$exists ) {
|
|
31b7f2792
|
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
|
166 |
} |
|
03e52840d
|
167 168 169 170 171 172 173 |
} /** * @brief Deletes a key * @param string $user user * @param string $app app * @param string $key key |
|
03e52840d
|
174 175 176 |
* * Deletes a key. */ |
|
31b7f2792
|
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
|
184 185 186 187 188 189 |
} /** * @brief Remove app of user from preferences * @param string $user user * @param string $app app |
|
03e52840d
|
190 |
* |
|
31b7f2792
|
191 |
* Removes all keys in preferences belonging to the app and the user. |
|
03e52840d
|
192 |
*/ |
|
31b7f2792
|
193 194 195 196 197 198 |
public function deleteApp( $user, $app ) {
$where = array(
'userid' => $user,
'appid' => $app,
);
$this->conn->delete('*PREFIX*preferences', $where);
|
|
03e52840d
|
199 200 201 202 203 |
} /** * @brief Remove user from preferences * @param string $user user |
|
03e52840d
|
204 |
* |
|
31b7f2792
|
205 |
* Removes all keys in preferences belonging to the user. |
|
03e52840d
|
206 |
*/ |
|
31b7f2792
|
207 208 209 210 211 |
public function deleteUser( $user ) {
$where = array(
'userid' => $user,
);
$this->conn->delete('*PREFIX*preferences', $where);
|
|
03e52840d
|
212 213 214 215 216 |
} /** * @brief Remove app from all users * @param string $app app |
|
03e52840d
|
217 218 219 |
* * Removes all keys in preferences belonging to the app. */ |
|
31b7f2792
|
220 221 222 223 224 |
public function deleteAppFromAllUsers( $app ) {
$where = array(
'appid' => $app,
);
$this->conn->delete('*PREFIX*preferences', $where);
|
|
03e52840d
|
225 226 |
} } |
|
31b7f2792
|
227 228 |
require_once __DIR__.'/legacy/'.basename(__FILE__); |