diff --git a/alpha/apps/kaltura/lib/model/objectfilters/UserEntryFilter.php b/alpha/apps/kaltura/lib/model/objectfilters/UserEntryFilter.php index 455371b216..eb48a7abc3 100644 --- a/alpha/apps/kaltura/lib/model/objectfilters/UserEntryFilter.php +++ b/alpha/apps/kaltura/lib/model/objectfilters/UserEntryFilter.php @@ -28,7 +28,7 @@ protected function init() "_eq_extended_status", "_in_extended_status", "_notin_extended_status", - "_bitor_extended_status", + "_bitand_extended_status", "_eq_privacy_context", "_in_privacy_context", "_eq_partner_id", @@ -53,4 +53,9 @@ protected function getIdFromPeer ( ) { return UserEntryPeer::ID; } + + public function setExtendedStatusBitAnd($value) + { + $this->set("_bitand_extended_status", $value); + } } diff --git a/plugins/content/entry_permission_level/lib/api/filters/KalturaPermissionLevelUserEntryFilter.php b/plugins/content/entry_permission_level/lib/api/filters/KalturaPermissionLevelUserEntryFilter.php index 8c4db36a47..ea49b2ab4b 100644 --- a/plugins/content/entry_permission_level/lib/api/filters/KalturaPermissionLevelUserEntryFilter.php +++ b/plugins/content/entry_permission_level/lib/api/filters/KalturaPermissionLevelUserEntryFilter.php @@ -9,56 +9,44 @@ class KalturaPermissionLevelUserEntryFilter extends KalturaUserEntryFilter * @var KalturaPermissionLevelArray */ public $permissionLevels; - - /** - * @var int - * @readonly - */ - public $permissionLevelsBitmask; - - static private $map_between_objects = array - ( - 'permissionLevelsBitmask' => '_bitor_extended_status', - ); - - public function getMapBetweenObjects() - { - return array_merge(parent::getMapBetweenObjects(), self::$map_between_objects); - } + public function getListResponse(KalturaFilterPager $pager, KalturaDetachedResponseProfile $responseProfile = null) { $this->typeEqual = EntryPermissionLevelPlugin::getApiValue(PermissionLevelUserEntryType::PERMISSION_LEVEL); - - $this->setPermissionLevelsBitmask(); - $response = parent::getListResponse($pager, $responseProfile); return $response; } + + public function toObject($object_to_fill = null, $props_to_skip = array()) + { + $object = parent::toObject($object_to_fill, $props_to_skip); + $permissionLevelsBitmask = $this->getPermissionLevelsBitmask(); + if($permissionLevelsBitmask) + { + $object->setExtendedStatusBitAnd($permissionLevelsBitmask); + } + return $object; + } - protected function setPermissionLevelsBitmask() + protected function getPermissionLevelsBitmask() { - if (!$this->permissionLevels) + if (!$this->permissionLevels || !count($this->permissionLevels)) { return; } - - $permissionBitmask = [ - KalturaUserEntryPermissionLevel::SPEAKER => 1, - KalturaUserEntryPermissionLevel::ROOM_MODERATOR => 2, - KalturaUserEntryPermissionLevel::ATTENDEE => 4, - KalturaUserEntryPermissionLevel::ADMIN => 8, - KalturaUserEntryPermissionLevel::PREVIEW_ONLY => 16, - KalturaUserEntryPermissionLevel::CHAT_MODERATOR => 32, - KalturaUserEntryPermissionLevel::PANELIST => 64, - ]; - - $this->permissionLevelsBitmask = 0; + + $permissionLevelsBitmask = 0; foreach ($this->permissionLevels as $permissionLevel) { /** @var KalturaPermissionLevel $permissionLevel */ $val = $permissionLevel->permissionLevel; - $this->permissionLevelsBitmask += $permissionBitmask[intval($val)]; + if (isset(PermissionLevelUserEntry::$permissionLevelBitmask[intval($val)])) + { + $permissionLevelsBitmask += PermissionLevelUserEntry::$permissionLevelBitmask[intval($val)]; + } } + + return $permissionLevelsBitmask; } } diff --git a/plugins/content/entry_permission_level/lib/model/PermissionLevel.php b/plugins/content/entry_permission_level/lib/model/PermissionLevel.php index d5fe377ca5..140628b74e 100644 --- a/plugins/content/entry_permission_level/lib/model/PermissionLevel.php +++ b/plugins/content/entry_permission_level/lib/model/PermissionLevel.php @@ -3,7 +3,7 @@ * @package plugins.entryPermissionLevel * @subpackage model */ -class PermissionLevel extends UserEntry +class PermissionLevel { protected $permissionLevel; @@ -16,4 +16,4 @@ public function setPermissionLevel($permissionLevel) { $this->permissionLevel = $permissionLevel; } -} \ No newline at end of file +} diff --git a/plugins/content/entry_permission_level/lib/model/PermissionLevelUserEntry.php b/plugins/content/entry_permission_level/lib/model/PermissionLevelUserEntry.php index 534de7c76b..33cb59b458 100644 --- a/plugins/content/entry_permission_level/lib/model/PermissionLevelUserEntry.php +++ b/plugins/content/entry_permission_level/lib/model/PermissionLevelUserEntry.php @@ -10,6 +10,16 @@ class PermissionLevelUserEntry extends UserEntry const CUSTOM_DATA_PERMISSION_LEVELS = 'permission_levels'; const CUSTOM_DATA_PERMISSION_ORDER = 'permission_order'; + + public static $permissionLevelBitmask = array( + UserEntryPermissionLevel::SPEAKER => 1, + UserEntryPermissionLevel::ROOM_MODERATOR => 2, + UserEntryPermissionLevel::ATTENDEE => 4, + UserEntryPermissionLevel::ADMIN => 8, + UserEntryPermissionLevel::PREVIEW_ONLY => 16, + UserEntryPermissionLevel::CHAT_MODERATOR => 32, + UserEntryPermissionLevel::PANELIST => 64, + ); public function __construct() { @@ -32,6 +42,7 @@ public function setPermissionLevels($permissionLevels) if(!count($permissionLevels)) return; + $this->syncExtendedStatus($permissionLevels); $serialized = serialize($permissionLevels); return $this->putInCustomData(self::CUSTOM_DATA_PERMISSION_LEVELS, $serialized); } @@ -45,4 +56,17 @@ public function setPermissionOrder($permissionOrder) { $this->putInCustomData(self::CUSTOM_DATA_PERMISSION_ORDER, $permissionOrder); } + + protected function syncExtendedStatus($permissionLevels) + { + $permissionLevelsBitmask = 0; + foreach ($permissionLevels as $permissionLevel) + { + /** @var PermissionLevel $permissionLevel */ + $val = $permissionLevel->getPermissionLevel(); + $permissionLevelsBitmask += self::$permissionLevelBitmask[intval($val)]; + } + + $this->setExtendedStatus($permissionLevelsBitmask); + } }