Parfois dans nos développements, il peut y arriver qu’on ait besoin de créer un utilisateur ou faire une mise à jour.

Je partage ici un exemple de création et de modification d’un utilisateur Ibexa

Le code est facile à lire. En gros

  • On charge le groupe d’utilisateurs via une méthode disponibles dans le service UserService
  • Une fois le groupe est trouvé, On peut créer ce qu’on appel une structure ==> toujours via les méthodes du UserService
  • Remplir les données
  • Créer l’utilisateur
    public function createUser(array $userInfo)
    {
        try {
            $userService = $this->repository->getUserService();
            $contentTypeService = $this->repository->getContentTypeService();

            $userGroup   = $this->repository->sudo(
                function () use ($userService) {
                    return $userService->loadUserGroupByRemoteId('REMOTE');
                }
            );

            if ($userGroup) {
                $createStruct = $userService->newUserCreateStruct(
                    $userInfo['login'],
                    $userInfo['email'],
                    md5($userInfo['login']),
                    self::MAIN_LANGUAGE,
                    $contentTypeService->loadContentTypeByIdentifier('user')
            )
                );
                // Create Field User
                $createStruct->setField('first_name', trim($userInfo['first_name']));
                $createStruct->setField('second_name', trim($userInfo['second_name']));
                // Create  User
                return $this->repository->sudo(
                    function () use ($userService, $createStruct, $userGroup) {
                        return $userService->createUser($createStruct, [$userGroup]);
                    }
                );
            }
        } catch (\Exception $exception) {
            $this->logger->error('Error when create user in Ibexa '.$exception->getTraceAsString());

            return false;
        }
    }

Un autre exemple d’une mise à jour

    public function updateUser($user, $userInfo)
    {
        try {
            $userService = $this->repository->getUserService();

            $updateStruct                      = $userService->newUserUpdateStruct();
            $updateStruct->contentUpdateStruct = $this->repository->getContentService()->newContentUpdateStruct();

            // Update Field user
            $updateStruct->email = $userInfo['email'];
            $updateStruct->contentUpdateStruct->setField('first_name', trim($userInfo['first_name']));
            $updateStruct->contentUpdateStruct->setField('second_name', trim($userInfo['second_name']));

            // Update Field User
            return $this->repository->sudo(
                function () use ($userService, $updateStruct, $user) {
                    return $userService->updateUser($user, $updateStruct);
                }
            );
        } catch (\Exception $exception) {
            $this->logger->error('Error when update user in Ibexa '.$exception->getTraceAsString());

            return false;
        }
    }

Nous avons vu deux exemples qui consomment l’API Public d’Ibexa 

L’exemple donné est sous Ibexa 3.3

D’autres exemples et code seront partagés sous la catégorie Ibexa