Add declare(strict_types=1), replace phpdoc with 7.4 type hints

pull/3844/head
Julio Montoya 5 years ago
parent fb21ac3d54
commit 2b8400b0e5
  1. 2
      src/CoreBundle/EventListener/CourseListener.php
  2. 4
      src/CoreBundle/EventListener/HTTPExceptionListener.php
  3. 12
      src/CoreBundle/EventListener/LoginSuccessHandler.php
  4. 17
      src/CoreBundle/EventListener/LogoutListener.php
  5. 6
      src/CoreBundle/EventListener/ResourceUploadListener.php
  6. 9
      src/CoreBundle/EventListener/SessionAccessListener.php
  7. 3
      src/CoreBundle/EventListener/SettingListener.php
  8. 2
      src/CoreBundle/EventSubscriber/LocaleSubscriber.php
  9. 3
      src/CoreBundle/EventSubscriber/ResolveResourceFileContentUrlSubscriber.php
  10. 12
      src/CoreBundle/Form/BranchType.php
  11. 13
      src/CoreBundle/Form/CourseHomeToolType.php
  12. 7
      src/CoreBundle/Form/CurriculumCategoryType.php
  13. 3
      src/CoreBundle/Form/CurriculumItemRelUserCollectionType.php
  14. 16
      src/CoreBundle/Form/CurriculumItemRelUserType.php
  15. 6
      src/CoreBundle/Form/CurriculumItemType.php
  16. 4
      src/CoreBundle/Form/DataTransformer/ResourceToIdentifierTransformer.php
  17. 15
      src/CoreBundle/Form/JuryMembersType.php
  18. 3
      src/CoreBundle/Form/JuryType.php
  19. 3
      src/CoreBundle/Form/QuestionScoreNameType.php
  20. 3
      src/CoreBundle/Form/Resource/CDocumentType.php
  21. 3
      src/CoreBundle/Form/Resource/CLinkType.php
  22. 3
      src/CoreBundle/Form/SessionPathType.php
  23. 22
      src/CoreBundle/Form/SessionTreeType.php
  24. 12
      src/CoreBundle/Form/SessionType.php
  25. 31
      src/CoreBundle/Form/Type/CourseType.php
  26. 6
      src/CoreBundle/Form/Type/IllustrationType.php
  27. 7
      src/CoreBundle/Form/Type/ResourceCommentType.php
  28. 11
      src/CoreBundle/Form/Type/ResourceLinkType.php
  29. 6
      src/CoreBundle/Form/Type/ResourceNodeType.php
  30. 14
      src/CoreBundle/Form/Type/ResourceRightType.php
  31. 6
      src/CoreBundle/Form/Type/YesNoType.php
  32. 4
      src/CoreBundle/Framework/Container.php
  33. 3
      src/CoreBundle/Framework/Exporter.php

