Changeset View
Changeset View
Standalone View
Standalone View
src/app/OpenVidu/Connection.php
Show First 20 Lines • Show All 48 Lines • ▼ Show 20 Lines | class Connection extends Model | ||||
* The room to which this connection belongs. | * The room to which this connection belongs. | ||||
* | * | ||||
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo | * @return \Illuminate\Database\Eloquent\Relations\BelongsTo | ||||
*/ | */ | ||||
public function room() | public function room() | ||||
{ | { | ||||
return $this->belongsTo(Room::class, 'room_id', 'id'); | return $this->belongsTo(Room::class, 'room_id', 'id'); | ||||
} | } | ||||
/** | |||||
* Connection role mutator | |||||
* | |||||
* @throws \Exception | |||||
*/ | |||||
public function setRoleAttribute($role) | |||||
{ | |||||
$new_role = 0; | |||||
$allowed_values = [ | |||||
Room::ROLE_SUBSCRIBER, | |||||
Room::ROLE_PUBLISHER, | |||||
Room::ROLE_MODERATOR, | |||||
Room::ROLE_SCREEN, | |||||
Room::ROLE_OWNER, | |||||
]; | |||||
foreach ($allowed_values as $value) { | |||||
if ($role & $value) { | |||||
$new_role |= $value; | |||||
$role ^= $value; | |||||
} | |||||
} | |||||
if ($role > 0) { | |||||
throw new \Exception("Invalid connection role: {$role}"); | |||||
} | |||||
// It is either screen sharing connection or publisher/subscriber connection | |||||
if ($new_role & Room::ROLE_SCREEN) { | |||||
if ($new_role & Room::ROLE_PUBLISHER) { | |||||
$new_role ^= Room::ROLE_PUBLISHER; | |||||
} | |||||
if ($new_role & Room::ROLE_SUBSCRIBER) { | |||||
$new_role ^= Room::ROLE_SUBSCRIBER; | |||||
} | |||||
} | |||||
$this->attributes['role'] = $new_role; | |||||
} | |||||
} | } |