-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathspeechtester.php
117 lines (95 loc) · 4.11 KB
/
speechtester.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
114
115
116
117
<?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/>.
/**
* SpeechTester mod_minilesson
*
*
* @package mod_minilesson
* @copyright 2023 Justin Hunt ([email protected])
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
require_once(dirname(dirname(dirname(__FILE__))) . '/config.php');
use mod_minilesson\constants;
use mod_minilesson\utils;
$id = optional_param('id', 0, PARAM_INT); // course_module ID, or
$n = optional_param('n', 0, PARAM_INT); // minilesson instance ID
if ($id) {
$cm = get_coursemodule_from_id(constants::M_MODNAME, $id, 0, false, MUST_EXIST);
$course = $DB->get_record('course', ['id' => $cm->course], '*', MUST_EXIST);
$moduleinstance = $DB->get_record(constants::M_TABLE, ['id' => $cm->instance], '*', MUST_EXIST);
} else if ($n) {
$moduleinstance = $DB->get_record(constants::M_TABLE, ['id' => $n], '*', MUST_EXIST);
$course = $DB->get_record('course', ['id' => $moduleinstance->course], '*', MUST_EXIST);
$cm = get_coursemodule_from_instance(constants::M_TABLE, $moduleinstance->id, $course->id, false, MUST_EXIST);
} else {
print_error(0, 'You must specify a course_module ID or an instance ID');
}
$PAGE->set_url(constants::M_URL . '/speechtester.php',
['id' => $cm->id]);
require_login($course, true, $cm);
$modulecontext = context_module::instance($cm->id);
require_capability('mod/minilesson:manage', $modulecontext);
// Get an admin settings
$config = get_config(constants::M_COMPONENT);
// get token
$token = utils::fetch_token($config->apiuser, $config->apisecret);
/// Set up the page header
$PAGE->set_title(format_string($moduleinstance->name));
$PAGE->set_heading(format_string($course->fullname));
$PAGE->set_context($modulecontext);
if($config->enablesetuptab){
$PAGE->set_pagelayout('popup');
}else{
$PAGE->set_pagelayout('incourse');
}
// This puts all our display logic into the renderer.php files in this plugin
$renderer = $PAGE->get_renderer(constants::M_COMPONENT);
// From here we actually display the page.
echo $renderer->header($moduleinstance, $cm, 'speechtester', null, get_string('speechtester', constants::M_COMPONENT));
$tdata = [];
$tdata['language'] = $moduleinstance->ttslanguage;
$tdata['token'] = $token;
$tdata['region'] = $moduleinstance->region;
$tdata['cmid'] = $cm->id;
$tdata['waveheight'] = 75;
$showall = true;
// tts voices
$ttsvoices = utils::get_tts_voices($moduleinstance->ttslanguage, $showall);
$voices = array_map(function($key, $value) {
return ['key' => $key, 'display' => $value];
}, array_keys($ttsvoices), $ttsvoices);
$tdata['voices'] = $voices;
// tts languages
$ttslanguages = utils::get_lang_options();
$languages = array_map(function($key, $value) {
return ['key' => $key, 'display' => $value];
}, array_keys($ttslanguages), $ttslanguages);
$tdata['languages'] = $languages;
// set up the AMD js and related opts
$tdata['recorderid'] = constants::M_RECORDERID;
$tdata['asrurl'] = utils::fetch_lang_server_url($moduleinstance->region, 'transcribe');
echo $renderer->render_from_template(constants::M_COMPONENT . '/speechtester', $tdata);
$jsonstring = json_encode($tdata);
$widgetid = constants::M_RECORDERID . '_opts_9999';
$optshtml =
\html_writer::tag('input', '', ['id' => 'amdopts_' . $widgetid, 'type' => 'hidden', 'value' => $jsonstring]);
$opts = ['widgetid' => $widgetid];
// this inits the model audio helper JS
$PAGE->requires->js_call_amd("mod_minilesson/sthelper", 'init', [$opts]);
echo $optshtml;
// Finish the page
echo $renderer->footer();
return;