@ -331,7 +331,7 @@ class CourseListener
}
/**
* @param Course|null $course
* @param null|Course $course
* @param int $sessionId
* @param int $groupId
* @param string $origin

@ -21,7 +21,9 @@ final class HTTPExceptionListener
return;
}
$response = new JsonResponse(['error' => $exception->getMessage()]);
$response = new JsonResponse([
'error' => $exception->getMessage(),
]);
$response->setStatusCode($exception->getStatusCode());
$event->setResponse($response);
}

@ -14,9 +14,6 @@ use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;
use UserManager;
/**
* Class LoginSuccessHandler.
*/
//class LoginSuccessHandler implements AuthenticationSuccessHandlerInterface
class LoginSuccessHandler
{
@ -24,9 +21,6 @@ class LoginSuccessHandler
protected AuthorizationCheckerInterface $checker;
protected SettingsManager $settingsManager;
/**
* LoginSuccessHandler constructor.
*/
public function __construct(
UrlGeneratorInterface $urlGenerator,
AuthorizationCheckerInterface $checker,
@ -38,7 +32,7 @@ class LoginSuccessHandler
}
/**
* @return RedirectResponse|null
* @return null|RedirectResponse
*/
public function onSecurityInteractiveLogin(InteractiveLoginEvent $event)
{
@ -118,14 +112,14 @@ class LoginSuccessHandler
}
$count_of_sessions = count($my_session_list);
if (1 == $count_of_sessions && 0 == $count_of_courses_no_sessions) {
if (1 === $count_of_sessions && 0 === $count_of_courses_no_sessions) {
$key = array_keys($personal_course_list);
$course_info = $personal_course_list[$key[0]]['course_info'];
$sessionId = isset($course_info['session_id']) ? $course_info['session_id'] : 0;
$url = api_get_path(WEB_COURSE_PATH).$course_info['directory'].'/index.php?sid='.$sessionId;
}
if (0 == $count_of_sessions && 1 == $count_of_courses_no_sessions) {
if (0 === $count_of_sessions && 1 === $count_of_courses_no_sessions) {
$key = array_keys($personal_course_list);
$course_info = $personal_course_list[$key[0]]['course_info'];
$url = api_get_path(WEB_COURSE_PATH).$course_info['directory'].'/index.php?sid=0';

@ -8,6 +8,7 @@ namespace Chamilo\CoreBundle\EventListener;
use Chamilo\CoreBundle\Entity\User;
use Database;
use Doctrine\DBAL\Cache\ArrayStatement;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
@ -35,7 +36,7 @@ class LogoutListener
}
/**
* @return RedirectResponse|null
* @return null|RedirectResponse
*/
public function onSymfonyComponentSecurityHttpEventLogoutEvent(LogoutEvent $event)
{
@ -50,18 +51,20 @@ class LogoutListener
$chat->setUserStatus(0);
}*/
$token = $this->storage->getToken();
/** @var null|User $user */
$user = $token->getUser();
if ($user instanceof User) {
$userId = $token->getUser()->getId();
$userId = $user->getId();
$table = Database:: get_main_table(TABLE_STATISTIC_TRACK_E_LOGIN);
$sql = "SELECT login_id, login_date
FROM $table
WHERE login_user_id = $userId
FROM {$table}
WHERE login_user_id = {$userId}
ORDER BY login_date DESC
LIMIT 0,1";
$loginId = null;
$connection = $this->em->getConnection();
/** @var ArrayStatement $result */
$result = $connection->executeQuery($sql);
if ($result->rowCount() > 0) {
$row = $result->fetchAssociative();
@ -73,14 +76,14 @@ class LogoutListener
$loginAs = $this->checker->isGranted('ROLE_PREVIOUS_ADMIN');
if (!$loginAs) {
$current_date = api_get_utc_datetime();
$sql = "UPDATE $table
$sql = "UPDATE {$table}
SET logout_date='".$current_date."'
WHERE login_id='$loginId'";
WHERE login_id='{$loginId}'";
$connection->executeQuery($sql);
}
$online_table = Database::get_main_table(TABLE_STATISTIC_TRACK_E_ONLINE);
$sql = 'DELETE FROM '.$online_table." WHERE login_user_id = $userId";
$sql = 'DELETE FROM '.$online_table." WHERE login_user_id = {$userId}";
$connection->executeQuery($sql);
}

@ -11,16 +11,10 @@ use Oneup\UploaderBundle\Event\PostPersistEvent;
use Oneup\UploaderBundle\Uploader\Response\ResponseInterface;
use Symfony\Component\Routing\RouterInterface;
/**
* Class ResourceUploadListener.
*/
class ResourceUploadListener
{
private RouterInterface $router;
/**
* ResourceUploadListener constructor.
*/
public function __construct(RouterInterface $router)
{
//$this->om = $om;

@ -12,18 +12,12 @@ use Doctrine\ORM\EntityManager;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
/**
* Class SessionAccessListener.
*/
class SessionAccessListener
{
protected EntityManager $em;
protected ?Request $request = null;
/**
* SessionAccessListener constructor.
*/
public function __construct(EntityManager $em)
{
$this->em = $em;
@ -46,7 +40,8 @@ class SessionAccessListener
->setCId($course->getId())
->setUser($user)
->setSessionId($session->getId())
->setUserIp($ip);
->setUserIp($ip)
;
$this->em->persist($access);
$this->em->flush();

@ -9,9 +9,6 @@ namespace Chamilo\CoreBundle\EventListener;
use Sylius\Bundle\SettingsBundle\Event\SettingsEvent;
use Symfony\Component\HttpFoundation\Request;
/**
* Class SettingListener.
*/
class SettingListener
{
public function __construct()

@ -108,7 +108,7 @@ class LocaleSubscriber implements EventSubscriberInterface
$locale = '';
foreach ($priorityList as $setting) {
$priority = $this->settingsManager->getSetting("language.$setting");
$priority = $this->settingsManager->getSetting("language.{$setting}");
if (!empty($priority) && isset($localeList[$priority])) {
$locale = $localeList[$priority];

@ -15,7 +15,6 @@ use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Event\ViewEvent;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use function is_a;
class ResolveResourceFileContentUrlSubscriber implements EventSubscriberInterface
{
@ -48,7 +47,7 @@ class ResolveResourceFileContentUrlSubscriber implements EventSubscriberInterfac
if (!($attributes = RequestAttributesExtractor::extractAttributes($request)) ||
//!\is_a($attributes['resource_class'], ResourceFile::class, true)
!is_a($attributes['resource_class'], AbstractResource::class, true)
!\is_a($attributes['resource_class'], AbstractResource::class, true)
) {
return;
}

@ -46,7 +46,10 @@ class BranchType extends AbstractType
->add(
'parent_id',
'text',
['required' => false, 'disabled' => $parentIdDisabled]
[
'required' => false,
'disabled' => $parentIdDisabled,
]
)
//->add('parent_id', 'choice', array('choices'=> array(1 => 'jjaa',2=>'ddd'), 'required' => false))
->add('branch_ip', 'text')
@ -58,7 +61,9 @@ class BranchType extends AbstractType
->add('delay', 'text')
->add('admin_mail', EmailType::class)
->add('admin_name', 'text')
->add('admin_phone', 'text', ['required' => false])
->add('admin_phone', 'text', [
'required' => false,
])
->add(
'last_sync_trans_date',
'datetime',
@ -71,7 +76,8 @@ class BranchType extends AbstractType
->add('ssl_pub_key', 'text')
->add('last_sync_trans_id', 'text')
->add('access_url_id', 'text')
->add('submit', 'submit');
->add('submit', 'submit')
;
}
public function configureOptions(OptionsResolver $resolver): void

@ -19,17 +19,24 @@ class CourseHomeToolType extends AbstractType
$builder->add(
'custom_icon',
'file',
['required' => false, 'data_class' => null]
[
'required' => false,
'data_class' => null,
]
);
$builder->add(
'target',
'choice',
['choices' => ['_self', '_blank']]
[
'choices' => ['_self', '_blank'],
]
);
$builder->add(
'visibility',
'choice',
['choices' => ['1', '0']]
[
'choices' => ['1', '0'],
]
);
$builder->add('c_id', 'hidden');
$builder->add('session_id', 'hidden');

@ -38,8 +38,11 @@ class CurriculumCategoryType extends AbstractType
) {
$qb = $repository->createQueryBuilder('c')
->where('c.cId = :id')
->orderBy('c.title', 'ASC');
$parameters = ['id' => $course->getId()];
->orderBy('c.title', 'ASC')
;
$parameters = [
'id' => $course->getId(),
];
if (!empty($session)) {
$qb->andWhere('c.sessionId = :session_id');

@ -10,9 +10,6 @@ use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
/**
* Class CurriculumItemRelUserCollectionType.
*/
class CurriculumItemRelUserCollectionType extends AbstractType
{
/**

@ -10,9 +10,6 @@ use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
/**
* Class CurriculumItemRelUserType.
*/
class CurriculumItemRelUserType extends AbstractType
{
/**
@ -35,12 +32,21 @@ class CurriculumItemRelUserType extends AbstractType
$builder->add(
'description',
'text',
['label' => ' ', 'attr' => ['class' => 'span7']]
[
'label' => ' ',
'attr' => [
'class' => 'span7',
],
]
);
$builder->add(
'item_id',
'hidden',
['attr' => ['value' => $this->itemId]]
[
'attr' => [
'value' => $this->itemId,
],
]
);
}

@ -10,9 +10,6 @@ use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
/**
* Class CurriculumItemType.
*/
class CurriculumItemType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
@ -34,7 +31,8 @@ class CurriculumItemType extends AbstractType
'class' => 'Entity\CurriculumCategory',
'query_builder' => function ($repository) {
return $repository->createQueryBuilder('p')
->orderBy('p.title', 'ASC');
->orderBy('p.title', 'ASC')
;
},
'property' => 'title',
'required' => false,

@ -40,7 +40,9 @@ final class ResourceToIdentifierTransformer implements DataTransformerInterface
return null;
}
$resource = $this->repository->findOneBy([$this->identifier => $value]);
$resource = $this->repository->findOneBy([
$this->identifier => $value,
]);
if (null === $resource) {
throw new TransformationFailedException(sprintf('Object "%s" with identifier "%s"="%s" does not exist.', $this->repository->getClassName(), $this->identifier, $value));
}

@ -24,14 +24,17 @@ class JuryMembersType extends AbstractType
'property' => 'name',
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('u')
->where('u.role LIKE :role')
->setParameter(':role', 'ROLE_JURY%')
->orderBy('u.name', 'DESC');
->where('u.role LIKE :role')
->setParameter(':role', 'ROLE_JURY%')
->orderBy('u.name', 'DESC')
;
},
]
);
$builder->add('user_id', 'choice', ['label' => 'User']);
$builder->add('user_id', 'choice', [
'label' => 'User',
]);
$builder->add('jury_id', 'hidden');
$builder->add('submit', 'submit');
@ -52,7 +55,9 @@ class JuryMembersType extends AbstractType
'user_id',
'hidden',
$id,
['auto_initialize' => false]
[
'auto_initialize' => false,
]
)
);
}

@ -43,7 +43,8 @@ class JuryType extends AbstractType
return $er->createQueryBuilder('u')
//->where('u.role LIKE :role')
//->setParameter(':role', 'ROLE_JURY%')
->orderBy('u.branchName', 'DESC');
->orderBy('u.branchName', 'DESC')
;
},
]
);

@ -24,7 +24,8 @@ class QuestionScoreNameType extends AbstractType
'class' => 'Entity\QuestionScore',
'query_builder' => function ($repository) {
return $repository->createQueryBuilder('p')
->orderBy('p.id', 'ASC');
->orderBy('p.id', 'ASC')
;
},
'property' => 'name',
]

@ -13,9 +13,6 @@ use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
/**
* Class CDocumentType.
*/
class CDocumentType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void

@ -14,9 +14,6 @@ use Symfony\Component\Form\Extension\Core\Type\UrlType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
/**
* Class CLinkType.
*/
class CLinkType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void

@ -22,7 +22,8 @@ class SessionPathType extends AbstractType
$builder
->add('name', 'text')
->add('description', 'text')
->add('submit', 'submit');
->add('submit', 'submit')
;
}
public function configureOptions(OptionsResolver $resolver): void

@ -18,7 +18,9 @@ class SessionTreeType extends AbstractType
$builder->add(
'type',
'choice',
['choices' => ['1', '2', '3', '4']]
[
'choices' => ['1', '2', '3', '4'],
]
);
$builder->add(
@ -29,7 +31,8 @@ class SessionTreeType extends AbstractType
'property' => 'name',
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('u')
->orderBy('u.name', 'DESC');
->orderBy('u.name', 'DESC')
;
},
]
);
@ -42,7 +45,8 @@ class SessionTreeType extends AbstractType
'property' => 'name',
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('u')
->orderBy('u.name', 'DESC');
->orderBy('u.name', 'DESC')
;
},
]
);
@ -55,7 +59,8 @@ class SessionTreeType extends AbstractType
'property' => 'name',
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('u')
->orderBy('u.name', 'DESC');
->orderBy('u.name', 'DESC')
;
},
]
);
@ -68,7 +73,8 @@ class SessionTreeType extends AbstractType
'property' => 'name',
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('u')
->orderBy('u.name', 'DESC');
->orderBy('u.name', 'DESC')
;
},
]
);
@ -81,12 +87,14 @@ class SessionTreeType extends AbstractType
'property' => 'title',
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('u')
->orderBy('u.title', 'DESC');
->orderBy('u.title', 'DESC')
;
},
]
);
$builder
->add('submit', 'submit');
->add('submit', 'submit')
;
}
public function configureOptions(OptionsResolver $resolver): void

