From c47c22d9bb1a5827fd44562cf5f7d68304e41547 Mon Sep 17 00:00:00 2001 From: OStefan2001 Date: Thu, 30 Jul 2026 18:29:43 +0300 Subject: [PATCH 1/2] I created GetMarkdownArticleHandler to handle the path for md files --- src/App/src/ConfigProvider.php | 3 + .../src/Handler/GetMarkdownArticleHandler.php | 80 +++++++++++++++++++ src/App/src/RoutesDelegator.php | 2 + 3 files changed, 85 insertions(+) create mode 100644 src/App/src/Handler/GetMarkdownArticleHandler.php diff --git a/src/App/src/ConfigProvider.php b/src/App/src/ConfigProvider.php index 1d43f04..c7157af 100644 --- a/src/App/src/ConfigProvider.php +++ b/src/App/src/ConfigProvider.php @@ -15,8 +15,10 @@ use Light\App\Factory\FeedGeneratorFactory; use Light\App\Factory\GetFeedViewHandlerFactory; use Light\App\Factory\GetIndexViewHandlerFactory; +use Light\App\Factory\GetMarkdownArticleHandlerFactory; use Light\App\Handler\GetFeedViewHandler; use Light\App\Handler\GetIndexViewHandler; +use Light\App\Handler\GetMarkdownArticleHandler; use Light\App\Resolver\EntityListenerResolver; use Light\App\Service\FeedGenerator; use Mezzio\Application; @@ -114,6 +116,7 @@ public function getDependencies(): array EntityListenerResolver::class => EntityListenerResolverFactory::class, GetIndexViewHandler::class => GetIndexViewHandlerFactory::class, GetFeedViewHandler::class => GetFeedViewHandlerFactory::class, + GetMarkdownArticleHandler::class => GetMarkdownArticleHandlerFactory::class, FeedGenerator::class => FeedGeneratorFactory::class, ], 'aliases' => [ diff --git a/src/App/src/Handler/GetMarkdownArticleHandler.php b/src/App/src/Handler/GetMarkdownArticleHandler.php new file mode 100644 index 0000000..808f2f3 --- /dev/null +++ b/src/App/src/Handler/GetMarkdownArticleHandler.php @@ -0,0 +1,80 @@ +getAttribute('categorySlug'); + $slug = (string) $request->getAttribute('slug'); + + $filePath = $this->resolveFilePath($categorySlug, $slug); + if ($filePath === null) { + return $this->notFound(); + } + + return new TextResponse( + (string) file_get_contents($filePath), + StatusCodeInterface::STATUS_OK, + ['Content-Type' => 'text/markdown; charset=utf-8'], + ); + } + + private function resolveFilePath(string $categorySlug, string $slug): ?string + { + if ($categorySlug === '' || $slug === '') { + return null; + } + + $base = realpath($this->articlesPath); + if ($base === false) { + return null; + } + $base = rtrim($base, '/'); + $realPath = realpath($base . '/' . $categorySlug . '/' . $slug . '.md'); + if ($realPath === false || ! is_file($realPath)) { + return null; + } + + if (! str_starts_with($realPath, $base . '/')) { + return null; + } + + return $realPath; + } + + private function notFound(): HtmlResponse + { + return new HtmlResponse( + $this->template->render('error::404', [ + 'categories' => $this->categoryRepository->getCategories(), + ]), + StatusCodeInterface::STATUS_NOT_FOUND, + ); + } +} diff --git a/src/App/src/RoutesDelegator.php b/src/App/src/RoutesDelegator.php index 5af2628..f5935f4 100644 --- a/src/App/src/RoutesDelegator.php +++ b/src/App/src/RoutesDelegator.php @@ -7,6 +7,7 @@ use Laminas\Diactoros\Response\RedirectResponse; use Light\App\Handler\GetFeedViewHandler; use Light\App\Handler\GetIndexViewHandler; +use Light\App\Handler\GetMarkdownArticleHandler; use Mezzio\Application; use Psr\Container\ContainerInterface; @@ -20,6 +21,7 @@ public function __invoke(ContainerInterface $container, string $serviceName, cal assert($app instanceof Application); $app->get('/', [GetIndexViewHandler::class], 'app::index'); $app->get('/feed/', [GetFeedViewHandler::class], 'app::feed'); + $app->get('/{categorySlug}/{slug}.md', [GetMarkdownArticleHandler::class], 'app::markdown-article'); $app->get('/{first}', function ($request) { $uri = $request->getUri(); From 34a673ce9801dad9ab5b20822dd5b473ded43a41 Mon Sep 17 00:00:00 2001 From: OStefan2001 Date: Thu, 30 Jul 2026 19:24:50 +0300 Subject: [PATCH 2/2] I created GetMarkdownArticleHandler to handle the path for md files --- .../listen-for-android-install-referrer.md | 0 ...ers-in-the-same-app-for-the-same-action.md | 0 ...vider-bootstrap-modern-php-applications.md | 0 ...ifecycle-for-a-mezzio-based-application.md | 0 .../architecture/understanding-middleware.md | 0 .../best-practice/aptana-set-svn-keywords.md | 0 ...security-in-dotkernel-headless-platform.md | 0 ...golden-rules-of-professional-php-coding.md | 0 .../htaccess-301-redirect-non-www-to-www.md | 0 ...t-update-delete-statements-with-zend-db.md | 0 .../sql-queries-using-zend-db-select.md | 0 .../best-practice/subqueries-with-zend-db.md | 0 .../svn-export-in-a-virtual-host.md | 0 ...n-keywords-setup-in-php-ide-zend-studio.md | 0 .../using-like-wildcards-with-zend-db.md | 0 ...urning-the-fetch-functions-from-zend-db.md | 0 ...estamp-on-a-field-that-record-date-time.md | 0 ...inas-mvc-is-retiring-consider-it-solved.md | 0 ...-client-migration-from-postman-to-bruno.md | 0 .../api-endpoint-to-collect-client-errors.md | 0 ...ntent-negotiation-in-dotkernel-rest-api.md | 0 .../dotkernel-api-1-0-0-released.md | 0 ...dotkernel-api-client-side-authorization.md | 0 ...dotkernel-api-server-side-authorization.md | 0 .../dotkernel-api-versus-laminas-api-tools.md | 0 ...ror-reporting-endpoint-in-dotkernel-api.md | 0 ...to-implement-mailchimp-in-dotkernel-api.md | 0 ...openapi-implementation-in-dotkernel-api.md | 0 ...-cors-implementation-to-zend-expressive.md | 0 ...g-layer-to-wurfl-in-dotkernel-using-apc.md | 0 ...poser-support-in-your-dotkernel-project.md | 0 ...browser-detection-in-dotkernel-projects.md | 0 ...n-using-cookie-remember-me-in-dotkernel.md | 0 ...through-bootstrap-of-non-existent-files.md | 0 ...ching-in-dotkernel-using-zend-framework.md | 0 ...melcase-table-names-in-mysql-on-windows.md | 0 ...end-certified-engineers-zce-in-our-team.md | 0 .../configuring-the-cache-in-dotkernel.md | 0 ...ade-easy-in-laminas-mezzio-applications.md | 0 ...cting-mobile-devices-in-dotkernel-1-6-0.md | 0 ...able-wurfl-redirect-for-mobile-browsers.md | 0 ...ambiguation-dotkernel-1-and-dotkernel-3.md | 0 .../doctrine-cache-using-symfony-cache.md | 0 ...ctrine-enum-implementation-in-dotkernel.md | 0 ...ts-and-services-north-american-relaunch.md | 0 .../dotkernel/dotkernel-1-2-0-release.md | 0 .../dotkernel/dotkernel-1-2-2-release.md | 0 .../dotkernel/dotkernel-1-3-0-release.md | 0 .../dotkernel/dotkernel-1-3-2-release.md | 0 .../dotkernel/dotkernel-1-5-0-released.md | 0 .../dotkernel/dotkernel-1-8-0-lts-released.md | 0 ...ernel-1-8-1-upgrade-from-1-8-0-released.md | 0 .../dotkernel/dotkernel-coding-standard.md | 0 ...l-database-naming-conventions-for-mysql.md | 0 ...o-microframework-and-laminas-components.md | 0 ...-best-choice-for-your-presentation-site.md | 0 .../dotkernel/dotkernel-on-nginx.md | 0 ...nel-reserved-variable-names-for-caching.md | 0 .../dotkernel/dotkernel-template-engine.md | 0 .../dotkernel-version-1-0-in-action.md | 0 ...-connections-and-character-set-in-mysql.md | 0 .../geoip-city-removed-from-dotkernel.md | 0 .../geoip-ip-address-location-in-dotkernel.md | 0 ...rrors-with-dot-errorhandler-and-dot-log.md | 0 ...ghcharts-integration-in-dotkernel-1-6-0.md | 0 ...o-group-log-files-by-date-using-dot-log.md | 0 ...ase-with-zend-framework-zend-db-adapter.md | 0 .../how-to-use-alerts-in-dotkernel.md | 0 ...d-hashing-api-from-php-5-5-in-dotkernel.md | 0 ...extension-in-zend-server-5-6-on-windows.md | 0 ...p-extension-in-zend-server-6-on-windows.md | 0 ...ot-log-in-zend-expressive-and-dotkernel.md | 0 ...-upgrade-of-wurfl-xml-file-in-dotkernel.md | 0 ...ration-of-zend-framework-1-pear-channel.md | 0 .../new-features-in-zend-framework-1-12.md | 0 ...tter-and-templates-for-zend-studio-10-1.md | 0 ...ing-admin-folder-with-htaccess-in-plesk.md | 0 ...as-mail-with-symfony-mailer-in-dot-mail.md | 0 ...urfl-cloud-php-library-to-dotkernel-1-6.md | 0 ...sing-dot-email-component-and-zend-email.md | 0 .../dotkernel/templating-in-dotkernel3.md | 0 ...ng-dotkernel-with-composer-dependencies.md | 0 .../using-utf8-charset-in-dotkernel.md | 0 ...fl-cloud-integration-in-dotkernel-1-6-0.md | 0 ...api-license-incompatible-with-dotkernel.md | 0 ...nd-framework-integration-into-dotkernel.md | 0 ...th-and-zend-acl-integrated-in-dotkernel.md | 0 ...end-console-implementation-in-dotkernel.md | 0 ...rk-dropped-integration-of-wurfl-adapter.md | 0 .../zend-registry-usage-in-dotkernel.md | 0 ...dotkernel-refactor-of-dot-session-class.md | 0 ...tter-file-for-dotkernel-coding-standard.md | 0 .../development-report-december-11-2017.md | 0 .../dotkernel3/dotkernel-admin-v4.md | 0 .../dotkernel-admin-version-3-launched.md | 0 ...tkernel-api-architecture-and-components.md | 0 .../dotkernel-frontend-version-3-launched.md | 0 .../dotkernel3-stable-release-version-1-0.md | 0 .../php-8-3-support-in-dotkernel-admin.md | 0 .../php-8-3-support-in-dotkernel-api.md | 0 .../php-8-3-support-in-dotkernel-frontend.md | 0 ...ry-admin-in-dotkernel-headless-platform.md | 0 ...the-root-of-dotkernel-headless-platform.md | 0 ...adless-platform-the-whats-hows-and-whys.md | 0 ...xecution-in-dotkernel-headless-platform.md | 0 ...maker-generate-common-code-in-dotkernel.md | 0 ...evolution-pattern-versus-api-versioning.md | 0 ...sed-one-time-password-totp-in-dotkernel.md | 0 ...ubmodule-in-dotkernel-headless-platform.md | 0 ...adds-postgresql-native-uuid-and-php-8-5.md | 0 ...cy-setup-in-dotkernel-using-mezzio-cors.md | 0 ...reating-admin-accounts-in-dotkernel-api.md | 0 ...database-migrations-and-how-to-use-them.md | 0 .../doctrine-cache-in-mezzio-and-dotkernel.md | 0 ...igration-without-dropping-custom-tables.md | 0 ...ly-url-in-an-generic-laminas-mezzio-app.md | 0 ...in-wsl2-php-mariadb-composer-phpmyadmin.md | 0 ...ndpoints-in-dotkernel-api-using-dot-cli.md | 0 ...-zend-expressive-2-to-zend-expressive-3.md | 0 ...nsole-with-dot-cli-based-on-laminas-cli.md | 0 ...an-for-documentation-in-dotkernel-api-3.md | 0 ...sing-the-urlgenerator-work-in-fastroute.md | 0 .../what-is-cross-origin-token-redemption.md | 0 .../how-to/what-is-psr-7-and-how-to-use-it.md | 0 public/{llms-content => md-articles}/index.md | 0 ...free-php-html-css-javascript-editor-ide.md | 0 .../javascript/intro-to-jquery.md | 0 .../javascript/javascript-email-validator.md | 0 ...-versus-lgpl-in-practice-dotkernel-case.md | 0 ...provements-psr-15-handlers-vite-phpstan.md | 0 ...ic-routing-using-fastroute-in-dotkernel.md | 0 ...5-compliant-handlers-in-dotkernel-light.md | 0 ...-php-apache-mariadb-composer-phpmyadmin.md | 0 .../aptana-php-installation-in-aptana-2-x.md | 0 ...er-unicode-support-in-mysql-5-5-utf8mb4.md | 0 ...seeding-doctrine-data-fixtures-vs-phinx.md | 0 .../end-of-support-for-php-5-2-x-branch.md | 0 ...oint-arithmetic-why-is-int-0-7-0-1-10-7.md | 0 .../how-to-upgrade-wamp-to-php-5-3-4.md | 0 .../mezzio-app-development-in-wsl2.md | 0 ...ased-no-upgrade-possible-for-wampserver.md | 0 ...ironment-development-staging-production.md | 0 .../php-support-back-in-aptana-3-0.md | 0 ...ion-using-pdo-and-zend-framework-part-2.md | 0 ...-injection-using-pdo-and-zend-framework.md | 0 ...-to-mysql-server-on-plesk-based-servers.md | 0 ...c-analysis-replacing-psalm-with-phpstan.md | 0 ...-to-connect-to-dotkernel-tracker-mantis.md | 0 .../using-php-7-express-in-zend-studio-13.md | 0 ...-control-ignore-patterns-in-zend-studio.md | 0 ...end-certified-engineer-in-dotboost-team.md | 0 .../zend-server-5-5-quick-setup-on-windows.md | 0 ...x-installing-pear-packages-with-php-7-2.md | 0 ...s-the-intl-php-extension-problem-solved.md | 0 ...-quality-how-to-setup-phpcs-in-phpstorm.md | 0 ...debug-bar-a-very-helpfull-zf-debug-tool.md | 0 ...tting-pear-channel-for-zend-framework-1.md | 0 .../wurfl-php-api-libraries-gpl-versions.md | 0 ...ork-1-12-4-released-with-security-fixes.md | 0 .../zend-framework-1-7-0-released.md | 0 .../zend-framework-1-end-of-life.md | 0 ...r-accessible-repository-on-plesk-server.md | 0 ...ecurity-fixes-in-zend-framework-1-12-12.md | 0 .../GetMarkdownArticleHandlerFactory.php | 33 +++++++++++++++++++ 164 files changed, 33 insertions(+) rename public/{llms-content => md-articles}/android/listen-for-android-install-referrer.md (100%) rename public/{llms-content => md-articles}/android/multiple-broadcast-receivers-in-the-same-app-for-the-same-action.md (100%) rename public/{llms-content => md-articles}/architecture/configprovider-bootstrap-modern-php-applications.md (100%) rename public/{llms-content => md-articles}/architecture/request-lifecycle-for-a-mezzio-based-application.md (100%) rename public/{llms-content => md-articles}/architecture/understanding-middleware.md (100%) rename public/{llms-content => md-articles}/best-practice/aptana-set-svn-keywords.md (100%) rename public/{llms-content => md-articles}/best-practice/basic-security-in-dotkernel-headless-platform.md (100%) rename public/{llms-content => md-articles}/best-practice/golden-rules-of-professional-php-coding.md (100%) rename public/{llms-content => md-articles}/best-practice/htaccess-301-redirect-non-www-to-www.md (100%) rename public/{llms-content => md-articles}/best-practice/insert-update-delete-statements-with-zend-db.md (100%) rename public/{llms-content => md-articles}/best-practice/sql-queries-using-zend-db-select.md (100%) rename public/{llms-content => md-articles}/best-practice/subqueries-with-zend-db.md (100%) rename public/{llms-content => md-articles}/best-practice/svn-export-in-a-virtual-host.md (100%) rename public/{llms-content => md-articles}/best-practice/svn-keywords-setup-in-php-ide-zend-studio.md (100%) rename public/{llms-content => md-articles}/best-practice/using-like-wildcards-with-zend-db.md (100%) rename public/{llms-content => md-articles}/best-practice/what-are-returning-the-fetch-functions-from-zend-db.md (100%) rename public/{llms-content => md-articles}/best-practice/why-use-current-timestamp-on-a-field-that-record-date-time.md (100%) rename public/{llms-content => md-articles}/best-practice/zf-is-retired-laminas-mvc-is-retiring-consider-it-solved.md (100%) rename public/{llms-content => md-articles}/dotkernel-api/api-client-migration-from-postman-to-bruno.md (100%) rename public/{llms-content => md-articles}/dotkernel-api/api-endpoint-to-collect-client-errors.md (100%) rename public/{llms-content => md-articles}/dotkernel-api/content-negotiation-in-dotkernel-rest-api.md (100%) rename public/{llms-content => md-articles}/dotkernel-api/dotkernel-api-1-0-0-released.md (100%) rename public/{llms-content => md-articles}/dotkernel-api/dotkernel-api-client-side-authorization.md (100%) rename public/{llms-content => md-articles}/dotkernel-api/dotkernel-api-server-side-authorization.md (100%) rename public/{llms-content => md-articles}/dotkernel-api/dotkernel-api-versus-laminas-api-tools.md (100%) rename public/{llms-content => md-articles}/dotkernel-api/error-reporting-endpoint-in-dotkernel-api.md (100%) rename public/{llms-content => md-articles}/dotkernel-api/how-to-implement-mailchimp-in-dotkernel-api.md (100%) rename public/{llms-content => md-articles}/dotkernel-api/openapi-implementation-in-dotkernel-api.md (100%) rename public/{llms-content => md-articles}/dotkernel/adding-a-cors-implementation-to-zend-expressive.md (100%) rename public/{llms-content => md-articles}/dotkernel/adding-a-second-caching-layer-to-wurfl-in-dotkernel-using-apc.md (100%) rename public/{llms-content => md-articles}/dotkernel/adding-composer-support-in-your-dotkernel-project.md (100%) rename public/{llms-content => md-articles}/dotkernel/adding-windows-10-os-and-browser-detection-in-dotkernel-projects.md (100%) rename public/{llms-content => md-articles}/dotkernel/autologin-using-cookie-remember-me-in-dotkernel.md (100%) rename public/{llms-content => md-articles}/dotkernel/avoid-routing-through-bootstrap-of-non-existent-files.md (100%) rename public/{llms-content => md-articles}/dotkernel/caching-in-dotkernel-using-zend-framework.md (100%) rename public/{llms-content => md-articles}/dotkernel/camelcase-table-names-in-mysql-on-windows.md (100%) rename public/{llms-content => md-articles}/dotkernel/commitment-to-php-new-zend-certified-engineers-zce-in-our-team.md (100%) rename public/{llms-content => md-articles}/dotkernel/configuring-the-cache-in-dotkernel.md (100%) rename public/{llms-content => md-articles}/dotkernel/dependency-injection-made-easy-in-laminas-mezzio-applications.md (100%) rename public/{llms-content => md-articles}/dotkernel/detecting-mobile-devices-in-dotkernel-1-6-0.md (100%) rename public/{llms-content => md-articles}/dotkernel/disable-wurfl-redirect-for-mobile-browsers.md (100%) rename public/{llms-content => md-articles}/dotkernel/disambiguation-dotkernel-1-and-dotkernel-3.md (100%) rename public/{llms-content => md-articles}/dotkernel/doctrine-cache-using-symfony-cache.md (100%) rename public/{llms-content => md-articles}/dotkernel/doctrine-enum-implementation-in-dotkernel.md (100%) rename public/{llms-content => md-articles}/dotkernel/dotboost-technologies-products-and-services-north-american-relaunch.md (100%) rename public/{llms-content => md-articles}/dotkernel/dotkernel-1-2-0-release.md (100%) rename public/{llms-content => md-articles}/dotkernel/dotkernel-1-2-2-release.md (100%) rename public/{llms-content => md-articles}/dotkernel/dotkernel-1-3-0-release.md (100%) rename public/{llms-content => md-articles}/dotkernel/dotkernel-1-3-2-release.md (100%) rename public/{llms-content => md-articles}/dotkernel/dotkernel-1-5-0-released.md (100%) rename public/{llms-content => md-articles}/dotkernel/dotkernel-1-8-0-lts-released.md (100%) rename public/{llms-content => md-articles}/dotkernel/dotkernel-1-8-1-upgrade-from-1-8-0-released.md (100%) rename public/{llms-content => md-articles}/dotkernel/dotkernel-coding-standard.md (100%) rename public/{llms-content => md-articles}/dotkernel/dotkernel-database-naming-conventions-for-mysql.md (100%) rename public/{llms-content => md-articles}/dotkernel/dotkernel-light-starting-with-mezzio-microframework-and-laminas-components.md (100%) rename public/{llms-content => md-articles}/dotkernel/dotkernel-light-the-best-choice-for-your-presentation-site.md (100%) rename public/{llms-content => md-articles}/dotkernel/dotkernel-on-nginx.md (100%) rename public/{llms-content => md-articles}/dotkernel/dotkernel-reserved-variable-names-for-caching.md (100%) rename public/{llms-content => md-articles}/dotkernel/dotkernel-template-engine.md (100%) rename public/{llms-content => md-articles}/dotkernel/dotkernel-version-1-0-in-action.md (100%) rename public/{llms-content => md-articles}/dotkernel/forcing-utf8-connections-and-character-set-in-mysql.md (100%) rename public/{llms-content => md-articles}/dotkernel/geoip-city-removed-from-dotkernel.md (100%) rename public/{llms-content => md-articles}/dotkernel/geoip-ip-address-location-in-dotkernel.md (100%) rename public/{llms-content => md-articles}/dotkernel/handling-and-logging-errors-with-dot-errorhandler-and-dot-log.md (100%) rename public/{llms-content => md-articles}/dotkernel/highcharts-integration-in-dotkernel-1-6-0.md (100%) rename public/{llms-content => md-articles}/dotkernel/how-to-group-log-files-by-date-using-dot-log.md (100%) rename public/{llms-content => md-articles}/dotkernel/how-to-set-a-persistent-connection-to-database-with-zend-framework-zend-db-adapter.md (100%) rename public/{llms-content => md-articles}/dotkernel/how-to-use-alerts-in-dotkernel.md (100%) rename public/{llms-content => md-articles}/dotkernel/implementing-the-new-password-hashing-api-from-php-5-5-in-dotkernel.md (100%) rename public/{llms-content => md-articles}/dotkernel/installing-geoip-extension-in-zend-server-5-6-on-windows.md (100%) rename public/{llms-content => md-articles}/dotkernel/installing-geoip-extension-in-zend-server-6-on-windows.md (100%) rename public/{llms-content => md-articles}/dotkernel/logging-with-dot-log-in-zend-expressive-and-dotkernel.md (100%) rename public/{llms-content => md-articles}/dotkernel/manual-upgrade-of-wurfl-xml-file-in-dotkernel.md (100%) rename public/{llms-content => md-articles}/dotkernel/migration-of-zend-framework-1-pear-channel.md (100%) rename public/{llms-content => md-articles}/dotkernel/new-features-in-zend-framework-1-12.md (100%) rename public/{llms-content => md-articles}/dotkernel/php-formatter-and-templates-for-zend-studio-10-1.md (100%) rename public/{llms-content => md-articles}/dotkernel/protecting-admin-folder-with-htaccess-in-plesk.md (100%) rename public/{llms-content => md-articles}/dotkernel/replacing-laminas-mail-with-symfony-mailer-in-dot-mail.md (100%) rename public/{llms-content => md-articles}/dotkernel/scientia-mobile-licensed-its-wurfl-cloud-php-library-to-dotkernel-1-6.md (100%) rename public/{llms-content => md-articles}/dotkernel/sending-emails-using-dot-email-component-and-zend-email.md (100%) rename public/{llms-content => md-articles}/dotkernel/templating-in-dotkernel3.md (100%) rename public/{llms-content => md-articles}/dotkernel/using-dotkernel-with-composer-dependencies.md (100%) rename public/{llms-content => md-articles}/dotkernel/using-utf8-charset-in-dotkernel.md (100%) rename public/{llms-content => md-articles}/dotkernel/wurfl-cloud-integration-in-dotkernel-1-6-0.md (100%) rename public/{llms-content => md-articles}/dotkernel/wurfl-php-api-license-incompatible-with-dotkernel.md (100%) rename public/{llms-content => md-articles}/dotkernel/wurfl-zend-framework-integration-into-dotkernel.md (100%) rename public/{llms-content => md-articles}/dotkernel/zend-auth-and-zend-acl-integrated-in-dotkernel.md (100%) rename public/{llms-content => md-articles}/dotkernel/zend-console-implementation-in-dotkernel.md (100%) rename public/{llms-content => md-articles}/dotkernel/zend-framework-dropped-integration-of-wurfl-adapter.md (100%) rename public/{llms-content => md-articles}/dotkernel/zend-registry-usage-in-dotkernel.md (100%) rename public/{llms-content => md-articles}/dotkernel/zend-session-usage-in-dotkernel-refactor-of-dot-session-class.md (100%) rename public/{llms-content => md-articles}/dotkernel/zend-studio-php-formatter-file-for-dotkernel-coding-standard.md (100%) rename public/{llms-content => md-articles}/dotkernel3/development-report-december-11-2017.md (100%) rename public/{llms-content => md-articles}/dotkernel3/dotkernel-admin-v4.md (100%) rename public/{llms-content => md-articles}/dotkernel3/dotkernel-admin-version-3-launched.md (100%) rename public/{llms-content => md-articles}/dotkernel3/dotkernel-api-architecture-and-components.md (100%) rename public/{llms-content => md-articles}/dotkernel3/dotkernel-frontend-version-3-launched.md (100%) rename public/{llms-content => md-articles}/dotkernel3/dotkernel3-stable-release-version-1-0.md (100%) rename public/{llms-content => md-articles}/dotkernel3/php-8-3-support-in-dotkernel-admin.md (100%) rename public/{llms-content => md-articles}/dotkernel3/php-8-3-support-in-dotkernel-api.md (100%) rename public/{llms-content => md-articles}/dotkernel3/php-8-3-support-in-dotkernel-frontend.md (100%) rename public/{llms-content => md-articles}/headless-platform/complementary-admin-in-dotkernel-headless-platform.md (100%) rename public/{llms-content => md-articles}/headless-platform/dotkernel-api-v6-the-root-of-dotkernel-headless-platform.md (100%) rename public/{llms-content => md-articles}/headless-platform/dotkernel-headless-platform-the-whats-hows-and-whys.md (100%) rename public/{llms-content => md-articles}/headless-platform/dotkernel-queue-asynchronous-execution-in-dotkernel-headless-platform.md (100%) rename public/{llms-content => md-articles}/headless-platform/dotmaker-generate-common-code-in-dotkernel.md (100%) rename public/{llms-content => md-articles}/headless-platform/evolution-pattern-versus-api-versioning.md (100%) rename public/{llms-content => md-articles}/headless-platform/implementing-time-based-one-time-password-totp-in-dotkernel.md (100%) rename public/{llms-content => md-articles}/headless-platform/shared-core-submodule-in-dotkernel-headless-platform.md (100%) rename public/{llms-content => md-articles}/headless-platform/version-7-adds-postgresql-native-uuid-and-php-8-5.md (100%) rename public/{llms-content => md-articles}/how-to/cors-policy-setup-in-dotkernel-using-mezzio-cors.md (100%) rename public/{llms-content => md-articles}/how-to/creating-admin-accounts-in-dotkernel-api.md (100%) rename public/{llms-content => md-articles}/how-to/database-migrations-and-how-to-use-them.md (100%) rename public/{llms-content => md-articles}/how-to/doctrine-cache-in-mezzio-and-dotkernel.md (100%) rename public/{llms-content => md-articles}/how-to/generating-a-doctrine-migration-without-dropping-custom-tables.md (100%) rename public/{llms-content => md-articles}/how-to/implementation-of-seo-friendly-url-in-an-generic-laminas-mezzio-app.md (100%) rename public/{llms-content => md-articles}/how-to/installing-almalinux-10-in-wsl2-php-mariadb-composer-phpmyadmin.md (100%) rename public/{llms-content => md-articles}/how-to/list-available-endpoints-in-dotkernel-api-using-dot-cli.md (100%) rename public/{llms-content => md-articles}/how-to/migrating-dotkernel-3-from-zend-expressive-2-to-zend-expressive-3.md (100%) rename public/{llms-content => md-articles}/how-to/replacing-dot-console-with-dot-cli-based-on-laminas-cli.md (100%) rename public/{llms-content => md-articles}/how-to/using-postman-for-documentation-in-dotkernel-api-3.md (100%) rename public/{llms-content => md-articles}/how-to/using-the-urlgenerator-work-in-fastroute.md (100%) rename public/{llms-content => md-articles}/how-to/what-is-cross-origin-token-redemption.md (100%) rename public/{llms-content => md-articles}/how-to/what-is-psr-7-and-how-to-use-it.md (100%) rename public/{llms-content => md-articles}/index.md (100%) rename public/{llms-content => md-articles}/javascript/codelobster-php-edition-free-php-html-css-javascript-editor-ide.md (100%) rename public/{llms-content => md-articles}/javascript/intro-to-jquery.md (100%) rename public/{llms-content => md-articles}/javascript/javascript-email-validator.md (100%) rename public/{llms-content => md-articles}/licensing/mit-versus-lgpl-in-practice-dotkernel-case.md (100%) rename public/{llms-content => md-articles}/middleware/dotkernel-light-improvements-psr-15-handlers-vite-phpstan.md (100%) rename public/{llms-content => md-articles}/middleware/handling-dynamic-routing-using-fastroute-in-dotkernel.md (100%) rename public/{llms-content => md-articles}/middleware/replacing-controllers-with-psr-15-compliant-handlers-in-dotkernel-light.md (100%) rename public/{llms-content => md-articles}/php-development/almalinux-9-in-wsl2-install-php-apache-mariadb-composer-phpmyadmin.md (100%) rename public/{llms-content => md-articles}/php-development/aptana-php-installation-in-aptana-2-x.md (100%) rename public/{llms-content => md-articles}/php-development/better-unicode-support-in-mysql-5-5-utf8mb4.md (100%) rename public/{llms-content => md-articles}/php-development/database-seeding-doctrine-data-fixtures-vs-phinx.md (100%) rename public/{llms-content => md-articles}/php-development/end-of-support-for-php-5-2-x-branch.md (100%) rename public/{llms-content => md-articles}/php-development/floating-point-arithmetic-why-is-int-0-7-0-1-10-7.md (100%) rename public/{llms-content => md-articles}/php-development/how-to-upgrade-wamp-to-php-5-3-4.md (100%) rename public/{llms-content => md-articles}/php-development/mezzio-app-development-in-wsl2.md (100%) rename public/{llms-content => md-articles}/php-development/php-5-3-6-released-no-upgrade-possible-for-wampserver.md (100%) rename public/{llms-content => md-articles}/php-development/php-environment-development-staging-production.md (100%) rename public/{llms-content => md-articles}/php-development/php-support-back-in-aptana-3-0.md (100%) rename public/{llms-content => md-articles}/php-development/protection-against-sql-injection-using-pdo-and-zend-framework-part-2.md (100%) rename public/{llms-content => md-articles}/php-development/protection-against-sql-injection-using-pdo-and-zend-framework.md (100%) rename public/{llms-content => md-articles}/php-development/remote-connections-to-mysql-server-on-plesk-based-servers.md (100%) rename public/{llms-content => md-articles}/php-development/static-analysis-replacing-psalm-with-phpstan.md (100%) rename public/{llms-content => md-articles}/php-development/using-aptana-to-connect-to-dotkernel-tracker-mantis.md (100%) rename public/{llms-content => md-articles}/php-development/using-php-7-express-in-zend-studio-13.md (100%) rename public/{llms-content => md-articles}/php-development/version-control-ignore-patterns-in-zend-studio.md (100%) rename public/{llms-content => md-articles}/php-development/welcome-to-the-10th-zend-certified-engineer-in-dotboost-team.md (100%) rename public/{llms-content => md-articles}/php-development/zend-server-5-5-quick-setup-on-windows.md (100%) rename public/{llms-content => md-articles}/php-troubleshooting/fix-installing-pear-packages-with-php-7-2.md (100%) rename public/{llms-content => md-articles}/php-troubleshooting/where-is-the-intl-php-extension-problem-solved.md (100%) rename public/{llms-content => md-articles}/phpstorm/code-quality-how-to-setup-phpcs-in-phpstorm.md (100%) rename public/{llms-content => md-articles}/zend-framework/scienta-zf-debug-bar-a-very-helpfull-zf-debug-tool.md (100%) rename public/{llms-content => md-articles}/zend-framework/sunsetting-pear-channel-for-zend-framework-1.md (100%) rename public/{llms-content => md-articles}/zend-framework/wurfl-php-api-libraries-gpl-versions.md (100%) rename public/{llms-content => md-articles}/zend-framework/zend-framework-1-12-4-released-with-security-fixes.md (100%) rename public/{llms-content => md-articles}/zend-framework/zend-framework-1-7-0-released.md (100%) rename public/{llms-content => md-articles}/zend-framework/zend-framework-1-end-of-life.md (100%) rename public/{llms-content => md-articles}/zend-framework/zend-framework-as-pear-accessible-repository-on-plesk-server.md (100%) rename public/{llms-content => md-articles}/zend-framework/zend-mail-and-zend-http-security-fixes-in-zend-framework-1-12-12.md (100%) create mode 100644 src/App/src/Factory/GetMarkdownArticleHandlerFactory.php diff --git a/public/llms-content/android/listen-for-android-install-referrer.md b/public/md-articles/android/listen-for-android-install-referrer.md similarity index 100% rename from public/llms-content/android/listen-for-android-install-referrer.md rename to public/md-articles/android/listen-for-android-install-referrer.md diff --git a/public/llms-content/android/multiple-broadcast-receivers-in-the-same-app-for-the-same-action.md b/public/md-articles/android/multiple-broadcast-receivers-in-the-same-app-for-the-same-action.md similarity index 100% rename from public/llms-content/android/multiple-broadcast-receivers-in-the-same-app-for-the-same-action.md rename to public/md-articles/android/multiple-broadcast-receivers-in-the-same-app-for-the-same-action.md diff --git a/public/llms-content/architecture/configprovider-bootstrap-modern-php-applications.md b/public/md-articles/architecture/configprovider-bootstrap-modern-php-applications.md similarity index 100% rename from public/llms-content/architecture/configprovider-bootstrap-modern-php-applications.md rename to public/md-articles/architecture/configprovider-bootstrap-modern-php-applications.md diff --git a/public/llms-content/architecture/request-lifecycle-for-a-mezzio-based-application.md b/public/md-articles/architecture/request-lifecycle-for-a-mezzio-based-application.md similarity index 100% rename from public/llms-content/architecture/request-lifecycle-for-a-mezzio-based-application.md rename to public/md-articles/architecture/request-lifecycle-for-a-mezzio-based-application.md diff --git a/public/llms-content/architecture/understanding-middleware.md b/public/md-articles/architecture/understanding-middleware.md similarity index 100% rename from public/llms-content/architecture/understanding-middleware.md rename to public/md-articles/architecture/understanding-middleware.md diff --git a/public/llms-content/best-practice/aptana-set-svn-keywords.md b/public/md-articles/best-practice/aptana-set-svn-keywords.md similarity index 100% rename from public/llms-content/best-practice/aptana-set-svn-keywords.md rename to public/md-articles/best-practice/aptana-set-svn-keywords.md diff --git a/public/llms-content/best-practice/basic-security-in-dotkernel-headless-platform.md b/public/md-articles/best-practice/basic-security-in-dotkernel-headless-platform.md similarity index 100% rename from public/llms-content/best-practice/basic-security-in-dotkernel-headless-platform.md rename to public/md-articles/best-practice/basic-security-in-dotkernel-headless-platform.md diff --git a/public/llms-content/best-practice/golden-rules-of-professional-php-coding.md b/public/md-articles/best-practice/golden-rules-of-professional-php-coding.md similarity index 100% rename from public/llms-content/best-practice/golden-rules-of-professional-php-coding.md rename to public/md-articles/best-practice/golden-rules-of-professional-php-coding.md diff --git a/public/llms-content/best-practice/htaccess-301-redirect-non-www-to-www.md b/public/md-articles/best-practice/htaccess-301-redirect-non-www-to-www.md similarity index 100% rename from public/llms-content/best-practice/htaccess-301-redirect-non-www-to-www.md rename to public/md-articles/best-practice/htaccess-301-redirect-non-www-to-www.md diff --git a/public/llms-content/best-practice/insert-update-delete-statements-with-zend-db.md b/public/md-articles/best-practice/insert-update-delete-statements-with-zend-db.md similarity index 100% rename from public/llms-content/best-practice/insert-update-delete-statements-with-zend-db.md rename to public/md-articles/best-practice/insert-update-delete-statements-with-zend-db.md diff --git a/public/llms-content/best-practice/sql-queries-using-zend-db-select.md b/public/md-articles/best-practice/sql-queries-using-zend-db-select.md similarity index 100% rename from public/llms-content/best-practice/sql-queries-using-zend-db-select.md rename to public/md-articles/best-practice/sql-queries-using-zend-db-select.md diff --git a/public/llms-content/best-practice/subqueries-with-zend-db.md b/public/md-articles/best-practice/subqueries-with-zend-db.md similarity index 100% rename from public/llms-content/best-practice/subqueries-with-zend-db.md rename to public/md-articles/best-practice/subqueries-with-zend-db.md diff --git a/public/llms-content/best-practice/svn-export-in-a-virtual-host.md b/public/md-articles/best-practice/svn-export-in-a-virtual-host.md similarity index 100% rename from public/llms-content/best-practice/svn-export-in-a-virtual-host.md rename to public/md-articles/best-practice/svn-export-in-a-virtual-host.md diff --git a/public/llms-content/best-practice/svn-keywords-setup-in-php-ide-zend-studio.md b/public/md-articles/best-practice/svn-keywords-setup-in-php-ide-zend-studio.md similarity index 100% rename from public/llms-content/best-practice/svn-keywords-setup-in-php-ide-zend-studio.md rename to public/md-articles/best-practice/svn-keywords-setup-in-php-ide-zend-studio.md diff --git a/public/llms-content/best-practice/using-like-wildcards-with-zend-db.md b/public/md-articles/best-practice/using-like-wildcards-with-zend-db.md similarity index 100% rename from public/llms-content/best-practice/using-like-wildcards-with-zend-db.md rename to public/md-articles/best-practice/using-like-wildcards-with-zend-db.md diff --git a/public/llms-content/best-practice/what-are-returning-the-fetch-functions-from-zend-db.md b/public/md-articles/best-practice/what-are-returning-the-fetch-functions-from-zend-db.md similarity index 100% rename from public/llms-content/best-practice/what-are-returning-the-fetch-functions-from-zend-db.md rename to public/md-articles/best-practice/what-are-returning-the-fetch-functions-from-zend-db.md diff --git a/public/llms-content/best-practice/why-use-current-timestamp-on-a-field-that-record-date-time.md b/public/md-articles/best-practice/why-use-current-timestamp-on-a-field-that-record-date-time.md similarity index 100% rename from public/llms-content/best-practice/why-use-current-timestamp-on-a-field-that-record-date-time.md rename to public/md-articles/best-practice/why-use-current-timestamp-on-a-field-that-record-date-time.md diff --git a/public/llms-content/best-practice/zf-is-retired-laminas-mvc-is-retiring-consider-it-solved.md b/public/md-articles/best-practice/zf-is-retired-laminas-mvc-is-retiring-consider-it-solved.md similarity index 100% rename from public/llms-content/best-practice/zf-is-retired-laminas-mvc-is-retiring-consider-it-solved.md rename to public/md-articles/best-practice/zf-is-retired-laminas-mvc-is-retiring-consider-it-solved.md diff --git a/public/llms-content/dotkernel-api/api-client-migration-from-postman-to-bruno.md b/public/md-articles/dotkernel-api/api-client-migration-from-postman-to-bruno.md similarity index 100% rename from public/llms-content/dotkernel-api/api-client-migration-from-postman-to-bruno.md rename to public/md-articles/dotkernel-api/api-client-migration-from-postman-to-bruno.md diff --git a/public/llms-content/dotkernel-api/api-endpoint-to-collect-client-errors.md b/public/md-articles/dotkernel-api/api-endpoint-to-collect-client-errors.md similarity index 100% rename from public/llms-content/dotkernel-api/api-endpoint-to-collect-client-errors.md rename to public/md-articles/dotkernel-api/api-endpoint-to-collect-client-errors.md diff --git a/public/llms-content/dotkernel-api/content-negotiation-in-dotkernel-rest-api.md b/public/md-articles/dotkernel-api/content-negotiation-in-dotkernel-rest-api.md similarity index 100% rename from public/llms-content/dotkernel-api/content-negotiation-in-dotkernel-rest-api.md rename to public/md-articles/dotkernel-api/content-negotiation-in-dotkernel-rest-api.md diff --git a/public/llms-content/dotkernel-api/dotkernel-api-1-0-0-released.md b/public/md-articles/dotkernel-api/dotkernel-api-1-0-0-released.md similarity index 100% rename from public/llms-content/dotkernel-api/dotkernel-api-1-0-0-released.md rename to public/md-articles/dotkernel-api/dotkernel-api-1-0-0-released.md diff --git a/public/llms-content/dotkernel-api/dotkernel-api-client-side-authorization.md b/public/md-articles/dotkernel-api/dotkernel-api-client-side-authorization.md similarity index 100% rename from public/llms-content/dotkernel-api/dotkernel-api-client-side-authorization.md rename to public/md-articles/dotkernel-api/dotkernel-api-client-side-authorization.md diff --git a/public/llms-content/dotkernel-api/dotkernel-api-server-side-authorization.md b/public/md-articles/dotkernel-api/dotkernel-api-server-side-authorization.md similarity index 100% rename from public/llms-content/dotkernel-api/dotkernel-api-server-side-authorization.md rename to public/md-articles/dotkernel-api/dotkernel-api-server-side-authorization.md diff --git a/public/llms-content/dotkernel-api/dotkernel-api-versus-laminas-api-tools.md b/public/md-articles/dotkernel-api/dotkernel-api-versus-laminas-api-tools.md similarity index 100% rename from public/llms-content/dotkernel-api/dotkernel-api-versus-laminas-api-tools.md rename to public/md-articles/dotkernel-api/dotkernel-api-versus-laminas-api-tools.md diff --git a/public/llms-content/dotkernel-api/error-reporting-endpoint-in-dotkernel-api.md b/public/md-articles/dotkernel-api/error-reporting-endpoint-in-dotkernel-api.md similarity index 100% rename from public/llms-content/dotkernel-api/error-reporting-endpoint-in-dotkernel-api.md rename to public/md-articles/dotkernel-api/error-reporting-endpoint-in-dotkernel-api.md diff --git a/public/llms-content/dotkernel-api/how-to-implement-mailchimp-in-dotkernel-api.md b/public/md-articles/dotkernel-api/how-to-implement-mailchimp-in-dotkernel-api.md similarity index 100% rename from public/llms-content/dotkernel-api/how-to-implement-mailchimp-in-dotkernel-api.md rename to public/md-articles/dotkernel-api/how-to-implement-mailchimp-in-dotkernel-api.md diff --git a/public/llms-content/dotkernel-api/openapi-implementation-in-dotkernel-api.md b/public/md-articles/dotkernel-api/openapi-implementation-in-dotkernel-api.md similarity index 100% rename from public/llms-content/dotkernel-api/openapi-implementation-in-dotkernel-api.md rename to public/md-articles/dotkernel-api/openapi-implementation-in-dotkernel-api.md diff --git a/public/llms-content/dotkernel/adding-a-cors-implementation-to-zend-expressive.md b/public/md-articles/dotkernel/adding-a-cors-implementation-to-zend-expressive.md similarity index 100% rename from public/llms-content/dotkernel/adding-a-cors-implementation-to-zend-expressive.md rename to public/md-articles/dotkernel/adding-a-cors-implementation-to-zend-expressive.md diff --git a/public/llms-content/dotkernel/adding-a-second-caching-layer-to-wurfl-in-dotkernel-using-apc.md b/public/md-articles/dotkernel/adding-a-second-caching-layer-to-wurfl-in-dotkernel-using-apc.md similarity index 100% rename from public/llms-content/dotkernel/adding-a-second-caching-layer-to-wurfl-in-dotkernel-using-apc.md rename to public/md-articles/dotkernel/adding-a-second-caching-layer-to-wurfl-in-dotkernel-using-apc.md diff --git a/public/llms-content/dotkernel/adding-composer-support-in-your-dotkernel-project.md b/public/md-articles/dotkernel/adding-composer-support-in-your-dotkernel-project.md similarity index 100% rename from public/llms-content/dotkernel/adding-composer-support-in-your-dotkernel-project.md rename to public/md-articles/dotkernel/adding-composer-support-in-your-dotkernel-project.md diff --git a/public/llms-content/dotkernel/adding-windows-10-os-and-browser-detection-in-dotkernel-projects.md b/public/md-articles/dotkernel/adding-windows-10-os-and-browser-detection-in-dotkernel-projects.md similarity index 100% rename from public/llms-content/dotkernel/adding-windows-10-os-and-browser-detection-in-dotkernel-projects.md rename to public/md-articles/dotkernel/adding-windows-10-os-and-browser-detection-in-dotkernel-projects.md diff --git a/public/llms-content/dotkernel/autologin-using-cookie-remember-me-in-dotkernel.md b/public/md-articles/dotkernel/autologin-using-cookie-remember-me-in-dotkernel.md similarity index 100% rename from public/llms-content/dotkernel/autologin-using-cookie-remember-me-in-dotkernel.md rename to public/md-articles/dotkernel/autologin-using-cookie-remember-me-in-dotkernel.md diff --git a/public/llms-content/dotkernel/avoid-routing-through-bootstrap-of-non-existent-files.md b/public/md-articles/dotkernel/avoid-routing-through-bootstrap-of-non-existent-files.md similarity index 100% rename from public/llms-content/dotkernel/avoid-routing-through-bootstrap-of-non-existent-files.md rename to public/md-articles/dotkernel/avoid-routing-through-bootstrap-of-non-existent-files.md diff --git a/public/llms-content/dotkernel/caching-in-dotkernel-using-zend-framework.md b/public/md-articles/dotkernel/caching-in-dotkernel-using-zend-framework.md similarity index 100% rename from public/llms-content/dotkernel/caching-in-dotkernel-using-zend-framework.md rename to public/md-articles/dotkernel/caching-in-dotkernel-using-zend-framework.md diff --git a/public/llms-content/dotkernel/camelcase-table-names-in-mysql-on-windows.md b/public/md-articles/dotkernel/camelcase-table-names-in-mysql-on-windows.md similarity index 100% rename from public/llms-content/dotkernel/camelcase-table-names-in-mysql-on-windows.md rename to public/md-articles/dotkernel/camelcase-table-names-in-mysql-on-windows.md diff --git a/public/llms-content/dotkernel/commitment-to-php-new-zend-certified-engineers-zce-in-our-team.md b/public/md-articles/dotkernel/commitment-to-php-new-zend-certified-engineers-zce-in-our-team.md similarity index 100% rename from public/llms-content/dotkernel/commitment-to-php-new-zend-certified-engineers-zce-in-our-team.md rename to public/md-articles/dotkernel/commitment-to-php-new-zend-certified-engineers-zce-in-our-team.md diff --git a/public/llms-content/dotkernel/configuring-the-cache-in-dotkernel.md b/public/md-articles/dotkernel/configuring-the-cache-in-dotkernel.md similarity index 100% rename from public/llms-content/dotkernel/configuring-the-cache-in-dotkernel.md rename to public/md-articles/dotkernel/configuring-the-cache-in-dotkernel.md diff --git a/public/llms-content/dotkernel/dependency-injection-made-easy-in-laminas-mezzio-applications.md b/public/md-articles/dotkernel/dependency-injection-made-easy-in-laminas-mezzio-applications.md similarity index 100% rename from public/llms-content/dotkernel/dependency-injection-made-easy-in-laminas-mezzio-applications.md rename to public/md-articles/dotkernel/dependency-injection-made-easy-in-laminas-mezzio-applications.md diff --git a/public/llms-content/dotkernel/detecting-mobile-devices-in-dotkernel-1-6-0.md b/public/md-articles/dotkernel/detecting-mobile-devices-in-dotkernel-1-6-0.md similarity index 100% rename from public/llms-content/dotkernel/detecting-mobile-devices-in-dotkernel-1-6-0.md rename to public/md-articles/dotkernel/detecting-mobile-devices-in-dotkernel-1-6-0.md diff --git a/public/llms-content/dotkernel/disable-wurfl-redirect-for-mobile-browsers.md b/public/md-articles/dotkernel/disable-wurfl-redirect-for-mobile-browsers.md similarity index 100% rename from public/llms-content/dotkernel/disable-wurfl-redirect-for-mobile-browsers.md rename to public/md-articles/dotkernel/disable-wurfl-redirect-for-mobile-browsers.md diff --git a/public/llms-content/dotkernel/disambiguation-dotkernel-1-and-dotkernel-3.md b/public/md-articles/dotkernel/disambiguation-dotkernel-1-and-dotkernel-3.md similarity index 100% rename from public/llms-content/dotkernel/disambiguation-dotkernel-1-and-dotkernel-3.md rename to public/md-articles/dotkernel/disambiguation-dotkernel-1-and-dotkernel-3.md diff --git a/public/llms-content/dotkernel/doctrine-cache-using-symfony-cache.md b/public/md-articles/dotkernel/doctrine-cache-using-symfony-cache.md similarity index 100% rename from public/llms-content/dotkernel/doctrine-cache-using-symfony-cache.md rename to public/md-articles/dotkernel/doctrine-cache-using-symfony-cache.md diff --git a/public/llms-content/dotkernel/doctrine-enum-implementation-in-dotkernel.md b/public/md-articles/dotkernel/doctrine-enum-implementation-in-dotkernel.md similarity index 100% rename from public/llms-content/dotkernel/doctrine-enum-implementation-in-dotkernel.md rename to public/md-articles/dotkernel/doctrine-enum-implementation-in-dotkernel.md diff --git a/public/llms-content/dotkernel/dotboost-technologies-products-and-services-north-american-relaunch.md b/public/md-articles/dotkernel/dotboost-technologies-products-and-services-north-american-relaunch.md similarity index 100% rename from public/llms-content/dotkernel/dotboost-technologies-products-and-services-north-american-relaunch.md rename to public/md-articles/dotkernel/dotboost-technologies-products-and-services-north-american-relaunch.md diff --git a/public/llms-content/dotkernel/dotkernel-1-2-0-release.md b/public/md-articles/dotkernel/dotkernel-1-2-0-release.md similarity index 100% rename from public/llms-content/dotkernel/dotkernel-1-2-0-release.md rename to public/md-articles/dotkernel/dotkernel-1-2-0-release.md diff --git a/public/llms-content/dotkernel/dotkernel-1-2-2-release.md b/public/md-articles/dotkernel/dotkernel-1-2-2-release.md similarity index 100% rename from public/llms-content/dotkernel/dotkernel-1-2-2-release.md rename to public/md-articles/dotkernel/dotkernel-1-2-2-release.md diff --git a/public/llms-content/dotkernel/dotkernel-1-3-0-release.md b/public/md-articles/dotkernel/dotkernel-1-3-0-release.md similarity index 100% rename from public/llms-content/dotkernel/dotkernel-1-3-0-release.md rename to public/md-articles/dotkernel/dotkernel-1-3-0-release.md diff --git a/public/llms-content/dotkernel/dotkernel-1-3-2-release.md b/public/md-articles/dotkernel/dotkernel-1-3-2-release.md similarity index 100% rename from public/llms-content/dotkernel/dotkernel-1-3-2-release.md rename to public/md-articles/dotkernel/dotkernel-1-3-2-release.md diff --git a/public/llms-content/dotkernel/dotkernel-1-5-0-released.md b/public/md-articles/dotkernel/dotkernel-1-5-0-released.md similarity index 100% rename from public/llms-content/dotkernel/dotkernel-1-5-0-released.md rename to public/md-articles/dotkernel/dotkernel-1-5-0-released.md diff --git a/public/llms-content/dotkernel/dotkernel-1-8-0-lts-released.md b/public/md-articles/dotkernel/dotkernel-1-8-0-lts-released.md similarity index 100% rename from public/llms-content/dotkernel/dotkernel-1-8-0-lts-released.md rename to public/md-articles/dotkernel/dotkernel-1-8-0-lts-released.md diff --git a/public/llms-content/dotkernel/dotkernel-1-8-1-upgrade-from-1-8-0-released.md b/public/md-articles/dotkernel/dotkernel-1-8-1-upgrade-from-1-8-0-released.md similarity index 100% rename from public/llms-content/dotkernel/dotkernel-1-8-1-upgrade-from-1-8-0-released.md rename to public/md-articles/dotkernel/dotkernel-1-8-1-upgrade-from-1-8-0-released.md diff --git a/public/llms-content/dotkernel/dotkernel-coding-standard.md b/public/md-articles/dotkernel/dotkernel-coding-standard.md similarity index 100% rename from public/llms-content/dotkernel/dotkernel-coding-standard.md rename to public/md-articles/dotkernel/dotkernel-coding-standard.md diff --git a/public/llms-content/dotkernel/dotkernel-database-naming-conventions-for-mysql.md b/public/md-articles/dotkernel/dotkernel-database-naming-conventions-for-mysql.md similarity index 100% rename from public/llms-content/dotkernel/dotkernel-database-naming-conventions-for-mysql.md rename to public/md-articles/dotkernel/dotkernel-database-naming-conventions-for-mysql.md diff --git a/public/llms-content/dotkernel/dotkernel-light-starting-with-mezzio-microframework-and-laminas-components.md b/public/md-articles/dotkernel/dotkernel-light-starting-with-mezzio-microframework-and-laminas-components.md similarity index 100% rename from public/llms-content/dotkernel/dotkernel-light-starting-with-mezzio-microframework-and-laminas-components.md rename to public/md-articles/dotkernel/dotkernel-light-starting-with-mezzio-microframework-and-laminas-components.md diff --git a/public/llms-content/dotkernel/dotkernel-light-the-best-choice-for-your-presentation-site.md b/public/md-articles/dotkernel/dotkernel-light-the-best-choice-for-your-presentation-site.md similarity index 100% rename from public/llms-content/dotkernel/dotkernel-light-the-best-choice-for-your-presentation-site.md rename to public/md-articles/dotkernel/dotkernel-light-the-best-choice-for-your-presentation-site.md diff --git a/public/llms-content/dotkernel/dotkernel-on-nginx.md b/public/md-articles/dotkernel/dotkernel-on-nginx.md similarity index 100% rename from public/llms-content/dotkernel/dotkernel-on-nginx.md rename to public/md-articles/dotkernel/dotkernel-on-nginx.md diff --git a/public/llms-content/dotkernel/dotkernel-reserved-variable-names-for-caching.md b/public/md-articles/dotkernel/dotkernel-reserved-variable-names-for-caching.md similarity index 100% rename from public/llms-content/dotkernel/dotkernel-reserved-variable-names-for-caching.md rename to public/md-articles/dotkernel/dotkernel-reserved-variable-names-for-caching.md diff --git a/public/llms-content/dotkernel/dotkernel-template-engine.md b/public/md-articles/dotkernel/dotkernel-template-engine.md similarity index 100% rename from public/llms-content/dotkernel/dotkernel-template-engine.md rename to public/md-articles/dotkernel/dotkernel-template-engine.md diff --git a/public/llms-content/dotkernel/dotkernel-version-1-0-in-action.md b/public/md-articles/dotkernel/dotkernel-version-1-0-in-action.md similarity index 100% rename from public/llms-content/dotkernel/dotkernel-version-1-0-in-action.md rename to public/md-articles/dotkernel/dotkernel-version-1-0-in-action.md diff --git a/public/llms-content/dotkernel/forcing-utf8-connections-and-character-set-in-mysql.md b/public/md-articles/dotkernel/forcing-utf8-connections-and-character-set-in-mysql.md similarity index 100% rename from public/llms-content/dotkernel/forcing-utf8-connections-and-character-set-in-mysql.md rename to public/md-articles/dotkernel/forcing-utf8-connections-and-character-set-in-mysql.md diff --git a/public/llms-content/dotkernel/geoip-city-removed-from-dotkernel.md b/public/md-articles/dotkernel/geoip-city-removed-from-dotkernel.md similarity index 100% rename from public/llms-content/dotkernel/geoip-city-removed-from-dotkernel.md rename to public/md-articles/dotkernel/geoip-city-removed-from-dotkernel.md diff --git a/public/llms-content/dotkernel/geoip-ip-address-location-in-dotkernel.md b/public/md-articles/dotkernel/geoip-ip-address-location-in-dotkernel.md similarity index 100% rename from public/llms-content/dotkernel/geoip-ip-address-location-in-dotkernel.md rename to public/md-articles/dotkernel/geoip-ip-address-location-in-dotkernel.md diff --git a/public/llms-content/dotkernel/handling-and-logging-errors-with-dot-errorhandler-and-dot-log.md b/public/md-articles/dotkernel/handling-and-logging-errors-with-dot-errorhandler-and-dot-log.md similarity index 100% rename from public/llms-content/dotkernel/handling-and-logging-errors-with-dot-errorhandler-and-dot-log.md rename to public/md-articles/dotkernel/handling-and-logging-errors-with-dot-errorhandler-and-dot-log.md diff --git a/public/llms-content/dotkernel/highcharts-integration-in-dotkernel-1-6-0.md b/public/md-articles/dotkernel/highcharts-integration-in-dotkernel-1-6-0.md similarity index 100% rename from public/llms-content/dotkernel/highcharts-integration-in-dotkernel-1-6-0.md rename to public/md-articles/dotkernel/highcharts-integration-in-dotkernel-1-6-0.md diff --git a/public/llms-content/dotkernel/how-to-group-log-files-by-date-using-dot-log.md b/public/md-articles/dotkernel/how-to-group-log-files-by-date-using-dot-log.md similarity index 100% rename from public/llms-content/dotkernel/how-to-group-log-files-by-date-using-dot-log.md rename to public/md-articles/dotkernel/how-to-group-log-files-by-date-using-dot-log.md diff --git a/public/llms-content/dotkernel/how-to-set-a-persistent-connection-to-database-with-zend-framework-zend-db-adapter.md b/public/md-articles/dotkernel/how-to-set-a-persistent-connection-to-database-with-zend-framework-zend-db-adapter.md similarity index 100% rename from public/llms-content/dotkernel/how-to-set-a-persistent-connection-to-database-with-zend-framework-zend-db-adapter.md rename to public/md-articles/dotkernel/how-to-set-a-persistent-connection-to-database-with-zend-framework-zend-db-adapter.md diff --git a/public/llms-content/dotkernel/how-to-use-alerts-in-dotkernel.md b/public/md-articles/dotkernel/how-to-use-alerts-in-dotkernel.md similarity index 100% rename from public/llms-content/dotkernel/how-to-use-alerts-in-dotkernel.md rename to public/md-articles/dotkernel/how-to-use-alerts-in-dotkernel.md diff --git a/public/llms-content/dotkernel/implementing-the-new-password-hashing-api-from-php-5-5-in-dotkernel.md b/public/md-articles/dotkernel/implementing-the-new-password-hashing-api-from-php-5-5-in-dotkernel.md similarity index 100% rename from public/llms-content/dotkernel/implementing-the-new-password-hashing-api-from-php-5-5-in-dotkernel.md rename to public/md-articles/dotkernel/implementing-the-new-password-hashing-api-from-php-5-5-in-dotkernel.md diff --git a/public/llms-content/dotkernel/installing-geoip-extension-in-zend-server-5-6-on-windows.md b/public/md-articles/dotkernel/installing-geoip-extension-in-zend-server-5-6-on-windows.md similarity index 100% rename from public/llms-content/dotkernel/installing-geoip-extension-in-zend-server-5-6-on-windows.md rename to public/md-articles/dotkernel/installing-geoip-extension-in-zend-server-5-6-on-windows.md diff --git a/public/llms-content/dotkernel/installing-geoip-extension-in-zend-server-6-on-windows.md b/public/md-articles/dotkernel/installing-geoip-extension-in-zend-server-6-on-windows.md similarity index 100% rename from public/llms-content/dotkernel/installing-geoip-extension-in-zend-server-6-on-windows.md rename to public/md-articles/dotkernel/installing-geoip-extension-in-zend-server-6-on-windows.md diff --git a/public/llms-content/dotkernel/logging-with-dot-log-in-zend-expressive-and-dotkernel.md b/public/md-articles/dotkernel/logging-with-dot-log-in-zend-expressive-and-dotkernel.md similarity index 100% rename from public/llms-content/dotkernel/logging-with-dot-log-in-zend-expressive-and-dotkernel.md rename to public/md-articles/dotkernel/logging-with-dot-log-in-zend-expressive-and-dotkernel.md diff --git a/public/llms-content/dotkernel/manual-upgrade-of-wurfl-xml-file-in-dotkernel.md b/public/md-articles/dotkernel/manual-upgrade-of-wurfl-xml-file-in-dotkernel.md similarity index 100% rename from public/llms-content/dotkernel/manual-upgrade-of-wurfl-xml-file-in-dotkernel.md rename to public/md-articles/dotkernel/manual-upgrade-of-wurfl-xml-file-in-dotkernel.md diff --git a/public/llms-content/dotkernel/migration-of-zend-framework-1-pear-channel.md b/public/md-articles/dotkernel/migration-of-zend-framework-1-pear-channel.md similarity index 100% rename from public/llms-content/dotkernel/migration-of-zend-framework-1-pear-channel.md rename to public/md-articles/dotkernel/migration-of-zend-framework-1-pear-channel.md diff --git a/public/llms-content/dotkernel/new-features-in-zend-framework-1-12.md b/public/md-articles/dotkernel/new-features-in-zend-framework-1-12.md similarity index 100% rename from public/llms-content/dotkernel/new-features-in-zend-framework-1-12.md rename to public/md-articles/dotkernel/new-features-in-zend-framework-1-12.md diff --git a/public/llms-content/dotkernel/php-formatter-and-templates-for-zend-studio-10-1.md b/public/md-articles/dotkernel/php-formatter-and-templates-for-zend-studio-10-1.md similarity index 100% rename from public/llms-content/dotkernel/php-formatter-and-templates-for-zend-studio-10-1.md rename to public/md-articles/dotkernel/php-formatter-and-templates-for-zend-studio-10-1.md diff --git a/public/llms-content/dotkernel/protecting-admin-folder-with-htaccess-in-plesk.md b/public/md-articles/dotkernel/protecting-admin-folder-with-htaccess-in-plesk.md similarity index 100% rename from public/llms-content/dotkernel/protecting-admin-folder-with-htaccess-in-plesk.md rename to public/md-articles/dotkernel/protecting-admin-folder-with-htaccess-in-plesk.md diff --git a/public/llms-content/dotkernel/replacing-laminas-mail-with-symfony-mailer-in-dot-mail.md b/public/md-articles/dotkernel/replacing-laminas-mail-with-symfony-mailer-in-dot-mail.md similarity index 100% rename from public/llms-content/dotkernel/replacing-laminas-mail-with-symfony-mailer-in-dot-mail.md rename to public/md-articles/dotkernel/replacing-laminas-mail-with-symfony-mailer-in-dot-mail.md diff --git a/public/llms-content/dotkernel/scientia-mobile-licensed-its-wurfl-cloud-php-library-to-dotkernel-1-6.md b/public/md-articles/dotkernel/scientia-mobile-licensed-its-wurfl-cloud-php-library-to-dotkernel-1-6.md similarity index 100% rename from public/llms-content/dotkernel/scientia-mobile-licensed-its-wurfl-cloud-php-library-to-dotkernel-1-6.md rename to public/md-articles/dotkernel/scientia-mobile-licensed-its-wurfl-cloud-php-library-to-dotkernel-1-6.md diff --git a/public/llms-content/dotkernel/sending-emails-using-dot-email-component-and-zend-email.md b/public/md-articles/dotkernel/sending-emails-using-dot-email-component-and-zend-email.md similarity index 100% rename from public/llms-content/dotkernel/sending-emails-using-dot-email-component-and-zend-email.md rename to public/md-articles/dotkernel/sending-emails-using-dot-email-component-and-zend-email.md diff --git a/public/llms-content/dotkernel/templating-in-dotkernel3.md b/public/md-articles/dotkernel/templating-in-dotkernel3.md similarity index 100% rename from public/llms-content/dotkernel/templating-in-dotkernel3.md rename to public/md-articles/dotkernel/templating-in-dotkernel3.md diff --git a/public/llms-content/dotkernel/using-dotkernel-with-composer-dependencies.md b/public/md-articles/dotkernel/using-dotkernel-with-composer-dependencies.md similarity index 100% rename from public/llms-content/dotkernel/using-dotkernel-with-composer-dependencies.md rename to public/md-articles/dotkernel/using-dotkernel-with-composer-dependencies.md diff --git a/public/llms-content/dotkernel/using-utf8-charset-in-dotkernel.md b/public/md-articles/dotkernel/using-utf8-charset-in-dotkernel.md similarity index 100% rename from public/llms-content/dotkernel/using-utf8-charset-in-dotkernel.md rename to public/md-articles/dotkernel/using-utf8-charset-in-dotkernel.md diff --git a/public/llms-content/dotkernel/wurfl-cloud-integration-in-dotkernel-1-6-0.md b/public/md-articles/dotkernel/wurfl-cloud-integration-in-dotkernel-1-6-0.md similarity index 100% rename from public/llms-content/dotkernel/wurfl-cloud-integration-in-dotkernel-1-6-0.md rename to public/md-articles/dotkernel/wurfl-cloud-integration-in-dotkernel-1-6-0.md diff --git a/public/llms-content/dotkernel/wurfl-php-api-license-incompatible-with-dotkernel.md b/public/md-articles/dotkernel/wurfl-php-api-license-incompatible-with-dotkernel.md similarity index 100% rename from public/llms-content/dotkernel/wurfl-php-api-license-incompatible-with-dotkernel.md rename to public/md-articles/dotkernel/wurfl-php-api-license-incompatible-with-dotkernel.md diff --git a/public/llms-content/dotkernel/wurfl-zend-framework-integration-into-dotkernel.md b/public/md-articles/dotkernel/wurfl-zend-framework-integration-into-dotkernel.md similarity index 100% rename from public/llms-content/dotkernel/wurfl-zend-framework-integration-into-dotkernel.md rename to public/md-articles/dotkernel/wurfl-zend-framework-integration-into-dotkernel.md diff --git a/public/llms-content/dotkernel/zend-auth-and-zend-acl-integrated-in-dotkernel.md b/public/md-articles/dotkernel/zend-auth-and-zend-acl-integrated-in-dotkernel.md similarity index 100% rename from public/llms-content/dotkernel/zend-auth-and-zend-acl-integrated-in-dotkernel.md rename to public/md-articles/dotkernel/zend-auth-and-zend-acl-integrated-in-dotkernel.md diff --git a/public/llms-content/dotkernel/zend-console-implementation-in-dotkernel.md b/public/md-articles/dotkernel/zend-console-implementation-in-dotkernel.md similarity index 100% rename from public/llms-content/dotkernel/zend-console-implementation-in-dotkernel.md rename to public/md-articles/dotkernel/zend-console-implementation-in-dotkernel.md diff --git a/public/llms-content/dotkernel/zend-framework-dropped-integration-of-wurfl-adapter.md b/public/md-articles/dotkernel/zend-framework-dropped-integration-of-wurfl-adapter.md similarity index 100% rename from public/llms-content/dotkernel/zend-framework-dropped-integration-of-wurfl-adapter.md rename to public/md-articles/dotkernel/zend-framework-dropped-integration-of-wurfl-adapter.md diff --git a/public/llms-content/dotkernel/zend-registry-usage-in-dotkernel.md b/public/md-articles/dotkernel/zend-registry-usage-in-dotkernel.md similarity index 100% rename from public/llms-content/dotkernel/zend-registry-usage-in-dotkernel.md rename to public/md-articles/dotkernel/zend-registry-usage-in-dotkernel.md diff --git a/public/llms-content/dotkernel/zend-session-usage-in-dotkernel-refactor-of-dot-session-class.md b/public/md-articles/dotkernel/zend-session-usage-in-dotkernel-refactor-of-dot-session-class.md similarity index 100% rename from public/llms-content/dotkernel/zend-session-usage-in-dotkernel-refactor-of-dot-session-class.md rename to public/md-articles/dotkernel/zend-session-usage-in-dotkernel-refactor-of-dot-session-class.md diff --git a/public/llms-content/dotkernel/zend-studio-php-formatter-file-for-dotkernel-coding-standard.md b/public/md-articles/dotkernel/zend-studio-php-formatter-file-for-dotkernel-coding-standard.md similarity index 100% rename from public/llms-content/dotkernel/zend-studio-php-formatter-file-for-dotkernel-coding-standard.md rename to public/md-articles/dotkernel/zend-studio-php-formatter-file-for-dotkernel-coding-standard.md diff --git a/public/llms-content/dotkernel3/development-report-december-11-2017.md b/public/md-articles/dotkernel3/development-report-december-11-2017.md similarity index 100% rename from public/llms-content/dotkernel3/development-report-december-11-2017.md rename to public/md-articles/dotkernel3/development-report-december-11-2017.md diff --git a/public/llms-content/dotkernel3/dotkernel-admin-v4.md b/public/md-articles/dotkernel3/dotkernel-admin-v4.md similarity index 100% rename from public/llms-content/dotkernel3/dotkernel-admin-v4.md rename to public/md-articles/dotkernel3/dotkernel-admin-v4.md diff --git a/public/llms-content/dotkernel3/dotkernel-admin-version-3-launched.md b/public/md-articles/dotkernel3/dotkernel-admin-version-3-launched.md similarity index 100% rename from public/llms-content/dotkernel3/dotkernel-admin-version-3-launched.md rename to public/md-articles/dotkernel3/dotkernel-admin-version-3-launched.md diff --git a/public/llms-content/dotkernel3/dotkernel-api-architecture-and-components.md b/public/md-articles/dotkernel3/dotkernel-api-architecture-and-components.md similarity index 100% rename from public/llms-content/dotkernel3/dotkernel-api-architecture-and-components.md rename to public/md-articles/dotkernel3/dotkernel-api-architecture-and-components.md diff --git a/public/llms-content/dotkernel3/dotkernel-frontend-version-3-launched.md b/public/md-articles/dotkernel3/dotkernel-frontend-version-3-launched.md similarity index 100% rename from public/llms-content/dotkernel3/dotkernel-frontend-version-3-launched.md rename to public/md-articles/dotkernel3/dotkernel-frontend-version-3-launched.md diff --git a/public/llms-content/dotkernel3/dotkernel3-stable-release-version-1-0.md b/public/md-articles/dotkernel3/dotkernel3-stable-release-version-1-0.md similarity index 100% rename from public/llms-content/dotkernel3/dotkernel3-stable-release-version-1-0.md rename to public/md-articles/dotkernel3/dotkernel3-stable-release-version-1-0.md diff --git a/public/llms-content/dotkernel3/php-8-3-support-in-dotkernel-admin.md b/public/md-articles/dotkernel3/php-8-3-support-in-dotkernel-admin.md similarity index 100% rename from public/llms-content/dotkernel3/php-8-3-support-in-dotkernel-admin.md rename to public/md-articles/dotkernel3/php-8-3-support-in-dotkernel-admin.md diff --git a/public/llms-content/dotkernel3/php-8-3-support-in-dotkernel-api.md b/public/md-articles/dotkernel3/php-8-3-support-in-dotkernel-api.md similarity index 100% rename from public/llms-content/dotkernel3/php-8-3-support-in-dotkernel-api.md rename to public/md-articles/dotkernel3/php-8-3-support-in-dotkernel-api.md diff --git a/public/llms-content/dotkernel3/php-8-3-support-in-dotkernel-frontend.md b/public/md-articles/dotkernel3/php-8-3-support-in-dotkernel-frontend.md similarity index 100% rename from public/llms-content/dotkernel3/php-8-3-support-in-dotkernel-frontend.md rename to public/md-articles/dotkernel3/php-8-3-support-in-dotkernel-frontend.md diff --git a/public/llms-content/headless-platform/complementary-admin-in-dotkernel-headless-platform.md b/public/md-articles/headless-platform/complementary-admin-in-dotkernel-headless-platform.md similarity index 100% rename from public/llms-content/headless-platform/complementary-admin-in-dotkernel-headless-platform.md rename to public/md-articles/headless-platform/complementary-admin-in-dotkernel-headless-platform.md diff --git a/public/llms-content/headless-platform/dotkernel-api-v6-the-root-of-dotkernel-headless-platform.md b/public/md-articles/headless-platform/dotkernel-api-v6-the-root-of-dotkernel-headless-platform.md similarity index 100% rename from public/llms-content/headless-platform/dotkernel-api-v6-the-root-of-dotkernel-headless-platform.md rename to public/md-articles/headless-platform/dotkernel-api-v6-the-root-of-dotkernel-headless-platform.md diff --git a/public/llms-content/headless-platform/dotkernel-headless-platform-the-whats-hows-and-whys.md b/public/md-articles/headless-platform/dotkernel-headless-platform-the-whats-hows-and-whys.md similarity index 100% rename from public/llms-content/headless-platform/dotkernel-headless-platform-the-whats-hows-and-whys.md rename to public/md-articles/headless-platform/dotkernel-headless-platform-the-whats-hows-and-whys.md diff --git a/public/llms-content/headless-platform/dotkernel-queue-asynchronous-execution-in-dotkernel-headless-platform.md b/public/md-articles/headless-platform/dotkernel-queue-asynchronous-execution-in-dotkernel-headless-platform.md similarity index 100% rename from public/llms-content/headless-platform/dotkernel-queue-asynchronous-execution-in-dotkernel-headless-platform.md rename to public/md-articles/headless-platform/dotkernel-queue-asynchronous-execution-in-dotkernel-headless-platform.md diff --git a/public/llms-content/headless-platform/dotmaker-generate-common-code-in-dotkernel.md b/public/md-articles/headless-platform/dotmaker-generate-common-code-in-dotkernel.md similarity index 100% rename from public/llms-content/headless-platform/dotmaker-generate-common-code-in-dotkernel.md rename to public/md-articles/headless-platform/dotmaker-generate-common-code-in-dotkernel.md diff --git a/public/llms-content/headless-platform/evolution-pattern-versus-api-versioning.md b/public/md-articles/headless-platform/evolution-pattern-versus-api-versioning.md similarity index 100% rename from public/llms-content/headless-platform/evolution-pattern-versus-api-versioning.md rename to public/md-articles/headless-platform/evolution-pattern-versus-api-versioning.md diff --git a/public/llms-content/headless-platform/implementing-time-based-one-time-password-totp-in-dotkernel.md b/public/md-articles/headless-platform/implementing-time-based-one-time-password-totp-in-dotkernel.md similarity index 100% rename from public/llms-content/headless-platform/implementing-time-based-one-time-password-totp-in-dotkernel.md rename to public/md-articles/headless-platform/implementing-time-based-one-time-password-totp-in-dotkernel.md diff --git a/public/llms-content/headless-platform/shared-core-submodule-in-dotkernel-headless-platform.md b/public/md-articles/headless-platform/shared-core-submodule-in-dotkernel-headless-platform.md similarity index 100% rename from public/llms-content/headless-platform/shared-core-submodule-in-dotkernel-headless-platform.md rename to public/md-articles/headless-platform/shared-core-submodule-in-dotkernel-headless-platform.md diff --git a/public/llms-content/headless-platform/version-7-adds-postgresql-native-uuid-and-php-8-5.md b/public/md-articles/headless-platform/version-7-adds-postgresql-native-uuid-and-php-8-5.md similarity index 100% rename from public/llms-content/headless-platform/version-7-adds-postgresql-native-uuid-and-php-8-5.md rename to public/md-articles/headless-platform/version-7-adds-postgresql-native-uuid-and-php-8-5.md diff --git a/public/llms-content/how-to/cors-policy-setup-in-dotkernel-using-mezzio-cors.md b/public/md-articles/how-to/cors-policy-setup-in-dotkernel-using-mezzio-cors.md similarity index 100% rename from public/llms-content/how-to/cors-policy-setup-in-dotkernel-using-mezzio-cors.md rename to public/md-articles/how-to/cors-policy-setup-in-dotkernel-using-mezzio-cors.md diff --git a/public/llms-content/how-to/creating-admin-accounts-in-dotkernel-api.md b/public/md-articles/how-to/creating-admin-accounts-in-dotkernel-api.md similarity index 100% rename from public/llms-content/how-to/creating-admin-accounts-in-dotkernel-api.md rename to public/md-articles/how-to/creating-admin-accounts-in-dotkernel-api.md diff --git a/public/llms-content/how-to/database-migrations-and-how-to-use-them.md b/public/md-articles/how-to/database-migrations-and-how-to-use-them.md similarity index 100% rename from public/llms-content/how-to/database-migrations-and-how-to-use-them.md rename to public/md-articles/how-to/database-migrations-and-how-to-use-them.md diff --git a/public/llms-content/how-to/doctrine-cache-in-mezzio-and-dotkernel.md b/public/md-articles/how-to/doctrine-cache-in-mezzio-and-dotkernel.md similarity index 100% rename from public/llms-content/how-to/doctrine-cache-in-mezzio-and-dotkernel.md rename to public/md-articles/how-to/doctrine-cache-in-mezzio-and-dotkernel.md diff --git a/public/llms-content/how-to/generating-a-doctrine-migration-without-dropping-custom-tables.md b/public/md-articles/how-to/generating-a-doctrine-migration-without-dropping-custom-tables.md similarity index 100% rename from public/llms-content/how-to/generating-a-doctrine-migration-without-dropping-custom-tables.md rename to public/md-articles/how-to/generating-a-doctrine-migration-without-dropping-custom-tables.md diff --git a/public/llms-content/how-to/implementation-of-seo-friendly-url-in-an-generic-laminas-mezzio-app.md b/public/md-articles/how-to/implementation-of-seo-friendly-url-in-an-generic-laminas-mezzio-app.md similarity index 100% rename from public/llms-content/how-to/implementation-of-seo-friendly-url-in-an-generic-laminas-mezzio-app.md rename to public/md-articles/how-to/implementation-of-seo-friendly-url-in-an-generic-laminas-mezzio-app.md diff --git a/public/llms-content/how-to/installing-almalinux-10-in-wsl2-php-mariadb-composer-phpmyadmin.md b/public/md-articles/how-to/installing-almalinux-10-in-wsl2-php-mariadb-composer-phpmyadmin.md similarity index 100% rename from public/llms-content/how-to/installing-almalinux-10-in-wsl2-php-mariadb-composer-phpmyadmin.md rename to public/md-articles/how-to/installing-almalinux-10-in-wsl2-php-mariadb-composer-phpmyadmin.md diff --git a/public/llms-content/how-to/list-available-endpoints-in-dotkernel-api-using-dot-cli.md b/public/md-articles/how-to/list-available-endpoints-in-dotkernel-api-using-dot-cli.md similarity index 100% rename from public/llms-content/how-to/list-available-endpoints-in-dotkernel-api-using-dot-cli.md rename to public/md-articles/how-to/list-available-endpoints-in-dotkernel-api-using-dot-cli.md diff --git a/public/llms-content/how-to/migrating-dotkernel-3-from-zend-expressive-2-to-zend-expressive-3.md b/public/md-articles/how-to/migrating-dotkernel-3-from-zend-expressive-2-to-zend-expressive-3.md similarity index 100% rename from public/llms-content/how-to/migrating-dotkernel-3-from-zend-expressive-2-to-zend-expressive-3.md rename to public/md-articles/how-to/migrating-dotkernel-3-from-zend-expressive-2-to-zend-expressive-3.md diff --git a/public/llms-content/how-to/replacing-dot-console-with-dot-cli-based-on-laminas-cli.md b/public/md-articles/how-to/replacing-dot-console-with-dot-cli-based-on-laminas-cli.md similarity index 100% rename from public/llms-content/how-to/replacing-dot-console-with-dot-cli-based-on-laminas-cli.md rename to public/md-articles/how-to/replacing-dot-console-with-dot-cli-based-on-laminas-cli.md diff --git a/public/llms-content/how-to/using-postman-for-documentation-in-dotkernel-api-3.md b/public/md-articles/how-to/using-postman-for-documentation-in-dotkernel-api-3.md similarity index 100% rename from public/llms-content/how-to/using-postman-for-documentation-in-dotkernel-api-3.md rename to public/md-articles/how-to/using-postman-for-documentation-in-dotkernel-api-3.md diff --git a/public/llms-content/how-to/using-the-urlgenerator-work-in-fastroute.md b/public/md-articles/how-to/using-the-urlgenerator-work-in-fastroute.md similarity index 100% rename from public/llms-content/how-to/using-the-urlgenerator-work-in-fastroute.md rename to public/md-articles/how-to/using-the-urlgenerator-work-in-fastroute.md diff --git a/public/llms-content/how-to/what-is-cross-origin-token-redemption.md b/public/md-articles/how-to/what-is-cross-origin-token-redemption.md similarity index 100% rename from public/llms-content/how-to/what-is-cross-origin-token-redemption.md rename to public/md-articles/how-to/what-is-cross-origin-token-redemption.md diff --git a/public/llms-content/how-to/what-is-psr-7-and-how-to-use-it.md b/public/md-articles/how-to/what-is-psr-7-and-how-to-use-it.md similarity index 100% rename from public/llms-content/how-to/what-is-psr-7-and-how-to-use-it.md rename to public/md-articles/how-to/what-is-psr-7-and-how-to-use-it.md diff --git a/public/llms-content/index.md b/public/md-articles/index.md similarity index 100% rename from public/llms-content/index.md rename to public/md-articles/index.md diff --git a/public/llms-content/javascript/codelobster-php-edition-free-php-html-css-javascript-editor-ide.md b/public/md-articles/javascript/codelobster-php-edition-free-php-html-css-javascript-editor-ide.md similarity index 100% rename from public/llms-content/javascript/codelobster-php-edition-free-php-html-css-javascript-editor-ide.md rename to public/md-articles/javascript/codelobster-php-edition-free-php-html-css-javascript-editor-ide.md diff --git a/public/llms-content/javascript/intro-to-jquery.md b/public/md-articles/javascript/intro-to-jquery.md similarity index 100% rename from public/llms-content/javascript/intro-to-jquery.md rename to public/md-articles/javascript/intro-to-jquery.md diff --git a/public/llms-content/javascript/javascript-email-validator.md b/public/md-articles/javascript/javascript-email-validator.md similarity index 100% rename from public/llms-content/javascript/javascript-email-validator.md rename to public/md-articles/javascript/javascript-email-validator.md diff --git a/public/llms-content/licensing/mit-versus-lgpl-in-practice-dotkernel-case.md b/public/md-articles/licensing/mit-versus-lgpl-in-practice-dotkernel-case.md similarity index 100% rename from public/llms-content/licensing/mit-versus-lgpl-in-practice-dotkernel-case.md rename to public/md-articles/licensing/mit-versus-lgpl-in-practice-dotkernel-case.md diff --git a/public/llms-content/middleware/dotkernel-light-improvements-psr-15-handlers-vite-phpstan.md b/public/md-articles/middleware/dotkernel-light-improvements-psr-15-handlers-vite-phpstan.md similarity index 100% rename from public/llms-content/middleware/dotkernel-light-improvements-psr-15-handlers-vite-phpstan.md rename to public/md-articles/middleware/dotkernel-light-improvements-psr-15-handlers-vite-phpstan.md diff --git a/public/llms-content/middleware/handling-dynamic-routing-using-fastroute-in-dotkernel.md b/public/md-articles/middleware/handling-dynamic-routing-using-fastroute-in-dotkernel.md similarity index 100% rename from public/llms-content/middleware/handling-dynamic-routing-using-fastroute-in-dotkernel.md rename to public/md-articles/middleware/handling-dynamic-routing-using-fastroute-in-dotkernel.md diff --git a/public/llms-content/middleware/replacing-controllers-with-psr-15-compliant-handlers-in-dotkernel-light.md b/public/md-articles/middleware/replacing-controllers-with-psr-15-compliant-handlers-in-dotkernel-light.md similarity index 100% rename from public/llms-content/middleware/replacing-controllers-with-psr-15-compliant-handlers-in-dotkernel-light.md rename to public/md-articles/middleware/replacing-controllers-with-psr-15-compliant-handlers-in-dotkernel-light.md diff --git a/public/llms-content/php-development/almalinux-9-in-wsl2-install-php-apache-mariadb-composer-phpmyadmin.md b/public/md-articles/php-development/almalinux-9-in-wsl2-install-php-apache-mariadb-composer-phpmyadmin.md similarity index 100% rename from public/llms-content/php-development/almalinux-9-in-wsl2-install-php-apache-mariadb-composer-phpmyadmin.md rename to public/md-articles/php-development/almalinux-9-in-wsl2-install-php-apache-mariadb-composer-phpmyadmin.md diff --git a/public/llms-content/php-development/aptana-php-installation-in-aptana-2-x.md b/public/md-articles/php-development/aptana-php-installation-in-aptana-2-x.md similarity index 100% rename from public/llms-content/php-development/aptana-php-installation-in-aptana-2-x.md rename to public/md-articles/php-development/aptana-php-installation-in-aptana-2-x.md diff --git a/public/llms-content/php-development/better-unicode-support-in-mysql-5-5-utf8mb4.md b/public/md-articles/php-development/better-unicode-support-in-mysql-5-5-utf8mb4.md similarity index 100% rename from public/llms-content/php-development/better-unicode-support-in-mysql-5-5-utf8mb4.md rename to public/md-articles/php-development/better-unicode-support-in-mysql-5-5-utf8mb4.md diff --git a/public/llms-content/php-development/database-seeding-doctrine-data-fixtures-vs-phinx.md b/public/md-articles/php-development/database-seeding-doctrine-data-fixtures-vs-phinx.md similarity index 100% rename from public/llms-content/php-development/database-seeding-doctrine-data-fixtures-vs-phinx.md rename to public/md-articles/php-development/database-seeding-doctrine-data-fixtures-vs-phinx.md diff --git a/public/llms-content/php-development/end-of-support-for-php-5-2-x-branch.md b/public/md-articles/php-development/end-of-support-for-php-5-2-x-branch.md similarity index 100% rename from public/llms-content/php-development/end-of-support-for-php-5-2-x-branch.md rename to public/md-articles/php-development/end-of-support-for-php-5-2-x-branch.md diff --git a/public/llms-content/php-development/floating-point-arithmetic-why-is-int-0-7-0-1-10-7.md b/public/md-articles/php-development/floating-point-arithmetic-why-is-int-0-7-0-1-10-7.md similarity index 100% rename from public/llms-content/php-development/floating-point-arithmetic-why-is-int-0-7-0-1-10-7.md rename to public/md-articles/php-development/floating-point-arithmetic-why-is-int-0-7-0-1-10-7.md diff --git a/public/llms-content/php-development/how-to-upgrade-wamp-to-php-5-3-4.md b/public/md-articles/php-development/how-to-upgrade-wamp-to-php-5-3-4.md similarity index 100% rename from public/llms-content/php-development/how-to-upgrade-wamp-to-php-5-3-4.md rename to public/md-articles/php-development/how-to-upgrade-wamp-to-php-5-3-4.md diff --git a/public/llms-content/php-development/mezzio-app-development-in-wsl2.md b/public/md-articles/php-development/mezzio-app-development-in-wsl2.md similarity index 100% rename from public/llms-content/php-development/mezzio-app-development-in-wsl2.md rename to public/md-articles/php-development/mezzio-app-development-in-wsl2.md diff --git a/public/llms-content/php-development/php-5-3-6-released-no-upgrade-possible-for-wampserver.md b/public/md-articles/php-development/php-5-3-6-released-no-upgrade-possible-for-wampserver.md similarity index 100% rename from public/llms-content/php-development/php-5-3-6-released-no-upgrade-possible-for-wampserver.md rename to public/md-articles/php-development/php-5-3-6-released-no-upgrade-possible-for-wampserver.md diff --git a/public/llms-content/php-development/php-environment-development-staging-production.md b/public/md-articles/php-development/php-environment-development-staging-production.md similarity index 100% rename from public/llms-content/php-development/php-environment-development-staging-production.md rename to public/md-articles/php-development/php-environment-development-staging-production.md diff --git a/public/llms-content/php-development/php-support-back-in-aptana-3-0.md b/public/md-articles/php-development/php-support-back-in-aptana-3-0.md similarity index 100% rename from public/llms-content/php-development/php-support-back-in-aptana-3-0.md rename to public/md-articles/php-development/php-support-back-in-aptana-3-0.md diff --git a/public/llms-content/php-development/protection-against-sql-injection-using-pdo-and-zend-framework-part-2.md b/public/md-articles/php-development/protection-against-sql-injection-using-pdo-and-zend-framework-part-2.md similarity index 100% rename from public/llms-content/php-development/protection-against-sql-injection-using-pdo-and-zend-framework-part-2.md rename to public/md-articles/php-development/protection-against-sql-injection-using-pdo-and-zend-framework-part-2.md diff --git a/public/llms-content/php-development/protection-against-sql-injection-using-pdo-and-zend-framework.md b/public/md-articles/php-development/protection-against-sql-injection-using-pdo-and-zend-framework.md similarity index 100% rename from public/llms-content/php-development/protection-against-sql-injection-using-pdo-and-zend-framework.md rename to public/md-articles/php-development/protection-against-sql-injection-using-pdo-and-zend-framework.md diff --git a/public/llms-content/php-development/remote-connections-to-mysql-server-on-plesk-based-servers.md b/public/md-articles/php-development/remote-connections-to-mysql-server-on-plesk-based-servers.md similarity index 100% rename from public/llms-content/php-development/remote-connections-to-mysql-server-on-plesk-based-servers.md rename to public/md-articles/php-development/remote-connections-to-mysql-server-on-plesk-based-servers.md diff --git a/public/llms-content/php-development/static-analysis-replacing-psalm-with-phpstan.md b/public/md-articles/php-development/static-analysis-replacing-psalm-with-phpstan.md similarity index 100% rename from public/llms-content/php-development/static-analysis-replacing-psalm-with-phpstan.md rename to public/md-articles/php-development/static-analysis-replacing-psalm-with-phpstan.md diff --git a/public/llms-content/php-development/using-aptana-to-connect-to-dotkernel-tracker-mantis.md b/public/md-articles/php-development/using-aptana-to-connect-to-dotkernel-tracker-mantis.md similarity index 100% rename from public/llms-content/php-development/using-aptana-to-connect-to-dotkernel-tracker-mantis.md rename to public/md-articles/php-development/using-aptana-to-connect-to-dotkernel-tracker-mantis.md diff --git a/public/llms-content/php-development/using-php-7-express-in-zend-studio-13.md b/public/md-articles/php-development/using-php-7-express-in-zend-studio-13.md similarity index 100% rename from public/llms-content/php-development/using-php-7-express-in-zend-studio-13.md rename to public/md-articles/php-development/using-php-7-express-in-zend-studio-13.md diff --git a/public/llms-content/php-development/version-control-ignore-patterns-in-zend-studio.md b/public/md-articles/php-development/version-control-ignore-patterns-in-zend-studio.md similarity index 100% rename from public/llms-content/php-development/version-control-ignore-patterns-in-zend-studio.md rename to public/md-articles/php-development/version-control-ignore-patterns-in-zend-studio.md diff --git a/public/llms-content/php-development/welcome-to-the-10th-zend-certified-engineer-in-dotboost-team.md b/public/md-articles/php-development/welcome-to-the-10th-zend-certified-engineer-in-dotboost-team.md similarity index 100% rename from public/llms-content/php-development/welcome-to-the-10th-zend-certified-engineer-in-dotboost-team.md rename to public/md-articles/php-development/welcome-to-the-10th-zend-certified-engineer-in-dotboost-team.md diff --git a/public/llms-content/php-development/zend-server-5-5-quick-setup-on-windows.md b/public/md-articles/php-development/zend-server-5-5-quick-setup-on-windows.md similarity index 100% rename from public/llms-content/php-development/zend-server-5-5-quick-setup-on-windows.md rename to public/md-articles/php-development/zend-server-5-5-quick-setup-on-windows.md diff --git a/public/llms-content/php-troubleshooting/fix-installing-pear-packages-with-php-7-2.md b/public/md-articles/php-troubleshooting/fix-installing-pear-packages-with-php-7-2.md similarity index 100% rename from public/llms-content/php-troubleshooting/fix-installing-pear-packages-with-php-7-2.md rename to public/md-articles/php-troubleshooting/fix-installing-pear-packages-with-php-7-2.md diff --git a/public/llms-content/php-troubleshooting/where-is-the-intl-php-extension-problem-solved.md b/public/md-articles/php-troubleshooting/where-is-the-intl-php-extension-problem-solved.md similarity index 100% rename from public/llms-content/php-troubleshooting/where-is-the-intl-php-extension-problem-solved.md rename to public/md-articles/php-troubleshooting/where-is-the-intl-php-extension-problem-solved.md diff --git a/public/llms-content/phpstorm/code-quality-how-to-setup-phpcs-in-phpstorm.md b/public/md-articles/phpstorm/code-quality-how-to-setup-phpcs-in-phpstorm.md similarity index 100% rename from public/llms-content/phpstorm/code-quality-how-to-setup-phpcs-in-phpstorm.md rename to public/md-articles/phpstorm/code-quality-how-to-setup-phpcs-in-phpstorm.md diff --git a/public/llms-content/zend-framework/scienta-zf-debug-bar-a-very-helpfull-zf-debug-tool.md b/public/md-articles/zend-framework/scienta-zf-debug-bar-a-very-helpfull-zf-debug-tool.md similarity index 100% rename from public/llms-content/zend-framework/scienta-zf-debug-bar-a-very-helpfull-zf-debug-tool.md rename to public/md-articles/zend-framework/scienta-zf-debug-bar-a-very-helpfull-zf-debug-tool.md diff --git a/public/llms-content/zend-framework/sunsetting-pear-channel-for-zend-framework-1.md b/public/md-articles/zend-framework/sunsetting-pear-channel-for-zend-framework-1.md similarity index 100% rename from public/llms-content/zend-framework/sunsetting-pear-channel-for-zend-framework-1.md rename to public/md-articles/zend-framework/sunsetting-pear-channel-for-zend-framework-1.md diff --git a/public/llms-content/zend-framework/wurfl-php-api-libraries-gpl-versions.md b/public/md-articles/zend-framework/wurfl-php-api-libraries-gpl-versions.md similarity index 100% rename from public/llms-content/zend-framework/wurfl-php-api-libraries-gpl-versions.md rename to public/md-articles/zend-framework/wurfl-php-api-libraries-gpl-versions.md diff --git a/public/llms-content/zend-framework/zend-framework-1-12-4-released-with-security-fixes.md b/public/md-articles/zend-framework/zend-framework-1-12-4-released-with-security-fixes.md similarity index 100% rename from public/llms-content/zend-framework/zend-framework-1-12-4-released-with-security-fixes.md rename to public/md-articles/zend-framework/zend-framework-1-12-4-released-with-security-fixes.md diff --git a/public/llms-content/zend-framework/zend-framework-1-7-0-released.md b/public/md-articles/zend-framework/zend-framework-1-7-0-released.md similarity index 100% rename from public/llms-content/zend-framework/zend-framework-1-7-0-released.md rename to public/md-articles/zend-framework/zend-framework-1-7-0-released.md diff --git a/public/llms-content/zend-framework/zend-framework-1-end-of-life.md b/public/md-articles/zend-framework/zend-framework-1-end-of-life.md similarity index 100% rename from public/llms-content/zend-framework/zend-framework-1-end-of-life.md rename to public/md-articles/zend-framework/zend-framework-1-end-of-life.md diff --git a/public/llms-content/zend-framework/zend-framework-as-pear-accessible-repository-on-plesk-server.md b/public/md-articles/zend-framework/zend-framework-as-pear-accessible-repository-on-plesk-server.md similarity index 100% rename from public/llms-content/zend-framework/zend-framework-as-pear-accessible-repository-on-plesk-server.md rename to public/md-articles/zend-framework/zend-framework-as-pear-accessible-repository-on-plesk-server.md diff --git a/public/llms-content/zend-framework/zend-mail-and-zend-http-security-fixes-in-zend-framework-1-12-12.md b/public/md-articles/zend-framework/zend-mail-and-zend-http-security-fixes-in-zend-framework-1-12-12.md similarity index 100% rename from public/llms-content/zend-framework/zend-mail-and-zend-http-security-fixes-in-zend-framework-1-12-12.md rename to public/md-articles/zend-framework/zend-mail-and-zend-http-security-fixes-in-zend-framework-1-12-12.md diff --git a/src/App/src/Factory/GetMarkdownArticleHandlerFactory.php b/src/App/src/Factory/GetMarkdownArticleHandlerFactory.php new file mode 100644 index 0000000..b52b317 --- /dev/null +++ b/src/App/src/Factory/GetMarkdownArticleHandlerFactory.php @@ -0,0 +1,33 @@ +get(TemplateRendererInterface::class); + assert($template instanceof TemplateRendererInterface); + + $categoryRepository = $container->get(CategoryRepository::class); + assert($categoryRepository instanceof CategoryRepository); + + return new GetMarkdownArticleHandler($template, $categoryRepository, getcwd() . '/public/md-articles'); + } +}