- <?php
- /*
-  * This file is part of EC-CUBE
-  *
-  * Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
-  *
-  * http://www.ec-cube.co.jp/
-  *
-  * For the full copyright and license information, please view the LICENSE
-  * file that was distributed with this source code.
-  */
- namespace Plugin\MailMagazine42\Event;
- use Knp\Component\Pager\Event\ItemsEvent;
- use Symfony\Component\EventDispatcher\EventSubscriberInterface;
- use Plugin\MailMagazine42\Service\MailMagazineService;
- class MailMagazineHistoryFilePaginationSubscriber implements EventSubscriberInterface
- {
-     /**
-      * @var MailMagazineService
-      */
-     protected MailMagazineService $mailMagazineService;
-     /**
-      * MailMagazineHistoryFilePaginationSubscriber constructor.
-      *
-      * @param MailMagazineService $mailMagazineService
-      */
-     public function __construct(MailMagazineService $mailMagazineService)
-     {
-         $this->mailMagazineService = $mailMagazineService;
-     }
-     public function items(ItemsEvent $event)
-     {
-         $mailMagazineDir = $this->mailMagazineService->getMailMagazineDir();
-         if (!is_string($event->target) || strpos($event->target, $mailMagazineDir) !== 0) {
-             return;
-         }
-         $event->stopPropagation();
-         $file = $event->target;
-         if (!file_exists($file)) {
-             $event->count = 0;
-             $event->items = [];
-             return;
-         }
-         $skip = $event->getOffset();
-         $fp = fopen($file, 'r');
-         $count = $event->getLimit();
-         $total = 0;
-         $event->items = [];
-         while ($line = fgets($fp)) {
-             $total++;
-             if ($skip-- > 0) {
-                 continue;
-             }
-             if ($count > 0) {
-                 list($status, $customerId, $email, $name) = explode(',', str_replace(PHP_EOL, '', $line), 4);
-                 $event->items[] = [
-                     'status' => $status,
-                     'customerId' => $customerId,
-                     'email' => $email,
-                     'name' => $name,
-                 ];
-             }
-             --$count;
-         }
-         $event->count = $total;
-     }
-     public static function getSubscribedEvents()
-     {
-         return [
-             'knp_pager.items' => ['items', 1],
-         ];
-     }
- }
-