Example #1
0
 /**
  * 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;
     }
 }
Example #2
0
 * @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());