Open Journal Systems  3.3.0
UserStageAssignmentDAO.inc.php
1 <?php
2 
17 import('lib.pkp.classes.user.UserDAO');
19 
27  function getUsersNotAssignedToStageInUserGroup($submissionId, $stageId, $userGroupId) {
28  $result = $this->retrieve(
29  'SELECT u.*
30  FROM users u
31  LEFT JOIN user_user_groups uug ON (u.user_id = uug.user_id)
32  LEFT JOIN stage_assignments s ON (s.user_id = uug.user_id AND s.user_group_id = uug.user_group_id AND s.submission_id = ?)
33  JOIN user_group_stage ugs ON (uug.user_group_id = ugs.user_group_id AND ugs.stage_id = ?)
34  WHERE uug.user_group_id = ? AND
35  s.user_group_id IS NULL',
36  array((int) $submissionId, (int) $stageId, (int) $userGroupId));
37 
38  return new DAOResultFactory($result, $this, '_returnUserFromRowWithData');
39  }
40 
50  function getUsersBySubmissionAndStageId($submissionId, $stageId = null, $userGroupId = null, $roleId = null, $userId = null) {
51  return $this->_getUsersByIds($submissionId, $stageId, $userGroupId, $userId, $roleId);
52  }
53 
59  function deleteAssignment($assignmentId) {
60  return $this->update('DELETE FROM stage_assignments WHERE stage_assignment_id = ?', (int) $assignmentId);
61  }
62 
72  function filterUsersNotAssignedToStageInUserGroup($submissionId, $stageId, $userGroupId, $name = null, $rangeInfo = null) {
73  $site = Application::get()->getRequest()->getSite();
74  $primaryLocale = $site->getPrimaryLocale();
75  $locale = AppLocale::getLocale();
76  $params = array(
77  (int) $submissionId,
78  (int) $stageId,
79  IDENTITY_SETTING_GIVENNAME, $primaryLocale,
80  IDENTITY_SETTING_FAMILYNAME, $primaryLocale,
81  IDENTITY_SETTING_GIVENNAME, $locale,
82  IDENTITY_SETTING_FAMILYNAME, $locale,
83  (int) $userGroupId,
84  );
85  if ($name !== null) {
86  $params = array_merge($params, array_fill(0, 6, '%'.(string) $name.'%'));
87  }
88  $result = $this->retrieveRange(
89  'SELECT u.*
90  FROM users u
91  LEFT JOIN user_user_groups uug ON (u.user_id = uug.user_id)
92  LEFT JOIN stage_assignments s ON (s.user_id = uug.user_id AND s.user_group_id = uug.user_group_id AND s.submission_id = ?)
93  JOIN user_group_stage ugs ON (uug.user_group_id = ugs.user_group_id AND ugs.stage_id = ?)
94  LEFT JOIN user_settings usgs_pl ON (usgs_pl.user_id = u.user_id AND usgs_pl.setting_name = ? AND usgs_pl.locale = ?)
95  LEFT JOIN user_settings usfs_pl ON (usfs_pl.user_id = u.user_id AND usfs_pl.setting_name = ? AND usfs_pl.locale = ?)
96  LEFT JOIN user_settings usgs_l ON (usgs_l.user_id = u.user_id AND usgs_l.setting_name = ? AND usgs_l.locale = ?)
97  LEFT JOIN user_settings usfs_l ON (usfs_l.user_id = u.user_id AND usfs_l.setting_name = ? AND usfs_l.locale = ?)
98 
99  WHERE uug.user_group_id = ? AND
100  s.user_group_id IS NULL'
101  . ($name !== null ? ' AND (usgs_pl.setting_value LIKE ? OR usgs_l.setting_value LIKE ? OR usfs_pl.setting_value LIKE ? OR usfs_l.setting_value LIKE ? OR u.username LIKE ? OR u.email LIKE ?)' : '')
102  . ' ORDER BY COALESCE(usfs_l.setting_value, usfs_pl.setting_value)',
103  $params,
104  $rangeInfo);
105  return new DAOResultFactory($result, $this, '_returnUserFromRowWithData');
106  }
107 
108  //
109  // Private helper method
110  //
122  function _getUsersByIds($submissionId, $stageId = null, $userGroupId = null, $userId = null, $roleId = null) {
123  $params = array((int) $submissionId);
124  if (isset($stageId)) $params[] = (int) $stageId;
125  if (isset($userGroupId)) $params[] = (int) $userGroupId;
126  if (isset($userId)) $params[] = (int) $userId;
127  if (isset($roleId)) $params[] = (int) $roleId;
128 
129  $result = $this->retrieve(
130  'SELECT u.*
131  FROM stage_assignments sa
132  INNER JOIN user_group_stage ugs ON (sa.user_group_id = ugs.user_group_id)
133  INNER JOIN users u ON (u.user_id = sa.user_id) ' .
134  (isset($roleId) ? 'INNER JOIN user_groups ug ON (ug.user_group_id = sa.user_group_id) ' : '') .
135  'WHERE submission_id = ?' .
136  (isset($stageId) ? ' AND ugs.stage_id = ?' : '') .
137  (isset($userGroupId) ? ' AND sa.user_group_id = ?':'') .
138  (isset($userId)?' AND u.user_id = ? ' : '') .
139  (isset($roleId)?' AND ug.role_id = ?' : ''),
140  $params);
141 
142  $returner = null;
143  // This is a little obscure.
144  // 4 params and 1 search results, means calling context was seeking an individual user.
145  if ($result->RecordCount() == 1 && count($params) == 4) {
146  // If all parameters were specified, then seeking only one assignment.
147  $returner = $this->_returnUserFromRowWithData($result->GetRowAssoc(false));
148  $result->Close();
149  } elseif ($result) {
150  $returner = new DAOResultFactory($result, $this, '_returnUserFromRowWithData');
151  }
152  return $returner;
153  }
154 }
155 
156 
DAOResultFactory
Wrapper around ADORecordSet providing "factory" features for generating objects from DAOs.
Definition: DAOResultFactory.inc.php:21
DAO\retrieveRange
& retrieveRange($sql, $params=false, $dbResultRange=null, $callHooks=true)
Definition: DAO.inc.php:176
DAO\retrieve
& retrieve($sql, $params=false, $callHooks=true)
Definition: DAO.inc.php:85
UserStageAssignmentDAO\filterUsersNotAssignedToStageInUserGroup
filterUsersNotAssignedToStageInUserGroup($submissionId, $stageId, $userGroupId, $name=null, $rangeInfo=null)
Definition: UserStageAssignmentDAO.inc.php:72
UserStageAssignmentDAO\_getUsersByIds
_getUsersByIds($submissionId, $stageId=null, $userGroupId=null, $userId=null, $roleId=null)
Definition: UserStageAssignmentDAO.inc.php:122
DAO\update
update($sql, $params=false, $callHooks=true, $dieOnError=true)
Definition: DAO.inc.php:214
UserStageAssignmentDAO
Operations for users as related to their stage assignments.
Definition: UserStageAssignmentDAO.inc.php:18
UserStageAssignmentDAO\getUsersBySubmissionAndStageId
getUsersBySubmissionAndStageId($submissionId, $stageId=null, $userGroupId=null, $roleId=null, $userId=null)
Definition: UserStageAssignmentDAO.inc.php:50
PKPApplication\get
static get()
Definition: PKPApplication.inc.php:235
UserDAO\_returnUserFromRowWithData
_returnUserFromRowWithData($row, $callHook=true)
Definition: UserDAO.inc.php:270
UserStageAssignmentDAO\deleteAssignment
deleteAssignment($assignmentId)
Definition: UserStageAssignmentDAO.inc.php:59
AppLocale\getLocale
static getLocale()
Definition: env1/MockAppLocale.inc.php:40
UserStageAssignmentDAO\getUsersNotAssignedToStageInUserGroup
getUsersNotAssignedToStageInUserGroup($submissionId, $stageId, $userGroupId)
Definition: UserStageAssignmentDAO.inc.php:27
UserDAO
Operations for retrieving and modifying User objects.
Definition: UserDAO.inc.php:28