public static function getRoleIds(Partner $operatingPartner = null, kuser $kuser = null) { $roleIds = null; $ksString = kCurrentContext::$ks; $isAdminSession = !self::isEmpty(kCurrentContext::$is_admin_session) ? kCurrentContext::$is_admin_session : false; if (!$ksString || !$operatingPartner && kCurrentContext::$ks_partner_id != Partner::BATCH_PARTNER_ID) { $roleId = UserRolePeer::getIdByStrId(UserRoleId::NO_SESSION_ROLE); if ($roleId) { return array($roleId); } return null; } $ks = ks::fromSecureString($ksString); $ksSetRoleId = $ks->getSetRole(); if ($ksSetRoleId) { if ($ksSetRoleId == 'null') { return null; } $ksPartnerId = !self::isEmpty(kCurrentContext::$ks_partner_id) ? kCurrentContext::$ks_partner_id : null; //check if role exists $c = new Criteria(); $c->addAnd(is_numeric($ksSetRoleId) ? UserRolePeer::ID : UserRolePeer::SYSTEM_NAME, $ksSetRoleId, Criteria::EQUAL); $partnerIds = array_map('strval', array($ksPartnerId, PartnerPeer::GLOBAL_PARTNER)); $c->addAnd(UserRolePeer::PARTNER_ID, $partnerIds, Criteria::IN); $roleId = UserRolePeer::doSelectOne($c); if ($roleId) { $roleIds = $roleId->getId(); } else { KalturaLog::debug("Role id [{$ksSetRoleId}] does not exists"); throw new kCoreException("Unknown role Id [{$ksSetRoleId}]", kCoreException::ID_NOT_FOUND); } } // if user is defined -> get his role IDs if (!$roleIds && $kuser) { $roleIds = $kuser->getRoleIds(); } // if user has no defined roles or no user is defined -> get default role IDs according to session type (admin/not) if (!$roleIds) { if (!$operatingPartner) { // use system default roles if ($ks->isWidgetSession()) { $strId = UserRoleId::WIDGET_SESSION_ROLE; } elseif ($isAdminSession) { $strId = UserRoleId::PARTNER_ADMIN_ROLE; } else { $strId = UserRoleId::BASE_USER_SESSION_ROLE; } $roleIds = UserRolePeer::getIdByStrId($strId); } else { if ($ks->isWidgetSession()) { //there is only one partner widget role defined in the system $roleIds = $operatingPartner->getWidgetSessionRoleId(); } elseif ($isAdminSession) { // there is only one partner admin role defined in the system $roleIds = $operatingPartner->getAdminSessionRoleId(); } else { // a partner may have special defined user session roles - get them from partner object $roleIds = $operatingPartner->getUserSessionRoleId(); } } } if ($roleIds) { $roleIds = explode(',', trim($roleIds, ',')); } return $roleIds; }
public function getWidgetSessionRoleId() { $id = $this->getFromCustomData('widget_session_role_id'); if (!$id) { $id = UserRolePeer::getIdByStrId(UserRoleId::WIDGET_SESSION_ROLE); } return $id; }
public function getUserSessionRoleId() { $id = $this->getFromCustomData('user_session_role_id'); if (!$id) { $id = UserRolePeer::getIdByStrId(UserRoleId::BASE_USER_SESSION_ROLE); } return $id; }