<?php // If not, assume the cwd is not symlinked and proceed as we are used to require_once("../../config.php"); require_once($CFG->libdir.'/weblib.php'); require_once($CFG->dirroot.'/grade/querylib.php'); require_once($CFG->dirroot.'/cohort/lib.php'); require_once($CFG->dirroot.'/cohort/locallib.php'); require_once("lib.php"); use local_treestudyplan; //admin_externalpage_setup('major'); $systemcontext = context_system::instance(); require_login(); require_capability('local/treestudyplan:viewothercards',$systemcontext); $PAGE->set_pagelayout('base'); $PAGE->set_context($systemcontext); $PAGE->set_title(get_string('report_index','local_treestudyplan')); $PAGE->set_heading(get_string('report_index','local_treestudyplan')); // Load javascripts //$PAGE->requires->js_call_amd('local_treestudyplan/fixlinks', 'init', ['div.tab-content']); $PAGE->requires->js_call_amd('block_gradelevel/renderbadge', 'init'); $PAGE->requires->js_call_amd('local_treestudyplan/report', 'init'); //$PAGE->requires->css(new moodle_url($CFG->wwwroot.'/local/treestudyplan/css/eqstyles.css')); $PAGE->requires->css(new moodle_url($CFG->wwwroot.'/local/treestudyplan/css/bootstrap-toggle.min.css')); $userid = null; $studentid = optional_param('studentid', '', PARAM_INT); $cohortid = optional_param('cohortid', '', PARAM_INT); if(!empty($studentid)){ $PAGE->set_url("/local/treestudyplan/reports.php",array('studentid' => $studentid)); $student = $DB->get_record("user",['id' => $studentid]); $userlist = []; $nextstudent = null; $prevstudent = null; if(!empty($cohortid)) { $cohort = $DB->get_record("cohort",['id' => $cohortid]); $userlist = array_values(local_treestudyplan_find_cohortmembers($cohortid)); for($i = 0; $i < count($userlist); $i++) { if($userlist[$i]->userid == $studentid) { if($i > 0) { $prevstudent = (object)['id' => $userlist[$i - 1]->userid, 'name' => "{$userlist[$i - 1]->firstname} {$userlist[$i - 1]->lastname}"]; } if($i < count($userlist) - 1) { $nextstudent = (object)['id' => $userlist[$i + 1]->userid, 'name' => "{$userlist[$i + 1]->firstname} {$userlist[$i + 1]->lastname}"]; } break; } } $cohortpath = local_treestudyplan_get_cohort_path($cohort); $PAGE->set_title(get_string('report_invited','local_treestudyplan',"{$cohortpath}: {$student->firstname} {$student->lastname}")); $PAGE->set_heading(get_string('report_invited','local_treestudyplan',"{$cohortpath}: {$student->firstname} {$student->lastname}")); } else { $PAGE->set_title(get_string('report_invited','local_treestudyplan',"$cohort->{$student->firstname} {$student->lastname}")); $PAGE->set_heading(get_string('report_invited','local_treestudyplan',"{$student->firstname} {$student->lastname}")); } $gradewriter = new local_treestudyplan_cardwriter($studentid,true); $badgewriter = new local_treestudyplan_badgewriter($studentid); $calendarwriter = new local_treestudyplan_calendarwriter($studentid); print $OUTPUT->header(); print "<div class='m-buttonbar' style='margin-bottom: 1.5em; height: 1em;'>"; if(isset($prevstudent)) { print "<a style='float:left;' href='/local/treestudyplan/reports.php?studentid={$prevstudent->id}&cohortid={$cohortid}'><i class='fa fa-arrow-left'></i> {$prevstudent->name} </a>"; } if(isset($nextstudent)) { print "<a style='float:right;' href='/local/treestudyplan/reports.php?studentid={$nextstudent->id}&cohortid={$cohortid}'>{$nextstudent->name} <i class='fa fa-arrow-right'></i></a>"; } print "</div>"; print "<ul class='nav nav-tabs' role='tablist'>"; print "<li class='nav-item'><a class='nav-link active' href='#link-report' data-toggle='tab' role='tab'>".get_string('nav_report','local_treestudyplan')."</a></li>"; print "<li class='nav-item'><a class='nav-link ' href='#link-badges' data-toggle='tab' role='tab'>".get_string('nav_badges','local_treestudyplan')."</a></li>"; print "<li class='nav-item'><a class='nav-link ' href='#link-calendar' data-toggle='tab' role='tab'>".get_string('nav_calendar','local_treestudyplan')."</a></li>"; print "</ul>"; print "<div class='tab-content mt-3'>"; print "<div class='tab-pane active' id='link-report' data-toggle='tab' role='tab'>"; print $gradewriter->render(true,false); print "</div>"; print "<div class='tab-pane ' id='link-badges' data-toggle='tab' role='tab'>"; print $badgewriter->render(); print "</div>"; print "<div class='tab-pane' id='link-calendar' data-toggle='tab' role='tab'>"; print $calendarwriter->render(); print "</div>"; print "</div>"; print $OUTPUT->footer(); } else { $PAGE->set_url("/local/treestudyplan/reports.php",array()); // show student picker $cohortlist = $DB->get_records("cohort"); $cohorts = []; foreach($cohortlist as $c) { if($c->visible) { $cohortcontext = context::instance_by_id($c->contextid); if($cohortcontext) // TODO: add check if user has rights in this context { $users = local_treestudyplan_find_cohortmembers($c->id); $cohorts[$c->id] = (object)[ 'id' => $c->id, 'cohort' => $c, 'name' => $c->name, 'path' => local_treestudyplan_get_cohort_path($c), 'users' => $users, ]; } } } print $OUTPUT->header(); usort($cohorts,function($a,$b){ return $a->path <=> $b->path; }); $regex = get_config('local_treestudyplan', 'cohortidregex'); foreach($cohorts as $c) { $m = []; if(preg_match("/".$regex."/",$c->cohort->idnumber,$m) && $c->cohort->visible) { print "<legend class='collapse-header'><a data-toggle='collapse' class='collapsed' href='#cohort-{$c->id}' role='button'>{$c->path}</a></legend>"; print "<div id='cohort-{$c->id}' class='collapse'>"; print "<div class='card card-body'><ul class='gradecardlist'>"; foreach($c->users as $u) { print "<li class='gradestudent'>"; print "<a href='/local/treestudyplan/reports.php?studentid={$u->userid}&cohortid={$c->id}'>{$u->firstname} {$u->lastname}</a>"; print "</li>"; } print "</ul>"; print "</div></div>"; } } print "</div>"; print $OUTPUT->footer(); }