Skip to content

Commit

Permalink
*8095* move remaining OMP UserGroupDAO functionality to pkp-lib
Browse files Browse the repository at this point in the history
  • Loading branch information
jnugent committed Feb 4, 2013
1 parent bfcfb42 commit 5676fa7
Show file tree
Hide file tree
Showing 2 changed files with 130 additions and 24 deletions.
1 change: 1 addition & 0 deletions classes/core/PKPApplication.inc.php
Expand Up @@ -334,6 +334,7 @@ function getDAOMap() {
'SubmissionSubjectEntryDAO' => 'lib.pkp.classes.submission.SubmissionSubjectEntryDAO',
'TimeZoneDAO' => 'lib.pkp.classes.i18n.TimeZoneDAO',
'TemporaryFileDAO' => 'lib.pkp.classes.file.TemporaryFileDAO',
'UserGroupDAO' => 'lib.pkp.classes.security.UserGroupDAO',
'VersionDAO' => 'lib.pkp.classes.site.VersionDAO',
'XMLDAO' => 'lib.pkp.classes.db.XMLDAO'
);
Expand Down
@@ -1,12 +1,12 @@
<?php

/**
* @file classes/security/PKPUserGroupDAO.inc.php
* @file classes/security/UserGroupDAO.inc.php
*
* Copyright (c) 2003-2012 John Willinsky
* Distributed under the GNU GPL v2. For full terms see the file docs/COPYING.
*
* @class PKPUserGroupDAO
* @class UserGroupDAO
* @ingroup security
* @see UserGroup
*
Expand All @@ -19,7 +19,7 @@

import('lib.pkp.classes.security.UserGroup');

class PKPUserGroupDAO extends DAO {
class UserGroupDAO extends DAO {
/** @var a shortcut to get the UserDAO **/
var $userDao;

