MDL-37624 calendar: Added location support
[moodle.git] / calendar / classes / local / event / entities / event.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  * Calendar event class.
19  *
20  * @package    core_calendar
21  * @copyright  2017 Cameron Ball <cameron@cameron1729.xyz>
22  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23  */
25 namespace core_calendar\local\event\entities;
27 defined('MOODLE_INTERNAL') || die();
29 use core_calendar\local\event\proxies\proxy_interface;
30 use core_calendar\local\event\value_objects\description_interface;
31 use core_calendar\local\event\value_objects\times_interface;
33 /**
34  * Class representing a calendar event.
35  *
36  * @copyright 2017 Cameron Ball <cameron@cameron1729.xyz>
37  * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
38  */
39 class event implements event_interface {
40     /**
41      * @var int $id The event's id in the database.
42      */
43     protected $id;
45     /**
46      * @var string $name The name of this event.
47      */
48     protected $name;
50     /**
51      * @var description_interface $description Description for this event.
52      */
53     protected $description;
55     /**
56      * @var string $location Location of this event.
57      */
58     protected $location;
60     /**
61      * @var proxy_interface $category Category for this event.
62      */
63     protected $category;
65     /**
66      * @var proxy_interface $course Course for this event.
67      */
68     protected $course;
70     /**
71      * @var proxy_interface $group Group for this event.
72      */
73     protected $group;
75     /**
76      * @var proxy_interface $user User for this event.
77      */
78     protected $user;
80     /**
81      * @var event_collection_interface $repeats Collection of repeat events.
82      */
83     protected $repeats;
85     /**
86      * @var proxy_interface $coursemodule The course module that created this event.
87      */
88     protected $coursemodule;
90     /**
91      * @var string type The type of this event.
92      */
93     protected $type;
95     /**
96      * @var times_interface $times The times for this event.
97      */
98     protected $times;
100     /**
101      * @var bool $visible The visibility of this event.
102      */
103     protected $visible;
105     /**
106      * @var proxy_interface $subscription Subscription for this event.
107      */
108     protected $subscription;
110     /**
111      * Constructor.
112      *
113      * @param int                        $id             The event's ID in the database.
114      * @param string                     $name           The event's name.
115      * @param description_interface      $description    The event's description.
116      * @param proxy_interface            $category       The category associated with the event.
117      * @param proxy_interface            $course         The course associated with the event.
118      * @param proxy_interface            $group          The group associated with the event.
119      * @param proxy_interface            $user           The user associated with the event.
120      * @param event_collection_interface $repeats        Collection of repeat events.
121      * @param proxy_interface            $coursemodule   The course module that created the event.
122      * @param string                     $type           The event's type.
123      * @param times_interface            $times          The times associated with the event.
124      * @param bool                       $visible        The event's visibility. True for visible, false for invisible.
125      * @param proxy_interface            $subscription   The event's subscription.
126      * @param string                     $location       The event's location.
127      */
128     public function __construct(
129         $id,
130         $name,
131         description_interface $description,
132         proxy_interface $category = null,
133         proxy_interface $course = null,
134         proxy_interface $group = null,
135         proxy_interface $user = null,
136         event_collection_interface $repeats = null,
137         proxy_interface $coursemodule = null,
138         $type,
139         times_interface $times,
140         $visible,
141         proxy_interface $subscription = null,
142         $location = null
143     ) {
144         $this->id = $id;
145         $this->name = $name;
146         $this->description = $description;
147         $this->location = $location;
148         $this->category = $category;
149         $this->course = $course;
150         $this->group = $group;
151         $this->user = $user;
152         $this->repeats = $repeats;
153         $this->coursemodule = $coursemodule;
154         $this->type = $type;
155         $this->times = $times;
156         $this->visible = $visible;
157         $this->subscription = $subscription;
158     }
160     public function get_id() {
161         return $this->id;
162     }
164     public function get_name() {
165         return $this->name;
166     }
168     public function get_description() {
169         return $this->description;
170     }
172     public function get_location() {
173         return $this->location;
174     }
176     public function get_category() {
177         return $this->category;
178     }
180     public function get_course() {
181         return $this->course;
182     }
184     public function get_course_module() {
185         return $this->coursemodule;
186     }
188     public function get_group() {
189         return $this->group;
190     }
192     public function get_user() {
193         return $this->user;
194     }
196     public function get_type() {
197         return $this->type;
198     }
200     public function get_times() {
201         return $this->times;
202     }
204     public function get_repeats() {
205         return $this->repeats;
206     }
208     public function get_subscription() {
209         return $this->subscription;
210     }
212     public function is_visible() {
213         return $this->visible;
214     }