From b8124a4304cb41c9913b1b208e4e826acdb2e5f8 Mon Sep 17 00:00:00 2001 From: yossipapi Date: Tue, 4 Feb 2025 20:36:30 +0200 Subject: [PATCH 1/2] Save extended status on user entry object + fix filtering logic to use bitmask and operation --- .../model/objectfilters/UserEntryFilter.php | 7 ++- .../KalturaPermissionLevelUserEntryFilter.php | 53 +++++++------------ .../lib/model/PermissionLevel.php | 4 +- .../lib/model/PermissionLevelUserEntry.php | 29 ++++++++++ 4 files changed, 56 insertions(+), 37 deletions(-) diff --git a/alpha/apps/kaltura/lib/model/objectfilters/UserEntryFilter.php b/alpha/apps/kaltura/lib/model/objectfilters/UserEntryFilter.php index 455371b2169..eb48a7abc32 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 8c4db36a47b..98e3efe8673 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,41 @@ 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)]; + $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 d5fe377ca5b..140628b74e8 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 534de7c76b7..35bc0834bcf 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,22 @@ public function setPermissionOrder($permissionOrder) { $this->putInCustomData(self::CUSTOM_DATA_PERMISSION_ORDER, $permissionOrder); } + + public function syncExtendedStatus($permissionLevels) + { + if (!$permissionLevels || !count($permissionLevels)) + { + return; + } + + $permissionLevelsBitmask = 0; + foreach ($permissionLevels as $permissionLevel) + { + /** @var PermissionLevel $permissionLevel */ + $val = $permissionLevel->getPermissionLevel(); + $permissionLevelsBitmask += self::$permissionLevelBitmask[intval($val)]; + } + + $this->setExtendedStatus($permissionLevelsBitmask); + } } From a2f31d4e8e15be14c785463f449e17aa2966c06c Mon Sep 17 00:00:00 2001 From: drorsouhami Date: Wed, 5 Feb 2025 10:56:04 +0200 Subject: [PATCH 2/2] PLAT-25073: Changes after code review --- .../api/filters/KalturaPermissionLevelUserEntryFilter.php | 7 +++++-- .../lib/model/PermissionLevelUserEntry.php | 7 +------ 2 files changed, 6 insertions(+), 8 deletions(-) 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 98e3efe8673..ea49b2ab4b2 100644 --- a/plugins/content/entry_permission_level/lib/api/filters/KalturaPermissionLevelUserEntryFilter.php +++ b/plugins/content/entry_permission_level/lib/api/filters/KalturaPermissionLevelUserEntryFilter.php @@ -18,7 +18,7 @@ public function getListResponse(KalturaFilterPager $pager, KalturaDetachedRespon return $response; } - public function toObject ($object_to_fill = null, $props_to_skip = array()) + public function toObject($object_to_fill = null, $props_to_skip = array()) { $object = parent::toObject($object_to_fill, $props_to_skip); $permissionLevelsBitmask = $this->getPermissionLevelsBitmask(); @@ -41,7 +41,10 @@ protected function getPermissionLevelsBitmask() { /** @var KalturaPermissionLevel $permissionLevel */ $val = $permissionLevel->permissionLevel; - $permissionLevelsBitmask += PermissionLevelUserEntry::$permissionLevelBitmask[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/PermissionLevelUserEntry.php b/plugins/content/entry_permission_level/lib/model/PermissionLevelUserEntry.php index 35bc0834bcf..33cb59b4582 100644 --- a/plugins/content/entry_permission_level/lib/model/PermissionLevelUserEntry.php +++ b/plugins/content/entry_permission_level/lib/model/PermissionLevelUserEntry.php @@ -57,13 +57,8 @@ public function setPermissionOrder($permissionOrder) $this->putInCustomData(self::CUSTOM_DATA_PERMISSION_ORDER, $permissionOrder); } - public function syncExtendedStatus($permissionLevels) + protected function syncExtendedStatus($permissionLevels) { - if (!$permissionLevels || !count($permissionLevels)) - { - return; - } - $permissionLevelsBitmask = 0; foreach ($permissionLevels as $permissionLevel) {