Expand All @@ -29,7 +29,7 @@ class PKPUserGroupDAO extends DAO {
/**
* Constructor.
*/
function PKPUserGroupDAO() {
function UserGroupDAO() {
parent::DAO();
$this->userDao =& DAORegistry::getDAO('UserDAO');
$this->userGroupAssignmentDao =& DAORegistry::getDAO('UserGroupAssignmentDAO');
Expand All @@ -47,7 +47,7 @@ function &newDataObject() {
/**
* Internal function to return a UserGroup object from a row.
* @param $row array
* @return PKPUserGroup
* @return UserGroup
*/
function &_returnFromRow($row) {
$userGroup =& $this->newDataObject();
Expand All @@ -59,7 +59,7 @@ function &_returnFromRow($row) {

$this->getDataObjectSettings('user_group_settings', 'user_group_id', $row['user_group_id'], $userGroup);

HookRegistry::call('PKPUserGroupDAO::_returnFromRow', array(&$userGroup, &$row));
HookRegistry::call('UserGroupDAO::_returnFromRow', array(&$userGroup, &$row));

return $userGroup;
}
Expand Down Expand Up @@ -849,11 +849,11 @@ function _getSearchSql($searchType, $search, $searchMatch, &$paramArray) {
*/
function getPathFromId($stageId) {
static $stageMapping = array(
WORKFLOW_STAGE_ID_SUBMISSION => WORKFLOW_STAGE_PATH_SUBMISSION,
WORKFLOW_STAGE_ID_INTERNAL_REVIEW => WORKFLOW_STAGE_PATH_INTERNAL_REVIEW,
WORKFLOW_STAGE_ID_EXTERNAL_REVIEW => WORKFLOW_STAGE_PATH_EXTERNAL_REVIEW,
WORKFLOW_STAGE_ID_EDITING => WORKFLOW_STAGE_PATH_EDITING,
WORKFLOW_STAGE_ID_PRODUCTION => WORKFLOW_STAGE_PATH_PRODUCTION
WORKFLOW_STAGE_ID_SUBMISSION => WORKFLOW_STAGE_PATH_SUBMISSION,
WORKFLOW_STAGE_ID_INTERNAL_REVIEW => WORKFLOW_STAGE_PATH_INTERNAL_REVIEW,
WORKFLOW_STAGE_ID_EXTERNAL_REVIEW => WORKFLOW_STAGE_PATH_EXTERNAL_REVIEW,
WORKFLOW_STAGE_ID_EDITING => WORKFLOW_STAGE_PATH_EDITING,
WORKFLOW_STAGE_ID_PRODUCTION => WORKFLOW_STAGE_PATH_PRODUCTION
);
if (isset($stageMapping[$stageId])) {
return $stageMapping[$stageId];
Expand All @@ -869,11 +869,11 @@ function getPathFromId($stageId) {
*/
function getIdFromPath($stagePath) {
static $stageMapping = array(
WORKFLOW_STAGE_PATH_SUBMISSION => WORKFLOW_STAGE_ID_SUBMISSION,
WORKFLOW_STAGE_PATH_INTERNAL_REVIEW => WORKFLOW_STAGE_ID_INTERNAL_REVIEW,
WORKFLOW_STAGE_PATH_EXTERNAL_REVIEW => WORKFLOW_STAGE_ID_EXTERNAL_REVIEW,
WORKFLOW_STAGE_PATH_EDITING => WORKFLOW_STAGE_ID_EDITING,
WORKFLOW_STAGE_PATH_PRODUCTION => WORKFLOW_STAGE_ID_PRODUCTION
WORKFLOW_STAGE_PATH_SUBMISSION => WORKFLOW_STAGE_ID_SUBMISSION,
WORKFLOW_STAGE_PATH_INTERNAL_REVIEW => WORKFLOW_STAGE_ID_INTERNAL_REVIEW,
WORKFLOW_STAGE_PATH_EXTERNAL_REVIEW => WORKFLOW_STAGE_ID_EXTERNAL_REVIEW,
WORKFLOW_STAGE_PATH_EDITING => WORKFLOW_STAGE_ID_EDITING,
WORKFLOW_STAGE_PATH_PRODUCTION => WORKFLOW_STAGE_ID_PRODUCTION
);
if (isset($stageMapping[$stagePath])) {
return $stageMapping[$stagePath];
Expand All @@ -900,11 +900,11 @@ function getTranslationKeyFromId($stageId) {
*/
static function getWorkflowStageTranslationKeys() {
static $stageMapping = array(
WORKFLOW_STAGE_ID_SUBMISSION => 'submission.submission',
WORKFLOW_STAGE_ID_INTERNAL_REVIEW => 'workflow.review.internalReview',
WORKFLOW_STAGE_ID_EXTERNAL_REVIEW => 'workflow.review.externalReview',
WORKFLOW_STAGE_ID_EDITING => 'submission.editorial',
WORKFLOW_STAGE_ID_PRODUCTION => 'submission.production'
WORKFLOW_STAGE_ID_SUBMISSION => 'submission.submission',
WORKFLOW_STAGE_ID_INTERNAL_REVIEW => 'workflow.review.internalReview',
WORKFLOW_STAGE_ID_EXTERNAL_REVIEW => 'workflow.review.externalReview',
WORKFLOW_STAGE_ID_EDITING => 'submission.editorial',
WORKFLOW_STAGE_ID_PRODUCTION => 'submission.production'
);

return $stageMapping;
Expand All @@ -920,14 +920,119 @@ function getWorkflowStageKeysAndPaths() {
$stageMapping = array();
foreach ($workflowStages as $stageId => $translationKey) {
$stageMapping[$stageId] = array(
'id' => $stageId,
'translationKey' => $translationKey,
'path' => $this->getPathFromId($stageId)
'id' => $stageId,
'translationKey' => $translationKey,
'path' => $this->getPathFromId($stageId)
);
}

return $stageMapping;
}


/**
* Get the user groups assigned to each stage. Provide the ability to omit authors and reviewers
* Since these are typically stored differently and displayed in different circumstances
* @param $contextId
* @param $stageId
* @return DAOResultFactory
*/
function &getUserGroupsByStage($contextId, $stageId, $omitAuthors = false, $omitReviewers = false, $roleId = null) {
$params = array((int) $contextId, (int) $stageId);
if ($omitAuthors) $params[] = ROLE_ID_AUTHOR;
if ($omitReviewers) $params[] = ROLE_ID_REVIEWER;
if ($roleId) $params[] = $roleId;
$result =& $this->retrieve(
'SELECT ug.*
FROM user_groups ug
JOIN user_group_stage ugs ON (ug.user_group_id = ugs.user_group_id AND ug.context_id = ugs.context_id)
WHERE ugs.context_id = ? AND
ugs.stage_id = ?' .
($omitAuthors?' AND ug.role_id <> ?':'') .
($omitReviewers?' AND ug.role_id <> ?':'') .
($roleId?' AND ug.role_id = ?':'') .
' ORDER BY role_id ASC',
$params
);

$returner = new DAOResultFactory($result, $this, '_returnFromRow');
return $returner;
}

/**
* Get all stages assigned to one user group in one context.
* @param Integer $contextId The user group context.
* @param Integer $userGroupId
*/
function getAssignedStagesByUserGroupId($contextId, $userGroupId) {
$result =& $this->retrieve(
'SELECT stage_id
FROM user_group_stage
WHERE context_id = ? AND
user_group_id = ?',
array((int) $contextId, (int) $userGroupId)
);

$returner = array();

while (!$result->EOF) {
$stageId = $result->Fields('stage_id');
$returner[$stageId] = $this->getTranslationKeyFromId($stageId);
$result->MoveNext();
}

return $returner;
}

/**
* Check if a user group is assigned to a stage
* @param int $userGroupId
* @param int $stageId
* @return bool
*/
function userGroupAssignedToStage($userGroupId, $stageId) {
$result = $this->retrieve(
'SELECT COUNT(*)
FROM user_group_stage
WHERE user_group_id = ? AND
stage_id = ?',
array((int) $userGroupId, (int) $stageId)
);

$returner = isset($result->fields[0]) && $result->fields[0] > 0 ? true : false;

$result->Close();
unset($result);

return $returner;
}

/**
* Check to see whether a user is assigned to a stage ID via a user group.
* @param $contextId int
* @param $userId int
* @param $staeId int
* @return boolean
*/
function userAssignmentExists($contextId, $userId, $stageId) {
$result =& $this->retrieve(
'SELECT COUNT(*)
FROM user_group_stage ugs,
user_user_groups uug
WHERE ugs.user_group_id = uug.user_group_id AND
ugs.context_id = ? AND
uug.user_id = ? AND
ugs.stage_id = ?',
array((int) $contextId, (int) $userId, (int) $stageId)
);

$returner = isset($result->fields[0]) && $result->fields[0] > 0 ? true : false;

$result->Close();
unset($result);

return $returner;
}
}

?>

0 comments on commit 5676fa7

Please sign in to comment.