Proyectos de Subversion Moodle

Rev

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

<?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/>.

/**
 * Front-end class.
 *
 * @package   availability_relativedate
 * @copyright 2022 eWallah.net
 * @author    Renaat Debleu <info@eWallah.net>
 * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */

namespace availability_relativedate;

use cm_info;
use section_info;
use stdClass;

/**
 * Front-end class.
 *
 * @package   availability_relativedate
 * @copyright 2022 eWallah.net
 * @author    Renaat Debleu <info@eWallah.net>
 * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */
class frontend extends \core_availability\frontend {
    /**
     * Gets additional parameters for the plugin's initInner function.
     *
     * Default returns no parameters.
     *
     * @param stdClass $course Course object
     * @param cm_info $cm Course-module currently being edited (null if none)
     * @param section_info $section Section currently being edited (null if none)
     * @return array Array of parameters for the JavaScript function
     */
    protected function get_javascript_init_params($course, cm_info $cm = null, section_info $section = null) {
        global $DB;
        $optionsdwm = self::convert_associative_array_for_js(condition::options_dwm(), 'field', 'display');
        $optionsstart = [
            ['field' => 1, 'display' => condition::options_start(1)],
            ['field' => 6, 'display' => condition::options_start(6)],
        ];
        if ($course->enddate != 0) {
            $optionsstart[] = ['field' => 5, 'display' => condition::options_start(5)];
            $optionsstart[] = ['field' => 2, 'display' => condition::options_start(2)];
        }
        $optionsstart[] = ['field' => 3, 'display' => condition::options_start(3)];
        if ($DB->count_records_select('enrol', 'courseid = :courseid AND enrolenddate > 0', ['courseid' => $course->id]) > 0) {
            $optionsstart[] = ['field' => 4, 'display' => condition::options_start(4)];
        }
        $activitysel = [];
        if ($course->enablecompletion != 0) {
            $currentcmid = $cm ? $cm->id : 0;
            $modinfo = get_fast_modinfo($course);
            $context = \context_course::instance($course->id);
            $str = get_string('section');
            $s = [];
            $enabled = false;
            // Gets only sections with content.
            foreach ($modinfo->get_sections() as $sectionnum => $section) {
                $name = $modinfo->get_section_info($sectionnum)->name;
                if (empty($name)) {
                    $name = $str . ' ' . $sectionnum;
                }
                $s['name'] = format_string($name, true, ['context' => $context]);
                $s['coursemodules'] = [];
                foreach ($section as $cmid) {
                    if ($currentcmid == $cmid) {
                        continue;
                    }
                    $module = $modinfo->get_cm($cmid);
                    // Get only course modules which are not being deleted.
                    if ($module->deletioninprogress == 0) {
                        $compused = $module->completion > 0;
                        $s['coursemodules'][] = [
                            'id' => $cmid,
                            'name' => format_string($module->name, true, ['context' => $context]),
                            'completionenabled' => $compused,
                        ];
                        $enabled = $enabled || $compused;
                    }
                }
                $activitysel[] = $s;
            }
            if ($enabled) {
                $optionsstart[] = ['field' => 7, 'display' => condition::options_start(7)];
            }
        }
        return [$optionsdwm, $optionsstart, is_null($section), [], $activitysel];
    }
}