<?php
/***************************************************************************
- * Copyright (C) 2003-2011 Polytechnique.org *
+ * Copyright (C) 2003-2014 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
const PERM_API_USER_READONLY = 'api_user_readonly';
const PERM_DIRECTORY_AX = 'directory_ax';
const PERM_DIRECTORY_PRIVATE = 'directory_private';
+ const PERM_DIRECTORY_HIDDEN = 'directory_hidden';
const PERM_EDIT_DIRECTORY = 'edit_directory';
const PERM_FORUMS = 'forums';
const PERM_GROUPS = 'groups';
FIND_IN_SET(\'watch\', a.flags) AS watch, a.comment,
a.weak_password IS NOT NULL AS weak_access, g.g_account_name IS NOT NULL AS googleapps,
a.token IS NOT NULL AS token_access, a.token, a.last_version,
- UNIX_TIMESTAMP(s.start) AS lastlogin, s.host, UNIX_TIMESTAMP(fp.last_seen) AS banana_last
+ s.start AS lastlogin, s.host, fp.last_seen AS banana_last
' . $fields . '
FROM accounts AS a
INNER JOIN account_types AS at ON (at.type = a.type)
*
* Rules are:
* - Everyone can view 'public'
- * - directory_ax gives access to 'AX' level
+ * - directory_ax gives access to 'AX' level, ie. the printed directory
* - directory_private gives access to 'private' level
- * - admin gives access to 'hidden' level
+ * - admin and directory_hidden gives access to 'hidden' level
*/
public function readVisibility()
{
$level = Visibility::VIEW_NONE;
- if ($this->is_admin) {
+ if ($this->is_admin || $this->checkPerms('directory_hidden')) {
$level = Visibility::VIEW_ADMIN;
} elseif ($this->checkPerms('directory_private')) {
$level = Visibility::VIEW_PRIVATE;
if (!$this->_profile_fetched || $forceFetch) {
$this->_profile_fetched = true;
$this->_profile = Profile::get($this, $fields, $visibility);
- } else if ($this->_profile !== null && !$this->_profile->visibility->equals($visibility)) {
+ } else if ($this->_profile !== null && $visibility !== null && !$this->_profile->visibility->equals($visibility)) {
return Profile::get($this, $fields, $visibility);
}
return $this->_profile;
}
+ public function setPrefetchedProfile(Profile $profile)
+ {
+ $this->_profile_fetched = true;
+ $this->_profile = $profile;
+ }
+
/** Return true if the user has an associated profile.
*/
public function hasProfile()
}
}
-// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker fenc=utf-8:
?>