oDrawingHashTable; } /** * Get PhpPresentation object. */ public function getPhpPresentation(): ?PhpPresentation { return $this->oPresentation; } /** * Get PhpPresentation object. * * @param PhpPresentation|null $pPhpPresentation PhpPresentation object * * @return self */ public function setPhpPresentation(PhpPresentation $pPhpPresentation = null) { $this->oPresentation = $pPhpPresentation; return $this; } public function setZipAdapter(ZipInterface $oZipAdapter): self { $this->oZipAdapter = $oZipAdapter; return $this; } public function getZipAdapter(): ?ZipInterface { return $this->oZipAdapter; } /** * Get an array of all drawings. * * @return array */ protected function allDrawings(): array { // Get an array of all drawings $aDrawings = []; // Get an array of all master slides $aSlideMasters = $this->getPhpPresentation()->getAllMasterSlides(); $aSlideMasterLayouts = \array_map(function ($oSlideMaster) { return $oSlideMaster->getAllSlideLayouts(); }, $aSlideMasters); // Get an array of all slide layouts $aSlideLayouts = []; \array_walk_recursive($aSlideMasterLayouts, function ($oSlideLayout) use (&$aSlideLayouts) { $aSlideLayouts[] = $oSlideLayout; }); // Loop through PhpPresentation foreach (\array_merge($this->getPhpPresentation()->getAllSlides(), $aSlideMasters, $aSlideLayouts) as $oSlide) { $arrayReturn = $this->iterateCollection($oSlide->getShapeCollection()->getIterator()); $aDrawings = \array_merge($aDrawings, $arrayReturn); } return $aDrawings; } /** * @param \ArrayIterator $oIterator * * @return array */ private function iterateCollection(\ArrayIterator $oIterator): array { $arrayReturn = []; if ($oIterator->count() <= 0) { return $arrayReturn; } while ($oIterator->valid()) { $oShape = $oIterator->current(); if ($oShape instanceof AbstractDrawingAdapter) { $arrayReturn[] = $oShape; } elseif ($oShape instanceof Chart) { $arrayReturn[] = $oShape; } elseif ($oShape instanceof Group) { $arrayGroup = $this->iterateCollection($oShape->getShapeCollection()->getIterator()); $arrayReturn = \array_merge($arrayReturn, $arrayGroup); } $oIterator->next(); } return $arrayReturn; } }