2011-03-03 23:55:32 +03:00
|
|
|
<?php
|
2011-03-12 12:28:10 +03:00
|
|
|
/**
|
|
|
|
* ownCloud
|
|
|
|
*
|
|
|
|
* @author Frank Karlitschek
|
|
|
|
* @author Jakob Sack
|
2012-05-26 21:14:24 +04:00
|
|
|
* @copyright 2012 Frank Karlitschek frank@owncloud.org
|
2011-03-12 12:28:10 +03:00
|
|
|
*
|
|
|
|
* 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 ,
|
2011-05-15 17:03:12 +04:00
|
|
|
* `configkey` VARCHAR( 255 ) NOT NULL ,
|
|
|
|
* `configvalue` VARCHAR( 255 ) NOT NULL
|
2011-03-12 12:28:10 +03:00
|
|
|
* )
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
2013-03-03 15:04:29 +04:00
|
|
|
namespace OC;
|
|
|
|
|
2014-09-10 15:11:04 +04:00
|
|
|
use OCP\IDBConnection;
|
2013-03-03 15:04:29 +04:00
|
|
|
|
|
|
|
|
2011-03-12 12:28:10 +03:00
|
|
|
/**
|
|
|
|
* This class provides an easy way for storing user preferences.
|
2014-11-19 14:18:32 +03:00
|
|
|
* @deprecated use \OCP\IConfig methods instead
|
2011-03-12 12:28:10 +03:00
|
|
|
*/
|
2013-03-03 15:04:29 +04:00
|
|
|
class Preferences {
|
|
|
|
|
2014-02-18 14:20:16 +04:00
|
|
|
/**
|
2014-02-18 17:26:27 +04:00
|
|
|
* 3 dimensional array with the following structure:
|
|
|
|
* [ $userId =>
|
|
|
|
* [ $appId =>
|
|
|
|
* [ $key => $value ]
|
|
|
|
* ]
|
|
|
|
* ]
|
|
|
|
*
|
2014-02-18 14:20:16 +04:00
|
|
|
* @var array $cache
|
|
|
|
*/
|
|
|
|
protected $cache = array();
|
|
|
|
|
2014-11-19 14:18:32 +03:00
|
|
|
/** @var \OCP\IConfig */
|
|
|
|
protected $config;
|
|
|
|
|
2014-02-18 14:20:16 +04:00
|
|
|
/**
|
2014-09-10 15:11:04 +04:00
|
|
|
* @param \OCP\IDBConnection $conn
|
2014-02-18 14:20:16 +04:00
|
|
|
*/
|
2014-09-10 15:11:04 +04:00
|
|
|
public function __construct(IDBConnection $conn) {
|
2014-11-19 14:18:32 +03:00
|
|
|
$this->config = \OC::$server->getConfig();
|
2014-11-21 00:02:26 +03:00
|
|
|
}
|
|
|
|
|
2011-03-12 12:28:10 +03:00
|
|
|
/**
|
2014-05-19 19:50:53 +04:00
|
|
|
* Get the available keys for an app
|
2012-09-23 04:39:11 +04:00
|
|
|
* @param string $user user
|
|
|
|
* @param string $app the app we are looking for
|
2014-05-11 21:13:51 +04:00
|
|
|
* @return array an array of key names
|
2014-11-19 14:18:32 +03:00
|
|
|
* @deprecated use getUserKeys of \OCP\IConfig instead
|
2011-03-12 12:28:10 +03:00
|
|
|
*
|
|
|
|
* This function gets all keys of an app of an user. Please note that the
|
|
|
|
* values are not returned.
|
|
|
|
*/
|
2014-02-18 14:20:16 +04:00
|
|
|
public function getKeys($user, $app) {
|
2014-11-19 14:18:32 +03:00
|
|
|
return $this->config->getUserKeys($user, $app);
|
2011-03-12 12:28:10 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2014-05-19 19:50:53 +04:00
|
|
|
* Gets the preference
|
2012-09-23 04:39:11 +04:00
|
|
|
* @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
|
2014-11-19 14:18:32 +03:00
|
|
|
* @deprecated use getUserValue of \OCP\IConfig instead
|
2011-03-12 12:28:10 +03:00
|
|
|
*
|
2012-09-23 04:39:11 +04:00
|
|
|
* This function gets a value from the preferences table. If the key does
|
|
|
|
* not exist the default value will be returned
|
2011-03-12 12:28:10 +03:00
|
|
|
*/
|
2014-02-18 14:20:16 +04:00
|
|
|
public function getValue($user, $app, $key, $default = null) {
|
2014-11-19 14:18:32 +03:00
|
|
|
return $this->config->getUserValue($user, $app, $key, $default);
|
2011-03-03 23:55:32 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2014-05-19 19:50:53 +04:00
|
|
|
* sets a value in the preferences
|
2012-09-23 04:39:11 +04:00
|
|
|
* @param string $user user
|
|
|
|
* @param string $app app
|
|
|
|
* @param string $key key
|
|
|
|
* @param string $value value
|
2014-05-06 21:18:57 +04:00
|
|
|
* @param string $preCondition only set value if the key had a specific value before
|
|
|
|
* @return bool true if value was set, otherwise false
|
2014-11-19 14:18:32 +03:00
|
|
|
* @deprecated use setUserValue of \OCP\IConfig instead
|
2011-03-12 12:28:10 +03:00
|
|
|
*
|
|
|
|
* Adds a value to the preferences. If the key did not exist before, it
|
|
|
|
* will be added automagically.
|
2011-03-03 23:55:32 +03:00
|
|
|
*/
|
2014-05-06 21:18:57 +04:00
|
|
|
public function setValue($user, $app, $key, $value, $preCondition = null) {
|
2014-11-19 14:18:32 +03:00
|
|
|
return $this->config->setUserValue($user, $app, $key, $value);
|
2014-05-06 21:18:57 +04:00
|
|
|
|
2014-11-19 14:18:32 +03:00
|
|
|
// TODO maybe catch exceptions and then return false
|
|
|
|
return true;
|
2011-03-12 12:28:10 +03:00
|
|
|
}
|
|
|
|
|
2014-05-21 13:11:47 +04:00
|
|
|
/**
|
|
|
|
* Gets the preference for an array of users
|
|
|
|
* @param string $app
|
|
|
|
* @param string $key
|
|
|
|
* @param array $users
|
|
|
|
* @return array Mapped values: userid => value
|
2014-11-19 14:18:32 +03:00
|
|
|
* @deprecated use getUserValueForUsers of \OCP\IConfig instead
|
2014-05-21 13:11:47 +04:00
|
|
|
*/
|
|
|
|
public function getValueForUsers($app, $key, $users) {
|
2014-11-19 14:18:32 +03:00
|
|
|
return $this->config->getUserValueForUsers($app, $key, $users);
|
2014-05-21 13:11:47 +04:00
|
|
|
}
|
|
|
|
|
2014-06-05 13:49:13 +04:00
|
|
|
/**
|
|
|
|
* Gets the users for a preference
|
|
|
|
* @param string $app
|
|
|
|
* @param string $key
|
|
|
|
* @param string $value
|
|
|
|
* @return array
|
2014-11-19 14:18:32 +03:00
|
|
|
* @deprecated use getUsersForUserValue of \OCP\IConfig instead
|
2014-06-05 13:49:13 +04:00
|
|
|
*/
|
|
|
|
public function getUsersForValue($app, $key, $value) {
|
2014-11-19 14:18:32 +03:00
|
|
|
return $this->config->getUsersForUserValue($app, $key, $value);
|
2014-06-05 13:49:13 +04:00
|
|
|
}
|
|
|
|
|
2011-03-12 12:28:10 +03:00
|
|
|
/**
|
2014-05-19 19:50:53 +04:00
|
|
|
* Deletes a key
|
2012-09-23 04:39:11 +04:00
|
|
|
* @param string $user user
|
|
|
|
* @param string $app app
|
|
|
|
* @param string $key key
|
2014-11-19 14:18:32 +03:00
|
|
|
* @deprecated use deleteUserValue of \OCP\IConfig instead
|
2011-03-12 12:28:10 +03:00
|
|
|
*
|
|
|
|
* Deletes a key.
|
|
|
|
*/
|
2014-02-18 14:20:16 +04:00
|
|
|
public function deleteKey($user, $app, $key) {
|
2014-11-19 14:18:32 +03:00
|
|
|
$this->config->deleteUserValue($user, $app, $key);
|
2011-03-12 12:28:10 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2014-05-19 19:50:53 +04:00
|
|
|
* Remove user from preferences
|
2012-09-23 04:39:11 +04:00
|
|
|
* @param string $user user
|
2014-11-19 14:18:32 +03:00
|
|
|
* @deprecated use deleteAllUserValues of \OCP\IConfig instead
|
2011-03-12 12:28:10 +03:00
|
|
|
*
|
2013-03-03 15:04:29 +04:00
|
|
|
* Removes all keys in preferences belonging to the user.
|
2011-03-12 12:28:10 +03:00
|
|
|
*/
|
2014-02-18 14:20:16 +04:00
|
|
|
public function deleteUser($user) {
|
2014-11-19 14:18:32 +03:00
|
|
|
$this->config->deleteAllUserValues($user);
|
2011-03-12 12:28:10 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2014-05-19 19:50:53 +04:00
|
|
|
* Remove app from all users
|
2012-09-23 04:39:11 +04:00
|
|
|
* @param string $app app
|
2014-11-19 14:18:32 +03:00
|
|
|
* @deprecated use deleteAppFromAllUsers of \OCP\IConfig instead
|
2011-03-12 12:28:10 +03:00
|
|
|
*
|
|
|
|
* Removes all keys in preferences belonging to the app.
|
|
|
|
*/
|
2014-02-18 14:20:16 +04:00
|
|
|
public function deleteAppFromAllUsers($app) {
|
2014-11-19 14:18:32 +03:00
|
|
|
$this->config->deleteAppFromAllUsers($app);
|
2011-03-03 23:55:32 +03:00
|
|
|
}
|
|
|
|
}
|