/** * Get registered users inside current course * @param int $attendance_id attendance id for showing attendance result field (optional) * @param int $groupId * @return array users data */ public function get_users_rel_course($attendance_id = 0, $groupId = null) { $current_session_id = api_get_session_id(); $current_course_id = api_get_course_id(); $currentCourseIntId = api_get_course_int_id(); $studentInGroup = array(); if (!empty($current_session_id)) { $a_course_users = CourseManager::get_user_list_from_course_code($current_course_id, $current_session_id, '', 'lastname'); } else { $a_course_users = CourseManager::get_user_list_from_course_code($current_course_id, 0, '', 'lastname'); if (!empty($groupId)) { $students = GroupManager::getStudents($groupId); if (!empty($students)) { foreach ($students as $student) { $studentInGroup[$student['user_id']] = true; } } } } // get registered users inside current course $a_users = array(); foreach ($a_course_users as $key => $user_data) { $value = array(); $uid = $user_data['user_id']; $userInfo = api_get_user_info($uid); $status = $user_data['status']; if (!empty($groupId)) { if (!isset($studentInGroup[$uid])) { continue; } } $user_status_in_session = null; $user_status_in_course = null; if (api_get_session_id()) { $user_status_in_session = SessionManager::get_user_status_in_course_session($uid, $currentCourseIntId, $current_session_id); } else { $user_status_in_course = CourseManager::get_user_in_course_status($uid, $current_course_id); } // Not taking into account DRH or COURSEMANAGER if ($uid <= 1 || $status == DRH || $user_status_in_course == COURSEMANAGER || $user_status_in_session == 2) { continue; } if (!empty($attendance_id)) { $user_faults = $this->get_faults_of_user($uid, $attendance_id, $groupId); $value['attendance_result'] = $user_faults['faults'] . '/' . $user_faults['total'] . ' (' . $user_faults['faults_porcent'] . '%)'; $value['result_color_bar'] = $user_faults['color_bar']; } $photo = Display::img($userInfo['avatar_small'], $userInfo['complete_name'], [], false); $value['photo'] = $photo; $value['firstname'] = $user_data['firstname']; $value['lastname'] = $user_data['lastname']; $value['username'] = $user_data['username']; $value['user_id'] = $uid; //Sending only 5 items in the array instead of 60 $a_users[$key] = $value; } return $a_users; }
/** * @param int $courseId * @param string $keyword * @return string */ public static function getOverview($courseId, $keyword = null) { $content = null; $categories = GroupManager::get_categories(); if (!empty($categories)) { foreach ($categories as $category) { if (api_get_setting('allow_group_categories') == 'true') { $content .= '<h2>' . $category['title'] . '</h2>'; } if (!empty($keyword)) { $groups = GroupManager::getGroupListFilterByName($keyword, $category['id'], $courseId); } else { $groups = GroupManager::get_group_list($category['id']); } $content .= '<ul>'; if (!empty($groups)) { foreach ($groups as $group) { $content .= '<li>'; $content .= Display::tag('h3', Security::remove_XSS($group['name'])); $users = GroupManager::getTutors($group['id']); if (!empty($users)) { $content .= '<ul>'; $content .= "<li>" . Display::tag('h4', get_lang('Tutors')) . "</li><ul>"; foreach ($users as $user) { $user_info = api_get_user_info($user['user_id']); $content .= '<li title="' . $user_info['username'] . '">' . $user_info['complete_name_with_username'] . '</li>'; } $content .= '</ul>'; $content .= '</ul>'; } $users = GroupManager::getStudents($group['id']); if (!empty($users)) { $content .= '<ul>'; $content .= "<li>" . Display::tag('h4', get_lang('Students')) . "</li><ul>"; foreach ($users as $user) { $user_info = api_get_user_info($user['user_id']); $content .= '<li title="' . $user_info['username'] . '">' . $user_info['complete_name_with_username'] . '</li>'; } $content .= '</ul>'; $content .= '</ul>'; } $content .= '</li>'; } } $content .= '</ul>'; } } return $content; }
/** * This function saves all the invitations of course users and additional users in the database * and sends the invitations by email * * @param array Users array can be both a list of course uids AND a list of additional emailaddresses * @param string Title of the invitation, used as the title of the mail * @param string Text of the invitation, used as the text of the mail. * The text has to contain a **link** string or this will automatically be added to the end * * @author Patrick Cool <*****@*****.**>, Ghent University * @author Julio Montoya - Adding auto-generated link support * @version January 2007 * */ public static function saveInvitations($users_array, $invitation_title, $invitation_text, $reminder = 0, $sendmail = 0, $remindUnAnswered = 0) { if (!is_array($users_array)) { // Should not happen return 0; } // Getting the survey information $survey_data = SurveyManager::get_survey($_GET['survey_id']); $survey_invitations = SurveyUtil::get_invitations($survey_data['survey_code']); $already_invited = SurveyUtil::get_invited_users($survey_data['code']); // Remind unanswered is a special version of remind all reminder $exclude_users = array(); if ($remindUnAnswered == 1) { // Remind only unanswered users $reminder = 1; $exclude_users = SurveyManager::get_people_who_filled_survey($_GET['survey_id']); } $counter = 0; // Nr of invitations "sent" (if sendmail option) $course_id = api_get_course_int_id(); $session_id = api_get_session_id(); $result = CourseManager::separateUsersGroups($users_array); $groupList = $result['groups']; $users_array = $result['users']; foreach ($groupList as $groupId) { $userGroupList = GroupManager::getStudents($groupId); $userGroupIdList = array_column($userGroupList, 'user_id'); $users_array = array_merge($users_array, $userGroupIdList); $params = array('c_id' => $course_id, 'session_id' => $session_id, 'group_id' => $groupId, 'survey_code' => $survey_data['code']); $invitationExists = self::invitationExists($course_id, $session_id, $groupId, $survey_data['code']); if (empty($invitationExists)) { self::save_invitation($params); } } $users_array = array_unique($users_array); foreach ($users_array as $key => $value) { if (!isset($value) || $value == '') { continue; } // Skip user if reminding only unanswered people if (in_array($value, $exclude_users)) { continue; } // Get the unique invitation code if we already have it if ($reminder == 1 && array_key_exists($value, $survey_invitations)) { $invitation_code = $survey_invitations[$value]['invitation_code']; } else { $invitation_code = md5($value . microtime()); } $new_user = false; // User not already invited // Store the invitation if user_id not in $already_invited['course_users'] OR email is not in $already_invited['additional_users'] $addit_users_array = isset($already_invited['additional_users']) && !empty($already_invited['additional_users']) ? explode(';', $already_invited['additional_users']) : array(); $my_alredy_invited = $already_invited['course_users'] == null ? array() : $already_invited['course_users']; if (is_numeric($value) && !in_array($value, $my_alredy_invited) || !is_numeric($value) && !in_array($value, $addit_users_array)) { $new_user = true; if (!array_key_exists($value, $survey_invitations)) { $params = array('c_id' => $course_id, 'session_id' => $session_id, 'user' => $value, 'survey_code' => $survey_data['code'], 'invitation_code' => $invitation_code, 'invitation_date' => api_get_utc_datetime()); self::save_invitation($params); } } // Send the email if checkboxed if (($new_user || $reminder == 1) && $sendmail != 0) { // Make a change for absolute url if (isset($invitation_text)) { $invitation_text = api_html_entity_decode($invitation_text, ENT_QUOTES); $invitation_text = str_replace('src="../../', 'src="' . api_get_path(WEB_PATH), $invitation_text); $invitation_text = trim(stripslashes($invitation_text)); } SurveyUtil::send_invitation_mail($value, $invitation_code, $invitation_title, $invitation_text); $counter++; } } return $counter; // Number of invitations sent }