00001 <?php
00002
00016 import('classes.user.UserDAO');
00017
00018 class UserStageAssignmentDAO extends UserDAO {
00022 function UserStageAssignmentDAO() {
00023 parent::UserDAO();
00024 }
00025
00033 function getUsersNotAssignedToStageInUserGroup($submissionId, $stageId, $userGroupId) {
00034 $result =& $this->retrieve(
00035 'SELECT u.*
00036 FROM users u
00037 LEFT JOIN user_user_groups uug ON (u.user_id = uug.user_id)
00038 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 = ?)
00039 JOIN user_group_stage ugs ON (uug.user_group_id = ugs.user_group_id AND ugs.stage_id = ?)
00040 WHERE uug.user_group_id = ? AND
00041 s.user_group_id IS NULL',
00042 array((int) $submissionId, (int) $stageId, (int) $userGroupId));
00043
00044 $returner = new DAOResultFactory($result, $this, '_returnUserFromRowWithData');
00045 return $returner;
00046 }
00047
00057 function getUsersBySubmissionAndStageId($submissionId, $stageId = null, $userGroupId = null, $roleId = null, $userId = null) {
00058 return $this->_getUsersByIds($submissionId, $stageId, $userGroupId, $userId, $roleId);
00059 }
00060
00066 function deleteAssignment($assignmentId) {
00067 return $this->update('DELETE FROM stage_assignments WHERE stage_assignment_id = ?', $assignmentId);
00068 }
00069
00070
00071
00072
00073
00085 function _getUsersByIds($submissionId, $stageId = null, $userGroupId = null, $userId = null, $roleId = null) {
00086 $params = array((int) $submissionId);
00087 if (isset($stageId)) $params[] = (int) $stageId;
00088 if (isset($userGroupId)) $params[] = (int) $userGroupId;
00089 if (isset($userId)) $params[] = (int) $userId;
00090 if (isset($roleId)) $params[] = (int) $roleId;
00091
00092 $result =& $this->retrieve(
00093 'SELECT u.*
00094 FROM stage_assignments sa
00095 INNER JOIN user_group_stage ugs ON (sa.user_group_id = ugs.user_group_id)
00096 INNER JOIN users u ON (u.user_id = sa.user_id) ' .
00097 (isset($roleId) ? 'INNER JOIN user_groups ug ON (ug.user_group_id = sa.user_group_id) ' : '') .
00098 'WHERE submission_id = ?' .
00099 (isset($stageId) ? ' AND ugs.stage_id = ?' : '') .
00100 (isset($userGroupId) ? ' AND sa.user_group_id = ?':'') .
00101 (isset($userId)?' AND u.user_id = ? ' : '') .
00102 (isset($roleId)?' AND ug.role_id = ?' : ''),
00103 $params);
00104
00105 $returner = null;
00106
00107
00108 if ($result->RecordCount() == 1 && count($params) == 4) {
00109
00110 $returner =& $this->_returnUserFromRowWithData($result->GetRowAssoc(false));
00111 } elseif ($result) {
00112 $returner = new DAOResultFactory($result, $this, '_returnUserFromRowWithData');
00113 }
00114 return $returner;
00115 }
00116 }
00117
00118 ?>