getDeletedAt() && false == $page->getOption()->getCover()) { if ($page->getFolio() !== $folio) { $page->setFolio($folio); $pagesToSave[] = $page; } $folio += $page->getOption()->getNbPages(); } else { continue; } } return $pagesToSave; } /** * @param PageOptions $pageOptions * @param Cdf $cdf * @param bool $onDelete [Delete case] * * @return array [Pages to update] */ public function updateFolios(PageOptions $pageOptions, Cdf $cdf, bool $onDelete = false): array { $optionFolio = $pageOptions->getPages()->first()->getFolio(); $optionNbPage = (int) $pageOptions->getNbPages(); $startFolio = $onDelete ? $optionFolio : $optionFolio + $optionNbPage; $cdfPages = $cdf->getCdfPage()->filter(function ($page) use ($optionFolio) { return $page->getFolio() > $optionFolio && !$page->getOption()->getCover(); })->toArray(); uasort($cdfPages, function($a, $b) { return ($a->getFolio() < $b->getFolio()) ? -1 : 1; }); $pagesToSave = $this->updateCdfFoliosOnStartFolio($startFolio, $cdfPages); return $pagesToSave; } /** * @param int $startFolio [Folio to start update] * @param array $cdfPages [Cdf's page's order] * * @return array [Pages to update] */ private function updateCdfFoliosOnStartFolio(int $startFolio, array $cdfPages): array { $folio = $startFolio; $pagesToSave = []; foreach ($cdfPages as $page) { if (null === $page->getDeletedAt()) { $page->setFolio($folio); $pagesToSave[] = $page; $folio += $page->getOption()->getNbPages(); } else { continue; } } return $pagesToSave; } }