first commit
This commit is contained in:
@@ -0,0 +1,257 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file classes/author/Author.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 \PKP\author\Author
|
||||
*
|
||||
* @ingroup author
|
||||
*
|
||||
* @see DAO
|
||||
*
|
||||
* @brief Author metadata class.
|
||||
*/
|
||||
|
||||
namespace PKP\author;
|
||||
|
||||
use APP\facades\Repo;
|
||||
use PKP\facades\Locale;
|
||||
use PKP\identity\Identity;
|
||||
|
||||
class Author extends Identity
|
||||
{
|
||||
/**
|
||||
* Get the default/fall back locale the values should exist for
|
||||
*/
|
||||
public function getDefaultLocale(): ?string
|
||||
{
|
||||
return $this->getSubmissionLocale();
|
||||
}
|
||||
|
||||
/**
|
||||
* @copydoc Identity::getLocalizedGivenName()
|
||||
*/
|
||||
public function getLocalizedGivenName()
|
||||
{
|
||||
return $this->getLocalizedData(self::IDENTITY_SETTING_GIVENNAME);
|
||||
}
|
||||
|
||||
/**
|
||||
* @copydoc Identity::getLocalizedFamilyName()
|
||||
*/
|
||||
public function getLocalizedFamilyName()
|
||||
{
|
||||
// Prioritize the current locale, then the default locale.
|
||||
$locale = Locale::getLocale();
|
||||
$givenName = $this->getGivenName($locale);
|
||||
// Only use the family name if a given name exists (to avoid mixing locale data)
|
||||
if (!empty($givenName)) {
|
||||
return $this->getFamilyName($locale);
|
||||
}
|
||||
// Fall back on the submission locale.
|
||||
return $this->getFamilyName($this->getSubmissionLocale());
|
||||
}
|
||||
|
||||
//
|
||||
// Get/set methods
|
||||
//
|
||||
|
||||
/**
|
||||
* Get ID of submission.
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getSubmissionId()
|
||||
{
|
||||
return $this->getData('submissionId');
|
||||
}
|
||||
|
||||
/**
|
||||
* Set ID of submission.
|
||||
*
|
||||
* @param int $submissionId
|
||||
*/
|
||||
public function setSubmissionId($submissionId)
|
||||
{
|
||||
$this->setData('submissionId', $submissionId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get submission locale.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getSubmissionLocale()
|
||||
{
|
||||
return $this->getData('locale');
|
||||
}
|
||||
|
||||
/**
|
||||
* Set submission locale.
|
||||
*
|
||||
* @param string $locale
|
||||
*/
|
||||
public function setSubmissionLocale($locale)
|
||||
{
|
||||
return $this->setData('locale', $locale);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the user group id
|
||||
*
|
||||
* @param int $userGroupId
|
||||
*/
|
||||
public function setUserGroupId($userGroupId)
|
||||
{
|
||||
$this->setData('userGroupId', $userGroupId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the user group id
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getUserGroupId()
|
||||
{
|
||||
return $this->getData('userGroupId');
|
||||
}
|
||||
|
||||
/**
|
||||
* Set whether or not to include in browse lists.
|
||||
*
|
||||
* @param bool $include
|
||||
*/
|
||||
public function setIncludeInBrowse($include)
|
||||
{
|
||||
$this->setData('includeInBrowse', $include);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get whether or not to include in browse lists.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function getIncludeInBrowse()
|
||||
{
|
||||
return $this->getData('includeInBrowse');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the "show title" flag (whether or not the title of the role
|
||||
* should be included in the list of submission contributor names).
|
||||
* This is fetched from the user group for performance reasons.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function getShowTitle()
|
||||
{
|
||||
return $this->getData('showTitle');
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the "show title" flag. This attribute belongs to the user group,
|
||||
* NOT the author; fetched for performance reasons only.
|
||||
*
|
||||
* @param bool $showTitle
|
||||
*/
|
||||
public function _setShowTitle($showTitle)
|
||||
{
|
||||
$this->setData('showTitle', $showTitle);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get primary contact.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function getPrimaryContact()
|
||||
{
|
||||
return $this->getData('primaryContact');
|
||||
}
|
||||
|
||||
/**
|
||||
* Set primary contact.
|
||||
*
|
||||
* @param bool $primaryContact
|
||||
*/
|
||||
public function setPrimaryContact($primaryContact)
|
||||
{
|
||||
$this->setData('primaryContact', $primaryContact);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get sequence of author in submissions' author list.
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
public function getSequence()
|
||||
{
|
||||
return $this->getData('seq');
|
||||
}
|
||||
|
||||
/**
|
||||
* Set sequence of author in submissions' author list.
|
||||
*
|
||||
* @param float $sequence
|
||||
*/
|
||||
public function setSequence($sequence)
|
||||
{
|
||||
$this->setData('seq', $sequence);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the user group for this contributor.
|
||||
*
|
||||
* @return \PKP\userGroup\UserGroup
|
||||
*/
|
||||
public function getUserGroup()
|
||||
{
|
||||
//FIXME: should this be queried when fetching Author from DB? - see #5231.
|
||||
static $userGroup; // Frequently we'll fetch the same one repeatedly
|
||||
if (!$userGroup || $this->getUserGroupId() != $userGroup->getId()) {
|
||||
$userGroup = Repo::userGroup()->get($this->getUserGroupId());
|
||||
}
|
||||
return $userGroup;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a localized version of the User Group
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getLocalizedUserGroupName()
|
||||
{
|
||||
$userGroup = $this->getUserGroup();
|
||||
return $userGroup->getLocalizedName();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get competing interests.
|
||||
* @return string|array|null
|
||||
*/
|
||||
function getCompetingInterests(?string $locale)
|
||||
{
|
||||
return $this->getData('competingInterests', $locale);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set competing interests.
|
||||
* @param $competingInterests string|array|null
|
||||
*/
|
||||
function setCompetingInterests($competingInterests, ?string $locale)
|
||||
{
|
||||
$this->setData('competingInterests', $competingInterests, $locale);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a localized version competing interest statement
|
||||
*/
|
||||
function getLocalizedCompetingInterests(): ?string
|
||||
{
|
||||
return $this->getLocalizedData('competingInterests');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user