| Current Path : /var/www/iplanru/data/old/www/i-plan.ru/administrator/components/com_zoo/framework/helpers/ |
| Current File : /var/www/iplanru/data/old/www/i-plan.ru/administrator/components/com_zoo/framework/helpers/user.php |
<?php
/**
* @package ZOO
* @author YOOtheme http://www.yootheme.com
* @copyright Copyright (C) YOOtheme GmbH
* @license http://www.gnu.org/licenses/gpl.html GNU/GPL
*/
/**
* Helper to deal with user and user operations
*
* @package Framework.Helpers
*/
class UserAppHelper extends AppHelper {
protected $_queried_users = array();
/**
* Get the helper name
*
* @return string The name of the helper
*
* @since 1.0.0
*/
public function getName() {
return 'user';
}
/**
* Get a user object
*
* @param int The id of the user to retrieve (default: the current user)
*
* @return JUser The JUser object
*
* @since 1.0.0
*/
public function get($id = null) {
// get database
$db = $this->app->database;
// check if user id exists
if (!is_null($id) && !in_array($id, $this->_queried_users) && !$db->queryResult('SELECT id FROM #__users WHERE id = '.$db->getEscaped($id))) {
return null;
}
$this->_queried_users[$id] = $id;
// get user
$user = $this->_call(array('JFactory', 'getUser'), array($id));
// add super administrator var to user
$user->superadmin = $this->isJoomlaSuperAdmin($user);
return $user;
}
/**
* Retrieve a user by his username
*
* @param string $username The username
*
* @return JUser The JUser object
*
* @since 1.0.0
*/
public function getByUsername($username) {
// get database
$db = $this->app->database;
// search username
if ($id = $db->queryResult('SELECT id FROM #__users WHERE username = '.$db->Quote($username))) {
return $this->get($id);
}
return null;
}
/**
* Retrieve a user by his email
*
* @param string $email The email
*
* @return JUser The JUser object
*
* @since 1.0.0
*/
public function getByEmail($email) {
// get database
$db = $this->app->database;
// search email
if ($id = $db->queryResult('SELECT id FROM #__users WHERE email = '.$db->Quote($email))) {
return $this->get($id);
}
return null;
}
/**
* The a value from the user state
*
* @param string $key The name of the variable to retrieve
*
* @return mixed The value of the variable
*
* @since 1.0.0
*/
public function getState($key) {
$registry = $this->app->session->get('registry');
if (!is_null($registry)) {
return $registry->getValue($key);
}
return null;
}
/**
* Set a variable in the user state
*
* @param string $key The variable name
* @param mixed $value The value to set
*
* @return mixed The value of the variable
*
* @since 1.0.0
*/
public function setState($key, $value) {
$registry = $this->app->session->get('registry');
if (!is_null($registry)) {
return $registry->setValue($key, $value);
}
return null;
}
/**
* Get a value from the user state, checking also the request
*
* @param string $key The name of the variable
* @param string $request The name of the request variable
* @param mixed $default The default value
* @param string $type The type of the variable
*
* @return mixed The value of the variable
*
* @since 1.0.0
*/
public function getStateFromRequest($key, $request, $default = null, $type = 'none') {
$old = $this->getState($key);
$cur = (!is_null($old)) ? $old : $default;
$new = $this->app->request->getVar($request, null, 'default', $type);
if ($new !== null) {
$this->setState($key, $new);
} else {
$new = $cur;
}
return $new;
}
/**
* Check if a username already exists
*
* @param string $username The username to check
* @param int $id A id to confront with the loaded user id (default: 0)
*
* @return boolean If the username exists
*
* @since 1.0.0
*/
public function checkUsernameExists($username, $id = 0) {
$user = $this->getByUsername($username);
return $user && $user->id != intval($id);
}
/**
* Check if an email already exists
*
* @param string $email The email to check
* @param int $id A id to confront with the loaded user id (default: 0)
*
* @return boolean If the email exists
*
* @since 1.0.0
*/
public function checkEmailExists($email, $id = 0) {
$user = $this->getByEmail($email);
return $user && $user->id != intval($id);
}
/**
* Check if a user is a joomla administrator
*
* @param JUser $user The user to check
*
* @return boolean if the user is an administrator
*
* @since 1.0.0
*/
public function isJoomlaAdmin(JUser $user) {
if ($this->app->joomla->isVersion('1.5')) {
return in_array(strtolower($user->usertype), array('superadministrator', 'super administrator', 'administrator')) || $user->gid == 25 || $user->gid == 24;
} else {
return $user->authorise('core.login.admin');
}
}
/**
* Check if the user is a joomla super administrator
*
* @param JUser $user The user to check
*
* @return boolean If the user is a super administrator
*
* @since 1.0.0
*/
public function isJoomlaSuperAdmin(JUser $user) {
if ($this->app->joomla->isVersion('1.5')) {
return in_array(strtolower($user->usertype), array('superadministrator', 'super administrator')) || $user->gid == 25;
} else {
return $user->authorise('core.admin');
}
}
/**
* Get the user's browser default language
*
* @return string The language code
*
* @since 1.0.0
*/
public function getBrowserDefaultLanguage() {
$langs = array();
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
preg_match_all('/([a-z]{1,8}(-[a-z]{1,8})?)\s*(;\s*q\s*=\s*(1|0\.[0-9]+))?/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $lang_parse);
if (count($lang_parse[1])) {
$langs = array_combine($lang_parse[1], $lang_parse[4]);
foreach ($langs as $lang => $val) {
if ($val === '') $langs[$lang] = 1;
}
arsort($langs, SORT_NUMERIC);
}
}
return array_shift(explode('-', array_shift(array_keys($langs))));
}
/**
* Check if a user can access a resource
*
* @param JUser $user The user to check
* @param int $access The access level to check against
*
* @return boolean If the user have the rights to access that level
*
* @since 1.0.0
*/
public function canAccess($user = null, $access = 0) {
if (is_null($user)) {
$user = $this->get();
}
if ($this->app->joomla->isVersion('1.5')) {
return (int) $user->get('aid', 0) >= $access;
} else {
return in_array($access, $user->getAuthorisedViewLevels());
}
}
/**
* Wrapper method to get the users database access string
*
* @param JUser $user The user
*
* @return string The part of the sql query that checks the user rights
*
* @since 1.0.0
*/
public function getDBAccessString($user = null) {
if (is_null($user)) {
$user = $this->get();
}
if ($this->app->joomla->isVersion('1.5')) {
return "access <= ".(int) $user->get('aid', 0);
} else {
$groups = implode(',', $user->getAuthorisedViewLevels());
return "access IN ($groups)";
}
}
}