public function serialize(Role $role, array $options = [])
    {
        $serialized = [
            'id' => $role->getUuid(),
            'name' => $role->getName(),
            'type' => $role->getType(), // TODO : should be a string for better data readability
            'translationKey' => $role->getTranslationKey(),
        ];

        if (!in_array(Options::SERIALIZE_MINIMAL, $options)) {
            $serialized['meta'] = $this->serializeMeta($role, $options);
            $serialized['restrictions'] = $this->serializeRestrictions($role);

            if ($workspace = $role->getWorkspace()) {
                $serialized['workspace'] = $this->workspaceSerializer->serialize($workspace, [Options::SERIALIZE_MINIMAL]);
            }

            if (Role::USER_ROLE === $role->getType()) {
                $serialized['user'] = $this->userSerializer->serialize($role->getUsers()->toArray()[0], [Options::SERIALIZE_MINIMAL]);
            }

            // easier request than count users which will go into mysql cache so I'm not too worried about looping here.
            $adminTools = [];

            /** @var AdminTool $adminTool */
            foreach ($this->om->getRepository('ClarolineCoreBundle:Tool\AdminTool')->findAll() as $adminTool) {
                $adminTools[$adminTool->getName()] = $role->getAdminTools()->contains($adminTool);
            }

            $serialized['adminTools'] = $adminTools;

            // TODO: Fix option for workspace uuid. For the moment the uuid of the workspace is prefixed with `workspace_id_`.
            if (in_array(Options::SERIALIZE_ROLE_TOOLS_RIGHTS, $options)) {
                $workspaceId = null;

                foreach ($options as $option) {
                    if ('workspace_id_' === substr($option, 0, 13)) {
                        $workspaceId = substr($option, 13);
                        break;
                    }
                }
                if ($workspaceId) {
                    $serialized['tools'] = $this->serializeTools($role, $workspaceId);
                }
            }
            if (Role::PLATFORM_ROLE === $role->getType() && in_array(Options::SERIALIZE_ROLE_DESKTOP_TOOLS, $options)) {
                $serialized['desktopTools'] = $this->serializeDesktopToolsConfig($role);
            }
        }

        return $serialized;
    }
public function serialize(Role $role, array $options = [])
    {
        $serialized = [
            'id' => $role->getUuid(),
            'name' => $role->getName(),
            'type' => $role->getType(), // TODO : should be a string for better data readability
            'translationKey' => $role->getTranslationKey(),
        ];

        if (!in_array(Options::SERIALIZE_MINIMAL, $options)) {
            $serialized['meta'] = $this->serializeMeta($role, $options);
            $serialized['restrictions'] = $this->serializeRestrictions($role);

            if ($workspace = $role->getWorkspace()) {
                $serialized['workspace'] = $this->workspaceSerializer->serialize($workspace, [Options::SERIALIZE_MINIMAL]);
            }

            if (Role::USER_ROLE === $role->getType()) {
                $serialized['user'] = $this->userSerializer->serialize($role->getUsers()->toArray()[0], [Options::SERIALIZE_MINIMAL]);
            }

            // easier request than count users which will go into mysql cache so I'm not too worried about looping here.
            $adminTools = [];

            /** @var AdminTool $adminTool */
            foreach ($this->om->getRepository('ClarolineCoreBundle:Tool\AdminTool')->findAll() as $adminTool) {
                $adminTools[$adminTool->getName()] = $role->getAdminTools()->contains($adminTool);
            }

            $serialized['adminTools'] = $adminTools;

            // TODO: Fix option for workspace uuid. For the moment the uuid of the workspace is prefixed with `workspace_id_`.
            if (in_array(Options::SERIALIZE_ROLE_TOOLS_RIGHTS, $options)) {
                $workspaceId = null;

                foreach ($options as $option) {
                    if ('workspace_id_' === substr($option, 0, 13)) {
                        $workspaceId = substr($option, 13);
                        break;
                    }
                }
                if ($workspaceId) {
                    $serialized['tools'] = $this->serializeTools($role, $workspaceId);
                }
            }
            if (Role::PLATFORM_ROLE === $role->getType() && in_array(Options::SERIALIZE_ROLE_DESKTOP_TOOLS, $options)) {
                $serialized['desktopTools'] = $this->serializeDesktopToolsConfig($role);
            }
        }

        return $serialized;
    }
public function serialize ( Role $ role , array $ options = [ ] ) { $ serialized = [ 'id' => $ role -> getUuid ( ) , 'name' => $ role -> getName ( ) , 'type' => $ role -> getType ( ) , // TODO : should be a string for better data readability 'translationKey' => $ role -> getTranslationKey ( ) , ] ; if ( ! in_array ( Options :: SERIALIZE_MINIMAL , $ options ) ) { $ serialized [ 'meta' ] = $ this -> serializeMeta ( $ role , $ options ) ; $ serialized [ 'restrictions' ] = $ this -> serializeRestrictions ( $ role ) ; if ( $ workspace = $ role -> getWorkspace ( ) ) { $ serialized [ 'workspace' ] = $ this -> workspaceSerializer -> serialize ( $ workspace , [ Options :: SERIALIZE_MINIMAL ] ) ; } if ( Role :: USER_ROLE === $ role -> getType ( ) ) { $ serialized [ 'user' ] = $ this -> userSerializer -> serialize ( $ role -> getUsers ( ) -> toArray ( ) [ 0 ] , [ Options :: SERIALIZE_MINIMAL ] ) ; } // easier request than count users which will go into mysql cache so I'm not too worried about looping here. $ adminTools = [ ] ; /** @var AdminTool $adminTool */ foreach ( $ this -> om -> getRepository ( 'ClarolineCoreBundle:Tool\AdminTool' ) -> findAll ( ) as $ adminTool ) { $ adminTools [ $ adminTool -> getName ( ) ] = $ role -> getAdminTools ( ) -> contains ( $ adminTool ) ; } $ serialized [ 'adminTools' ] = $ adminTools ; // TODO: Fix option for workspace uuid. For the moment the uuid of the workspace is prefixed with `workspace_id_`. if ( in_array ( Options :: SERIALIZE_ROLE_TOOLS_RIGHTS , $ options ) ) { $ workspaceId = null ; foreach ( $ options as $ option ) { if ( 'workspace_id_' === substr ( $ option , 0 , 13 ) ) { $ workspaceId = substr ( $ option , 13 ) ; break ; } } if ( $ workspaceId ) { $ serialized [ 'tools' ] = $ this -> serializeTools ( $ role , $ workspaceId ) ; } } if ( Role :: PLATFORM_ROLE === $ role -> getType ( ) && in_array ( Options :: SERIALIZE_ROLE_DESKTOP_TOOLS , $ options ) ) { $ serialized [ 'desktopTools' ] = $ this -> serializeDesktopToolsConfig ( $ role ) ; } } return $ serialized ; }
Serializes a Role entity.

@param Role  $role
@param array $options

@return array
Serializes a Role entity .