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; } } }
/** * Adds a new permission object to the account. * * @action add * @param KalturaPermission $permission The new permission * @return KalturaPermission The added permission object * * @throws KalturaErrors::PROPERTY_VALIDATION_CANNOT_BE_NULL * @throws KalturaErrors::PROPERTY_VALIDATION_NOT_UPDATABLE */ public function addAction(KalturaPermission $permission) { $permission->validatePropertyNotNull('name'); if (strpos($permission->name, ',') !== false) { throw new KalturaAPIException(KalturaErrors::INVALID_FIELD_VALUE, 'name'); } if (!$permission->friendlyName) { $permission->friendlyName = $permission->name; } if (!$permission->status) { $permission->status = KalturaPermissionStatus::ACTIVE; } $dbPermission = $permission->toInsertableObject(); $dbPermission->setType(PermissionType::NORMAL); // only normal permission types are added through this services $dbPermission->setPartnerId($this->getPartnerId()); try { PermissionPeer::addToPartner($dbPermission, $this->getPartnerId()); } catch (kPermissionException $e) { $code = $e->getCode(); if ($code === kPermissionException::PERMISSION_ALREADY_EXISTS) { throw new KalturaAPIException(KalturaErrors::PERMISSION_ALREADY_EXISTS, $dbPermission->getName(), $this->getPartnerId()); } if ($code === kPermissionException::PERMISSION_ITEM_NOT_FOUND) { throw new KalturaAPIException(KalturaErrors::PERMISSION_ITEM_NOT_FOUND); } throw $e; } $permission = new KalturaPermission(); $permission->fromObject($dbPermission); return $permission; }
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; } } }
$c = new Criteria(); $c->add(UserRolePeer::PERMISSION_NAMES, "%dropFolder.CONTENT_INGEST_DROP_FOLDER_MATCH%", Criteria::LIKE); $c->setLimit($countLimitEachLoop); $userRoles = UserRolePeer::doSelect($c, $con); while (count($userRoles)) { foreach ($userRoles as $userRole) { $partnerId = $userRole->getPartnerId(); PermissionPeer::setUseCriteriaFilter(false); $permission = PermissionPeer::getByNameAndPartner('CONTENT_INGEST_DROP_FOLDER_MATCH', array($partnerId)); PermissionPeer::setUseCriteriaFilter(true); if (!$permission) { $permission = new Permission(); $permission->setName('CONTENT_INGEST_DROP_FOLDER_MATCH'); $permission->setDependsOnPermissionNames('DROPFOLDER_PLUGIN_PERMISSION'); $permission->setType(PermissionType::SPECIAL_FEATURE); $permission->setPartnerId($partnerId); $permission->setStatus(PermissionStatus::ACTIVE); // add to database KalturaLog::log('Adding new permission with name [' . $permission->getName() . '] to partner id [' . $permission->getPartnerId() . ']'); PermissionPeer::addToPartner($permission, $permission->getPartnerId()); } } $c->setOffset($offset); UserRolePeer::clearInstancePool(); $userRoles = UserRolePeer::doSelect($c, $con); $offset += $countLimitEachLoop; sleep(1); } $script = realpath(dirname(__FILE__) . '/../../../../') . '/scripts/utils/permissions/addPermissionsAndItems.php'; $config = realpath(dirname(__FILE__)) . '/../../../../plugins/drop_folder/config/drop_folder_permissions.ini'; passthru("php {$script} {$config}");