. */ declare(strict_types=1); namespace Fisharebest\Webtrees\Module; use Fisharebest\Webtrees\Tree; use Symfony\Component\HttpFoundation\Request; /** * Interface ModuleBlockInterface - Classes and libraries for module system */ interface ModuleBlockInterface { /** * Generate the HTML content of this block. * * @param Tree $tree * @param int $block_id * @param string $ctype * @param string[] $cfg * * @return string */ public function getBlock(Tree $tree, int $block_id, string $ctype = '', array $cfg = []): string; /** * Should this block load asynchronously using AJAX? * * Simple blocks are faster in-line, more comples ones * can be loaded later. * * @return bool */ public function loadAjax(): bool; /** * Can this block be shown on the user’s home page? * * @return bool */ public function isUserBlock(): bool; /** * Can this block be shown on the tree’s home page? * * @return bool */ public function isTreeBlock(): bool; /** * An HTML form to edit block settings * * @param Tree $tree * @param int $block_id * * @return void */ public function editBlockConfiguration(Tree $tree, int $block_id); /** * Update the configuration for a block. * * @param Request $request * @param int $block_id * * @return void */ public function saveBlockConfiguration(Request $request, int $block_id); }