Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1441 ariadna 1
<?php
2
// This file is part of Moodle - http://moodle.org/
3
//
4
// Moodle is free software: you can redistribute it and/or modify
5
// it under the terms of the GNU General Public License as published by
6
// the Free Software Foundation, either version 3 of the License, or
7
// (at your option) any later version.
8
//
9
// Moodle is distributed in the hope that it will be useful,
10
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
// GNU General Public License for more details.
13
//
14
// You should have received a copy of the GNU General Public License
15
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
16
 
17
namespace aiplacement_editor;
18
 
19
use core_ai\manager;
20
 
21
/**
22
 * AI Placement HTML editor utils.
23
 *
24
 * @package    aiplacement_editor
25
 * @copyright  2024 Huong Nguyen <huongnv13@gmail.com>
26
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
27
 */
28
class utils {
29
 
30
    /**
31
     * Check if AI Placement HTML editor action is available for the context.
32
     *
33
     * @param \context $context The context.
34
     * @param string $actionname The name of the action.
35
     * @param string $actionclass The class name of the action.
36
     * @return bool True if the action is available, false otherwise.
37
     */
38
    public static function is_html_editor_placement_action_available(
39
        \context $context,
40
        string $actionname,
41
        string $actionclass
42
    ): bool {
43
        [$plugintype, $pluginname] = explode('_', \core_component::normalize_componentname('aiplacement_editor'), 2);
44
        $pluginmanager = \core_plugin_manager::resolve_plugininfo_class($plugintype);
45
        if (!$pluginmanager::is_plugin_enabled($pluginname)) {
46
            return false;
47
        }
48
 
49
        $aimanager = \core\di::get(manager::class);
50
        if (
51
            has_capability("aiplacement/editor:{$actionname}", $context)
52
            && $aimanager->is_action_available($actionclass)
53
            && $aimanager->is_action_enabled('aiplacement_editor', $actionclass)
54
        ) {
55
            return true;
56
        }
57
        return false;
58
    }
59
}