. */ declare(strict_types=1); namespace Fisharebest\Webtrees\Module; use Fisharebest\Webtrees\Tree; use Psr\Http\Message\ServerRequestInterface; /** * Interface ModuleBlockInterface - Classes and libraries for module system */ interface ModuleBlockInterface extends ModuleInterface { // Places we can display blocks public const CONTEXT_EMBED = 'embed'; public const CONTEXT_TREE_PAGE = 'tree'; public const CONTEXT_USER_PAGE = 'user'; /** * Generate the HTML content of this block. * * @param Tree $tree * @param int $block_id * @param string $context * @param array $config * * @return string */ public function getBlock(Tree $tree, int $block_id, string $context, array $config = []): string; /** * Should this block load asynchronously using AJAX? * * Simple blocks are faster in-line, more complex 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 string */ public function editBlockConfiguration(Tree $tree, int $block_id): string; /** * Update the configuration for a block. * * @param ServerRequestInterface $request * @param int $block_id * * @return void */ public function saveBlockConfiguration(ServerRequestInterface $request, int $block_id): void; }