• Main Page
  • Modules
  • Classes
  • Files
  • File List

classes/user/UserStageAssignmentDAO.inc.php

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    // Private helper method
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       // This is a little obscure.
00107       // 4 params and 1 search results, means calling context was seeking an individual user.
00108       if ($result->RecordCount() == 1 && count($params) == 4) {
00109          // If all parameters were specified, then seeking only one assignment.
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 ?>

Generated on Mon Sep 17 2012 13:58:55 for Open Monograph Press by  doxygen 1.7.1