/** * Synchronize a single course ID. * @global type $db * @param int $course_id */ public function __construct($course_id = null, $cperiod_id = null) { global $db; $course = Models_Course::get($course_id); if ($course) { $audience = $course->getAudience($cperiod_id); if ($audience) { $ldap_sync_date = time(); foreach ($audience as $a) { $a->setLdapSyncDate($ldap_sync_date); if (!$a->update()) { application_log("error", "Unable to update ldap_sync_date for caudience_id " . $a->getID() . "."); } } } } $this->ldap_connection = NewADOConnection("ldap"); $this->ldap_connection->SetFetchMode(ADODB_FETCH_ASSOC); $query = "SELECT a.`course_code`, a.`course_id`, a.`organisation_id`, b.`cperiod_id`, b.`audience_value` AS `group_id`, c.`curriculum_type_id`, c.`start_date`, c.`finish_date`, a.`sync_ldap_courses`, a.`sync_groups`\n FROM `courses` AS a\n JOIN `course_audience` AS b\n ON a.`course_id` = b.`course_id`\n JOIN `curriculum_periods` AS c\n ON b.`cperiod_id` = c.`cperiod_id`\n WHERE a.`course_id` = ?\n AND a.`sync_ldap` = '1'\n AND a.`course_active` = '1'\n AND b.`audience_active` = '1'\n AND c.`active` = '1'\n AND UNIX_TIMESTAMP(NOW()) > c.`start_date` - 1209600 \n AND UNIX_TIMESTAMP(NOW()) < c.`finish_date`"; $results = $db->GetAll($query, array($course_id)); if ($results) { foreach ($results as $result) { $this->ldap_audience = array(); $this->course = $result; $this->course_year = date("Y", $this->course["start_date"]); $this->setQueryParams($this->course["start_date"], $this->course["organisation_id"]); $this->fetchCourseCodes(); if (!$this->fetchGroupID()) { $this->createCourseGroup(); } $this->fetchCourseAudienceMembers(); if ($this->fetchCommunityID()) { $this->fetchCommunityAudience(); } if (!empty($this->course_codes)) { if ($this->fetchLdapAudience()) { foreach ($this->ldap_audience as $course_audience_member) { $member_ldap_data = $this->fetchLdapAudienceMemberDetails($course_audience_member); $this->handleUser($member_ldap_data); } if (!empty($this->community_audience)) { // The audience members remaining were not in the ldap sync, they need to be deactiviated. foreach ($this->community_audience as $audience_member => $cmember) { $this->removeCommunityAudienceMember($audience_member); } } } } else { application_log("error", "There were no course codes attached to this course. That should be impossible."); } if ($this->course["sync_groups"] == "1") { $this->syncCourseGroups(); } } } else { return false; } }
* @copyright Copyright 2014 Queen's University. All Rights Reserved. * */ if (!defined("PARENT_INCLUDED") || !defined("IN_COURSE_ENROLMENT")) { exit; } elseif (!isset($_SESSION["isAuthorized"]) || !$_SESSION["isAuthorized"]) { header("Location: " . ENTRADA_URL); exit; } elseif (!$ENTRADA_ACL->amIAllowed('course', 'update', false)) { $ONLOAD[] = "setTimeout('window.location=\\'" . ENTRADA_URL . "/admin/" . $MODULE . "\\'', 15000)"; $ERROR++; $ERRORSTR[] = "You do not have the permissions required to use this module.<br /><br />If you believe you are receiving this message in error please contact <a href=\"mailto:" . html_encode($AGENT_CONTACTS["administrator"]["email"]) . "\">" . html_encode($AGENT_CONTACTS["administrator"]["name"]) . "</a> for assistance."; echo display_error(); application_log("error", "Group [" . $_SESSION["permissions"][$ENTRADA_USER->getAccessId()]["group"] . "] and role [" . $_SESSION["permissions"][$ENTRADA_USER->getAccessId()]["role"] . "] do not have access to this module [" . $MODULE . "]"); } else { $course = Models_Course::get($COURSE_ID); if ($course) { courses_subnavigation($course->toArray(), "enrolment"); $curriculum_periods = Models_CurriculumPeriod::fetchRowByCurriculumTypeIDCourseID($course->getCurriculumTypeID(), $course->getID()); if ($curriculum_periods) { if (isset($_GET["cperiod_id"]) && ($temp = clean_input($_GET["cperiod_id"], array("trim", "int")))) { $cperiod_id = $temp; } $course_audience = $course->getMembers($cperiod_id); if (isset($_GET["download"]) && ($type = clean_input($_GET["download"], array("trim", "striptags")))) { switch ($type) { case "csv": ob_clean(); if ($course_audience) { $output = ""; $num_members = 0;
} } } else { echo json_encode(array("status" => "error", "data" => array("No audience found."))); } } else { echo json_encode(array("status" => "error", "data" => array("Invalid curriculum period id provided."))); } } else { echo json_encode(array("status" => "error", "data" => array("Invalid course identifier provided."))); } break; case "list": if (isset($course_id)) { if (isset($cperiod_id)) { $course = Models_Course::get($course_id); if ($course) { $course_audience = $course->getMembers($cperiod_id, $search_term); if ($course_audience) { $enrolment = array(); foreach ($course_audience as $audience_type => $audience_type_members) { if ($audience_type == "groups") { foreach ($audience_type_members as $group_name => $audience) { foreach ($audience as $audience_member) { $enrolment["groups"][$group_name][] = array("firstname" => $audience_member->getFirstName(), "lastname" => $audience_member->getLastName(), "number" => $audience_member->getNumber(), "username" => $audience_member->getUsername(), "email" => $audience_member->getEmail()); } } } else { if ($audience_type == "individuals") { foreach ($audience_type_members as $audience_member) { $enrolment["individuals"][] = array("firstname" => $audience_member->getFirstName(), "lastname" => $audience_member->getLastName(), "number" => $audience_member->getNumber(), "username" => $audience_member->getUsername(), "email" => $audience_member->getEmail());