Fix bug #2674961: editAllowed optimization - make less queries for each bookmark
git-svn-id: https://semanticscuttle.svn.sourceforge.net/svnroot/semanticscuttle/trunk@366 b3834d28-1941-0410-a4f8-b48e95affb8f
This commit is contained in:
parent
f05dad73e0
commit
724d9fa421
2 changed files with 47 additions and 18 deletions
|
@ -97,22 +97,38 @@ class BookmarkService {
|
|||
return $this->db->sql_fetchfield(0, 0);
|
||||
}
|
||||
|
||||
function editAllowed($bookmark) {
|
||||
if (!is_numeric($bookmark) && (!is_array($bookmark) || !is_numeric($bookmark['bId'])))
|
||||
/**
|
||||
* Check if a bookmark may be edited by the current user
|
||||
*
|
||||
* @param integer|array $bookmark Bookmark uId or bookmark array
|
||||
*
|
||||
* @return boolean True if allowed
|
||||
*/
|
||||
function editAllowed($bookmark)
|
||||
{
|
||||
if (!is_numeric($bookmark) && (!is_array($bookmark)
|
||||
|| !is_numeric($bookmark['bId']))
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!is_array($bookmark))
|
||||
if (!($bookmark = $this->getBookmark($bookmark)))
|
||||
if (!is_array($bookmark)
|
||||
&& !($bookmark = $this->getBookmark($bookmark))
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$userservice = & ServiceFactory :: getServiceInstance('UserService');
|
||||
$userid = $userservice->getCurrentUserId();
|
||||
if(!is_numeric($userid))
|
||||
return false; // useful for few servers configuration (see brunaud bugs)
|
||||
if ($GLOBALS['adminsCanModifyBookmarksFromOtherUsers'] && $userservice->isAdmin($userid) && !$userservice->isAdmin($bookmark['uId']))
|
||||
$userservice = & ServiceFactory::getServiceInstance('UserService');
|
||||
$user = $userservice->getCurrentUser();
|
||||
|
||||
//user has to be either admin, or owner
|
||||
if ($GLOBALS['adminsCanModifyBookmarksFromOtherUsers']
|
||||
&& $userservice->isAdmin($user)
|
||||
) {
|
||||
return true;
|
||||
else
|
||||
return ($bookmark['uId'] == $userid);
|
||||
} else {
|
||||
return ($bookmark['uId'] == $user['uId']);
|
||||
}
|
||||
}
|
||||
|
||||
function bookmarkExists($address = false, $uid = NULL) {
|
||||
|
|
|
@ -213,11 +213,24 @@ class UserService {
|
|||
}
|
||||
}
|
||||
|
||||
function isAdmin($userid) {
|
||||
$user = $this->getUser($userid);
|
||||
/**
|
||||
* Checks if the given user is an administrator.
|
||||
* Uses global admin_users property containing admin
|
||||
* user names
|
||||
*
|
||||
* @param integer|array $user User ID or user row from DB
|
||||
*
|
||||
* @return boolean True if the user is admin
|
||||
*/
|
||||
function isAdmin($user)
|
||||
{
|
||||
if (is_numeric($user)) {
|
||||
$user = $this->getUser($user);
|
||||
}
|
||||
|
||||
if(isset($GLOBALS['admin_users'])
|
||||
&& in_array($user['username'], $GLOBALS['admin_users'])) {
|
||||
if (isset($GLOBALS['admin_users'])
|
||||
&& in_array($user['username'], $GLOBALS['admin_users'])
|
||||
) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
|
|
Loading…
Reference in a new issue