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/**
18 * Base class for question bank columns that just contain an action icon.
19 *
20 * @package   core_question
21 * @copyright 2009 Tim Hunt
22 * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23 */
24
25namespace core_question\bank;
26defined('MOODLE_INTERNAL') || die();
27
28
29/**
30 * Base class for question bank columns that just contain an action icon.
31 *
32 * @copyright 2009 Tim Hunt
33 * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
34 */
35class edit_action_column extends menu_action_column_base {
36    protected $stredit;
37    protected $strview;
38
39    public function init() {
40        parent::init();
41        $this->stredit = get_string('editquestion', 'question');
42        $this->strview = get_string('view');
43    }
44
45    public function get_name() {
46        return 'editaction';
47    }
48
49    protected function get_url_icon_and_label(\stdClass $question): array {
50        if (!\question_bank::is_qtype_installed($question->qtype)) {
51            // It sometimes happens that people end up with junk questions
52            // in their question bank of a type that is no longer installed.
53            // We cannot do most actions on them, because that leads to errors.
54            return [null, null, null];
55        }
56
57        if (question_has_capability_on($question, 'edit')) {
58            return [$this->qbank->edit_question_moodle_url($question->id), 't/edit', $this->stredit];
59        } else if (question_has_capability_on($question, 'view')) {
60            return [$this->qbank->edit_question_moodle_url($question->id), 'i/info', $this->strview];
61        } else {
62            return [null, null, null];
63        }
64    }
65}
66