Files
theme_qualisaude/layout/my.php
2019-10-22 14:54:19 -03:00

509 lines
21 KiB
PHP

<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Columns 2 Layout
* @package theme_qualisaude
* @copyright 2015 onwards LMSACE Dev Team (http://www.lmsace.com)
* @author LMSACE Dev Team
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
use core_completion\progress;
user_preference_allow_ajax_update('drawer-open-nav', PARAM_ALPHA);
require_once($CFG->libdir . '/behat/lib.php');
if (isloggedin()) {
$navdraweropen = (get_user_preferences('drawer-open-nav', 'true') == 'true');
} else {
$navdraweropen = false;
}
$show_btn_leftblock = false;
if(is_siteadmin()){
$show_btn_leftblock = true;
}else{
set_user_preference('drawer-open-nav', false);
$navdraweropen = false;
}
$extraclasses = [];
if ($navdraweropen) {
$extraclasses[] = 'drawer-open-left';
}
$bodyattributes = $OUTPUT->body_attributes($extraclasses);
$blockshtml = $OUTPUT->blocks('side-pre');
$hasblocks = strpos($blockshtml, 'data-block=') !== false;
$regionmainsettingsmenu = $OUTPUT->region_main_settings_menu();
$custommenu = $OUTPUT->custom_menu();
if ($custommenu == "") {
$navbarclass = "navbar-toggler hidden-lg-up nocontent-navbar";
} else {
$navbarclass = "navbar-toggler hidden-lg-up";
}
// Header Content.
$logourl = get_logo_url();
$phoneno = theme_qualisaude_get_setting('phoneno');
$emailid = theme_qualisaude_get_setting('emailid');
$scallus = get_string('callus', 'theme_qualisaude');
$semail = get_string('email', 'theme_qualisaude');
$username = $USER->firstname.' '.$USER->lastname;
// Footer Content.
$footlogourl = get_footer_logo_url();
$footlogo = theme_qualisaude_get_setting('footlogo');
$footlogo = (!$footlogo) ? 0 : 1;
$footnote = theme_qualisaude_get_setting('footnote', 'format_html');
$fburl = theme_qualisaude_get_setting('fburl');
$pinurl = theme_qualisaude_get_setting('pinurl');
$twurl = theme_qualisaude_get_setting('twurl');
$gpurl = theme_qualisaude_get_setting('gpurl');
$address = theme_qualisaude_get_setting('address');
$emailid = theme_qualisaude_get_setting('emailid');
$phoneno = theme_qualisaude_get_setting('phoneno');
$copyrightfooter = theme_qualisaude_get_setting('copyright_footer');
$infolink = theme_qualisaude_get_setting('infolink');
$infolink = theme_qualisaude_infolink();
$sinfo = get_string('info', 'theme_qualisaude');
$scontactus = get_string('contact_us', 'theme_qualisaude');
$phone = get_string('phone', 'theme_qualisaude');
$email = get_string('email', 'theme_qualisaude');
$sfollowus = get_string('followus', 'theme_qualisaude');
$myCourses = getMyCourses();
$url = ($fburl != '' || $pinurl != '' || $twurl != '' || $gpurl != '') ? 1 : 0;
$block3 = ($address != '' || $phoneno != '' || $emailid != '' || $url != 0) ? 1 : 0;
$footerblock1 = ($footlogo != 0 || $footnote != '' || $infolink != '' || $url != 0 || $block3 != 0) ? 1 : 0;
$footerblock = ($footlogo != 0 || $footnote != '' || $infolink != ''
|| $url != 0 || $block3 != 0 || $copyrightfooter != '') ? 1 : 0;
$block1 = ($footlogo || $footnote) ? 1 : 0;
$infoslink = ($infolink != '') ? 1 : 0;
$blockarrange = $block1 + $infoslink + $block3;
switch ($blockarrange) {
case 3:
$colclass = 'col-md-4';
break;
case 2:
$colclass = 'col-md-6';
break;
case 1:
$colclass = 'col-md-12';
break;
case 0:
$colclass = '';
break;
default:
$colclass = 'col-md-4';
break;
}
$templatecontext = [
'sitename' => format_string($SITE->shortname, true, ['context' => context_course::instance(SITEID), "escape" => false]),
'output' => $OUTPUT,
'sidepreblocks' => $blockshtml,
'hasblocks' => $hasblocks,
'bodyattributes' => $bodyattributes,
'navdraweropen' => $navdraweropen,
'regionmainsettingsmenu' => $regionmainsettingsmenu,
'hasregionmainsettingsmenu' => !empty($regionmainsettingsmenu),
"logourl" => $logourl,
"phoneno" => $phoneno,
"emailid" => $emailid,
"s_callus" => $scallus,
"s_email" => $semail,
"logourl" => $logourl,
"footlogo" => $footlogo,
"footnote" => $footnote,
"fburl" => $fburl,
"pinurl" => $pinurl,
"twurl" => $twurl,
"gpurl" => $gpurl,
"address" => $address,
"emailid" => $emailid,
"phoneno" => $phoneno,
"copyright_footer" => $copyrightfooter,
"infolink" => $infolink,
"s_info" => $sinfo,
"s_contact_us" => $scontactus,
"phone" => $phone,
"email" => $email,
"s_followus" => $sfollowus,
"url" => $url,
"infolink" => $infolink,
"navbarclass" => $navbarclass,
"block3" => $block3,
"footerblock" => $footerblock,
"footerblock1" => $footerblock1,
"colclass" => $colclass,
"block1" => $block1,
"footlogourl" => $footlogourl,
"username" => $username,
"show_btn_leftblock"=>$show_btn_leftblock,
"myCourses"=>$myCourses
];
$templatecontext['flatnavigation'] = $PAGE->flatnav;
echo $OUTPUT->render_from_template('theme_qualisaude/my', $templatecontext);
function getMyCourses(){
global $DB, $OUTPUT;
$content = "";
if(is_siteadmin()) {
$content .= "<div class='col-12'>";
$content .= "<div class='conteiner' style='background-color:#f8f9fa; margin-bottom: 20px;'>";
$content .= "<div class='row'>";
$content .= "<div class='col-12'>";
$content .= "<div style='padding:10px 10px 0 10px;'>";
$content .= "<h3>Página acessada como administrador</h3>";
//listagem completa dos cursos abre apenas para admins
$categories = array_values($DB->get_records('course_categories', null, 'id desc', 'id, name, visible'));
$SELECT = "<select name='categorias[]' id='sel1' class=\"form-control\" multiple>\n";
foreach($categories as $cat){
$SELECT .= "<option value=\"$cat->id\">$cat->name</option>";
}
$SELECT.="</select>";
$content .= "<div class=\"form-group\">";
$content .= " <label for=\"sel1\">Selecione as categorias:</label><form method=\"get\">\n";
$content .= $SELECT;
$content .= "<input type='submit' value='Carregar' style='margin-top:10px;' /></form>";//$btn_rel_coord imprime botao para acesso a relatorio de coordenadores
$content .= "</div>";
$content .= "</div>";
$content .= "</div>";
$content .= "</div>";
$content .= "</div>";
$content .= "</div>";
$request = optional_param_array('categorias', '', PARAM_INT);
if(!$request){//caso não tenha dados para requisição, carrego o primeiro da lista
$request = $categories[0]->id;
}
$request_result = "";
if(is_array($request)){//caso seja um array transformo em string para filtro
$request = implode(',', $request);
$request_result = $request;
}else{
$request_result = $request;
}
$query = "SELECT c.id, c.fullname, c.shortname,cc.id as catid, cc.name FROM {course} as c
INNER JOIN {course_categories} as cc on c.category = cc.id
WHERE cc.id in ($request_result)
ORDER BY cc.id DESC";
$courses_list = $DB->get_records_sql($query);
$content .= "<section id=\"list-course\" class=\"col-12 card\">\n";
$content .= "<div class=\"card-body \">\n";
$content .= "<div class=\"card-text \">\n";
$content .= "<div class=\"card-deck dashboard-card-deck\">\n";
// $content .= "<ul class='row'>\n";
//print_object($courses_list);
foreach($courses_list as $course){
$professores_list = array_values($DB->get_records_sql("SELECT U.id, U.firstname, U.lastname, RA.roleid FROM {user} AS U
INNER JOIN {role_assignments} AS RA ON U.id = RA.userid
INNER JOIN {context} AS C ON RA.contextid = C.id
WHERE C.instanceid = $course->id AND RA.roleid in (3)
ORDER BY RA.roleid ASC"));
$html_profs = '';
$lastKey =count($professores_list);
foreach($professores_list as $key =>$prof){
//echo $key." == ".$lastKey."<br>";
// if($key != $lastKey-1){
// $html_profs.=$prof->firstname.' '.$prof->lastname.' / ';
// }else{
// $html_profs.=$prof->firstname.' '.$prof->lastname;
// }
$html_profs.= $OUTPUT->user_picture($prof, array('size'=>30, 'class'=>'userpicture foto'));
}
$image_name = explode('_',$course->shortname)[0];
if(file_exists($imagedir.$image_name.$mimetipe_image)) {
$image_caminho = $imagepath . $image_name . $mimetipe_image;
}else{
$image_caminho = $imagepath .'notfound'.$mimetipe_image;
}
$content .= '
<div class="card dashboard-card" role="listitem" data-region="course-content" data-course-id="2">
<a href="http://localhost/qualisaude/course/view.php?id=2" tabindex="-1">
<div class="card-img dashboard-card-img" style="background-image: url('.$image_caminho.');">
<span class="sr-only">Imagem do curso</span>
</div>
</a>
<div class="p-2 course-info-container" id="course-info-container-2-4">
<div class="d-flex align-items-start">
<div class="w-100 text-truncate">
<a href="http://localhost/qualisaude/course/view.php?id=2" class="coursename mr-2">
<span class="sr-only">Nome do curso</span>
<span class="multiline">'.$course->fullname.'</span>
</a>
</div>
</div>
</div>
<div class="p-2">
<div class="progress bg-white border">
<div class="progress-bar bar" role="progressbar" aria-valuenow="50" style="width: '.getProgress($course).'%" aria-valuemin="0" aria-valuemax="100"></div>
</div>
<div class="small">
<span class="sr-only">Progresso do curso:</span>
<strong>'.getProgress($course).'</strong>% completo
</div>
</div>
</div>
';
}
// $content .= "</ul>\n";
$content .= "</div>";
$content .= "</div>";
$content .= "</div>";
$content .= "</section>\n";
}else{// Carregamento para usuário que não são administrador
//------------- ---------------
//SET COURSE LIST MANDACARU
//------------- ---------------
$courses_list = enrol_get_my_courses(NULL,'sortorder DESC');
$listcourse = array();
$categories = $DB->get_records('course_categories', null, '', 'id, name');
$auxcat = 0;
$filtered_course_list = array();
foreach($courses_list as $courseobj){
if($courseobj->category ==5 || $courseobj->category ==1){//Filtro que elimina as disciplinas de categorias que não devem ser consideradas
continue;
}
//pegando docentes
$professores_list = $DB->get_records_sql("SELECT U.id, U.firstname, U.lastname, RA.roleid FROM {user} AS U
INNER JOIN {role_assignments} AS RA ON U.id = RA.userid
INNER JOIN {context} AS C ON RA.contextid = C.id
WHERE C.instanceid = $courseobj->id AND RA.roleid in (3)
ORDER BY RA.roleid ASC");
if($auxcat ==0){
$change_category = 1;
$auxcat = $courseobj->category;
}elseif($auxcat != $courseobj->category){
$change_category = 1;
$auxcat = $courseobj->category;
}else{
$change_category = 0;
$auxcat = $courseobj->category;
}
$courseobj->categoryname = $categories[$courseobj->category]->name;
$image_name = explode('_',$courseobj->shortname)[0];
if(file_exists($imagedir.$image_name.$mimetipe_image)) {
$courseobj->imagepath = $imagepath . $image_name . $mimetipe_image;
$courseobj->changecategory = $change_category;
$courseobj->courselink = $course_link;
if($courseobj->category != 5){//tem que pular
$courseobj->proflist =array_values($professores_list);
}
}else{
$courseobj->imagepath = $imagepath .'notfound'.$mimetipe_image;
$courseobj->changecategory = $change_category;
$courseobj->courselink = $course_link;
if($courseobj->category != 5){
$courseobj->proflist =array_values($professores_list);
}
}
$filtered_course_list[]= $courseobj; // Aplicação do filtro eliminando as disciplinas que não devem ser consideradas
}
// print_object($courses_list);
//------------- ---------------
//SET COURSE LIST MANDACARU
//------------- ---------------
$content .= '<section id="list-course" class="col-lg-12 col-md-12 col-xs-12">';
$content .= ' <ul class="nav nav-tabs" id="myTabs" role="tablist">';
$cont = 0;
foreach($filtered_course_list as $key=>$cats){
$active = "";
if($key==0){
$active ='active';
}
if($cats->changecategory){
$content .= "<li role=\"presentation\"><a href=\"#{$cats->category}\" class=\"{$active}\" aria-controls=\"categoryname\" role=\"tab\" data-toggle=\"tab\">$cats->categoryname</a></li>";
}
}
if(count($filtered_course_list) == $cont ) {
$content .= "<li role=\"presentation\" class=\"active\"><a href=\"#\" aria-controls=\"categoryname\" role=\"tab\" data-toggle=\"tab\">Nenhuma disciplina disponível</a></li>";
}
$content .= ' </ul>';
$content .= ' <div class="tab-content card-body">';
$continue =0;
foreach($filtered_course_list as $key=>$cats){
$active = "";
if($key ==0){
$active ='active';
}
//close div
if($cats->changecategory && $key!=0){
// $content .= "</ul>\n";
$content .= " </div>\n";
}else{
$active ='active';
}
//open div
if($cats->changecategory){
$content .= "<div role=\"tabpanel\" class=\"tab-pane card-deck dashboard-card-deck fade in {$active}\" id=\"$cats->category\">\n";
// $content .= "<ul class='row'>\n";
}
$html_profs = '';
$lastKey =count($cats->proflist);
foreach($cats->proflist as $key =>$prof){
//echo $key." == ".$lastKey."<br>";
if($key != $lastKey-1){
$html_profs.=$prof->firstname.' '.$prof->lastname.' / ';
}else{
$html_profs.=$prof->firstname.' '.$prof->lastname;
}
}
// $content .= "<li class=\"col-sm-4 border-gray back-white padding\">
// <div class=\"box-list-course\">
// <hr style=\"background:#c43f00\">
// <h3><a href=\"{$cats->courselink}{$cats->id} \" title='Diciplina - $cats->fullname'>{$cats->fullname}</a></h3>
// <!--<p class=\"sub-title\">letras portugues</p>-->
// <p class=\"coordenador\"><b>Professores: </b>{$html_profs}</p>
// <figure>
// <a href=\"{$cats->courselink}{$cats->id} \"><img src=\"{$cats->imagepath}\" alt ='Imagem da diciplina $cats->fullname'class=\"img-responsive\" ></a>
// </figure>
// <div class=\"barra-progresso\">
// <!--<div class=\"progresso\"><hr style=\"width:37%;\"></div>-->
// <!--<div class=\"porcentagem\">37%</div>-->
// </div>
// </div>
// </li>";
$content .= '
<div class="card dashboard-card" role="listitem" data-region="course-content" data-course-id="2">
<a href="http://localhost/qualisaude/course/view.php?id=2" tabindex="-1">
<div class="card-img dashboard-card-img" style="background-image: url();">
<span class="sr-only">Imagem do curso</span>
</div>
</a>
<div class="p-2 course-info-container" id="course-info-container-2-4">
<div class="d-flex align-items-start">
<div class="w-100 text-truncate">
<a href="http://localhost/qualisaude/course/view.php?id=2" class="coursename mr-2">
<span class="sr-only">Nome do curso</span>
<span class="multiline">'.$cats->fullname.'</span>
</a>
</div>
</div>
</div>
<div class="p-2">
<div class="progress bg-white border">
<div class="progress-bar bar" role="progressbar" aria-valuenow="50" style="width: '.getProgress($cats).'%" aria-valuemin="0" aria-valuemax="100"></div>
</div>
<div class="small">
<span class="sr-only">Progresso do curso:</span>
<strong>'.getProgress($cats).'</strong>% completo
</div>
</div>
</div>
';
//close div - caso seja o último do array, ele precisa fechar o anterior e auto fechar o último. - Correção de bug realizada
/*if(count($filtered_course_list) == $key+1){//
echo "</ul>\n";
echo " </div>\n";
}*/
}
// $content .= "</ul>\n";
$content .= " </div>\n";
/* if(count($courses_list) == $continue){
}else {
echo "</ul>\n";
echo " </div><!--Aqui finaliza-->\n";
}*/
$content .= ' </div>';
$content .= '</section>';
}
return $content;
}
function getProgress($course){
global $USER;
if (empty($userid)) {
$userid = $USER->id;
}
$percentage = progress::get_course_progress_percentage($course);
if(!$percentage){
$percentage=0;
}
// $completion = new \completion_info($course);
// $modules = $completion->get_activities();
// $count = count($modules);
// if (!$count) {
// $count=0;
// }
// $completed = 0;
// foreach ($modules as $module) {
// $data = $completion->get_data($module, false, $userid);
// $completed += $data->completionstate == COMPLETION_INCOMPLETE ? 0 : 1;
// }
//
// $content = "<div class='barra_progresso'>";
// $content .= " <label>$completed atividades completas de $count</label>";
// $content .= " <div class='progresso'>";
// $content .= " <div class='andamento' style='width:$percentage%;'><label style='color:#fff; float: right; font-weight: 300; margin-right:10px; font-size: 14px;'>$percentage%</label></div>";
// $content .= " </div>";
// $content .= "</div>";
return $percentage;
}