1<?php
2/**
3 * BigBlueButton open source conferencing system - https://www.bigbluebutton.org/.
4 *
5 * Copyright (c) 2016-2018 BigBlueButton Inc. and by respective authors (see below).
6 *
7 * This program is free software; you can redistribute it and/or modify it under the
8 * terms of the GNU Lesser General Public License as published by the Free Software
9 * Foundation; either version 3.0 of the License, or (at your option) any later
10 * version.
11 *
12 * BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
13 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
14 * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public License along
17 * with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
18 */
19namespace BigBlueButton\Core;
20
21class Attendee
22{
23    /**
24     * @var string
25     */
26    private $userId;
27
28    /**
29     * @var string
30     */
31    private $fullName;
32
33    /**
34     * @var string
35     */
36    private $role;
37
38    /**
39     * @var bool
40     */
41    private $isPresenter;
42
43    /**
44     * @var bool
45     */
46    private $isListeningOnly;
47
48    /**
49     * @var bool
50     */
51    private $hasJoinedVoice;
52
53    /**
54     * @var bool
55     */
56    private $hasVideo;
57
58    /**
59     * @var array
60     */
61    private $customData;
62
63    /**
64     * @var string
65     */
66    private $clientType;
67
68    /**
69     * Attendee constructor.
70     * @param $xml \SimpleXMLElement
71     */
72    public function __construct($xml)
73    {
74        $this->userId          = $xml->userID->__toString();
75        $this->fullName        = $xml->fullName->__toString();
76        $this->role            = $xml->role->__toString();
77        $this->isPresenter     = $xml->isPresenter->__toString() === 'true';
78        $this->isListeningOnly = $xml->isListeningOnly->__toString() === 'true';
79        $this->hasJoinedVoice  = $xml->hasJoinedVoice->__toString() === 'true';
80        $this->hasVideo        = $xml->hasVideo->__toString() === 'true';
81        $this->clientType      = $xml->clientType->__toString();
82
83        foreach ($xml->customdata->children() as $data) {
84            $this->customData[$data->getName()] = $data->__toString();
85        }
86    }
87
88    /**
89     * @return string
90     */
91    public function getUserId()
92    {
93        return $this->userId;
94    }
95
96    /**
97     * @return string
98     */
99    public function getFullName()
100    {
101        return $this->fullName;
102    }
103
104    /**
105     * @return string
106     */
107    public function getRole()
108    {
109        return $this->role;
110    }
111
112    /**
113     * @return bool
114     */
115    public function isPresenter()
116    {
117        return $this->isPresenter;
118    }
119
120    /**
121     * @return bool
122     */
123    public function isListeningOnly()
124    {
125        return $this->isListeningOnly;
126    }
127
128    /**
129     * @return bool
130     */
131    public function hasJoinedVoice()
132    {
133        return $this->hasJoinedVoice;
134    }
135
136    /**
137     * @return bool
138     */
139    public function hasVideo()
140    {
141        return $this->hasVideo;
142    }
143
144    /**
145     * @return string
146     */
147    public function getClientType()
148    {
149        return $this->clientType;
150    }
151
152    /**
153     * @return array
154     */
155    public function getCustomData()
156    {
157        return $this->customData;
158    }
159}
160