@ -36,7 +36,9 @@ class SessionType extends AbstractType
->add(
'visibility',
'choice',
['choices' => Session::getStatusList()]
[
'choices' => Session::getStatusList(),
]
)
->add(
'session_category_id',
@ -60,7 +62,10 @@ class SessionType extends AbstractType
->add('access_end_date', 'sonata_type_datetime_picker')
->add('coach_access_start_date', 'sonata_type_datetime_picker')
->add('coach_access_end_date', 'sonata_type_datetime_picker')
->add('save', 'submit', ['label' => 'Update']);
->add('save', 'submit', [
'label' => 'Update',
])
;
}
public function configureOptions(OptionsResolver $resolver): void
@ -72,9 +77,6 @@ class SessionType extends AbstractType
);
}
/**
* @return string
*/
public function getName(): string
{
return 'session';

@ -17,9 +17,6 @@ use Symfony\Component\Form\Extension\Core\Type\UrlType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
/**
* Class CourseType.
*/
class CourseType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
@ -31,20 +28,30 @@ class CourseType extends AbstractType
->add(
'course_language',
LocaleType::class,
['preferred_choices' => ['en', 'fr', 'es']]
[
'preferred_choices' => ['en', 'fr', 'es'],
]
)
->add(
'visibility',
ChoiceType::class,
['choices' => Course::getStatusList()]
[
'choices' => Course::getStatusList(),
]
)
->add('department_name', TextType::class, ['required' => false])
->add('department_url', UrlType::class, ['required' => false])
->add('department_name', TextType::class, [
'required' => false,
])
->add('department_url', UrlType::class, [
'required' => false,
])
//->add('disk_quota', 'text')
->add(
'expiration_date',
DateType::class,
['required' => false]
[
'required' => false,
]
)
/* ->add('general_coach', 'entity', array(
'class' => 'ChamiloCoreBundle:User',
@ -67,7 +74,10 @@ class CourseType extends AbstractType
))*/
/*
->add('coach_access_end_date', 'sonata_type_datetime_picker')*/
->add('save', SubmitType::class, ['label' => 'Add']);
->add('save', SubmitType::class, [
'label' => 'Add',
])
;
}
public function configureOptions(OptionsResolver $resolver): void
@ -79,9 +89,6 @@ class CourseType extends AbstractType
);
}
/**
* @return string
*/
public function getName(): string
{
return 'course';

@ -10,9 +10,6 @@ use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\FileType;
use Symfony\Component\OptionsResolver\OptionsResolver;
/**
* Class IllustrationType.
*/
class IllustrationType extends AbstractType
{
public function configureOptions(OptionsResolver $resolver): void
@ -32,9 +29,6 @@ class IllustrationType extends AbstractType
return FileType::class;
}
/**
* @return string
*/
public function getName(): string
{
return 'illustration';

@ -18,11 +18,14 @@ class ResourceCommentType extends AbstractType
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('content', TextareaType::class, ['label' => 'Comment'])
->add('content', TextareaType::class, [
'label' => 'Comment',
])
->add(
'save',
SubmitType::class
);
)
;
}
public function configureOptions(OptionsResolver $resolver): void

