/** * * @param string $schoolid * @param string $headmid * @param unknown $editlinkparams * @param number $bOnlyActual * @param number $year * @param array $aSort Associative array with column as key and ASC/DESC/null as value * @return Ambigous <string, lang_string>|string */ public static function show_locations($schoolid = null, $headmid = null, $editlinkparams = array(), $bOnlyActual = 0, $year = 0, $aSort = array()) { global $USER, $cm, $OUTPUT, $DB; $schoolid = $schoolid ? $schoolid : null; $sortAvailable = array('sschool' => 'name', 'sstudyfield' => 'studyfieldname', 'sisced' => 'isced', 'syear' => 'year', 'ssubject' => 'subject', 'sactive' => 'active'); $aSortcorrect = array_intersect(array_keys($sortAvailable), array_keys($aSort)); $sort = array(); foreach ($aSortcorrect as $k) { if (!is_null($aSort[$k])) { $sort[] = $sortAvailable[$k] . ' ' . $aSort[$k]; } } $locs = praxe_get_locations_by_schooldata($schoolid, $headmid, $bOnlyActual, $year, implode(', ', array_reverse($sort))); if (!$locs) { return get_string('nolocationsavailable', 'praxe'); } $defEnableAssignStudent = praxe_has_capability('assignstudenttolocation'); $table = new html_table(); $baseLink = praxe_get_base_url(array('mode' => 'locations', 'schoolid' => (int) $schoolid, 'fyearloc' => $year, 'factual' => $bOnlyActual)); $h = array(); $aHeadSorting = array('sschool' => get_string('school', 'praxe'), 'ssubject' => get_string('subject', 'praxe'), 'sactive' => get_string('active', 'praxe'), 'sstudyfield' => get_string('studyfield', 'praxe'), 'sisced' => get_string('iscedlevel', 'praxe'), 'syear' => get_string('year', 'praxe')); foreach ($aHeadSorting as $k => $text) { if (isset($aSort[$k])) { $toLink = $aSort[$k] == 'ASC' ? 'DESC' : 'ASC'; $sOut = $OUTPUT->action_link($baseLink . '&' . $k . '=' . $toLink, $text); $sOut .= $OUTPUT->pix_icon('t/sort_' . strtolower($aSort[$k]), $aSort[$k]); } else { $sOut = $OUTPUT->action_link($baseLink . '&' . $k . '=ASC', $text); } $aHeadSorting[$k] = $sOut; } $h[] = $aHeadSorting['sschool']; $h[] = $aHeadSorting['ssubject']; $h[] = get_string('extteacher', 'praxe'); $h[] = $aHeadSorting['sstudyfield']; $h[] = $aHeadSorting['sisced']; $h[] = $aHeadSorting['syear']; $h[] = get_string('term', 'praxe'); $h[] = get_string('actual_status', 'praxe'); $h[] = $aHeadSorting['sactive']; $h[] = get_string('student', 'praxe'); $table->head = $h; $table->align = array('left', 'left', 'left', 'left', 'left', 'center', 'center', 'left', 'center'); $table->data = array(); $stredit = get_string('edit'); foreach ($locs as $loc) { $editable = false; if (praxe_has_capability('manageallincourse') || praxe_has_capability('editanylocation') || praxe_has_capability('editownlocation') && ($USER->id == $loc->headmaster || $USER->id == $loc->teacherid)) { $editable = true; } $teacher = ''; if (!is_null($loc->teacherid)) { $teacher = praxe_get_user_fullname((object) array('id' => $loc->teacherid, 'firstname' => s($loc->teacher_name), 'lastname' => $loc->teacher_lastname)); } $stf = s($loc->studyfieldname) . ' (' . s($loc->shortcut) . ')'; $status = praxe_get_use_status_of_location($loc->id); $active = $loc->active == 1 ? get_string('yes') : get_string('no'); $row = array(s($loc->name), s($loc->subject), $teacher, $stf, praxe_get_isced_text($loc->isced), s($loc->year), praxe_get_term_text($loc->term), $status, $active); /// icon for assign student / student /// $sql = "SELECT p.*, s.firstname, s.lastname FROM {praxe_records} p LEFT JOIN {user} s ON (s.id = p.student)\n\t\t\t\t\tWHERE location = ?\n\t\t\t\t\tORDER BY timemodified DESC\n\t\t\t\t\tLIMIT 1"; $params = array($loc->id); if ($ret = $DB->get_record_sql($sql, $params)) { $row[] = praxe_get_user_fullname((object) array('id' => $ret->student, 'firstname' => $ret->firstname, 'lastname' => $ret->lastname)); $enableAssignStudent = $defEnableAssignStudent && $ret->status == PRAXE_STATUS_REFUSED; } else { $row[] = " "; $enableAssignStudent = $defEnableAssignStudent; } if ($editable || $enableAssignStudent) { $editRow = array(); $params = array('locationid' => $loc->id); foreach ($editlinkparams as $name => $val) { $params[s($name)] = s($val); } if ($editable) { $editRow[] = $OUTPUT->action_icon(praxe_get_base_url($params), new pix_icon('t/edit', $stredit)); } if ($enableAssignStudent) { $params['assignuser'] = 1; $editRow[] = $OUTPUT->action_icon(praxe_get_base_url($params, 'assigntolocation'), new pix_icon('i/users', get_string('assignusertolocation', 'praxe'))); } $row[] = implode(' ', $editRow); if (count($table->head) < count($row)) { $table->head[] = get_string('edit'); $table->align[] = 'center'; } } $row = new html_table_row($row); if ($loc->active != 1) { $row->attributes['class'] = 'praxe_noactive_location'; } $table->data[] = $row; } return html_writer::table($table); }
private function show_all_my_locations($bOnlyActual = 0, $year = 0) { global $USER, $CFG, $tab_modes, $DB, $OUTPUT; if (!($all = praxe_get_locations(null, null, null, $bOnlyActual, $year))) { return get_string('nolocationsavailable', 'praxe'); } $table = new html_table(); $strname = get_string('schoolname', 'praxe'); $strsubject = get_string('subject', 'praxe'); $strstudy = get_string('studyfield', 'praxe'); $strisced = get_string('iscedlevel', 'praxe'); $stryear = get_string('year', 'praxe'); $strterm = get_string('term', 'praxe'); $table->head = array($strname, $strsubject, $strisced, $strstudy, $stryear, $strterm, get_string('active', 'praxe'), get_string('edit')); $table->align = array('left', 'left', 'left', 'left', 'center', 'center', 'center'); $stredit = get_string('edit'); foreach ($all as $loc) { if ($loc->teacherid != $USER->id) { continue; } $row = array(s($loc->name), s($loc->subject), praxe_get_isced_text($loc->isced), s($loc->studyfieldname) . " (" . s($loc->shortcut) . ")"); $row[] = s($loc->year); $row[] = praxe_get_term_text($loc->term); $row[] = $loc->active == 1 ? get_string('yes') : get_string('no'); if (praxe_has_capability('editanylocation') || praxe_has_capability('editownlocation') && $USER->id == $loc->teacherid) { $row[] = $OUTPUT->action_icon(praxe_get_base_url(array("mode" => $tab_modes['extteacher'][PRAXE_TAB_EXTTEACHER_EDITLOCATION], "locationid" => $loc->id)), new pix_icon('t/edit', $stredit)); } else { $row[] = get_string('already_used', 'praxe'); } $table->data[] = $row; } if (count($table->data)) { return html_writer::table($table); } return get_string('nolocationsavailable', 'praxe'); }
$table->head = array(get_string('name'), get_string('description'), get_string('iscedlevel', 'praxe'), get_string('year', 'praxe'), get_string('term', 'praxe'), get_string('dateofpraxe', 'praxe'), get_string('numberofrecords', 'praxe'), get_string('participants') . " (" . get_string('groups') . ")"); $table->align = array('center', 'left', 'center', 'center', 'center', 'center', 'center', 'center'); foreach ($praxes as $praxe) { $records = $DB->get_records('praxe_records', array('praxe' => $praxe->id)); $numofrecords = count($records); if (!$praxe->visible) { $link = html_writer::link(new moodle_url('/mod/praxe/view.php', array('id' => $praxe->coursemodule)), format_string($praxe->name, true), array('class' => 'dimmed')); } else { $link = html_writer::link(new moodle_url('/mod/praxe/view.php', array('id' => $praxe->coursemodule)), format_string($praxe->name, true)); } $part = '0'; if (!empty($praxe->groupingid)) { $groups = $DB->get_records_sql("SELECT g.*\n \t\t\t\t\t\t\t\t\tFROM {groupings_groups} gg\n \t\t\t\t\t\t\t\t\tLEFT JOIN {groups} g on(groupid = g.id)\n \t\t\t\t\t\t\t\t\tWHERE groupingid = ?", array($praxe->groupingid)); $aPart = array(); foreach ($groups as $group) { $aPart[] = '<a href="' . $CFG->wwwroot . '/user/index.php?id=' . $course->id . '&group=' . $group->id . '">' . $group->name . '</a>'; } $part = implode(', ', $aPart); } $date = userdate($praxe->datestart, get_string('strftimedateshort')) . " - " . userdate($praxe->dateend, get_string('strftimedateshort')); $table->data[] = array($link, s($praxe->description), praxe_get_isced_text($praxe->isced), s($praxe->year), praxe_get_term_text($praxe->term), $date, $numofrecords, $part); /* if ($course->format == 'weeks' or $course->format == 'topics') { $table->data[] = array($praxe->section, $link); } else { $table->data[] = array($link); }*/ } echo $OUTPUT->heading(get_string('modulenameplural', 'praxe'), 2); echo html_writer::table($table); echo $OUTPUT->footer();