first commit
This commit is contained in:
@@ -0,0 +1,460 @@
|
||||
<?php
|
||||
/**
|
||||
* @defgroup user User
|
||||
* Implements data objects and DAOs concerned with managing user accounts.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file classes/user/User.php
|
||||
*
|
||||
* Copyright (c) 2014-2021 Simon Fraser University
|
||||
* Copyright (c) 2000-2021 John Willinsky
|
||||
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
|
||||
*
|
||||
* @class User
|
||||
*
|
||||
* @ingroup user
|
||||
*
|
||||
* @brief Basic class describing users existing in the system.
|
||||
*/
|
||||
|
||||
namespace PKP\user;
|
||||
|
||||
use PKP\db\DAORegistry;
|
||||
use PKP\identity\Identity;
|
||||
use PKP\security\RoleDAO;
|
||||
|
||||
class User extends Identity
|
||||
{
|
||||
/** @var array Roles assigned to this user grouped by context */
|
||||
protected $_roles = [];
|
||||
|
||||
//
|
||||
// Get/set methods
|
||||
//
|
||||
|
||||
/**
|
||||
* Get username.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getUsername()
|
||||
{
|
||||
return $this->getData('userName');
|
||||
}
|
||||
|
||||
/**
|
||||
* Set username.
|
||||
*
|
||||
* @param string $username
|
||||
*/
|
||||
public function setUsername($username)
|
||||
{
|
||||
$this->setData('userName', $username);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get implicit auth ID string.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getAuthStr()
|
||||
{
|
||||
return $this->getData('authStr');
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Shib ID string for this user.
|
||||
*
|
||||
* @param string $authStr
|
||||
*/
|
||||
public function setAuthStr($authStr)
|
||||
{
|
||||
$this->setData('authStr', $authStr);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get localized user signature.
|
||||
*/
|
||||
public function getLocalizedSignature()
|
||||
{
|
||||
return $this->getLocalizedData('signature');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get email signature.
|
||||
*
|
||||
* @param string $locale
|
||||
*
|
||||
* @return string|array<string,string>
|
||||
*/
|
||||
public function getSignature($locale)
|
||||
{
|
||||
return $this->getData('signature', $locale);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set signature.
|
||||
*
|
||||
* @param string $signature
|
||||
* @param string $locale
|
||||
*/
|
||||
public function setSignature($signature, $locale)
|
||||
{
|
||||
$this->setData('signature', $signature, $locale);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get password (encrypted).
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getPassword()
|
||||
{
|
||||
return $this->getData('password');
|
||||
}
|
||||
|
||||
/**
|
||||
* Set password (assumed to be already encrypted).
|
||||
*
|
||||
* @param string $password
|
||||
*/
|
||||
public function setPassword($password)
|
||||
{
|
||||
$this->setData('password', $password);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get phone number.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getPhone()
|
||||
{
|
||||
return $this->getData('phone');
|
||||
}
|
||||
|
||||
/**
|
||||
* Set phone number.
|
||||
*
|
||||
* @param string $phone
|
||||
*/
|
||||
public function setPhone($phone)
|
||||
{
|
||||
$this->setData('phone', $phone);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get mailing address.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getMailingAddress()
|
||||
{
|
||||
return $this->getData('mailingAddress');
|
||||
}
|
||||
|
||||
/**
|
||||
* Set mailing address.
|
||||
*
|
||||
* @param string $mailingAddress
|
||||
*/
|
||||
public function setMailingAddress($mailingAddress)
|
||||
{
|
||||
$this->setData('mailingAddress', $mailingAddress);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get billing address.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getBillingAddress()
|
||||
{
|
||||
return $this->getData('billingAddress');
|
||||
}
|
||||
|
||||
/**
|
||||
* Set billing address.
|
||||
*
|
||||
* @param string $billingAddress
|
||||
*/
|
||||
public function setBillingAddress($billingAddress)
|
||||
{
|
||||
$this->setData('billingAddress', $billingAddress);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the user's interests displayed as a comma-separated string
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getInterestString()
|
||||
{
|
||||
$interestManager = new InterestManager();
|
||||
return $interestManager->getInterestsString($this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get user gossip.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getGossip()
|
||||
{
|
||||
return $this->getData('gossip');
|
||||
}
|
||||
|
||||
/**
|
||||
* Set user gossip.
|
||||
*
|
||||
* @param string $gossip
|
||||
*/
|
||||
public function setGossip($gossip)
|
||||
{
|
||||
$this->setData('gossip', $gossip);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get user's working languages.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getLocales()
|
||||
{
|
||||
$locales = $this->getData('locales');
|
||||
return $locales ?? [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Set user's working languages.
|
||||
*
|
||||
* @param array $locales
|
||||
*/
|
||||
public function setLocales($locales)
|
||||
{
|
||||
$this->setData('locales', $locales);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get date user last sent an email.
|
||||
*
|
||||
* @return string (YYYY-MM-DD HH:MM:SS)
|
||||
*/
|
||||
public function getDateLastEmail()
|
||||
{
|
||||
return $this->getData('dateLastEmail');
|
||||
}
|
||||
|
||||
/**
|
||||
* Set date user last sent an email.
|
||||
*
|
||||
* @param string $dateLastEmail (YYYY-MM-DD HH:MM:SS)
|
||||
*/
|
||||
public function setDateLastEmail($dateLastEmail)
|
||||
{
|
||||
$this->setData('dateLastEmail', $dateLastEmail);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get date user registered with the site.
|
||||
*
|
||||
* @return string (YYYY-MM-DD HH:MM:SS)
|
||||
*/
|
||||
public function getDateRegistered()
|
||||
{
|
||||
return $this->getData('dateRegistered');
|
||||
}
|
||||
|
||||
/**
|
||||
* Set date user registered with the site.
|
||||
*
|
||||
* @param string $dateRegistered (YYYY-MM-DD HH:MM:SS)
|
||||
*/
|
||||
public function setDateRegistered($dateRegistered)
|
||||
{
|
||||
$this->setData('dateRegistered', $dateRegistered);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get date user email was validated with the site.
|
||||
*
|
||||
* @return string (YYYY-MM-DD HH:MM:SS)
|
||||
*/
|
||||
public function getDateValidated()
|
||||
{
|
||||
return $this->getData('dateValidated');
|
||||
}
|
||||
|
||||
/**
|
||||
* Set date user email was validated with the site.
|
||||
*
|
||||
* @param string $dateValidated (YYYY-MM-DD HH:MM:SS)
|
||||
*/
|
||||
public function setDateValidated($dateValidated)
|
||||
{
|
||||
$this->setData('dateValidated', $dateValidated);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get date user last logged in to the site.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getDateLastLogin()
|
||||
{
|
||||
return $this->getData('dateLastLogin');
|
||||
}
|
||||
|
||||
/**
|
||||
* Set date user last logged in to the site.
|
||||
*
|
||||
* @param string $dateLastLogin
|
||||
*/
|
||||
public function setDateLastLogin($dateLastLogin)
|
||||
{
|
||||
$this->setData('dateLastLogin', $dateLastLogin);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if user must change their password on their next login.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function getMustChangePassword()
|
||||
{
|
||||
return $this->getData('mustChangePassword');
|
||||
}
|
||||
|
||||
/**
|
||||
* Set whether or not user must change their password on their next login.
|
||||
*
|
||||
* @param bool $mustChangePassword
|
||||
*/
|
||||
public function setMustChangePassword($mustChangePassword)
|
||||
{
|
||||
$this->setData('mustChangePassword', $mustChangePassword);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if user is disabled.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function getDisabled()
|
||||
{
|
||||
return $this->getData('disabled');
|
||||
}
|
||||
|
||||
/**
|
||||
* Set whether or not user is disabled.
|
||||
*
|
||||
* @param bool $disabled
|
||||
*/
|
||||
public function setDisabled($disabled)
|
||||
{
|
||||
$this->setData('disabled', $disabled);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the reason the user was disabled.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getDisabledReason()
|
||||
{
|
||||
return $this->getData('disabledReason');
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the reason the user is disabled.
|
||||
*
|
||||
* @param string $reasonDisabled
|
||||
*/
|
||||
public function setDisabledReason($reasonDisabled)
|
||||
{
|
||||
$this->setData('disabledReason', $reasonDisabled);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the inline help display status for this user.
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getInlineHelp()
|
||||
{
|
||||
return $this->getData('inlineHelp');
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the inline help display status for this user.
|
||||
*
|
||||
* @param int $inlineHelp
|
||||
*/
|
||||
public function setInlineHelp($inlineHelp)
|
||||
{
|
||||
$this->setData('inlineHelp', $inlineHelp);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if this user has a role in a context
|
||||
*
|
||||
* @param int|array $roles Role(s) to check for
|
||||
* @param int $contextId The context to check for roles in.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function hasRole($roles, $contextId)
|
||||
{
|
||||
$contextRoles = $this->getRoles($contextId);
|
||||
|
||||
if (empty($contextRoles)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!is_array($roles)) {
|
||||
$roles = [$roles];
|
||||
}
|
||||
|
||||
foreach ($contextRoles as $contextRole) {
|
||||
if (in_array((int) $contextRole->getId(), $roles)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get this user's roles in a context
|
||||
*
|
||||
* @param int $contextId The context to retrieve roles in.
|
||||
* @param bool $noCache Force the roles to be retrieved from the database
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getRoles($contextId, $noCache = false)
|
||||
{
|
||||
if ($noCache || empty($this->_roles[$contextId])) {
|
||||
$userRolesDao = DAORegistry::getDAO('RoleDAO'); /** @var RoleDAO $userRolesDao */
|
||||
$this->setRoles($userRolesDao->getByUserId($this->getId(), $contextId), $contextId);
|
||||
}
|
||||
|
||||
return $this->_roles[$contextId] ?? [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Set this user's roles in a context
|
||||
*
|
||||
* @param array $roles The roles to assign this user
|
||||
* @param int $contextId The context to assign these roles
|
||||
*/
|
||||
public function setRoles($roles, $contextId)
|
||||
{
|
||||
$this->_roles[$contextId] = $roles;
|
||||
}
|
||||
}
|
||||
|
||||
if (!PKP_STRICT_MODE) {
|
||||
class_alias('\PKP\user\User', '\User');
|
||||
}
|
||||
Reference in New Issue
Block a user