MDL-62342 privacy: Use singular/plural form in labels
[moodle.git] / admin / tool / policy / classes / policy_version.php
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/>.
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  */
25 namespace tool_policy;
27 defined('MOODLE_INTERNAL') || die();
29 use core\persistent;
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 {
39     /** @var string Table name this persistent is mapped to. */
40     const TABLE = 'tool_policy_versions';
42     /** @var int Site policy document. */
43     const TYPE_SITE = 0;
45     /** @var int Privacy policy document. */
46     const TYPE_PRIVACY = 1;
48     /** @var int Third party policy document. */
49     const TYPE_THIRD_PARTY = 2;
51     /** @var int Other policy document. */
52     const TYPE_OTHER = 99;
54     /** @var int Policy applies to all users. */
55     const AUDIENCE_ALL = 0;
57     /** @var int Policy applies to logged in users only. */
58     const AUDIENCE_LOGGEDIN = 1;
60     /** @var int Policy applies to guests only. */
61     const AUDIENCE_GUESTS = 2;
63     /** @var int Policy version is a draft. */
64     const STATUS_DRAFT = 0;
66     /** @var int Policy version is the active one. */
67     const STATUS_ACTIVE = 1;
69     /** @var int Policy version has been archived. */
70     const STATUS_ARCHIVED = 2;
72     /**
73      * Return the definition of the properties of this model.
74      *
75      * @return array
76      */
77     protected static function define_properties() {
78         return [
79             'name' => [
80                 'type' => PARAM_TEXT,
81                 'default' => '',
82             ],
83             'type' => [
84                 'type' => PARAM_INT,
85                 'choices' => [
86                     self::TYPE_SITE,
87                     self::TYPE_PRIVACY,
88                     self::TYPE_THIRD_PARTY,
89                     self::TYPE_OTHER,
90                 ],
91                 'default' => self::TYPE_SITE,
92             ],
93             'audience' => [
94                 'type' => PARAM_INT,
95                 'choices' => [
96                     self::AUDIENCE_ALL,
97                     self::AUDIENCE_LOGGEDIN,
98                     self::AUDIENCE_GUESTS,
99                 ],
100                 'default' => self::AUDIENCE_ALL,
101             ],
102             'archived' => [
103                 'type' => PARAM_BOOL,
104                 'default' => false,
105             ],
106             'policyid' => [
107                 'type' => PARAM_INT,
108             ],
109             'revision' => [
110                 'type' => PARAM_TEXT,
111                 'default' => '',
112             ],
113             'summary' => [
114                 'type' => PARAM_RAW,
115                 'default' => '',
116             ],
117             'summaryformat' => [
118                 'type' => PARAM_INT,
119                 'default' => FORMAT_HTML,
120                 'choices' => [
121                     FORMAT_PLAIN,
122                     FORMAT_HTML,
123                     FORMAT_MOODLE,
124                     FORMAT_MARKDOWN,
125                 ],
126             ],
127             'content' => [
128                 'type' => PARAM_RAW,
129                 'default' => '',
130             ],
131             'contentformat' => [
132                 'type' => PARAM_INT,
133                 'default' => FORMAT_HTML,
134                 'choices' => [
135                     FORMAT_PLAIN,
136                     FORMAT_HTML,
137                     FORMAT_MOODLE,
138                     FORMAT_MARKDOWN,
139                 ],
140             ],
141         ];
142     }