@ -12,9 +12,6 @@ use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
/**
* Class ResourceLinkType.
*/
class ResourceLinkType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
@ -30,7 +27,9 @@ class ResourceLinkType extends AbstractType
'user' => 'User',
'group' => 'Group',
],
'attr' => ['class' => 'sharing_options'],
'attr' => [
'class' => 'sharing_options',
],
'mapped' => false,
]
)
@ -38,7 +37,9 @@ class ResourceLinkType extends AbstractType
'search',
'hidden',
[
'attr' => ['class' => 'extra_hidden'],
'attr' => [
'class' => 'extra_hidden',
],
'mapped' => false,
]
)

@ -10,9 +10,6 @@ use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
/**
* Class ResourceNodeType.
*/
class ResourceNodeType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
@ -25,7 +22,8 @@ class ResourceNodeType extends AbstractType
[
'type' => new ResourceLinkType(),
]
);
)
;
}
public function configureOptions(OptionsResolver $resolver): void

@ -11,9 +11,6 @@ use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
/**
* Class ResourceRightType.
*/
class ResourceRightType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
@ -22,13 +19,18 @@ class ResourceRightType extends AbstractType
->add(
'role',
'choice',
['choices' => ToolResourceRight::getDefaultRoles()]
[
'choices' => ToolResourceRight::getDefaultRoles(),
]
)
->add(
'mask',
'choice',
['choices' => ToolResourceRight::getMaskList()]
);
[
'choices' => ToolResourceRight::getMaskList(),
]
)
;
}
public function configureOptions(OptionsResolver $resolver): void

@ -10,9 +10,6 @@ use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\OptionsResolver\OptionsResolver;
/**
* Class YesNoType.
*/
class YesNoType extends AbstractType
{
public function configureOptions(OptionsResolver $resolver): void
@ -32,9 +29,6 @@ class YesNoType extends AbstractType
return ChoiceType::class;
}
/**
* @return string
*/
public function getName(): string
{
return 'yes_no';

@ -169,7 +169,7 @@ class Container
}
/**
* @return Request|null
* @return null|Request
*/
public static function getRequest()
{
@ -193,7 +193,7 @@ class Container
}
/**
* @return Session|false
* @return false|Session
*/
public static function getSession()
{

@ -15,9 +15,6 @@ use Sonata\Exporter\Writer\XlsWriter;
use Sonata\Exporter\Writer\XmlWriter;
use Symfony\Component\HttpFoundation\StreamedResponse;
/**
* Class Exporter.
*/
class Exporter
{
/**

Loading…
Cancel
Save