// Set selected to current session $sessionList[$sessionId]['selected'] = 'selected="selected"'; $studentList['session']['id'] = $sessionId; // Assign variables $fieldsArray = array('description', 'target', 'mode', 'publication_end_date', 'recommended_number_of_participants', 'vacancies'); $sessionArray = api_get_session_info($sessionId); $extraSession = new ExtraFieldValue('session'); $extraField = new ExtraField('session'); // Get session fields $fieldList = $extraField->get_all(array('variable IN ( ?, ?, ?, ?, ?, ?)' => $fieldsArray)); // Index session fields foreach ($fieldList as $field) { $fields[$field['id']] = $field['variable']; } $params = array(' item_id = ? ' => $sessionId); $sessionFieldValueList = $extraSession->get_all(array('where' => $params)); foreach ($sessionFieldValueList as $sessionFieldValue) { // Check if session field value is set in session field list if (isset($fields[$sessionFieldValue['field_id']])) { $var = $fields[$sessionFieldValue['field_id']]; $val = $sessionFieldValue['value']; // Assign session field value to session $sessionArray[$var] = $val; } } $adminsArray = UserManager::get_all_administrators(); $data['action'] = 'confirm'; $data['sessionId'] = $sessionId; $data['currentUserId'] = api_get_user_id(); $isWesternNameOrder = api_is_western_name_order(); foreach ($studentList['students'] as &$student) {
// Prepare data // Get session data // Assign variables $fieldsArray = array('description', 'target', 'mode', 'publication_end_date', 'recommended_number_of_participants'); $sessionArray = api_get_session_info($data['sessionId']); $extraSession = new ExtraFieldValue('session'); $extraField = new ExtraField('session'); // Get session fields $fieldList = $extraField->get_all(array('variable IN ( ?, ?, ?, ?, ?)' => $fieldsArray)); $fields = array(); // Index session fields foreach ($fieldList as $field) { $fields[$field['id']] = $field['variable']; } $mergedArray = array_merge(array($data['sessionId']), array_keys($fields)); $sessionFieldValueList = $extraSession->get_all(array('item_id = ? field_id IN ( ?, ?, ?, ?, ?, ?, ? )' => $mergedArray)); foreach ($sessionFieldValueList as $sessionFieldValue) { // Check if session field value is set in session field list if (isset($fields[$sessionFieldValue['field_id']])) { $var = $fields[$sessionFieldValue['field_id']]; $val = $sessionFieldValue['value']; // Assign session field value to session $sessionArray[$var] = $val; } } // Get student data $studentArray = api_get_user_info($data['studentUserId']); $studentArray['picture'] = $studentArray['avatar']; // Get superior data if exist $superiorId = UserManager::getStudentBoss($data['studentUserId']); if (!empty($superiorId)) {
/** * @param $sessionId * @param array $extraFieldsToInclude * @return array */ public static function getFilteredExtraFields($sessionId, $extraFieldsToInclude = array()) { $extraData = array(); $variables = array(); $variablePlaceHolders = array(); foreach ($extraFieldsToInclude as $sessionExtraField) { $variablePlaceHolders[] = "?"; $variables[] = Database::escape_string($sessionExtraField); } $sessionExtraField = new ExtraField('session'); $fieldList = $sessionExtraField->get_all(array("variable IN ( " . implode(", ", $variablePlaceHolders) . " ) " => $variables)); $fields = array(); // Index session fields foreach ($fieldList as $field) { $fields[$field['id']] = $field['variable']; } // Get session field values $extra = new ExtraFieldValue('session'); $sessionFieldValueList = $extra->get_all(array("field_id IN ( " . implode(", ", $variablePlaceHolders) . " )" => array_keys($fields))); foreach ($sessionFieldValueList as $sessionFieldValue) { // Match session field values to session if ($sessionFieldValue['item_id'] != $sessionId) { continue; } // Check if session field value is set in session field list if (!isset($fields[$sessionFieldValue['field_id']])) { continue; } $extrafieldVariable = $fields[$sessionFieldValue['field_id']]; $extrafieldValue = $sessionFieldValue['value']; $extraData[] = array('variable' => $extrafieldVariable, 'value' => $extrafieldValue); } return $extraData; }
/** * Return the list of student, in queue used by admin view * @param int $sessionId * * @return array */ public function listAllStudentsInQueueBySession($sessionId) { // Filter input variable $sessionId = intval($sessionId); // Assign variables $fieldsArray = array('target', 'publication_end_date', 'mode', 'recommended_number_of_participants', 'vacancies'); $sessionArray = api_get_session_info($sessionId); $extraSession = new ExtraFieldValue('session'); $extraField = new ExtraField('session'); // Get session fields $fieldList = $extraField->get_all(array('variable IN ( ?, ?, ?, ?, ?)' => $fieldsArray)); // Index session fields $fields = array(); foreach ($fieldList as $field) { $fields[$field['id']] = $field['variable']; } $mergedArray = array_merge(array($sessionId), array_keys($fields)); $sessionFieldValueList = $extraSession->get_all(array('item_id = ? field_id IN ( ?, ?, ?, ?, ?, ?, ? )' => $mergedArray)); foreach ($sessionFieldValueList as $sessionFieldValue) { // Check if session field value is set in session field list if (isset($fields[$sessionFieldValue['field_id']])) { $var = $fields[$sessionFieldValue['field_id']]; $val = $sessionFieldValue['value']; // Assign session field value to session $sessionArray[$var] = $val; } } $queueTable = Database::get_main_table(TABLE_ADVANCED_SUBSCRIPTION_QUEUE); $userTable = Database::get_main_table(TABLE_MAIN_USER); $userJoinTable = $queueTable . ' q INNER JOIN ' . $userTable . ' u ON q.user_id = u.user_id'; $where = array('where' => array('q.session_id = ?' => array($sessionId)), 'order' => 'q.status DESC, u.lastname ASC'); $select = 'u.user_id, u.firstname, u.lastname, q.created_at, q.updated_at, q.status, q.id as queue_id'; $students = Database::select($select, $userJoinTable, $where); foreach ($students as &$student) { $status = intval($student['status']); switch ($status) { case ADVANCED_SUBSCRIPTION_QUEUE_STATUS_NO_QUEUE: case ADVANCED_SUBSCRIPTION_QUEUE_STATUS_START: $student['validation'] = ''; break; case ADVANCED_SUBSCRIPTION_QUEUE_STATUS_BOSS_DISAPPROVED: case ADVANCED_SUBSCRIPTION_QUEUE_STATUS_ADMIN_DISAPPROVED: $student['validation'] = 'No'; break; case ADVANCED_SUBSCRIPTION_QUEUE_STATUS_BOSS_APPROVED: case ADVANCED_SUBSCRIPTION_QUEUE_STATUS_ADMIN_APPROVED: $student['validation'] = 'Yes'; break; default: error_log(__FILE__ . ' ' . __FUNCTION__ . ' Student status no detected'); } } $return = array('session' => $sessionArray, 'students' => $students); return $return; }