Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 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 tool_courserating\local\models;
18
 
19
/**
20
 * Model for rating table
21
 *
22
 * @package     tool_courserating
23
 * @copyright   2022 Marina Glancy <marina.glancy@gmail.com>
24
 * @license     https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
25
 */
26
class rating extends \core\persistent {
27
 
28
    /** @var string Table name */
29
    public const TABLE = 'tool_courserating_rating';
30
 
31
    /**
32
     * Return the definition of the properties of this model.
33
     *
34
     * @return array
35
     */
36
    protected static function define_properties(): array {
37
        return [
38
            'courseid' => [
39
                'type' => PARAM_INT,
40
            ],
41
            'userid' => [
42
                'type' => PARAM_INT,
43
            ],
44
            'rating' => [
45
                'type' => PARAM_INT,
46
            ],
47
            'review' => [
48
                'type' => PARAM_RAW,
49
                'default' => '',
50
            ],
51
            'hasreview' => [
52
                'type' => PARAM_INT,
53
                'default' => 0,
54
            ],
55
        ];
56
    }
57
 
58
    /**
59
     * Context of this rating
60
     *
61
     * @return \context_course
62
     */
63
    public function get_context(): \context_course {
64
        return \context_course::instance($this->get('courseid'));
65
    }
66
 
67
    /**
68
     * Checks if review is actually empty (i.e. empty <p> or just newlines is not considered a content)
69
     *
70
     * @param string $review
71
     * @return bool
72
     */
73
    public static function review_is_empty(string $review): bool {
74
        $review = clean_text($review);
75
        $tagstostrip = ['p', 'span', 'font', 'br', 'div'];
76
        foreach ($tagstostrip as $tag) {
77
            $review = preg_replace("/<\\/?" . $tag . "\b(.|\\s)*?>/", '', $review);
78
        }
79
        return strlen(trim($review)) == 0;
80
    }
81
 
82
    /**
83
     * Magic method to set review
84
     *
85
     * @param string $value
86
     */
87
    protected function set_review($value) {
88
        $this->raw_set('review', $value);
89
        $this->raw_set('hasreview', (int)(!self::review_is_empty(($value))));
90
    }
91
}