function addPermission($permissionCfg) { // verify obligatory fields if (!$permissionCfg->name) { throw new Exception('Permission name must be set'); } if (is_null($permissionCfg->partnerId) || $permissionCfg->partnerId === '') { throw new Exception('Permission partner id must be set'); } // init new db permission object $permission = new Permission(); foreach ($permissionCfg as $key => $value) { $setterCallback = array($permission, "set{$key}"); call_user_func_array($setterCallback, array($value)); } if (!$permission->getFriendlyName()) { $permission->setFriendlyName($permission->getName()); } if (!$permission->getStatus()) { $permission->setStatus(PermissionStatus::ACTIVE); } // add to database KalturaLog::log('Adding new permission with name [' . $permission->getName() . '] to partner id [' . $permission->getPartnerId() . ']'); try { PermissionPeer::addToPartner($permission, $permission->getPartnerId()); } catch (kPermissionException $e) { if ($e->getCode() === kPermissionException::PERMISSION_ALREADY_EXISTS) { KalturaLog::log('Permission name [' . $permission->getName() . '] already exists for partner id [' . $permission->getPartnerId() . ']'); } else { throw $e; } } }
function addPermissionToPartner($permissionCfg, $partnerId = null) { // init new db permission object if (is_null($partnerId)) { $partnerId = $permissionCfg->partnerId; } PermissionPeer::setUseCriteriaFilter(false); $permission = PermissionPeer::getByNameAndPartner($permissionCfg->name, $partnerId); PermissionPeer::setUseCriteriaFilter(true); if (!$permission) { $permission = new Permission(); } foreach ($permissionCfg as $key => $value) { if ($key == 'partnerPackages') { continue; } $setterCallback = array($permission, "set{$key}"); call_user_func_array($setterCallback, array($value)); } if (!$permission->getFriendlyName()) { $permission->setFriendlyName($permission->getName()); } if ($partnerId != null) { $permission->setPartnerId($partnerId); } $permission->setStatus(PermissionStatus::ACTIVE); // add to database KalturaLog::log('Adding new permission with name [' . $permission->getName() . '] to partner id [' . $permission->getPartnerId() . ']'); try { if ($permission->getId()) { $permission->save(); } else { PermissionPeer::addToPartner($permission, $permission->getPartnerId()); } } catch (kPermissionException $e) { if ($e->getCode() === kPermissionException::PERMISSION_ALREADY_EXISTS) { KalturaLog::log('Permission name [' . $permission->getName() . '] already exists for partner id [' . $permission->getPartnerId() . ']'); } else { throw $e; } } }
// live stream $allowedLiveStream = $partner->getFromCustomData("liveEnabled", null, 0); if ($allowedLiveStream) { $livePermission = new Permission(); $livePermission->setPartnerId($partner->getId()); $livePermission->setName(PermissionName::FEATURE_LIVE_STREAM); $livePermission->setFriendlyName('Live stream feature'); $livePermission->setDescription('Permission to use live stream'); $livePermission->setStatus(PermissionStatus::ACTIVE); $livePermission->setType(PermissionType::SPECIAL_FEATURE); $newPermissions[] = $livePermission; } if (!$dryRun) { foreach ($newPermissions as $permission) { KalturaLog::log('SAVING new permission for partner [' . $partner->getId() . ']:'); PermissionPeer::enableForPartner($permission->getName(), $permission->getType(), $partner->getId(), $permission->getFriendlyName(), $permission->getDescription()); KalturaLog::log(print_r($permission, true)); } } else { foreach ($newPermissions as $permission) { KalturaLog::log('DRY RUN ONLY - new permission for partner [' . $partner->getId() . ']:'); KalturaLog::log(print_r($permission, true)); // dry run - no saving! } } file_put_contents($lastPartnerFile, $lastPartner); } $partners = getPartners($lastPartner, $partnerLimitEachLoop); } $msg = 'Done - ' . ($dryRun ? 'DRY RUN!' : 'REAL RUN!'); KalturaLog::log($msg);