forked from DigitalCampus/moodle-block_oppia_mobile_export
-
Notifications
You must be signed in to change notification settings - Fork 0
/
block_oppia_mobile_export.php
113 lines (91 loc) · 3.67 KB
/
block_oppia_mobile_export.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<?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/>.
/**
* Oppia Mobile Export
* @author Alex Little
* @license http://www.gnu.org/copyleft/gpl.html GNU Public License
* @package block_oppia_mobile_export
*/
defined('MOODLE_INTERNAL') || die();
require_once($CFG->dirroot.'/config.php');
require_once(dirname(__FILE__) . '/constants.php');
$pluginroot = $CFG->dirroot . PLUGINPATH;
require_once($pluginroot . 'lib.php');
require_once($pluginroot . 'version.php');
class block_oppia_mobile_export extends block_base {
public function init() {
$this->title = get_string('pluginname', PLUGINNAME);
}
public function instance_allow_config() {
return false;
}
public function has_config() {
return true;
}
public function get_content() {
global $CFG, $COURSE, $OUTPUT, $pluginroot;
if ($this->content !== null || !isset($COURSE->id) || $COURSE->id == 1) {
return $this->content;
}
$this->content = new stdClass;
if (!has_capability('block/oppia_mobile_export:addinstance', context_course::instance($COURSE->id))) {
return $this->content;
}
$servers = array();
foreach (get_oppiaservers() as $s) {
array_push($servers, $s);
}
$currentstyle = get_oppiaconfig($COURSE->id, 'stylesheet', STYLESHEET_DEFAULT, true);
$settings = array(
'id' => $COURSE->id,
'sesskey' => sesskey(),
'wwwplugin' => $CFG->wwwroot.PLUGINPATH,
'servers' => $servers,
'styles' => $this->get_styles($currentstyle),
'default_server' => $CFG->block_oppia_mobile_export_default_server,
'current_style' => $currentstyle,
);
$this->content->text = $OUTPUT->render_from_template(PLUGINNAME.'/block', $settings);
require($pluginroot . 'version.php'); // To get release no.
$this->content->footer = $OUTPUT->render_from_template(PLUGINNAME.'/block_footer',
array( 'release' => $plugin->release));
if (empty($this->instance)) {
return $this->content;
}
return $this->content;
}
private function get_styles($currentstyle) {
$stylesdir = dirname(__FILE__).'/'.STYLES_DIR.STYLES_THEMES_DIR;
$styles = array();
if ($handle = opendir($stylesdir)) {
while (false !== ($file = readdir($handle))) {
if ($file == "." || $file == ".." || is_dir($stylesdir.$file)) {
continue;
}
list($theme, $extn) = explode('.', $file);
$endsextrasuffix = substr($theme, -strlen(STYLES_EXTRA_SUFFIX)) === STYLES_EXTRA_SUFFIX;
if ($extn == 'scss' && !$endsextrasuffix) {
array_push($styles, array(
'theme' => $theme,
'name' => ucwords($theme, " -"),
'selected' => ($theme == $currentstyle)
));
}
}
}
return $styles;
}
}