2020-12-07 14:11:29 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
use function DI\autowire, DI\create, DI\get;
|
|
|
|
|
2023-02-01 18:49:45 +00:00
|
|
|
use Laminas\Diactoros\Response\HtmlResponse;
|
2020-12-07 14:11:29 +00:00
|
|
|
|
2023-10-16 17:58:51 +00:00
|
|
|
use Picea\{Asset\Action\InstallActionInterface,
|
|
|
|
Picea,
|
|
|
|
Caching\Cache,
|
|
|
|
Caching\Opcache,
|
|
|
|
Compiler,
|
|
|
|
Compiler\Context,
|
|
|
|
Compiler\BaseContext,
|
|
|
|
FileFetcher,
|
|
|
|
Language\DefaultRegistrations,
|
|
|
|
Method\Request};
|
2023-03-29 15:12:29 +00:00
|
|
|
use Picea\Extension\{ LanguageHandler, LanguageExtension, TitleExtension, NumberExtension, UrlExtension };
|
2023-01-26 13:28:36 +00:00
|
|
|
use Picea\Ui\{ Method, Ui };
|
2023-10-16 17:58:51 +00:00
|
|
|
use Picea\Asset\{ Asset, Action };
|
2020-12-07 14:11:29 +00:00
|
|
|
|
|
|
|
return [
|
|
|
|
Picea::class => function($c) {
|
2023-01-26 13:28:36 +00:00
|
|
|
return new Picea($c->get(Context::class), $c->get(Cache::class), $c->get(Compiler::class), null, $c->get(FileFetcher::class), null, getenv("DEBUG"));
|
2020-12-07 14:11:29 +00:00
|
|
|
},
|
|
|
|
|
|
|
|
Context::class => function($c) {
|
2023-10-12 16:52:34 +00:00
|
|
|
return new BaseContext($c->get(Lean\Lean::class)->getPiceaContext());
|
2020-12-07 14:11:29 +00:00
|
|
|
},
|
|
|
|
|
|
|
|
Compiler::class => function($c) {
|
2021-02-16 03:10:04 +00:00
|
|
|
return new Compiler(new class(array_merge([
|
2020-12-07 14:11:29 +00:00
|
|
|
$c->get(LanguageExtension::class),
|
|
|
|
$c->get(TitleExtension::class),
|
2023-03-29 15:12:29 +00:00
|
|
|
$c->get(NumberExtension::class),
|
2020-12-07 14:11:29 +00:00
|
|
|
$c->get(UrlExtension::class),
|
|
|
|
$c->get(Method\Form::class),
|
|
|
|
$c->get(Method\Pagination::class),
|
|
|
|
$c->get(Request::class),
|
2022-11-24 19:57:42 +00:00
|
|
|
], class_exists(\Taxus\Picea\Extension::class) ? [ $c->get(\Taxus\Picea\Extension::class) ] : [],
|
|
|
|
array_map(fn($class) => $c->get($class), $c->get(Lean\Lean::class)->getPiceaExtensions() ))) extends DefaultRegistrations {
|
2020-12-07 14:11:29 +00:00
|
|
|
|
|
|
|
public function registerAll(Compiler $compiler) : void
|
|
|
|
{
|
|
|
|
parent::registerAll($compiler);
|
2023-10-06 23:09:45 +00:00
|
|
|
|
2023-10-12 16:52:34 +00:00
|
|
|
if (class_exists(Ui::class)) {
|
|
|
|
( new Ui() )->registerFormExtension($compiler);
|
|
|
|
}
|
2023-10-06 23:09:45 +00:00
|
|
|
|
2023-10-12 16:52:34 +00:00
|
|
|
if (class_exists(Asset::class)) {
|
|
|
|
( new Asset() )->registerExtension($compiler);
|
2023-10-06 23:09:45 +00:00
|
|
|
}
|
2020-12-07 14:11:29 +00:00
|
|
|
}
|
|
|
|
});
|
|
|
|
},
|
|
|
|
|
|
|
|
Request::class => autowire(Request::class),
|
|
|
|
|
|
|
|
Method\Form::class => autowire(Method\Form::class),
|
|
|
|
|
|
|
|
Method\Pagination::class => autowire(Method\Pagination::class),
|
|
|
|
|
2021-02-16 03:10:04 +00:00
|
|
|
LanguageExtension::class => create(LanguageExtension::class)->constructor(get(LanguageHandler::class)),
|
2020-12-07 14:11:29 +00:00
|
|
|
|
|
|
|
LanguageHandler::class => function($c) {
|
|
|
|
return new class( $c->get(Tell\I18n::class) ) implements LanguageHandler {
|
|
|
|
public Tell\I18n $tell;
|
|
|
|
|
|
|
|
public function __construct(Tell\I18n $tell) {
|
|
|
|
$this->tell = $tell;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function languageFromKey(string $key, array $variables = []) #: array|string
|
|
|
|
{
|
|
|
|
return $this->tell->fromKey($key, $variables) ?: "";
|
|
|
|
}
|
|
|
|
};
|
|
|
|
},
|
|
|
|
|
|
|
|
TitleExtension::class => autowire(TitleExtension::class),
|
|
|
|
|
2023-03-29 15:12:29 +00:00
|
|
|
NumberExtension::class => autowire(NumberExtension::class),
|
2022-11-24 19:57:42 +00:00
|
|
|
|
2023-05-31 18:06:19 +00:00
|
|
|
UrlExtension::class => create(UrlExtension::class)->constructor(getenv("URL_BASE"), get('git.commit'), explode(',', getenv('APP_URL')), (bool) getenv('FORCE_SSL')),
|
2020-12-07 14:11:29 +00:00
|
|
|
|
|
|
|
Cache::class => create(Opcache::class)->constructor(getenv("CACHE_PATH"), get(Context::class)),
|
|
|
|
|
|
|
|
FileFetcher::class => function($c) {
|
|
|
|
return new FileFetcher($c->get(Lean\Lean::class)->getViewPaths());
|
|
|
|
},
|
2023-10-16 17:58:51 +00:00
|
|
|
|
|
|
|
Action\Install::class => autowire(Action\Install::class),
|
|
|
|
Action\Symlink::class => autowire(Action\Symlink::class),
|
|
|
|
Action\InstallActionInterface::class => create(Action\Symlink::class),
|
2020-12-07 14:11:29 +00:00
|
|
|
];
|