Initial commit

This commit is contained in:
eduardogusmao
2019-08-27 11:32:32 -03:00
commit ac035071ec
392 changed files with 27015 additions and 0 deletions

427
lib.php Normal file
View File

@@ -0,0 +1,427 @@
<?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/>.
/**
* lib.php
* @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();
/**
* Parses CSS before it is cached.
*
* This function can make alterations and replace patterns within the CSS.
*
* @param type|string $theme The theme config object.
* @return string The parsed CSS The parsed CSS.
*/
function theme_qualisaude_get_pre_scss($theme) {
$scss = theme_qualisaude_set_fontwww();
return $scss;
}
/**
* Get extra scss from settings.
* @param type|string $theme
* @return type|string
*/
function theme_qualisaude_get_extra_scss($theme) {
return !empty($theme->settings->customcss) ? $theme->settings->customcss : '';
}
/**
* Get theme main scss content.
* @param type|string $theme
* @return string
*/
function theme_qualisaude_get_main_scss_content($theme) {
global $CFG;
$scss = '';
$parentconfig = theme_config::load('boost');
$scss .= theme_boost_get_main_scss_content($parentconfig);
$themescssfile = $CFG->dirroot.'/theme/qualisaude/scss/preset/theme.scss';
if ( file_exists($themescssfile) ) {
$scss .= file_get_contents($themescssfile);
}
return $scss;
}
/**
* Load the Jquery and migration files
* Load the our theme js file
* @param moodle_page $page.
*/
function theme_qualisaude_page_init(moodle_page $page) {
$page->requires->jquery();
$page->requires->js('/theme/qualisaude/javascript/theme.js');
}
/**
* Loads the CSS Styles and replace the background images.
* If background image not available in the settings take the default images.
*
* @param string $css
* @param string $theme
* @return string
*/
function theme_qualisaude_process_css($css, $theme) {
global $OUTPUT, $CFG;
// Set the background image for the logo.
$logo = $theme->setting_file_url('logo', 'logo');
$css = theme_qualisaude_pre_css_set_fontwww($css);
// Set custom CSS.
if (!empty($theme->settings->customcss)) {
$customcss = $theme->settings->customcss;
} else {
$customcss = null;
}
return $css;
}
/**
* Adds the logo to CSS.
*
* @param string $css The CSS.
* @param string $logo The URL of the logo.
* @return string The parsed CSS
*/
function theme_qualisaude_set_logo($css, $logo) {
$tag = '[[setting:logo]]';
$replacement = $logo;
if (is_null($replacement)) {
$replacement = '';
}
$css = str_replace($tag, $replacement, $css);
return $css;
}
/**
* Serves any files associated with the theme settings.
*
* @param stdClass $course
* @param stdClass $cm
* @param context $context
* @param string $filearea
* @param array $args
* @param bool $forcedownload
* @param array $options
* @return bool
*/
function theme_qualisaude_pluginfile($course, $cm, $context, $filearea, $args, $forcedownload, array $options = array()) {
static $theme;
if (empty($theme)) {
$theme = theme_config::load('qualisaude');
}
if ($context->contextlevel == CONTEXT_SYSTEM) {
if ($filearea === 'logo') {
return $theme->setting_file_serve('logo', $args, $forcedownload, $options);
} else if ($filearea === 'style') {
theme_qualisaude_serve_css($args[1]);
} else if ($filearea === 'pagebackground') {
return $theme->setting_file_serve('pagebackground', $args, $forcedownload, $options);
} else if (preg_match("/slide[1-9][0-9]*image/", $filearea) !== false) {
return $theme->setting_file_serve($filearea, $args, $forcedownload, $options);
} else {
send_file_not_found();
}
} else {
send_file_not_found();
}
}
/**
* Serves CSS for image file updated to styles.
*
* @param string $filename
* @return string
*/
function theme_qualisaude_serve_css($filename) {
global $CFG;
if (!empty($CFG->themedir)) {
$thestylepath = $CFG->themedir . '/qualisaude/style/';
} else {
$thestylepath = $CFG->dirroot . '/theme/qualisaude/style/';
}
$thesheet = $thestylepath . $filename;
/* http://css-tricks.com/snippets/php/intelligent-php-cache-control/ - rather than /lib/csslib.php as it is a static file who's
contents should only change if it is rebuilt. But! There should be no difference with TDM on so will see for the moment if
that decision is a factor. */
$etagfile = md5_file($thesheet);
// File.
$lastmodified = filemtime($thesheet);
// Header.
$ifmodifiedsince = (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ? $_SERVER['HTTP_IF_MODIFIED_SINCE'] : false);
$etagheader = (isset($_SERVER['HTTP_IF_NONE_MATCH']) ? trim($_SERVER['HTTP_IF_NONE_MATCH']) : false);
if ((($ifmodifiedsince) && (strtotime($ifmodifiedsince) == $lastmodified)) || $etagheader == $etagfile) {
theme_qualisaude_send_unmodified($lastmodified, $etagfile);
}
theme_qualisaude_send_cached_css($thestylepath, $filename, $lastmodified, $etagfile);
}
/**
* Set browser cache used in php header.
* @param type|string $lastmodified
* @param type|string $etag
*/
function theme_qualisaude_send_unmodified($lastmodified, $etag) {
$lifetime = 60 * 60 * 24 * 60;
header('HTTP/1.1 304 Not Modified');
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + $lifetime) . ' GMT');
header('Cache-Control: public, max-age=' . $lifetime);
header('Content-Type: text/css; charset=utf-8');
header('Etag: "' . $etag . '"');
if ($lastmodified) {
header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $lastmodified) . ' GMT');
}
die;
}
/**
* Cached css for theme_qualisaude
*
* @param type|string $path
* @param type|string $filename
* @param type|string $lastmodified
* @param type|string $etag
*/
function theme_qualisaude_send_cached_css($path, $filename, $lastmodified, $etag) {
global $CFG;
require_once($CFG->dirroot . '/lib/configonlylib.php'); // For min_enable_zlib_compression function.
// 60 days only - the revision may get incremented quite often.
$lifetime = 60 * 60 * 24 * 60;
header('Etag: "' . $etag . '"');
header('Content-Disposition: inline; filename="'.$filename.'"');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $lastmodified) . ' GMT');
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + $lifetime) . ' GMT');
header('Pragma: ');
header('Cache-Control: public, max-age=' . $lifetime);
header('Accept-Ranges: none');
header('Content-Type: text/css; charset=utf-8');
if (!min_enable_zlib_compression()) {
header('Content-Length: ' . filesize($path . $filename));
}
readfile($path . $filename);
die;
}
/**
* Adds any custom CSS to the CSS before it is cached.
*
* @param type|string $css The original CSS.
* @param type|string $customcss The custom CSS to add.
* @return type|string The CSS which now contains our custom CSS.
*/
function theme_qualisaude_set_customcss($css, $customcss) {
$tag = '[[setting:customcss]]';
$replacement = $customcss;
if (is_null($replacement)) {
$replacement = '';
}
$css = str_replace($tag, $replacement, $css);
return $css;
}
/**
* Returns an object containing HTML for the areas affected by settings.
*
* Do not add Clean specific logic in here, child themes should be able to
* rely on that function just by declaring settings with similar names.
*
* @param renderer_base $output Pass in $OUTPUT.
* @param moodle_page $page Pass in $PAGE.
* @return stdClass An object with the following properties:
* - navbarclass A CSS class to use on the navbar. By default ''.
* - heading HTML to use for the heading. A logo if one is selected or the default heading.
* - footnote HTML to use as a footnote. By default ''.
*/
function theme_qualisaude_get_html_for_settings(renderer_base $output, moodle_page $page) {
global $CFG;
$return = new stdClass;
$return->navbarclass = '';
if (!empty($page->theme->settings->invert)) {
$return->navbarclass .= ' navbar-inverse';
}
if (!empty($page->theme->settings->logo)) {
$return->heading = html_writer::link($CFG->wwwroot, '', array('title' => get_string('home'), 'class' => 'logo'));
} else {
$return->heading = $output->page_heading();
}
$return->footnote = '';
if (!empty($page->theme->settings->footnote)) {
$return->footnote = '<div class="footnote text-center">'.format_text($page->theme->settings->footnote).'</div>';
}
return $return;
}
/**
* Loads the CSS Styles and put the font path
*
* @param type|string $css
* @return type|string
*/
function theme_qualisaude_pre_css_set_fontwww($css) {
global $CFG, $PAGE;
if (empty($CFG->themewww)) {
$themewww = $CFG->wwwroot."/theme";
} else {
$themewww = $CFG->themewww;
}
$tag = '[[setting:fontwww]]';
$theme = theme_config::load('qualisaude');
$css = str_replace($tag, $themewww.'/qualisaude/fonts/', $css);
return $css;
}
/**
* Load the font folder path into the scss.
* @param type|string $css
* @return type|string
*/
function theme_qualisaude_set_fontwww() {
global $CFG, $PAGE;
if (empty($CFG->themewww)) {
$themewww = $CFG->wwwroot."/theme";
} else {
$themewww = $CFG->themewww;
}
$theme = theme_config::load('qualisaude');
$fontwww = '$fontwww: "'.$themewww.'/qualisaude/fonts/"'.";\n";
return $fontwww;
}
// Logo Image URL Fetch from theme settings.
// @ return string.
if (!function_exists('get_logo_url')) {
/**
* Description
* @return type|string
*/
function get_logo_url() {
global $OUTPUT;
static $theme;
if (empty($theme)) {
$theme = theme_config::load('qualisaude');
}
$logo = $theme->setting_file_url('logo', 'logo');
$logo = empty($logo) ? $OUTPUT->image_url('home/logo', 'theme') : $logo;
return $logo;
}
}
/**
* Renderer the slider images.
* @param type|string $p
* @param type|string $sliname
* @return type|string
*/
function theme_qualisaude_render_slideimg($p, $sliname) {
global $PAGE, $OUTPUT;
$nos = theme_qualisaude_get_setting('numberofslides');
$i = $p % 3;
$slideimage = $OUTPUT->image_url('home/slide'.$i, 'theme');
// Get slide image or fallback to default.
if (theme_qualisaude_get_setting($sliname)) {
$slideimage = $PAGE->theme->setting_file_url($sliname , $sliname);
}
return $slideimage;
}
/**
*
* Description
* @param type|string $setting
* @param type|bool $format
* @return type|string
*/
function theme_qualisaude_get_setting($setting, $format = true) {
global $CFG;
require_once($CFG->dirroot . '/lib/weblib.php');
static $theme;
if (empty($theme)) {
$theme = theme_config::load('qualisaude');
}
if (empty($theme->settings->$setting)) {
return false;
} else if (!$format) {
return $theme->settings->$setting;
} else if ($format === 'format_text') {
return format_text($theme->settings->$setting, FORMAT_PLAIN);
} else if ($format === 'format_html') {
return format_text($theme->settings->$setting, FORMAT_HTML, array('trusted' => true, 'noclean' => true));
} else {
return format_string($theme->settings->$setting);
}
}
// Return the current theme url.
// @ return string.
if (!function_exists('theme_url')) {
/**
* Url for theme_qualisaude.
* @return type|string
*/
function theme_url() {
global $CFG, $PAGE;
$themeurl = $CFG->wwwroot.'/theme/'. $PAGE->theme->name;
return $themeurl;
}
}
/**
* Footer Info links.
* @return type|string
*/
function theme_qualisaude_infolink() {
$infolink = theme_qualisaude_get_setting('infolink');
$content = "";
$infosettings = explode("\n", $infolink);
foreach ($infosettings as $key => $settingval) {
$expset = explode("|", $settingval);
if (isset($expset[1])) {
list($ltxt, $lurl) = $expset;
}
if (isset($ltxt) != '' || isset($lurl) != '') {
$ltxt = trim($ltxt);
$lurl = trim($lurl);
}
if (empty($ltxt)) {
continue;
}
$content .= '<li><a href="'.$lurl.'" target="_blank">'.$ltxt.'</a></li>';
}
return $content;
}