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
/**
18
 * Provides the {@link tool_policy\policy_version} persistent.
19
 *
20
 * @package    tool_policy
21
 * @copyright  2018 Sara Arjona (sara@moodle.com)
22
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23
 */
24
 
25
namespace tool_policy;
26
 
27
defined('MOODLE_INTERNAL') || die();
28
 
29
use core\persistent;
30
 
31
/**
32
 * Persistent model representing a single policy document version.
33
 *
34
 * @copyright  2018 Sara Arjona (sara@moodle.com)
35
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
36
 */
37
class policy_version extends persistent {
38
 
39
    /** @var string Table name this persistent is mapped to. */
40
    const TABLE = 'tool_policy_versions';
41
 
42
    /** @var int Site policy document. */
43
    const TYPE_SITE = 0;
44
 
45
    /** @var int Privacy policy document. */
46
    const TYPE_PRIVACY = 1;
47
 
48
    /** @var int Third party policy document. */
49
    const TYPE_THIRD_PARTY = 2;
50
 
51
    /** @var int Other policy document. */
52
    const TYPE_OTHER = 99;
53
 
54
    /** @var int Policy applies to all users. */
55
    const AUDIENCE_ALL = 0;
56
 
57
    /** @var int Policy applies to logged in users only. */
58
    const AUDIENCE_LOGGEDIN = 1;
59
 
60
    /** @var int Policy applies to guests only. */
61
    const AUDIENCE_GUESTS = 2;
62
 
63
    /** @var int Policy version is a draft. */
64
    const STATUS_DRAFT = 0;
65
 
66
    /** @var int Policy version is the active one. */
67
    const STATUS_ACTIVE = 1;
68
 
69
    /** @var int Policy version has been archived. */
70
    const STATUS_ARCHIVED = 2;
71
 
72
    /** @var int Policy to be accepted together with others on the consent page. */
73
    const AGREEMENTSTYLE_CONSENTPAGE = 0;
74
 
75
    /** @var int Policy to be accepted on its own page before reaching the consent page. */
76
    const AGREEMENTSTYLE_OWNPAGE = 1;
77
 
78
    /** @var int Users must agree to the policy in order to use the site. */
79
    const AGREEMENT_COMPULSORY = 0;
80
 
81
    /** @var int Users may or may not agree to the policy. */
82
    const AGREEMENT_OPTIONAL = 1;
83
 
84
    /**
85
     * Return the definition of the properties of this model.
86
     *
87
     * @return array
88
     */
89
    protected static function define_properties() {
90
        return [
91
            'name' => [
92
                'type' => PARAM_TEXT,
93
                'default' => '',
94
            ],
95
            'type' => [
96
                'type' => PARAM_INT,
97
                'choices' => [
98
                    self::TYPE_SITE,
99
                    self::TYPE_PRIVACY,
100
                    self::TYPE_THIRD_PARTY,
101
                    self::TYPE_OTHER,
102
                ],
103
                'default' => self::TYPE_SITE,
104
            ],
105
            'audience' => [
106
                'type' => PARAM_INT,
107
                'choices' => [
108
                    self::AUDIENCE_ALL,
109
                    self::AUDIENCE_LOGGEDIN,
110
                    self::AUDIENCE_GUESTS,
111
                ],
112
                'default' => self::AUDIENCE_ALL,
113
            ],
114
            'archived' => [
115
                'type' => PARAM_BOOL,
116
                'default' => false,
117
            ],
118
            'policyid' => [
119
                'type' => PARAM_INT,
120
            ],
121
            'agreementstyle' => [
122
                'type' => PARAM_INT,
123
                'choices' => [
124
                    self::AGREEMENTSTYLE_CONSENTPAGE,
125
                    self::AGREEMENTSTYLE_OWNPAGE,
126
                ],
127
                'default' => self::AGREEMENTSTYLE_CONSENTPAGE,
128
            ],
129
            'optional' => [
130
                'type' => PARAM_INT,
131
                'choices' => [
132
                    self::AGREEMENT_OPTIONAL,
133
                    self::AGREEMENT_COMPULSORY,
134
                ],
135
                'default' => self::AGREEMENT_COMPULSORY,
136
            ],
137
            'revision' => [
138
                'type' => PARAM_TEXT,
139
                'default' => '',
140
            ],
141
            'summary' => [
142
                'type' => PARAM_RAW,
143
                'default' => '',
144
            ],
145
            'summaryformat' => [
146
                'type' => PARAM_INT,
147
                'default' => FORMAT_HTML,
148
                'choices' => [
149
                    FORMAT_PLAIN,
150
                    FORMAT_HTML,
151
                    FORMAT_MOODLE,
152
                    FORMAT_MARKDOWN,
153
                ],
154
            ],
155
            'content' => [
156
                'type' => PARAM_RAW,
157
                'default' => '',
158
            ],
159
            'contentformat' => [
160
                'type' => PARAM_INT,
161
                'default' => FORMAT_HTML,
162
                'choices' => [
163
                    FORMAT_PLAIN,
164
                    FORMAT_HTML,
165
                    FORMAT_MOODLE,
166
                    FORMAT_MARKDOWN,
167
                ],
168
            ],
169
        ];
170
    }
171
 
172
    /**
173
     * Hook to execute after an update.
174
     *
175
     * @param bool $result Whether or not the update was successful (but it always is)
176
     */
177
    protected function after_update($result) {
178
 
179
        $optcache = \cache::make('tool_policy', 'policy_optional');
180
        $optcache->delete($this->raw_get('id'));
181
    }
182
 
183
    /**
184
     * Hook to execute after an update.
185
     *
186
     * @param bool $result Whether or not the update was successful (but it always is)
187
     */
188
    protected function after_delete($result) {
189
 
190
        $optcache = \cache::make('tool_policy', 'policy_optional');
191
        $optcache->delete($this->raw_get('id'));
192
    }
193
}