eZ\Publish\Core\Repository\Repository::sudo PHP Method

sudo() public method

The closure sandbox will do a catch all on exceptions and rethrow after re-setting the sudo flag. Example use: $location = $repository->sudo( function ( Repository $repo ) use ( $locationId ) { return $repo->getLocationService()->loadLocation( $locationId ) } );
public sudo ( Closure $callback, eZ\Publish\API\Repository\Repository $outerRepository = null ) : mixed
$callback Closure
$outerRepository eZ\Publish\API\Repository\Repository
return mixed
    public function sudo(\Closure $callback, RepositoryInterface $outerRepository = null)
    {
        return $this->getPermissionResolver()->sudo($callback, $outerRepository !== null ? $outerRepository : $this);
    }

Usage Example

コード例 #1
0
 public function updateUserContext(UserContext $context)
 {
     $user = $this->repository->getCurrentUser();
     /** @var \eZ\Publish\API\Repository\Values\User\RoleAssignment[] $roleAssignments */
     $roleAssignments = $this->repository->sudo(function (Repository $repository) use($user) {
         return $repository->getRoleService()->getRoleAssignmentsForUser($user, true);
     });
     $roleIds = array();
     $limitationValues = array();
     /** @var UserRoleAssignment $roleAssignment */
     foreach ($roleAssignments as $roleAssignment) {
         $roleId = $roleAssignment->getRole()->id;
         $roleIds[] = $roleId;
         $limitation = $roleAssignment->getRoleLimitation();
         // If a limitation is present, store the limitation values by roleId
         if ($limitation !== null) {
             $limitationValuesKey = sprintf('%s-%s', $roleId, $limitation->getIdentifier());
             $limitationValues[$limitationValuesKey] = array();
             foreach ($limitation->limitationValues as $value) {
                 $limitationValues[$limitationValuesKey][] = $value;
             }
         }
     }
     $context->addParameter('roleIdList', $roleIds);
     $context->addParameter('roleLimitationList', $limitationValues);
 }
All Usage Examples Of eZ\Publish\Core\Repository\Repository::sudo