Exemple #1
0
/**
* 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;
}
Exemple #2
0
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;
}