/** * gets a list of courses and their linked activities from the Certificate modules inside a course. * * @param object $courseid courseid to show - if not set, return all courses for this user. */ function tao_certificate_get_certification_tasks($userid, $courseid = null, $showrequest = true) { global $CFG, $USER; $ismentor = false; //check if user has rights to see this. if ($userid != $USER->id) { //has to be either an st or MT to be able to see other users cert path $usercontext = get_context_instance(CONTEXT_USER, $userid); if (!has_capability('moodle/local:isst', $usercontext) && !has_capability('moodle/local:ismt', $usercontext)) { error('you are not an MT or ST for this user!'); } $ismentor = true; } $linkedactivities = array(); $taskswarningdisplayed = false; //so that tasks warning is only displayed once. if (!empty($courseid)) { //convert $courseid to single item array for use in for loop $courses[$courseid] = get_record('course', 'id', $courseid); } else { $courses = get_my_courses($userid, 'visible DESC,sortorder ASC', '*', false, 21); } $ptrole = get_record('role', 'shortname', ROLE_PT); $sitecontext = get_context_instance(CONTEXT_COURSE, SITEID); $ispt = user_has_role_assignment($userid, $ptrole->id, $sitecontext->id); foreach ($courses as $course) { $taskscomplete = true; $linkedactivities[$course->id] = ''; //now check to see if PT user has a mentor: if ($ispt && !$ismentor) { $ptcontext = get_context_instance(CONTEXT_USER, $userid); $mtuser = get_users_by_capability($ptcontext, 'moodle/local:ismt', '', '', '', '', '', '', false); if (empty($mtuser)) { //this user doesn't have a mentor. $linkedactivities[$course->id] .= '<div class="cert-nomentor">' . get_string('nomentor', 'block_tao_certification_path') . '</div>'; $taskscomplete = false; } } //first check if PT user is a member of a group. if ($course->groupmode == '1') { //if groupmode for this course is set to seperate. if ($ispt) { //check if logged in user is a PT //get user group. $groups = groups_get_all_groups($course->id, $userid); $certstatus = 'complete'; if (empty($groups)) { $certstatus = 'incomplete'; } $linkedactivities[$course->id] .= '<div class="cert-task-' . $certstatus . '">'; if (!$ismentor) { $linkedactivities[$course->id] .= '<a href="' . $CFG->wwwroot . '/blocks/tao_team_groups/managegroup.php?id=' . $course->id . '&action=joingroup">'; } $linkedactivities[$course->id] .= "<img src='{$CFG->wwwroot}/pix/i/group.gif' alt=''/> " . get_string('joingroup', 'block_tao_team_groups'); if (!$ismentor) { $linkedactivities[$course->id] .= '</a>'; } if (empty($groups)) { //if user isn't in a Group - throw an error. $linkedactivities[$course->id] .= '<span class="cert_block_cross"><img src="' . $CFG->wwwroot . '/pix/i/cross_red_small.gif' . '" alt=""/></span></div>'; $taskscomplete = false; } else { $linkedactivities[$course->id] .= '<span class="cert_block_tick"><img src="' . $CFG->wwwroot . '/pix/i/tick_green_small.gif' . '" alt=""/></span></div>'; } } } $certificates = get_records('certificate', 'course', $course->id); if (!empty($certificates)) { require_once $CFG->dirroot . '/mod/certificate/lib.php'; foreach ($certificates as $cert) { //now get linked modules $linkedmods = get_records('certificate_linked_modules', 'certificate_id', $cert->id); if (!empty($linkedmods)) { foreach ($linkedmods as $linkedmod) { if ($linkedmod->linkid > 0) { $mod = get_record_sql("SELECT cm.*, md.name as modname\n FROM {$CFG->prefix}course_modules cm,\n {$CFG->prefix}modules md\n WHERE cm.course = '" . intval($course->id) . "' AND\n cm.id = '" . intval($linkedmod->linkid) . "' AND\n md.id = cm.module"); $modr = get_coursemodule_from_instance($mod->modname, $mod->instance); $certstatus = 'incomplete'; if (certificate_activity_completed($linkedmod, $mod, $userid)) { $certstatus = 'complete'; } $linkedactivities[$course->id] .= "<div class='cert-task-{$certstatus}'><a href='{$CFG->wwwroot}/mod/{$mod->modname}/view.php?id={$mod->id}'><img src='{$CFG->wwwroot}/mod/{$mod->modname}/icon.gif' alt='' />" . $modr->name . '</a>'; if ($certstatus == 'complete') { $linkedactivities[$course->id] .= '<span class="cert_block_tick"><img src="' . $CFG->wwwroot . '/pix/i/tick_green_small.gif' . '" alt="" /></span></div>'; } else { $linkedactivities[$course->id] .= '<span class="cert_block_cross"><img src="' . $CFG->wwwroot . '/pix/i/cross_red_small.gif' . '" alt="" /></span></div>'; $taskscomplete = false; } if ($ismentor) { $linkedactivities[$course->id] .= tao_user_complete($mod, $course, $userid); } } } } if (!empty($linkedactivities[$course->id])) { $linkedactivities[$course->id] = '<strong>' . $cert->name . '</strong><br/>' . $linkedactivities[$course->id]; } if ($showrequest && $taskscomplete && $ispt) { //check to see if there are any existing requests that have not been actioned yet. if (record_exists('tao_user_certification_status', 'userid', $userid, 'status', 'approved', 'courseid', $course->id)) { //$linkedactivities[$course->id] .= "<p>".get_string('requestcertificationhasbeenachieved','block_tao_certification_path')."</p>"; } elseif (record_exists('tao_user_certification_status', 'userid', $userid, 'status', 'submitted', 'courseid', $course->id)) { $linkedactivities[$course->id] .= "<p>" . get_string('requestcertificationhasbeensubmitted', 'block_tao_certification_path') . "</p>"; } else { if (!$ismentor) { $linkedactivities[$course->id] .= "<p><a href='{$CFG->wwwroot}/blocks/tao_certification_path/request.php?id={$course->id}'>" . get_string('requestcertification', 'block_tao_certification_path') . "</a></p>"; } else { //todo: need to add a link to approve/decline a users request here? } } } if (!$taskscomplete && !$taskswarningdisplayed && !$ismentor) { $linkedactivities[$course->id] = get_string('mustcompletetasks', 'block_tao_certification_path') . '<br/><br/>' . $linkedactivities[$course->id]; $taskswarningdisplayed = true; //only display this warning once at the top of the block - not for each course. } } } } return $linkedactivities; }
function certificate_is_available_mod($linked_acts, $courseid, $userid = 0) { global $USER; if (!$userid) { $userid = $USER->id; } $message = ''; foreach ($linked_acts as $key => $activity) { $cm = get_record('course_modules', 'id', $activity->linkid); if (!certificate_activity_completed($activity, $cm, $userid)) { return false; } } return true; }