/** * @param string $name * @param array $arguments * @return mixed|string * @throws PageBuilderException */ public function __call($name, $arguments) { if (strpos($name, 'block_') === 0) { $validTypes = Block::getBlockClasses(); $blockType = strtolower(substr($name, 6)); if (!empty($validTypes[$blockType])) { $blockName = $arguments[0]; if (!isset($this->blockSettings[$blockName])) { $this->blockSettings[$blockName] = []; } if (!isset($this->blockSettings[$blockName]['type'])) { $this->blockSettings[$blockName]['type'] = $blockType; } } } try { return parent::__call($name, $arguments); } catch (PageBuilderException $e) { $error = $e->getMessage() . ' (themes.' . $this->theme . '.templates.' . $this->template; $error .= $this->categoryView ? ' ' . $this->categoryView : $this->categoryView; $error .= $this->repeaterView ? ' ' . $this->repeaterView : $this->repeaterView; $error .= ')'; $this->errors[] = $error; throw new PageBuilderException($error); } }
private function _typeList() { $selectArray = []; foreach (Block::getBlockClasses() as $blockName => $blockClass) { $selectArray[$blockName] = $blockName; } return $selectArray; }