Proyectos de Subversion Moodle

Rev

Autoría | Ultima modificación | Ver Log |

<?php
// This file is part of the Zoom plugin for 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/>.

/**
 * Mobile support for zoom.
 *
 * @package     mod_zoom
 * @copyright   2018 Nick Stefanski <nmstefanski@gmail.com>
 * @license     http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */

namespace mod_zoom\output;

use context_module;
use mod_zoom\external;

/**
 * Mobile output class for zoom
 */
class mobile {
    /**
     * Returns the zoom course view for the mobile app,
     *  including meeting details and launch button (if applicable).
     * @param  array $args Arguments from tool_mobile_get_content WS
     *
     * @return array   HTML, javascript and otherdata
     */
    public static function mobile_course_view($args) {
        global $OUTPUT, $DB;

        $args = (object) $args;
        $versionname = $args->appversioncode >= 3950 ? 'latest' : 'ionic3';
        $cm = get_coursemodule_from_id('zoom', $args->cmid);

        // Capabilities check.
        require_login($args->courseid, false, $cm, true, true);

        $context = context_module::instance($cm->id);

        require_capability('mod/zoom:view', $context);
        // Right now we're just implementing basic viewing, otherwise we may
        // need to check other capabilities.
        $zoom = $DB->get_record('zoom', ['id' => $cm->instance]);

        // WS to get zoom state.
        try {
            $zoomstate = external::get_state($cm->id);
        } catch (\Exception $e) {
            $zoomstate = [];
        }

        // Format date and time.
        $starttime = userdate($zoom->start_time);
        $duration = format_time($zoom->duration);

        // Get audio option string.
        $optionaudio = get_string('audio_' . $zoom->option_audio, 'mod_zoom');

        $data = [
            'zoom' => $zoom,
            'available' => $zoomstate['available'],
            'status' => $zoomstate['status'],
            'start_time' => $starttime,
            'duration' => $duration,
            'option_audio' => $optionaudio,
            'cmid' => $cm->id,
            'courseid' => $args->courseid,
        ];

        return [
            'templates' => [
                [
                    'id' => 'main',
                    'html' => $OUTPUT->render_from_template("mod_zoom/mobile_view_page_$versionname", $data),
                ],
            ],
            'javascript' => "this.loadMeeting = function(result) { window.open(result.joinurl, '_system'); };",
            // This JS will redirect to a joinurl passed by the mod_zoom_grade_item_update WS.
            'otherdata' => '',
            'files' => '',
        ];
    }
}