Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/2.2'
Browse files Browse the repository at this point in the history
  • Loading branch information
konradoboza committed Aug 2, 2018
2 parents f03af9b + 757b1ea commit d5ee5bc
Showing 1 changed file with 53 additions and 3 deletions.
56 changes: 53 additions & 3 deletions lib/Form/Type/FieldType/AuthorFieldType.php
Expand Up @@ -6,6 +6,8 @@
*/
namespace EzSystems\RepositoryForms\Form\Type\FieldType;

use eZ\Publish\API\Repository\Exceptions\NotFoundException;
use eZ\Publish\API\Repository\Repository;
use eZ\Publish\Core\FieldType\Author\Author;
use eZ\Publish\Core\FieldType\Author\Value;
use EzSystems\RepositoryForms\Form\Type\FieldType\Author\AuthorCollectionType;
Expand All @@ -22,16 +24,37 @@
*/
class AuthorFieldType extends AbstractType
{
/** @var \eZ\Publish\API\Repository\Repository */
private $repository;

/**
* @param \eZ\Publish\API\Repository\Repository $repository
*/
public function __construct(Repository $repository)
{
$this->repository = $repository;
}

/**
* @return string
*/
public function getName()
{
return $this->getBlockPrefix();
}

/**
* @return string
*/
public function getBlockPrefix()
{
return 'ezplatform_fieldtype_ezauthor';
}

/**
* @param \Symfony\Component\Form\FormBuilderInterface $builder
* @param array
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
Expand All @@ -40,6 +63,9 @@ public function buildForm(FormBuilderInterface $builder, array $options)
->addEventListener(FormEvents::POST_SUBMIT, [$this, 'filterOutEmptyAuthors']);
}

/**
* @param \Symfony\Component\OptionsResolver\OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(['data_class' => Value::class]);
Expand All @@ -48,13 +74,13 @@ public function configureOptions(OptionsResolver $resolver)
/**
* Returns a view transformer which handles empty row needed to display add/remove buttons.
*
* @return DataTransformerInterface
* @return \Symfony\Component\Form\DataTransformerInterface
*/
public function getViewTransformer(): DataTransformerInterface
{
return new CallbackTransformer(function (Value $value) {
if (0 === $value->authors->count()) {
$value->authors->append(new Author());
$value->authors->append($this->fetchLoggedAuthor());
}

return $value;
Expand All @@ -64,7 +90,7 @@ public function getViewTransformer(): DataTransformerInterface
}

/**
* @param FormEvent $event
* @param \Symfony\Component\Form\FormEvent $event
*/
public function filterOutEmptyAuthors(FormEvent $event)
{
Expand All @@ -79,4 +105,28 @@ function (Author $author) {
)
);
}

/**
* Returns currently logged user data, or empty Author object if none was found.
*
* @return \eZ\Publish\Core\FieldType\Author\Author
*/
private function fetchLoggedAuthor(): Author
{
$author = new Author();

try {
$permissionResolver = $this->repository->getPermissionResolver();
$userService = $this->repository->getUserService();
$loggedUserId = $permissionResolver->getCurrentUserReference()->getUserId();
$loggedUserData = $userService->loadUser($loggedUserId);

$author->name = $loggedUserData->getName();
$author->email = $loggedUserData->email;
} catch (NotFoundException $e) {
//Do nothing
}

return $author;
}
}

0 comments on commit d5ee5bc

Please sign in to comment.