From ad9e6d96cd1c11e01e61d8c1b0ef67ea93a1b509 Mon Sep 17 00:00:00 2001 From: OStefan2001 Date: Tue, 18 Aug 2026 10:37:02 +0300 Subject: [PATCH 1/6] keep only text to 404 links --- .../sql-queries-using-zend-db-select.md | 2 +- ...g-composer-support-in-your-dotkernel-project.md | 2 +- ...ologin-using-cookie-remember-me-in-dotkernel.md | 4 ++-- .../doctrine-cache-using-symfony-cache.md | 2 +- .../migration-of-zend-framework-1-pear-channel.md | 2 +- .../development-report-december-11-2017.md | 6 +++--- .../md-articles/dotkernel3/dotkernel-admin-v4.md | 2 +- .../dotkernel-admin-version-3-launched.md | 2 +- .../doctrine-cache-in-mezzio-and-dotkernel.md | 6 +++--- ...-from-zend-expressive-2-to-zend-expressive-3.md | 2 +- .../how-to/what-is-psr-7-and-how-to-use-it.md | 2 +- ...psr-15-compliant-handlers-in-dotkernel-light.md | 2 +- .../mezzio-app-development-in-wsl2.md | 12 ++++++------ ...njection-using-pdo-and-zend-framework-part-2.md | 2 +- ...t-sql-injection-using-pdo-and-zend-framework.md | 4 ++-- ...ere-is-the-intl-php-extension-problem-solved.md | 4 ++-- ...sunsetting-pear-channel-for-zend-framework-1.md | 2 +- public/md-pages/frontend.md | 2 +- src/App/src/Fixture/articles_cleaned.json | 10 +++++----- .../sql-queries-using-zend-db-select.html.twig | 2 +- ...ning-the-fetch-functions-from-zend-db.html.twig | 2 +- ...tamp-on-a-field-that-record-date-time.html.twig | 2 +- ...api-endpoint-to-collect-client-errors.html.twig | 2 +- ...ser-support-in-your-dotkernel-project.html.twig | 2 +- ...using-cookie-remember-me-in-dotkernel.html.twig | 2 +- .../doctrine-cache-using-symfony-cache.html.twig | 2 +- ...tion-of-zend-framework-1-pear-channel.html.twig | 2 +- .../development-report-december-11-2017.html.twig | 12 ++++++------ .../dotkernel3/dotkernel-admin-v4.html.twig | 2 +- .../dotkernel-admin-version-3-launched.html.twig | 4 ++-- ...dotkernel-frontend-version-3-launched.html.twig | 2 +- ...octrine-cache-in-mezzio-and-dotkernel.html.twig | 6 +++--- ...end-expressive-2-to-zend-expressive-3.html.twig | 14 +++++++------- .../what-is-psr-7-and-how-to-use-it.html.twig | 2 +- ...compliant-handlers-in-dotkernel-light.html.twig | 2 +- .../mezzio-app-development-in-wsl2.html.twig | 6 +++--- ...n-using-pdo-and-zend-framework-part-2.html.twig | 12 ++++++------ ...njection-using-pdo-and-zend-framework.html.twig | 4 ++-- ...the-intl-php-extension-problem-solved.html.twig | 4 ++-- ...ing-pear-channel-for-zend-framework-1.html.twig | 2 +- src/Page/templates/page/frontend.html.twig | 2 +- 41 files changed, 80 insertions(+), 80 deletions(-) diff --git a/public/md-articles/best-practice/sql-queries-using-zend-db-select.md b/public/md-articles/best-practice/sql-queries-using-zend-db-select.md index bf96279f..64806140 100644 --- a/public/md-articles/best-practice/sql-queries-using-zend-db-select.md +++ b/public/md-articles/best-practice/sql-queries-using-zend-db-select.md @@ -127,7 +127,7 @@ A: Before fetching it, echo the query to visualize it: echo $select->__toString( ## Resources -- [Zend_Db](http://framework.zend.com/manual/en/zend.db.adapter.html) +- Zend_Db - [What are returning the FETCH functions from Zend_Db](http://www.dotkernel.com/best-practice/sql-fetch-zend-db/) - [Subqueries with Zend_Db](http://www.dotkernel.com/best-practice/subqueris-with-zend-db/) - [INSERT, UPDATE, DELETE statements with Zend_Db](http://www.dotkernel.com/best-practice/iud-statements-with-zend-d/) diff --git a/public/md-articles/dotkernel/adding-composer-support-in-your-dotkernel-project.md b/public/md-articles/dotkernel/adding-composer-support-in-your-dotkernel-project.md index 4dee466d..3dc353cf 100644 --- a/public/md-articles/dotkernel/adding-composer-support-in-your-dotkernel-project.md +++ b/public/md-articles/dotkernel/adding-composer-support-in-your-dotkernel-project.md @@ -109,4 +109,4 @@ A: The article states it works for any Dotkernel 1.x version, as long as the ser ## Resources - [Composer install / PHP dependency manager tutorial](https://www.codementor.io/php/tutorial/composer-install-php-dependency-manager) -- [Using Dotkernel with Composer dependencies](http://www.dotkernel.com/dotkernel/using-dotkernel-…ser-dependencies/) +- Using Dotkernel with Composer dependencies diff --git a/public/md-articles/dotkernel/autologin-using-cookie-remember-me-in-dotkernel.md b/public/md-articles/dotkernel/autologin-using-cookie-remember-me-in-dotkernel.md index 64257d76..fc3289a1 100644 --- a/public/md-articles/dotkernel/autologin-using-cookie-remember-me-in-dotkernel.md +++ b/public/md-articles/dotkernel/autologin-using-cookie-remember-me-in-dotkernel.md @@ -84,7 +84,7 @@ npm run prod ```shell vendor/bin/phinx create --configuration=config/migrations.php RememberUserSchema ``` -3. Modify the generated migration file as in [user_remember_schema](https://github.com/dotkernel/frontend/blob/3.0/data/database/migrations/20220621062142_remember_user_schema.php), then run it against the database: +3. Modify the generated migration file as in user_remember_schema, then run it against the database: ```shell vendor/bin/phinx migrate --configuration=config/migrations.php ``` @@ -131,7 +131,7 @@ A: Add the CSS to src/App/assets/scss/components/_profile.scss, then run npm run - [Dotkernel Frontend on GitHub](https://github.com/dotkernel/frontend) - [UserRememberMe entity example](https://github.com/dotkernel/frontend/blob/3.0/src/User/src/Entity/UserRememberMe.php) -- [Remember user schema migration example](https://github.com/dotkernel/frontend/blob/3.0/data/database/migrations/20220621062142_remember_user_schema.php) +- Remember user schema migration example - [RememberMeMiddleware example](https://github.com/dotkernel/frontend/blob/3.0/src/App/src/Middleware/RememberMeMiddleware.php) - [pipeline.php example](https://github.com/dotkernel/frontend/blob/3.0/config/pipeline.php) - [UserService example](https://github.com/dotkernel/frontend/blob/3.0/src/User/src/Service/UserService.php) diff --git a/public/md-articles/dotkernel/doctrine-cache-using-symfony-cache.md b/public/md-articles/dotkernel/doctrine-cache-using-symfony-cache.md index c74ffc61..5a374880 100644 --- a/public/md-articles/dotkernel/doctrine-cache-using-symfony-cache.md +++ b/public/md-articles/dotkernel/doctrine-cache-using-symfony-cache.md @@ -104,7 +104,7 @@ class Admin extends AbstractEntity implements AdminInterface } ``` -For further details about the cache mode please refer to the [official documentation](https://www.doctrine-project.org/projects/doctrine-orm/en/3.0/reference/second-level-cache.html). +For further details about the cache mode please refer to the official documentation. When querying data, you can have Doctrine cache your results. You do this by calling the `setCacheable` method on the query builder. diff --git a/public/md-articles/dotkernel/migration-of-zend-framework-1-pear-channel.md b/public/md-articles/dotkernel/migration-of-zend-framework-1-pear-channel.md index 5de35850..ae7c21ea 100644 --- a/public/md-articles/dotkernel/migration-of-zend-framework-1-pear-channel.md +++ b/public/md-articles/dotkernel/migration-of-zend-framework-1-pear-channel.md @@ -65,5 +65,5 @@ A: Using the PEAR installer: remove the installed package with `pear uninstall z ## Resources -- [PEAR channel for Zend Framework 1](http://pear.dotkernel.com/) +- PEAR channel for Zend Framework 1 - [@dotkernel on Twitter](https://twitter.com/dotkernel) diff --git a/public/md-articles/dotkernel3/development-report-december-11-2017.md b/public/md-articles/dotkernel3/development-report-december-11-2017.md index fb5a6d11..2cd5ded4 100644 --- a/public/md-articles/dotkernel3/development-report-december-11-2017.md +++ b/public/md-articles/dotkernel3/development-report-december-11-2017.md @@ -41,6 +41,6 @@ A: JapSeyz was thanked as a contributor. ## Resources -- [Release Notes](https://docs.dotkernel.com/Overview/Release-Notes.html) -- [Webpack tutorial](https://docs.dotkernel.com/Prerequisites/Webpack.html) -- [Api Endpoint Documentation Guidelines](https://docs.dotkernel.com/Guidelines/Documentation-Guidelines/Api-Endpoint.html) +- Release Notes +- Webpack tutorial +- Api Endpoint Documentation Guidelines diff --git a/public/md-articles/dotkernel3/dotkernel-admin-v4.md b/public/md-articles/dotkernel3/dotkernel-admin-v4.md index dcb98ccf..1143a270 100644 --- a/public/md-articles/dotkernel3/dotkernel-admin-v4.md +++ b/public/md-articles/dotkernel3/dotkernel-admin-v4.md @@ -31,7 +31,7 @@ There should be an admin account with the following credentials: - Username: admin - Password: dotadmin -Head over to [https://admin4.dotkernel.net/](https://admin4.dotkernel.net/) and see for yourself. +Head over to https://admin4.dotkernel.net/ and see for yourself. ## Dotkernel Admin V4 Features diff --git a/public/md-articles/dotkernel3/dotkernel-admin-version-3-launched.md b/public/md-articles/dotkernel3/dotkernel-admin-version-3-launched.md index 83d9fef2..caa082a1 100644 --- a/public/md-articles/dotkernel3/dotkernel-admin-version-3-launched.md +++ b/public/md-articles/dotkernel3/dotkernel-admin-version-3-launched.md @@ -21,7 +21,7 @@ Branch 3.0 is now the default branch, requiring Mezzio ^3.2, PHP ^7.4, Doctrine Dotkernel is a collection of PSR-7 Middleware applications built on top of the [Mezzio microframework and using Laminas components](https://getlaminas.org/). Dotkernel Admin is a basic admin panel, based on Bootstrap ^4.5.0, using Doctrine and performing basic CRUD operations over a database. You can clone it from [GitHub](https://github.com/dotkernel/admin). -Live demo: [admin.dotkernel.net](https://admin.dotkernel.net) +Live demo: admin.dotkernel.net ### Changelog diff --git a/public/md-articles/how-to/doctrine-cache-in-mezzio-and-dotkernel.md b/public/md-articles/how-to/doctrine-cache-in-mezzio-and-dotkernel.md index 0d82567b..fccbbf8e 100644 --- a/public/md-articles/how-to/doctrine-cache-in-mezzio-and-dotkernel.md +++ b/public/md-articles/how-to/doctrine-cache-in-mezzio-and-dotkernel.md @@ -23,7 +23,7 @@ Note: a 2024 follow-up article covers the same topic using Symfony Cache instead Using an ORM in production without any sort of cache strategy is a very bad move. The database server chokes; lots of CPU cycles wasted only to generate metadata and queries over and over again at each request; the system slows down and so on. -Following [Doctrine documentation](https://www.doctrine-project.org/projects/doctrine-orm/en/2.7/reference/caching.html#integrating-with-the-orm), we choose to configure the Doctrine cache system through psr/container. +Following Doctrine documentation, we choose to configure the Doctrine cache system through psr/container. The main parts we are going to use are `query_cache`, `metadata_cache` and `result_cache`. As cache type we choose `PhpFileCache` and for result cache we are setting a lifetime of 3600 seconds. @@ -181,5 +181,5 @@ A: Enable result and/or query cache on the query builder's query before passing ## Resources -- [Doctrine Advanced Configuration](https://www.doctrine-project.org/projects/doctrine-orm/en/2.7/reference/advanced-configuration.html) -- [Doctrine Caching Documentation](https://www.doctrine-project.org/projects/doctrine-orm/en/2.7/reference/caching.html) +- Doctrine Advanced Configuration +- Doctrine Caching Documentation diff --git a/public/md-articles/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 index 6585574a..55ccc85d 100644 --- a/public/md-articles/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 @@ -150,7 +150,7 @@ Replace the following lines to reflect the changes: You can check the complete guides and example files from the following links: - [Migration guide for Dotkernel Frontend](https://github.com/dotkernel/frontend/tree/master/docs) -- [Migration guide for Dotkernel Admin](https://github.com/dotkernel/admin/tree/master/docs) +- Migration guide for Dotkernel Admin: github.com/dotkernel/admin/tree/master/docs ## FAQ diff --git a/public/md-articles/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 index 601eeb6b..5f3e19bc 100644 --- a/public/md-articles/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 @@ -200,7 +200,7 @@ $body->rewind(); // or $body->seek(0); $bodyText = $body->getContends(); ``` -More information can be found in the [PSR-7 article](https://docs.dotkernel.com/Prerequisites/PSR-7.html) in [Dotkernel3 documentation portal](https://docs.dotkernel.com/). +More information can be found in the PSR-7 article in [Dotkernel3 documentation portal](https://docs.dotkernel.com/). Sources: [PSR-7: HTTP messages](http://www.php-fig.org/psr/psr-7/), [zend-diactoros](https://zendframework.github.io/zend-diactoros/) diff --git a/public/md-articles/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 index 0c938489..5f20d96e 100644 --- a/public/md-articles/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 @@ -145,4 +145,4 @@ A: Not necessarily - in Dotkernel Light most static-page actions were combined i - [Dotkernel Light](https://github.com/dotkernel/light) - [PR for replacing controllers with handlers](https://github.com/dotkernel/light/pull/33) - [Mezzio features](https://docs.mezzio.dev/mezzio/v3/getting-started/features/) -- [Single Action Handlers in PHP Frameworks](https://dev.to/ilyasdeckers/single-action-handlers-in-php-frameworks-3jai) +- Single Action Handlers in PHP Frameworks diff --git a/public/md-articles/php-development/mezzio-app-development-in-wsl2.md b/public/md-articles/php-development/mezzio-app-development-in-wsl2.md index ba353b29..991d843f 100644 --- a/public/md-articles/php-development/mezzio-app-development-in-wsl2.md +++ b/public/md-articles/php-development/mezzio-app-development-in-wsl2.md @@ -17,8 +17,8 @@ This article runs through the steps of installing a Mezzio application (Dotkerne ## Steps 1. Make sure WSL2 is installed on your machine, following the [WSL2 installation guide](https://github.com/dotkernel/development/blob/main/wsl/README.md). -2. Install Ubuntu 20.04 LTS inside WSL2, as described in the [Ubuntu 20 setup guide](https://github.com/dotkernel/development/blob/main/wsl/os/ubuntu20/README.md). -3. Create a virtual host for your project using the [virtual hosts guide](https://github.com/dotkernel/development/blob/main/wsl/os/ubuntu20/README.md#create-virtual-hosts). +2. Install Ubuntu 20.04 LTS inside WSL2, as described in the Ubuntu 20 setup guide. +3. Create a virtual host for your project using the virtual hosts guide. 4. Using your terminal, move into the virtual host directory you just created: ```shell @@ -26,7 +26,7 @@ This article runs through the steps of installing a Mezzio application (Dotkerne ``` Install Dotkernel API by following the [Dotkernel API guide](https://github.com/dotkernel/api). -Make sure the `data` and `log` directories are writable by changing their permissions, as described in the [common permission issues guide](https://github.com/dotkernel/development/blob/main/wsl/HELP.md#fix-common-permission-issues). +Make sure the `data` and `log` directories are writable by changing their permissions, as described in the common permission issues guide. 5. Set up PHPStorm to work with WSL2 files, as described in the [JetBrains WSL development environment article](https://www.jetbrains.com/help/phpstorm/how-to-use-wsl-development-environment-in-product.html). ## Note @@ -57,8 +57,8 @@ A: There is a guide for AlmaLinux 8 as well, but it is not fully functional beca ## Resources - [WSL2 installation guide](https://github.com/dotkernel/development/blob/main/wsl/README.md) -- [Ubuntu 20 setup inside WSL2](https://github.com/dotkernel/development/blob/main/wsl/os/ubuntu20/README.md) -- [Create virtual hosts guide](https://github.com/dotkernel/development/blob/main/wsl/os/ubuntu20/README.md#create-virtual-hosts) +- Ubuntu 20 setup inside WSL2 +- Create virtual hosts guide - [Dotkernel API installation guide](https://github.com/dotkernel/api) -- [Fix common permission issues](https://github.com/dotkernel/development/blob/main/wsl/HELP.md#fix-common-permission-issues) +- Fix common permission issues - [Using WSL development environment in PHPStorm](https://www.jetbrains.com/help/phpstorm/how-to-use-wsl-development-environment-in-product.html) diff --git a/public/md-articles/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 index 75852651..ee6d09ca 100644 --- a/public/md-articles/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 @@ -65,4 +65,4 @@ A short tip mentioned is to use type casting to avoid SQL Injection in a WHERE c - [Protection against SQL Injection using PDO and Zend Framework (part 1)](http://www.dotkernel.com/php-development/protection-against-sql-injection-using-pdo-and-zend-framework/) - [Secure Programming with the Zend Framework (Stefan Esser slides)](http://www.suspekt.org/downloads/DPC_Secure_Programming_With_The_Zend_Framework.pdf) -- [Type casting in PHP - what's the point?](http://www.dustinweber.com/main-page/type-casting-in-php-whats-the-point/) +- Type casting in PHP - what's the point? diff --git a/public/md-articles/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 index 5f2afc17..8ac12d2d 100644 --- a/public/md-articles/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 @@ -87,5 +87,5 @@ Both of these methods handle strings by putting them between single quotes. ## Resources -- [SQL Injection Protection in PHP With PDO (ezinearticles.com)](http://ezinearticles.com/?SQL-Injection-Protection-in-PHP-With-PDO&id=1815110) -- [Zend Webinar: Secure Application Development with the ZF](http://www.zend.com/webinar/Framework/70170000000bEs9-webinar-secure-application-development-with-the-ZF-20100505.flv) +- SQL Injection Protection in PHP With PDO (ezinearticles.com) +- Zend Webinar: Secure Application Development with the ZF diff --git a/public/md-articles/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 index 0bf4bd4b..811351fb 100644 --- a/public/md-articles/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 @@ -19,7 +19,7 @@ This article explains what Intl is used for, why it might be missing depending o PHP packages, frameworks, libraries, and scripts might require different PHP extensions. In this case, the Intl extension is needed to work with Internationalization Functions. -See [What is Internationalization?](https://www.gala-global.org/language-industry/intro-language-industry/what-internationalization) for background. +See What is Internationalization? for background. Have you seen any of these error messages? - Zend InputFilter requires intl PHP extension @@ -32,7 +32,7 @@ Parts of this tutorial can also serve as a guide for installing or enabling othe > Internationalization extension (further referred to as Intl) is a wrapper for the ICU library, enabling PHP programmers to perform various locale-aware operations including but not limited to formatting, transliteration, encoding conversion, and calendar operations. -Source: [PHP Documentation](http://php.net/manual/en/intro.intl.php) +Source: PHP Documentation > This extension may be installed using the bundled version as of PHP 5.3.0, or as a PECL extension as of PHP 5.2.0. In other words, there are two methods to install the intl extension. diff --git a/public/md-articles/zend-framework/sunsetting-pear-channel-for-zend-framework-1.md b/public/md-articles/zend-framework/sunsetting-pear-channel-for-zend-framework-1.md index 32e0e7f3..d5cdd1e8 100644 --- a/public/md-articles/zend-framework/sunsetting-pear-channel-for-zend-framework-1.md +++ b/public/md-articles/zend-framework/sunsetting-pear-channel-for-zend-framework-1.md @@ -16,7 +16,7 @@ Dotkernel is sunsetting its unofficial PEAR channel for Zend Framework 1, which The main reasons are that upgrading PEAR to work with PHP 8 is too painful, and the channel currently runs on an LXC container with CentOS 7, which doesn't work on the latest Proxmox version, making the upgrade to AlmaLinux not worth the effort. The post closes by thanking PEAR for its historical contribution to the PHP ecosystem. -The unofficial [PEAR channel for Zend Framework 1](http://pear.dotkernel.com/) was created in [2016](https://www.dotkernel.com/dotkernel/migration-of-zend-framework-1-pear-channel/), at the time when [PEAR](https://pear.php.net/) was still used a lot. +The unofficial PEAR channel for Zend Framework 1 was created in [2016](https://www.dotkernel.com/dotkernel/migration-of-zend-framework-1-pear-channel/), at the time when [PEAR](https://pear.php.net/) was still used a lot. Due to the fact that it is a pain to upgrade PEAR to work with PHP 8, we must sunset the channel. diff --git a/public/md-pages/frontend.md b/public/md-pages/frontend.md index ed6a2fd9..f6c62376 100644 --- a/public/md-pages/frontend.md +++ b/public/md-pages/frontend.md @@ -116,7 +116,7 @@ Frontend implements the second option, because deleting a user row is rarely wha The skeleton stores only what it needs to run those flows: first name, last name and the email address used as the identity, for password reset and account activation. Anonymizing replaces exactly those. -- [Anonymization reference](https://docs.dotkernel.org/frontend/v5/reference/account-anonymization/) +- Anonymization reference ### What anonymization changes diff --git a/src/App/src/Fixture/articles_cleaned.json b/src/App/src/Fixture/articles_cleaned.json index 642f3cb8..5718a934 100644 --- a/src/App/src/Fixture/articles_cleaned.json +++ b/src/App/src/Fixture/articles_cleaned.json @@ -695,7 +695,7 @@ "post_status": "publish", "author": { "display_name": "Jesper", - "github": "jesper@apidemia.dk" + "github": null }, "isObsolete": false, "opengraph_img": null, @@ -911,7 +911,7 @@ "post_status": "publish", "author": { "display_name": "Claudiu Pintiuta", - "github": "claudiu@rospace.com" + "github": "pinclau" }, "isObsolete": false, "opengraph_img": "/opengraph/article/twitter-card.png", @@ -1021,7 +1021,7 @@ "post_status": "archived", "author": { "display_name": "Stas", - "github": "stas@codelobster.com" + "github": null }, "isObsolete": false, "opengraph_img": null, @@ -1667,7 +1667,7 @@ "post_status": "publish", "author": { "display_name": "Jesper", - "github": "jesper@apidemia.dk" + "github": null }, "isObsolete": false, "opengraph_img": null, @@ -1681,7 +1681,7 @@ "post_status": "publish", "author": { "display_name": "Jesper", - "github": "jesper@apidemia.dk" + "github": null }, "isObsolete": false, "opengraph_img": null, diff --git a/src/Blog/templates/page/blog-resource/best-practice/sql-queries-using-zend-db-select.html.twig b/src/Blog/templates/page/blog-resource/best-practice/sql-queries-using-zend-db-select.html.twig index df91be21..e33d4c56 100644 --- a/src/Blog/templates/page/blog-resource/best-practice/sql-queries-using-zend-db-select.html.twig +++ b/src/Blog/templates/page/blog-resource/best-practice/sql-queries-using-zend-db-select.html.twig @@ -1,7 +1,7 @@ {% extends '@layout/blog-post.html.twig' %} {% block body %} -Zend_Db and its related classes provide a simple SQL database interface for Zend Framework. +Zend_Db and its related classes provide a simple SQL database interface for Zend Framework. To connect to MySql database, we are using Pdo_Mysql adapter :
 $db = Zend_Db::factory('Pdo_Mysql', $dbConnect);
diff --git a/src/Blog/templates/page/blog-resource/best-practice/what-are-returning-the-fetch-functions-from-zend-db.html.twig b/src/Blog/templates/page/blog-resource/best-practice/what-are-returning-the-fetch-functions-from-zend-db.html.twig
index 5bdaedf8..914909e9 100644
--- a/src/Blog/templates/page/blog-resource/best-practice/what-are-returning-the-fetch-functions-from-zend-db.html.twig
+++ b/src/Blog/templates/page/blog-resource/best-practice/what-are-returning-the-fetch-functions-from-zend-db.html.twig
@@ -1,7 +1,7 @@
 {% extends '@layout/blog-post.html.twig' %}
 
 {% block body %}
-Continuing the Zend_DB article series, we are stopping now at FETCH methods that are in Zend_Db_Adapter_Abstract:
+Continuing the Zend_DB article series, we are stopping now at FETCH methods that are in Zend_Db_Adapter_Abstract:
 
 array  fetchAll  (string|Zend_Db_Select $sql, , )
 array fetchAssoc (string|Zend_Db_Select $sql, [mixed $bind = array()])
diff --git a/src/Blog/templates/page/blog-resource/best-practice/why-use-current-timestamp-on-a-field-that-record-date-time.html.twig b/src/Blog/templates/page/blog-resource/best-practice/why-use-current-timestamp-on-a-field-that-record-date-time.html.twig
index 2d9019c0..4cd379f9 100644
--- a/src/Blog/templates/page/blog-resource/best-practice/why-use-current-timestamp-on-a-field-that-record-date-time.html.twig
+++ b/src/Blog/templates/page/blog-resource/best-practice/why-use-current-timestamp-on-a-field-that-record-date-time.html.twig
@@ -16,7 +16,7 @@ CURRENT_TIMESTAMP is also a solution for  updating date and time field
     
  • With no DEFAULT clause and with an ON UPDATE CURRENT_TIMESTAMP clause, the column has a default of 0 and is automatically updated.
  • With a constant DEFAULT value, the column has the given default and is not automatically initialized to the current timestamp. If the column also has an ON UPDATE CURRENT_TIMESTAMP clause, it is automatically updated; otherwise, it has a constant default and is not automatically updated.
  • -For more details check out MySQL Manual +For more details check out MySQL Manual Note*: Only one timestamp field can be DEFAULT CURRENT_TIMESTAMP in a table. diff --git a/src/Blog/templates/page/blog-resource/dotkernel-api/api-endpoint-to-collect-client-errors.html.twig b/src/Blog/templates/page/blog-resource/dotkernel-api/api-endpoint-to-collect-client-errors.html.twig index 870d6a92..eee3d56b 100644 --- a/src/Blog/templates/page/blog-resource/dotkernel-api/api-endpoint-to-collect-client-errors.html.twig +++ b/src/Blog/templates/page/blog-resource/dotkernel-api/api-endpoint-to-collect-client-errors.html.twig @@ -9,7 +9,7 @@

    We have created an endpoint where Clients can submit the error message when things are going down hill.

    -

    A simple POST to your Dotkernel API on route: https://api.dotkernel.net/error-report

    +

    A simple POST to your Dotkernel API on route: https://api.dotkernel.net/error-report

    With body:

    diff --git a/src/Blog/templates/page/blog-resource/dotkernel/adding-composer-support-in-your-dotkernel-project.html.twig b/src/Blog/templates/page/blog-resource/dotkernel/adding-composer-support-in-your-dotkernel-project.html.twig index 12e24b1e..7684f6f5 100644 --- a/src/Blog/templates/page/blog-resource/dotkernel/adding-composer-support-in-your-dotkernel-project.html.twig +++ b/src/Blog/templates/page/blog-resource/dotkernel/adding-composer-support-in-your-dotkernel-project.html.twig @@ -71,7 +71,7 @@ Later on, the packages can be used like this: $myDependency = new MyDependency($neededArguments); $myDependency->doSomething();
    -Learn more about how to use dependencies in Dotkernel 1.x by reading this article. +Learn more about how to use dependencies in Dotkernel 1.x by reading this article. This article works for any Dotkernel 1.x version if your server is running PHP >5.4.0. diff --git a/src/Blog/templates/page/blog-resource/dotkernel/autologin-using-cookie-remember-me-in-dotkernel.html.twig b/src/Blog/templates/page/blog-resource/dotkernel/autologin-using-cookie-remember-me-in-dotkernel.html.twig index 0779fd94..43db20e2 100644 --- a/src/Blog/templates/page/blog-resource/dotkernel/autologin-using-cookie-remember-me-in-dotkernel.html.twig +++ b/src/Blog/templates/page/blog-resource/dotkernel/autologin-using-cookie-remember-me-in-dotkernel.html.twig @@ -69,7 +69,7 @@
    vendor/bin/phinx create --configuration=config/migrations.php  RememberUserSchema
    -

    After the migration file is created modify it as in user_remember_schema and run the following command to add it to you database:

    +

    After the migration file is created modify it as in user_remember_schema and run the following command to add it to you database:

    vendor/bin/phinx migrate --configuration=config/migrations.php
    diff --git a/src/Blog/templates/page/blog-resource/dotkernel/doctrine-cache-using-symfony-cache.html.twig b/src/Blog/templates/page/blog-resource/dotkernel/doctrine-cache-using-symfony-cache.html.twig index eab1beb5..c3ea6f62 100644 --- a/src/Blog/templates/page/blog-resource/dotkernel/doctrine-cache-using-symfony-cache.html.twig +++ b/src/Blog/templates/page/blog-resource/dotkernel/doctrine-cache-using-symfony-cache.html.twig @@ -60,7 +60,7 @@ Doctrine hydration cache is a feature that stores the results of data hydration,

    How to use

    To enable caching for entities, need to add the  # attribute like in the following example:

    #
    #
    #
    class Admin extends AbstractEntity implements AdminInterface
    {
    }
    -

    For further details about the cache mode please refer to the official documentation.

    +

    For further details about the cache mode please refer to the official documentation.

    When querying data, you can have Doctrine cache your results. You do this by calling the setCacheable method on the query builder.

    $this->getQueryBuilder()
    ->select('admin')
    ->from(Admin::class, 'admin')
    ->setCacheable(true)
    ->getQuery()
    ->getResult();

    Caching is not limited to entities alone. Objects can be cached too. Check the basic cache usage for this purpose.

    diff --git a/src/Blog/templates/page/blog-resource/dotkernel/migration-of-zend-framework-1-pear-channel.html.twig b/src/Blog/templates/page/blog-resource/dotkernel/migration-of-zend-framework-1-pear-channel.html.twig index bea5ab47..dbf41ae2 100644 --- a/src/Blog/templates/page/blog-resource/dotkernel/migration-of-zend-framework-1-pear-channel.html.twig +++ b/src/Blog/templates/page/blog-resource/dotkernel/migration-of-zend-framework-1-pear-channel.html.twig @@ -5,7 +5,7 @@ The unofficial PEAR channel for Zend Framework 1 was hosted on Zend Framework 1 is still used by a lot of  projects in Production, it's still a viable library collection  and it's also  running on  PHP7 ; even if is only in maintenance/security-patch mode, so it's not an option to cancel it completely. -We were unable to migrate the project on github.com since the size of the repository is more then 1 GB. We resorted to building a special server that will host only the PEAR channel for Zend Framework 1 and we are commited to keep it live and running for the long term. +We were unable to migrate the project on github.com since the size of the repository is more then 1 GB. We resorted to building a special server that will host only the PEAR channel for Zend Framework 1 and we are commited to keep it live and running for the long term. Instructions on how to use the new channel can be found below .

    PEAR Channel Migration Guide

    diff --git a/src/Blog/templates/page/blog-resource/dotkernel3/development-report-december-11-2017.html.twig b/src/Blog/templates/page/blog-resource/dotkernel3/development-report-december-11-2017.html.twig index 2495ca22..867fcfa0 100644 --- a/src/Blog/templates/page/blog-resource/dotkernel3/development-report-december-11-2017.html.twig +++ b/src/Blog/templates/page/blog-resource/dotkernel3/development-report-december-11-2017.html.twig @@ -3,19 +3,19 @@ {% block body %} This report contains updates about the Dotkernel3 documentation. -We have added the release notes for Dotkernel3 frontend and admin: you can now check the Release Notes page. +We have added the release notes for Dotkernel3 frontend and admin: you can now check the Release Notes page. -Webpack tutorial has been added in the Prerequisites section. +Webpack tutorial has been added in the Prerequisites section. -The Api Endpoint Documentation Guidelines were updated as well, a slightly different layout and some corrections were applied. +The Api Endpoint Documentation Guidelines were updated as well, a slightly different layout and some corrections were applied.   Links:   diff --git a/src/Blog/templates/page/blog-resource/dotkernel3/dotkernel-admin-v4.html.twig b/src/Blog/templates/page/blog-resource/dotkernel3/dotkernel-admin-v4.html.twig index 7eaa1fcf..484d5f8b 100644 --- a/src/Blog/templates/page/blog-resource/dotkernel3/dotkernel-admin-v4.html.twig +++ b/src/Blog/templates/page/blog-resource/dotkernel3/dotkernel-admin-v4.html.twig @@ -19,7 +19,7 @@ -

    Head over to https://admin4.dotkernel.net/ and see for yourself :)

    +

    Head over to https://admin4.dotkernel.net/ and see for yourself :)

    Dotkernel Admin V4 Features

    diff --git a/src/Blog/templates/page/blog-resource/dotkernel3/dotkernel-admin-version-3-launched.html.twig b/src/Blog/templates/page/blog-resource/dotkernel3/dotkernel-admin-version-3-launched.html.twig index 8ad53f2c..acc4ecd8 100644 --- a/src/Blog/templates/page/blog-resource/dotkernel3/dotkernel-admin-version-3-launched.html.twig +++ b/src/Blog/templates/page/blog-resource/dotkernel3/dotkernel-admin-version-3-launched.html.twig @@ -4,7 +4,7 @@

    Dotkernel Admin PHP Application version 3 was launched.

    -


    +


    Dotkernel is a Collection of PSR-7 Middleware applications built on top of Mezzio microframework and using Laminas components

    @@ -15,7 +15,7 @@

    You can clone it from github

    -

    Live demo: admin.dotkernel.net

    +

    Live demo: admin.dotkernel.net

    Changelog:

    diff --git a/src/Blog/templates/page/blog-resource/dotkernel3/dotkernel-frontend-version-3-launched.html.twig b/src/Blog/templates/page/blog-resource/dotkernel3/dotkernel-frontend-version-3-launched.html.twig index afb4fb61..455a8108 100644 --- a/src/Blog/templates/page/blog-resource/dotkernel3/dotkernel-frontend-version-3-launched.html.twig +++ b/src/Blog/templates/page/blog-resource/dotkernel3/dotkernel-frontend-version-3-launched.html.twig @@ -3,7 +3,7 @@ {% block body %}

    Dotkernel Frontend PHP Application version 3 was launched.

    -

    +

    diff --git a/src/Blog/templates/page/blog-resource/how-to/doctrine-cache-in-mezzio-and-dotkernel.html.twig b/src/Blog/templates/page/blog-resource/how-to/doctrine-cache-in-mezzio-and-dotkernel.html.twig index 8ff76d0e..7fbb47a6 100644 --- a/src/Blog/templates/page/blog-resource/how-to/doctrine-cache-in-mezzio-and-dotkernel.html.twig +++ b/src/Blog/templates/page/blog-resource/how-to/doctrine-cache-in-mezzio-and-dotkernel.html.twig @@ -12,7 +12,7 @@

    Using an ORM in production without any sort of cache strategy is a very bad move. The Database server chokes; lots of CPU cycles wasted only to generate metadata and queries over and over again at each request; the system slows down and so on.

    -

    Following Doctrine documentation [ +

    Following Doctrine documentation [ 'orm_default' => [ // it is recommended to disable doctrine cache on development // just comment any type of cache you dont want to be applied on development @@ -174,9 +174,9 @@ class MyCollection extends Paginator

    References

    - -

    Configurations

    -

    Main Configuration

    +

    Configurations

    +

    Main Configuration

    In config/config.php add the following config providers:
    // zend expressive & middleware factory
    @@ -92,7 +92,7 @@ In config/config.php add the following config providers:
     \Zend\HttpHandlerRunner\ConfigProvider::class,
    Make sure they are the first ConfigProviders or before cached config (ArrayProvider) -

    Routing

    +

    Routing

    Wrap routing from config/routes.php in a callable with the following format:
    return function (Application $app, MiddlewareFactory $factory, ContainerInterface $container) : void {
    @@ -106,7 +106,7 @@ add the following use statements and make sure the names are not duplicate:
     use Zend\Expressive\Application;
     use Zend\Expressive\MiddlewareFactory;
    -

    Pipeline

    +

    Pipeline

    Wrap routing from config/pipeline.php in a callable with the following format:
    return function (Application $app, MiddlewareFactory $factory, ContainerInterface $container) : void {
    @@ -120,7 +120,7 @@ add the following use statements and make sure the names are not duplicate:
     use Zend\Expressive\Application;
     use Zend\Expressive\MiddlewareFactory;
    -

    Routing middleware migration

    +

    Routing middleware migration

    add the following use statements
    use Zend\Expressive\Router\Middleware\RouteMiddleware;
    @@ -136,7 +136,7 @@ You can check the complete guides and example files from the following links
     
     Migration guide for Dotkernel Frontend: github.com/dotkernel/frontend/tree/master/docs
     
    -Migration guide for Dotkernel Admin: github.com/dotkernel/admin/tree/master/docs
    +Migration guide for Dotkernel Admin: github.com/dotkernel/admin/tree/master/docs
     
     

    Frequently Asked Questions

    diff --git a/src/Blog/templates/page/blog-resource/how-to/what-is-psr-7-and-how-to-use-it.html.twig b/src/Blog/templates/page/blog-resource/how-to/what-is-psr-7-and-how-to-use-it.html.twig index eaf99fc3..68aa1db2 100644 --- a/src/Blog/templates/page/blog-resource/how-to/what-is-psr-7-and-how-to-use-it.html.twig +++ b/src/Blog/templates/page/blog-resource/how-to/what-is-psr-7-and-how-to-use-it.html.twig @@ -62,7 +62,7 @@ $body->write($contents); // stream contains "efabcd"

    Note: getContents() seeks the stream while reading it, therefore if the second rewind() method call was not present the stream would have resulted in abcdefabcd because the write() method appends to stream if not preceeded by rewind() or seek(0).

    Prepending by using contents as a string

    $body = $response->getBody();
     $body->rewind(); // or $body->seek(0);
     $bodyText = $body->getContends();
    -

    More information can be found in the PSR-7 article in Dotkernel3 documentation portal.

    Sources: PSR-7: HTTP messages zend-diactoros

    +

    More information can be found in the PSR-7 article in Dotkernel3 documentation portal.

    Sources: PSR-7: HTTP messages zend-diactoros

    Frequently Asked Questions

    diff --git a/src/Blog/templates/page/blog-resource/middleware/replacing-controllers-with-psr-15-compliant-handlers-in-dotkernel-light.html.twig b/src/Blog/templates/page/blog-resource/middleware/replacing-controllers-with-psr-15-compliant-handlers-in-dotkernel-light.html.twig index 264be730..2e40c962 100644 --- a/src/Blog/templates/page/blog-resource/middleware/replacing-controllers-with-psr-15-compliant-handlers-in-dotkernel-light.html.twig +++ b/src/Blog/templates/page/blog-resource/middleware/replacing-controllers-with-psr-15-compliant-handlers-in-dotkernel-light.html.twig @@ -161,7 +161,7 @@ class GetPageViewHandler implements RequestHandlerInterface

    Mezzio features

    -

    Single Action Handlers in PHP Frameworks

    +

    Single Action Handlers in PHP Frameworks

    {% endblock %} diff --git a/src/Blog/templates/page/blog-resource/php-development/mezzio-app-development-in-wsl2.html.twig b/src/Blog/templates/page/blog-resource/php-development/mezzio-app-development-in-wsl2.html.twig index d524f678..b823c747 100644 --- a/src/Blog/templates/page/blog-resource/php-development/mezzio-app-development-in-wsl2.html.twig +++ b/src/Blog/templates/page/blog-resource/php-development/mezzio-app-development-in-wsl2.html.twig @@ -11,11 +11,11 @@

    Step 2:

    -

    Install Ubuntu 20.0 LTS inside WLS2 as described here.

    +

    Install Ubuntu 20.0 LTS inside WLS2 as described here.

    Step 3:

    -

    Create a virtualhost for your project using this guide.

    +

    Create a virtualhost for your project using this guide.

    Step 4:

    @@ -25,7 +25,7 @@

    Install Dotkernel API, by following this guide.

    -

    Make sure your data and log directories are writable by changing their permissions, as described here.

    +

    Make sure your data and log directories are writable by changing their permissions, as described here.

    Step 5:

    diff --git a/src/Blog/templates/page/blog-resource/php-development/protection-against-sql-injection-using-pdo-and-zend-framework-part-2.html.twig b/src/Blog/templates/page/blog-resource/php-development/protection-against-sql-injection-using-pdo-and-zend-framework-part-2.html.twig index 19550888..0a832dec 100644 --- a/src/Blog/templates/page/blog-resource/php-development/protection-against-sql-injection-using-pdo-and-zend-framework-part-2.html.twig +++ b/src/Blog/templates/page/blog-resource/php-development/protection-against-sql-injection-using-pdo-and-zend-framework-part-2.html.twig @@ -5,25 +5,25 @@ Following the preview article about query (mixed $sql, [mixed $bind = array()]) +
  • query (mixed $sql, [mixed $bind = array()])
    • use prepare statements internally
    • but SQL Injection is still possible if $sql is dynamically created
  • -
  • fetchAll (string|Zend_Db_Select $sql, , ) +
  • fetchAll (string|Zend_Db_Select $sql, , )
    • all the fetch methods are using prepared statements internally
    • but SQL Injection is still possible if $sql is dynamically created
  • -
  • insert (mixed $table,  $bind) +
  • insert (mixed $table,  $bind)
    • use prepare statements internally
    • so, SQL Injection is not possible
  • -
  • update (mixed $table,  $bind, [mixed $where = '']) +
  • update (mixed $table,  $bind, [mixed $where = ''])
    • use prepare statements internally
    @@ -31,7 +31,7 @@ What you should know about their methods is:
  • but SQL Injection may be possible if $where is created dynamically
  • -
  • delete (mixed $table, [mixed $where = '']) +
  • delete (mixed $table, [mixed $where = ''])
    • SQL Injection may be possible if $where is created dynamically
    @@ -41,7 +41,7 @@ What you should know about their methods is: For more details see Stefan Esser slides. -PS. A short tip, you can use cast type to avoid SQL Injection in WHERE clause where is possible. +PS. A short tip, you can use cast type to avoid SQL Injection in WHERE clause where is possible.
    $sql= 'SELECT * FROM table WHERE id = ' . (int)$_POST['id'];
     
    diff --git a/src/Blog/templates/page/blog-resource/php-development/protection-against-sql-injection-using-pdo-and-zend-framework.html.twig b/src/Blog/templates/page/blog-resource/php-development/protection-against-sql-injection-using-pdo-and-zend-framework.html.twig index ed99b3d3..fab6bfb1 100644 --- a/src/Blog/templates/page/blog-resource/php-development/protection-against-sql-injection-using-pdo-and-zend-framework.html.twig +++ b/src/Blog/templates/page/blog-resource/php-development/protection-against-sql-injection-using-pdo-and-zend-framework.html.twig @@ -22,9 +22,9 @@ Zend_Db has two escaping methods which can be used: quote() and quo For more details see: -http://ezinearticles.com/?SQL-Injection-Protection-in-PHP-With-PDO&id=1815110 +SQL Injection Protection in PHP With PDO (ezinearticles.com) -http://www.zend.com/webinar/Framework/70170000000bEs9-webinar-secure-application-development-with-the-ZF-20100505.flv +Zend Webinar: Secure Application Development with the ZF

    Frequently Asked Questions

    diff --git a/src/Blog/templates/page/blog-resource/php-troubleshooting/where-is-the-intl-php-extension-problem-solved.html.twig b/src/Blog/templates/page/blog-resource/php-troubleshooting/where-is-the-intl-php-extension-problem-solved.html.twig index 7dfa4846..1f00f681 100644 --- a/src/Blog/templates/page/blog-resource/php-troubleshooting/where-is-the-intl-php-extension-problem-solved.html.twig +++ b/src/Blog/templates/page/blog-resource/php-troubleshooting/where-is-the-intl-php-extension-problem-solved.html.twig @@ -4,7 +4,7 @@

    Problem

    PHP packages/frameworks/libraries/scripts we work with might require different PHP extensions. In this case the Intl extension is needed to work with using Internationalization Functions. -What is Internationalization? +What is Internationalization? Got any of these error messages?
      @@ -18,7 +18,7 @@ This happened because the PHP Intl extension isn't installed or enabled. Parts of this tutorial can be also a guide for installing or enabling other extensions.

      What is PHP Intl?

      Internationalization extension (further is referred as Intl) is a wrapper for » ICU library, enabling PHP programmers to perform various locale-aware operations including but not limited to formatting, transliteration, encoding conversion, calendar operations
      -Source: PHP Documentation +Source: PHP Documentation
      This extension may be installed using the bundled version as of PHP 5.3.0, or as a PECL extension as of PHP 5.2.0. In other words, there are two methods to install the intl extension.
      Source: PHP Documentation

      Cause

      diff --git a/src/Blog/templates/page/blog-resource/zend-framework/sunsetting-pear-channel-for-zend-framework-1.html.twig b/src/Blog/templates/page/blog-resource/zend-framework/sunsetting-pear-channel-for-zend-framework-1.html.twig index 4b2955b8..5214a3e4 100644 --- a/src/Blog/templates/page/blog-resource/zend-framework/sunsetting-pear-channel-for-zend-framework-1.html.twig +++ b/src/Blog/templates/page/blog-resource/zend-framework/sunsetting-pear-channel-for-zend-framework-1.html.twig @@ -3,7 +3,7 @@ {% block body %}

      Sunsetting PEAR Channel for Zend Framework 1

      -

      The unofficial PEAR channel for Zend Framework 1 was created in 2016 , at the time when PEAR was still used a lot.

      +

      The unofficial PEAR channel for Zend Framework 1 was created in 2016 , at the time when PEAR was still used a lot.

      diff --git a/src/Page/templates/page/frontend.html.twig b/src/Page/templates/page/frontend.html.twig index d0f7fe64..24b7d500 100644 --- a/src/Page/templates/page/frontend.html.twig +++ b/src/Page/templates/page/frontend.html.twig @@ -351,7 +351,7 @@ exactly those.

      - Anonymization reference + Anonymization reference
      From 5be7529d6345cbbf0477ce2862376cb4cc01eb02 Mon Sep 17 00:00:00 2001 From: OStefan2001 Date: Tue, 18 Aug 2026 10:44:04 +0300 Subject: [PATCH 2/6] keep only text to 404 links --- public/md-articles/dotkernel/templating-in-dotkernel3.md | 2 +- .../blog-resource/dotkernel/templating-in-dotkernel3.html.twig | 2 +- .../php-environment-development-staging-production.html.twig | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/public/md-articles/dotkernel/templating-in-dotkernel3.md b/public/md-articles/dotkernel/templating-in-dotkernel3.md index 44a58980..70df4e10 100644 --- a/public/md-articles/dotkernel/templating-in-dotkernel3.md +++ b/public/md-articles/dotkernel/templating-in-dotkernel3.md @@ -48,4 +48,4 @@ A: The official documentation is linked in the article at docs.dotkernel.com/Pre ## Resources - [Twig Templating Engine](https://twig.symfony.com/) -- [Dotkernel Templates documentation](https://docs.dotkernel.com/Prerequisites/Templates) +- Dotkernel Templates documentation diff --git a/src/Blog/templates/page/blog-resource/dotkernel/templating-in-dotkernel3.html.twig b/src/Blog/templates/page/blog-resource/dotkernel/templating-in-dotkernel3.html.twig index 3f7ec539..2bd93cae 100644 --- a/src/Blog/templates/page/blog-resource/dotkernel/templating-in-dotkernel3.html.twig +++ b/src/Blog/templates/page/blog-resource/dotkernel/templating-in-dotkernel3.html.twig @@ -15,7 +15,7 @@ In Dotkernel 3, we made the move to the popular Templates +You can read the official documentation here: Templates

      Frequently Asked Questions

      diff --git a/src/Blog/templates/page/blog-resource/php-development/php-environment-development-staging-production.html.twig b/src/Blog/templates/page/blog-resource/php-development/php-environment-development-staging-production.html.twig index b02c81cb..b50819eb 100644 --- a/src/Blog/templates/page/blog-resource/php-development/php-environment-development-staging-production.html.twig +++ b/src/Blog/templates/page/blog-resource/php-development/php-environment-development-staging-production.html.twig @@ -13,7 +13,7 @@ It is the “live” environment, where the final application goes out To switch from one environment to another use the Subversion source code. -Using SVN on Aptana is an article that explains how to set your development environment on your local computer and then to change it on your staging environment. +Using SVN on Aptana is an article that explains how to set your development environment on your local computer and then to change it on your staging environment. To better understand the development of an application using environments, check this helpful article http://dltj.org/article/software-development-practice/ From 4031f48e68e7b4eeada4463dac611dd6140e30d9 Mon Sep 17 00:00:00 2001 From: OStefan2001 Date: Tue, 18 Aug 2026 14:45:25 +0300 Subject: [PATCH 3/6] Alternative to broken link --- .../sql-queries-using-zend-db-select.md | 2 +- ...ent-timestamp-on-a-field-that-record-date-time.md | 2 +- .../dotkernel/doctrine-cache-using-symfony-cache.md | 2 +- public/md-articles/dotkernel3/dotkernel-admin-v4.md | 4 ++-- .../dotkernel3/dotkernel-admin-version-3-launched.md | 6 +++--- .../how-to/doctrine-cache-in-mezzio-and-dotkernel.md | 6 +++--- ...-3-from-zend-expressive-2-to-zend-expressive-3.md | 2 +- .../mezzio-app-development-in-wsl2.md | 12 ++++++------ ...where-is-the-intl-php-extension-problem-solved.md | 4 ++-- public/md-pages/frontend.md | 2 +- .../dotkernel3/dotkernel-admin-v4.jsonld.twig | 2 +- .../dotkernel-admin-version-3-launched.jsonld.twig | 2 +- .../sql-queries-using-zend-db-select.html.twig | 2 +- ...urning-the-fetch-functions-from-zend-db.html.twig | 2 +- ...estamp-on-a-field-that-record-date-time.html.twig | 2 +- .../doctrine-cache-using-symfony-cache.html.twig | 2 +- .../dotkernel3/dotkernel-admin-v4.html.twig | 4 ++-- .../dotkernel-admin-version-3-launched.html.twig | 6 +++--- .../dotkernel-frontend-version-3-launched.html.twig | 2 +- .../doctrine-cache-in-mezzio-and-dotkernel.html.twig | 6 +++--- ...-zend-expressive-2-to-zend-expressive-3.html.twig | 2 +- .../mezzio-app-development-in-wsl2.html.twig | 6 +++--- ...ion-using-pdo-and-zend-framework-part-2.html.twig | 10 +++++----- ...s-the-intl-php-extension-problem-solved.html.twig | 4 ++-- src/Page/templates/page/frontend.html.twig | 2 +- 25 files changed, 48 insertions(+), 48 deletions(-) diff --git a/public/md-articles/best-practice/sql-queries-using-zend-db-select.md b/public/md-articles/best-practice/sql-queries-using-zend-db-select.md index 64806140..5c75755e 100644 --- a/public/md-articles/best-practice/sql-queries-using-zend-db-select.md +++ b/public/md-articles/best-practice/sql-queries-using-zend-db-select.md @@ -127,7 +127,7 @@ A: Before fetching it, echo the query to visualize it: echo $select->__toString( ## Resources -- Zend_Db +- [Zend_Db](https://docs.laminas.dev/laminas-db/adapter/) - [What are returning the FETCH functions from Zend_Db](http://www.dotkernel.com/best-practice/sql-fetch-zend-db/) - [Subqueries with Zend_Db](http://www.dotkernel.com/best-practice/subqueris-with-zend-db/) - [INSERT, UPDATE, DELETE statements with Zend_Db](http://www.dotkernel.com/best-practice/iud-statements-with-zend-d/) diff --git a/public/md-articles/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 index 123bc0ef..3cd79671 100644 --- a/public/md-articles/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 @@ -45,7 +45,7 @@ DEFAULT and ON UPDATE clauses can be used together or separately, depending on y - With a constant `DEFAULT` value, the column has the given default and is not automatically initialized to the current timestamp. If the column also has an `ON UPDATE CURRENT_TIMESTAMP` clause, it is automatically updated; otherwise, it has a constant default and is not automatically updated. -For more details, check out the MySQL Manual. +For more details, check out the [MySQL Manual](https://dev.mysql.com/doc/refman/8.0/en/timestamp.html). Note: only one timestamp field can be `DEFAULT CURRENT_TIMESTAMP` in a table. diff --git a/public/md-articles/dotkernel/doctrine-cache-using-symfony-cache.md b/public/md-articles/dotkernel/doctrine-cache-using-symfony-cache.md index 5a374880..65bcfa97 100644 --- a/public/md-articles/dotkernel/doctrine-cache-using-symfony-cache.md +++ b/public/md-articles/dotkernel/doctrine-cache-using-symfony-cache.md @@ -104,7 +104,7 @@ class Admin extends AbstractEntity implements AdminInterface } ``` -For further details about the cache mode please refer to the official documentation. +For further details about the cache mode please refer to the [official documentation](https://www.doctrine-project.org/projects/doctrine-orm/en/latest/reference/second-level-cache.html). When querying data, you can have Doctrine cache your results. You do this by calling the `setCacheable` method on the query builder. diff --git a/public/md-articles/dotkernel3/dotkernel-admin-v4.md b/public/md-articles/dotkernel3/dotkernel-admin-v4.md index 1143a270..f86cbef6 100644 --- a/public/md-articles/dotkernel3/dotkernel-admin-v4.md +++ b/public/md-articles/dotkernel3/dotkernel-admin-v4.md @@ -31,7 +31,7 @@ There should be an admin account with the following credentials: - Username: admin - Password: dotadmin -Head over to https://admin4.dotkernel.net/ and see for yourself. +Head over to [https://admin7.dotkernel.net/](https://admin7.dotkernel.net/) and see for yourself. ## Dotkernel Admin V4 Features @@ -226,7 +226,7 @@ Note: you'll find in the `#tableToolbar` buttons that toggle a modal for adding/ A: Dotkernel Admin V4 was officially released on 19 July 2022. It's Dotkernel's PSR-7 Admin, an application based on Mezzio, mainly for managing and displaying tabular data from one or more database components. **Q: What are the demo credentials for trying out Dotkernel Admin V4?** -A: Username admin and password dotadmin, on the demo at https://admin4.dotkernel.net/. +A: Username admin and password dotadmin, on the demo at https://admin7.dotkernel.net/. **Q: What PHP version does Dotkernel Admin V4 support?** A: Full support for PHP 8.1, with a minimum requirement of PHP 7.4. diff --git a/public/md-articles/dotkernel3/dotkernel-admin-version-3-launched.md b/public/md-articles/dotkernel3/dotkernel-admin-version-3-launched.md index caa082a1..73facea6 100644 --- a/public/md-articles/dotkernel3/dotkernel-admin-version-3-launched.md +++ b/public/md-articles/dotkernel3/dotkernel-admin-version-3-launched.md @@ -13,7 +13,7 @@ language: "en" ## TL;DR Dotkernel Admin version 3 has launched as a basic admin panel built on Bootstrap ^4.5.0 and Doctrine, performing CRUD operations over a database on top of the Mezzio microframework and Laminas components. -The source is available on GitHub, with a live demo running at admin.dotkernel.net. +The source is available on GitHub, with a live demo running at admin7.dotkernel.net. Branch 3.0 is now the default branch, requiring Mezzio ^3.2, PHP ^7.4, Doctrine 2.7.x, Twig 3.x, and Bootstrap 4.5, with dot-* packages limited to version 3.x and above. ## Dotkernel Admin PHP Application Version 3 Was Launched @@ -21,7 +21,7 @@ Branch 3.0 is now the default branch, requiring Mezzio ^3.2, PHP ^7.4, Doctrine Dotkernel is a collection of PSR-7 Middleware applications built on top of the [Mezzio microframework and using Laminas components](https://getlaminas.org/). Dotkernel Admin is a basic admin panel, based on Bootstrap ^4.5.0, using Doctrine and performing basic CRUD operations over a database. You can clone it from [GitHub](https://github.com/dotkernel/admin). -Live demo: admin.dotkernel.net +Live demo: [admin7.dotkernel.net](https://admin7.dotkernel.net) ### Changelog @@ -40,7 +40,7 @@ Branch 3.0 is the current and default branch, and: A: A basic admin panel based on Bootstrap ^4.5.0, using Doctrine to perform basic CRUD operations over a database, built as a collection of PSR-7 Middleware applications on top of Mezzio and Laminas components. **Q: Where can you see a live demo of version 3?** -A: At admin.dotkernel.net. +A: At admin7.dotkernel.net. **Q: What are the core requirements listed in the version 3 changelog?** A: Mezzio ^3.2, PHP ^7.4, Doctrine 2.7.x, and Twig 3.x, plus Bootstrap 4.5, with dot-* packages limited to version 3.x and above. diff --git a/public/md-articles/how-to/doctrine-cache-in-mezzio-and-dotkernel.md b/public/md-articles/how-to/doctrine-cache-in-mezzio-and-dotkernel.md index fccbbf8e..b02a0c90 100644 --- a/public/md-articles/how-to/doctrine-cache-in-mezzio-and-dotkernel.md +++ b/public/md-articles/how-to/doctrine-cache-in-mezzio-and-dotkernel.md @@ -23,7 +23,7 @@ Note: a 2024 follow-up article covers the same topic using Symfony Cache instead Using an ORM in production without any sort of cache strategy is a very bad move. The database server chokes; lots of CPU cycles wasted only to generate metadata and queries over and over again at each request; the system slows down and so on. -Following Doctrine documentation, we choose to configure the Doctrine cache system through psr/container. +Following [Doctrine documentation](https://www.doctrine-project.org/projects/doctrine-orm/en/latest/reference/caching.html#integrating-with-the-orm), we choose to configure the Doctrine cache system through psr/container. The main parts we are going to use are `query_cache`, `metadata_cache` and `result_cache`. As cache type we choose `PhpFileCache` and for result cache we are setting a lifetime of 3600 seconds. @@ -181,5 +181,5 @@ A: Enable result and/or query cache on the query builder's query before passing ## Resources -- Doctrine Advanced Configuration -- Doctrine Caching Documentation +- [Doctrine Advanced Configuration](https://www.doctrine-project.org/projects/doctrine-orm/en/latest/reference/advanced-configuration.html) +- [Doctrine Caching Documentation](https://www.doctrine-project.org/projects/doctrine-orm/en/latest/reference/caching.html) diff --git a/public/md-articles/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 index 55ccc85d..9bed1a20 100644 --- a/public/md-articles/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 @@ -150,7 +150,7 @@ Replace the following lines to reflect the changes: You can check the complete guides and example files from the following links: - [Migration guide for Dotkernel Frontend](https://github.com/dotkernel/frontend/tree/master/docs) -- Migration guide for Dotkernel Admin: github.com/dotkernel/admin/tree/master/docs +- [Migration guide for Dotkernel Admin](https://docs.dotkernel.org/admin-documentation/) (the old `github.com/dotkernel/admin/tree/master/docs` folder has since moved to this documentation site) ## FAQ diff --git a/public/md-articles/php-development/mezzio-app-development-in-wsl2.md b/public/md-articles/php-development/mezzio-app-development-in-wsl2.md index 991d843f..cbf36b48 100644 --- a/public/md-articles/php-development/mezzio-app-development-in-wsl2.md +++ b/public/md-articles/php-development/mezzio-app-development-in-wsl2.md @@ -17,8 +17,8 @@ This article runs through the steps of installing a Mezzio application (Dotkerne ## Steps 1. Make sure WSL2 is installed on your machine, following the [WSL2 installation guide](https://github.com/dotkernel/development/blob/main/wsl/README.md). -2. Install Ubuntu 20.04 LTS inside WSL2, as described in the Ubuntu 20 setup guide. -3. Create a virtual host for your project using the virtual hosts guide. +2. Install Ubuntu 20.04 LTS inside WSL2, as described in the [Ubuntu 20 setup guide](https://docs.dotkernel.org/development/v2/running/) (the current version of this guide covers AlmaLinux 9, the distro the WSL setup has since moved to). +3. Create a virtual host for your project using the [virtual hosts guide](https://docs.dotkernel.org/development/v2/virtualhosts/create-virtualhost/). 4. Using your terminal, move into the virtual host directory you just created: ```shell @@ -26,7 +26,7 @@ This article runs through the steps of installing a Mezzio application (Dotkerne ``` Install Dotkernel API by following the [Dotkernel API guide](https://github.com/dotkernel/api). -Make sure the `data` and `log` directories are writable by changing their permissions, as described in the common permission issues guide. +Make sure the `data` and `log` directories are writable by changing their permissions, as described in the [common permission issues guide](https://docs.dotkernel.org/development/v2/faq/#how-do-i-fix-common-permission-issues). 5. Set up PHPStorm to work with WSL2 files, as described in the [JetBrains WSL development environment article](https://www.jetbrains.com/help/phpstorm/how-to-use-wsl-development-environment-in-product.html). ## Note @@ -57,8 +57,8 @@ A: There is a guide for AlmaLinux 8 as well, but it is not fully functional beca ## Resources - [WSL2 installation guide](https://github.com/dotkernel/development/blob/main/wsl/README.md) -- Ubuntu 20 setup inside WSL2 -- Create virtual hosts guide +- [Ubuntu 20 setup inside WSL2](https://docs.dotkernel.org/development/v2/running/) +- [Create virtual hosts guide](https://docs.dotkernel.org/development/v2/virtualhosts/create-virtualhost/) - [Dotkernel API installation guide](https://github.com/dotkernel/api) -- Fix common permission issues +- [Fix common permission issues](https://docs.dotkernel.org/development/v2/faq/#how-do-i-fix-common-permission-issues) - [Using WSL development environment in PHPStorm](https://www.jetbrains.com/help/phpstorm/how-to-use-wsl-development-environment-in-product.html) diff --git a/public/md-articles/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 index 811351fb..30467f4d 100644 --- a/public/md-articles/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 @@ -19,7 +19,7 @@ This article explains what Intl is used for, why it might be missing depending o PHP packages, frameworks, libraries, and scripts might require different PHP extensions. In this case, the Intl extension is needed to work with Internationalization Functions. -See What is Internationalization? for background. +See [What is Internationalization?](https://www.w3.org/International/questions/qa-i18n) for background. Have you seen any of these error messages? - Zend InputFilter requires intl PHP extension @@ -32,7 +32,7 @@ Parts of this tutorial can also serve as a guide for installing or enabling othe > Internationalization extension (further referred to as Intl) is a wrapper for the ICU library, enabling PHP programmers to perform various locale-aware operations including but not limited to formatting, transliteration, encoding conversion, and calendar operations. -Source: PHP Documentation +Source: [PHP Documentation](https://www.php.net/manual/en/book.intl.php) > This extension may be installed using the bundled version as of PHP 5.3.0, or as a PECL extension as of PHP 5.2.0. In other words, there are two methods to install the intl extension. diff --git a/public/md-pages/frontend.md b/public/md-pages/frontend.md index f6c62376..6c58f094 100644 --- a/public/md-pages/frontend.md +++ b/public/md-pages/frontend.md @@ -116,7 +116,7 @@ Frontend implements the second option, because deleting a user row is rarely wha The skeleton stores only what it needs to run those flows: first name, last name and the email address used as the identity, for password reset and account activation. Anonymizing replaces exactly those. -- Anonymization reference +- [Anonymization reference](https://docs.dotkernel.org/frontend-documentation/v5/reference/account-anonymization/) ### What anonymization changes diff --git a/src/Blog/templates/page/JSON-LD/dotkernel3/dotkernel-admin-v4.jsonld.twig b/src/Blog/templates/page/JSON-LD/dotkernel3/dotkernel-admin-v4.jsonld.twig index 35a928d6..791af397 100644 --- a/src/Blog/templates/page/JSON-LD/dotkernel3/dotkernel-admin-v4.jsonld.twig +++ b/src/Blog/templates/page/JSON-LD/dotkernel3/dotkernel-admin-v4.jsonld.twig @@ -42,7 +42,7 @@ "@id": "{{ app.url ~ path('page::blog-resource', {categorySlug: article.category.slug, slug: article.slug}) }}#faq", "mainEntity": [ { "@type": "Question", "name": "When was Dotkernel Admin V4 released, and what is it built on?", "acceptedAnswer": { "@type": "Answer", "text": "Dotkernel Admin V4 was officially released on 19 July 2022. It's Dotkernel's PSR-7 Admin, an application based on Mezzio, mainly for managing and displaying tabular data from one or more database components." } }, - { "@type": "Question", "name": "What are the demo credentials for trying out Dotkernel Admin V4?", "acceptedAnswer": { "@type": "Answer", "text": "Username admin and password dotadmin, on the demo at https://admin4.dotkernel.net/." } }, + { "@type": "Question", "name": "What are the demo credentials for trying out Dotkernel Admin V4?", "acceptedAnswer": { "@type": "Answer", "text": "Username admin and password dotadmin, on the demo at https://admin7.dotkernel.net/." } }, { "@type": "Question", "name": "What PHP version does Dotkernel Admin V4 support?", "acceptedAnswer": { "@type": "Answer", "text": "Full support for PHP 8.1, with a minimum requirement of PHP 7.4." } }, { "@type": "Question", "name": "How do you register a new module or middleware?", "acceptedAnswer": { "@type": "Answer", "text": "Register a module by adding its ConfigProvider.php in config.php. New middleware goes into pipeline.php, where you can also edit the order in which middleware runs." } }, { "@type": "Question", "name": "What packages provide the authorization guards?", "acceptedAnswer": { "@type": "Answer", "text": "dot-rbac-guard and dot-rbac work together to restrict access based on user role. authorization.global.php defines roles and their permissions, while authorization-guards.global.php restricts specific actions to those permissions." } }, diff --git a/src/Blog/templates/page/JSON-LD/dotkernel3/dotkernel-admin-version-3-launched.jsonld.twig b/src/Blog/templates/page/JSON-LD/dotkernel3/dotkernel-admin-version-3-launched.jsonld.twig index 2e4b39c1..3db23871 100644 --- a/src/Blog/templates/page/JSON-LD/dotkernel3/dotkernel-admin-version-3-launched.jsonld.twig +++ b/src/Blog/templates/page/JSON-LD/dotkernel3/dotkernel-admin-version-3-launched.jsonld.twig @@ -42,7 +42,7 @@ "@id": "{{ app.url ~ path('page::blog-resource', {categorySlug: article.category.slug, slug: article.slug}) }}#faq", "mainEntity": [ { "@type": "Question", "name": "What is Dotkernel Admin?", "acceptedAnswer": { "@type": "Answer", "text": "A basic admin panel based on Bootstrap ^4.5.0, using Doctrine to perform basic CRUD operations over a database, built as a collection of PSR-7 Middleware applications on top of Mezzio and Laminas components." } }, - { "@type": "Question", "name": "Where can you see a live demo of version 3?", "acceptedAnswer": { "@type": "Answer", "text": "At admin.dotkernel.net." } }, + { "@type": "Question", "name": "Where can you see a live demo of version 3?", "acceptedAnswer": { "@type": "Answer", "text": "At admin7.dotkernel.net." } }, { "@type": "Question", "name": "What are the core requirements listed in the version 3 changelog?", "acceptedAnswer": { "@type": "Answer", "text": "Mezzio ^3.2, PHP ^7.4, Doctrine 2.7.x, and Twig 3.x, plus Bootstrap 4.5, with dot-* packages limited to version 3.x and above." } } ] } diff --git a/src/Blog/templates/page/blog-resource/best-practice/sql-queries-using-zend-db-select.html.twig b/src/Blog/templates/page/blog-resource/best-practice/sql-queries-using-zend-db-select.html.twig index e33d4c56..666d4d30 100644 --- a/src/Blog/templates/page/blog-resource/best-practice/sql-queries-using-zend-db-select.html.twig +++ b/src/Blog/templates/page/blog-resource/best-practice/sql-queries-using-zend-db-select.html.twig @@ -1,7 +1,7 @@ {% extends '@layout/blog-post.html.twig' %} {% block body %} -Zend_Db and its related classes provide a simple SQL database interface for Zend Framework. +Zend_Db and its related classes provide a simple SQL database interface for Zend Framework. To connect to MySql database, we are using Pdo_Mysql adapter :
       $db = Zend_Db::factory('Pdo_Mysql', $dbConnect);
      diff --git a/src/Blog/templates/page/blog-resource/best-practice/what-are-returning-the-fetch-functions-from-zend-db.html.twig b/src/Blog/templates/page/blog-resource/best-practice/what-are-returning-the-fetch-functions-from-zend-db.html.twig
      index 914909e9..c6367465 100644
      --- a/src/Blog/templates/page/blog-resource/best-practice/what-are-returning-the-fetch-functions-from-zend-db.html.twig
      +++ b/src/Blog/templates/page/blog-resource/best-practice/what-are-returning-the-fetch-functions-from-zend-db.html.twig
      @@ -1,7 +1,7 @@
       {% extends '@layout/blog-post.html.twig' %}
       
       {% block body %}
      -Continuing the Zend_DB article series, we are stopping now at FETCH methods that are in Zend_Db_Adapter_Abstract:
      +Continuing the Zend_DB article series, we are stopping now at FETCH methods that are in Zend_Db_Adapter_Abstract:
       
       array  fetchAll  (string|Zend_Db_Select $sql, , )
       array fetchAssoc (string|Zend_Db_Select $sql, [mixed $bind = array()])
      diff --git a/src/Blog/templates/page/blog-resource/best-practice/why-use-current-timestamp-on-a-field-that-record-date-time.html.twig b/src/Blog/templates/page/blog-resource/best-practice/why-use-current-timestamp-on-a-field-that-record-date-time.html.twig
      index 4cd379f9..d4a8236e 100644
      --- a/src/Blog/templates/page/blog-resource/best-practice/why-use-current-timestamp-on-a-field-that-record-date-time.html.twig
      +++ b/src/Blog/templates/page/blog-resource/best-practice/why-use-current-timestamp-on-a-field-that-record-date-time.html.twig
      @@ -16,7 +16,7 @@ CURRENT_TIMESTAMP is also a solution for  updating date and time field
           
    • With no DEFAULT clause and with an ON UPDATE CURRENT_TIMESTAMP clause, the column has a default of 0 and is automatically updated.
    • With a constant DEFAULT value, the column has the given default and is not automatically initialized to the current timestamp. If the column also has an ON UPDATE CURRENT_TIMESTAMP clause, it is automatically updated; otherwise, it has a constant default and is not automatically updated.
    -For more details check out MySQL Manual +For more details check out MySQL Manual Note*: Only one timestamp field can be DEFAULT CURRENT_TIMESTAMP in a table. diff --git a/src/Blog/templates/page/blog-resource/dotkernel/doctrine-cache-using-symfony-cache.html.twig b/src/Blog/templates/page/blog-resource/dotkernel/doctrine-cache-using-symfony-cache.html.twig index c3ea6f62..4da69f55 100644 --- a/src/Blog/templates/page/blog-resource/dotkernel/doctrine-cache-using-symfony-cache.html.twig +++ b/src/Blog/templates/page/blog-resource/dotkernel/doctrine-cache-using-symfony-cache.html.twig @@ -60,7 +60,7 @@ Doctrine hydration cache is a feature that stores the results of data hydration,

    How to use

    To enable caching for entities, need to add the  # attribute like in the following example:

    #
    #
    #
    class Admin extends AbstractEntity implements AdminInterface
    {
    }
    -

    For further details about the cache mode please refer to the official documentation.

    +

    For further details about the cache mode please refer to the official documentation.

    When querying data, you can have Doctrine cache your results. You do this by calling the setCacheable method on the query builder.

    $this->getQueryBuilder()
    ->select('admin')
    ->from(Admin::class, 'admin')
    ->setCacheable(true)
    ->getQuery()
    ->getResult();

    Caching is not limited to entities alone. Objects can be cached too. Check the basic cache usage for this purpose.

    diff --git a/src/Blog/templates/page/blog-resource/dotkernel3/dotkernel-admin-v4.html.twig b/src/Blog/templates/page/blog-resource/dotkernel3/dotkernel-admin-v4.html.twig index 484d5f8b..9b5c4dce 100644 --- a/src/Blog/templates/page/blog-resource/dotkernel3/dotkernel-admin-v4.html.twig +++ b/src/Blog/templates/page/blog-resource/dotkernel3/dotkernel-admin-v4.html.twig @@ -19,7 +19,7 @@
    • Username: admin
    • Password: dotadmin
    -

    Head over to https://admin4.dotkernel.net/ and see for yourself :)

    +

    Head over to https://admin7.dotkernel.net/ and see for yourself :)

    Dotkernel Admin V4 Features

    @@ -206,7 +206,7 @@
    What are the demo credentials for trying out Dotkernel Admin V4? +
    -

    Username admin and password dotadmin, on the demo at https://admin4.dotkernel.net/.

    +

    Username admin and password dotadmin, on the demo at https://admin7.dotkernel.net/.

    diff --git a/src/Blog/templates/page/blog-resource/dotkernel3/dotkernel-admin-version-3-launched.html.twig b/src/Blog/templates/page/blog-resource/dotkernel3/dotkernel-admin-version-3-launched.html.twig index acc4ecd8..500213fd 100644 --- a/src/Blog/templates/page/blog-resource/dotkernel3/dotkernel-admin-version-3-launched.html.twig +++ b/src/Blog/templates/page/blog-resource/dotkernel3/dotkernel-admin-version-3-launched.html.twig @@ -4,7 +4,7 @@

    Dotkernel Admin PHP Application version 3 was launched.

    -


    +


    Dotkernel is a Collection of PSR-7 Middleware applications built on top of Mezzio microframework and using Laminas components

    @@ -15,7 +15,7 @@

    You can clone it from github

    -

    Live demo: admin.dotkernel.net

    +

    Live demo: admin7.dotkernel.net

    Changelog:

    @@ -51,7 +51,7 @@
    Where can you see a live demo of version 3? +
    -

    At admin.dotkernel.net.

    +

    At admin7.dotkernel.net.

    diff --git a/src/Blog/templates/page/blog-resource/dotkernel3/dotkernel-frontend-version-3-launched.html.twig b/src/Blog/templates/page/blog-resource/dotkernel3/dotkernel-frontend-version-3-launched.html.twig index 455a8108..8303f27c 100644 --- a/src/Blog/templates/page/blog-resource/dotkernel3/dotkernel-frontend-version-3-launched.html.twig +++ b/src/Blog/templates/page/blog-resource/dotkernel3/dotkernel-frontend-version-3-launched.html.twig @@ -3,7 +3,7 @@ {% block body %}

    Dotkernel Frontend PHP Application version 3 was launched.

    -

    +

    diff --git a/src/Blog/templates/page/blog-resource/how-to/doctrine-cache-in-mezzio-and-dotkernel.html.twig b/src/Blog/templates/page/blog-resource/how-to/doctrine-cache-in-mezzio-and-dotkernel.html.twig index 7fbb47a6..06bcfa9f 100644 --- a/src/Blog/templates/page/blog-resource/how-to/doctrine-cache-in-mezzio-and-dotkernel.html.twig +++ b/src/Blog/templates/page/blog-resource/how-to/doctrine-cache-in-mezzio-and-dotkernel.html.twig @@ -12,7 +12,7 @@

    Using an ORM in production without any sort of cache strategy is a very bad move. The Database server chokes; lots of CPU cycles wasted only to generate metadata and queries over and over again at each request; the system slows down and so on.

    -

    Following Doctrine documentation [ +

    Following Doctrine documentation [ 'orm_default' => [ // it is recommended to disable doctrine cache on development // just comment any type of cache you dont want to be applied on development @@ -174,9 +174,9 @@ class MyCollection extends Paginator

    References

    -
    • Doctrine Advanced Configuration
    • +

      diff --git a/src/Blog/templates/page/blog-resource/how-to/migrating-dotkernel-3-from-zend-expressive-2-to-zend-expressive-3.html.twig b/src/Blog/templates/page/blog-resource/how-to/migrating-dotkernel-3-from-zend-expressive-2-to-zend-expressive-3.html.twig index fa540a8c..ad71d155 100644 --- a/src/Blog/templates/page/blog-resource/how-to/migrating-dotkernel-3-from-zend-expressive-2-to-zend-expressive-3.html.twig +++ b/src/Blog/templates/page/blog-resource/how-to/migrating-dotkernel-3-from-zend-expressive-2-to-zend-expressive-3.html.twig @@ -136,7 +136,7 @@ You can check the complete guides and example files from the following links Migration guide for Dotkernel Frontend: github.com/dotkernel/frontend/tree/master/docs -Migration guide for Dotkernel Admin: github.com/dotkernel/admin/tree/master/docs +Migration guide for Dotkernel Admin: docs.dotkernel.org/admin-documentation (the old github.com/dotkernel/admin/tree/master/docs folder has since moved to this documentation site)

      Frequently Asked Questions

      diff --git a/src/Blog/templates/page/blog-resource/php-development/mezzio-app-development-in-wsl2.html.twig b/src/Blog/templates/page/blog-resource/php-development/mezzio-app-development-in-wsl2.html.twig index b823c747..f0f2e1ce 100644 --- a/src/Blog/templates/page/blog-resource/php-development/mezzio-app-development-in-wsl2.html.twig +++ b/src/Blog/templates/page/blog-resource/php-development/mezzio-app-development-in-wsl2.html.twig @@ -11,11 +11,11 @@

      Step 2:

      -

      Install Ubuntu 20.0 LTS inside WLS2 as described here.

      +

      Install Ubuntu 20.0 LTS inside WLS2 as described here (the current version of this guide covers AlmaLinux 9, the distro the WSL setup has since moved to).

      Step 3:

      -

      Create a virtualhost for your project using this guide.

      +

      Create a virtualhost for your project using this guide.

      Step 4:

      @@ -25,7 +25,7 @@

      Install Dotkernel API, by following this guide.

      -

      Make sure your data and log directories are writable by changing their permissions, as described here.

      +

      Make sure your data and log directories are writable by changing their permissions, as described here.

      Step 5:

      diff --git a/src/Blog/templates/page/blog-resource/php-development/protection-against-sql-injection-using-pdo-and-zend-framework-part-2.html.twig b/src/Blog/templates/page/blog-resource/php-development/protection-against-sql-injection-using-pdo-and-zend-framework-part-2.html.twig index 0a832dec..493e21ce 100644 --- a/src/Blog/templates/page/blog-resource/php-development/protection-against-sql-injection-using-pdo-and-zend-framework-part-2.html.twig +++ b/src/Blog/templates/page/blog-resource/php-development/protection-against-sql-injection-using-pdo-and-zend-framework-part-2.html.twig @@ -5,25 +5,25 @@ Following the preview article about query (mixed $sql, [mixed $bind = array()])
      • use prepare statements internally
      • but SQL Injection is still possible if $sql is dynamically created
      -
    • fetchAll (string|Zend_Db_Select $sql, , ) +
    • fetchAll (string|Zend_Db_Select $sql, , )
      • all the fetch methods are using prepared statements internally
      • but SQL Injection is still possible if $sql is dynamically created
    • -
    • insert (mixed $table,  $bind) +
    • insert (mixed $table,  $bind)
      • use prepare statements internally
      • so, SQL Injection is not possible
    • -
    • update (mixed $table,  $bind, [mixed $where = '']) +
    • update (mixed $table,  $bind, [mixed $where = ''])
      • use prepare statements internally
      @@ -31,7 +31,7 @@ What you should know about their methods is:
    • but SQL Injection may be possible if $where is created dynamically
  • -
  • delete (mixed $table, [mixed $where = '']) +
  • delete (mixed $table, [mixed $where = ''])
    • SQL Injection may be possible if $where is created dynamically
    diff --git a/src/Blog/templates/page/blog-resource/php-troubleshooting/where-is-the-intl-php-extension-problem-solved.html.twig b/src/Blog/templates/page/blog-resource/php-troubleshooting/where-is-the-intl-php-extension-problem-solved.html.twig index 1f00f681..1e50d1c3 100644 --- a/src/Blog/templates/page/blog-resource/php-troubleshooting/where-is-the-intl-php-extension-problem-solved.html.twig +++ b/src/Blog/templates/page/blog-resource/php-troubleshooting/where-is-the-intl-php-extension-problem-solved.html.twig @@ -4,7 +4,7 @@

    Problem

    PHP packages/frameworks/libraries/scripts we work with might require different PHP extensions. In this case the Intl extension is needed to work with using Internationalization Functions. -What is Internationalization? +What is Internationalization? Got any of these error messages?
      @@ -18,7 +18,7 @@ This happened because the PHP Intl extension isn't installed or enabled. Parts of this tutorial can be also a guide for installing or enabling other extensions.

      What is PHP Intl?

      Internationalization extension (further is referred as Intl) is a wrapper for » ICU library, enabling PHP programmers to perform various locale-aware operations including but not limited to formatting, transliteration, encoding conversion, calendar operations
      -Source: PHP Documentation +Source: PHP Documentation
      This extension may be installed using the bundled version as of PHP 5.3.0, or as a PECL extension as of PHP 5.2.0. In other words, there are two methods to install the intl extension.
      Source: PHP Documentation

      Cause

      diff --git a/src/Page/templates/page/frontend.html.twig b/src/Page/templates/page/frontend.html.twig index 24b7d500..5d2859f0 100644 --- a/src/Page/templates/page/frontend.html.twig +++ b/src/Page/templates/page/frontend.html.twig @@ -351,7 +351,7 @@ exactly those.

      - Anonymization reference + Anonymization reference
      From a43b0490fac78de4af11d4de064ee32c4e4b1a55 Mon Sep 17 00:00:00 2001 From: OStefan2001 Date: Tue, 18 Aug 2026 18:55:17 +0300 Subject: [PATCH 4/6] Removed 410 links from llms.txt --- public/llms.txt | 95 +++++++------------------------------------------ 1 file changed, 12 insertions(+), 83 deletions(-) diff --git a/public/llms.txt b/public/llms.txt index bf4dee55..236eef8f 100644 --- a/public/llms.txt +++ b/public/llms.txt @@ -14,99 +14,41 @@ Content spans foundational PHP/middleware architecture (PSR-7, PSR-15, request l ## Categories -## Dotkernel (64 posts) +## Dotkernel (18 posts) *the core framework — releases, caching, sessions, auth, WURFL/device detection* - [Adding a CORS implementation to Zend Expressive](https://www.dotkernel.com/dotkernel/adding-a-cors-implementation-to-zend-expressive/): A guide on how to add a CORS implementation to an existing Dotkernel3 project using Tuupola's Cors Middleware package. -- [Adding a second caching layer to WURFL in Dotkernel using APC](https://www.dotkernel.com/dotkernel/adding-a-second-caching-layer-to-wurfl-in-dotkernel-using-apc/): How adding a small, custom APC-based caching layer on top of WURFL's own cache cut response time by an order of magnitude. - [Adding Composer support in your Dotkernel project](https://www.dotkernel.com/dotkernel/adding-composer-support-in-your-dotkernel-project/): The steps needed to add Composer support to a Dotkernel 1.x project, or 'composify' it. -- [Adding Windows 10 OS and Browser detection in Dotkernel projects](https://www.dotkernel.com/dotkernel/adding-windows-10-os-and-browser-detection-in-dotkernel-projects/): A guide to installing the patch that adds Windows 8, 8.1 and 10 OS icons and the Microsoft Edge browser icon in Dotkernel. - [Autologin using Cookie / Remember Me in Dotkernel](https://www.dotkernel.com/dotkernel/autologin-using-cookie-remember-me-in-dotkernel/): A step-by-step guide to implementing a Remember Me / autologin feature in Dotkernel Frontend. - [Avoid routing through bootstrap of non existent files](https://www.dotkernel.com/dotkernel/avoid-routing-through-bootstrap-of-non-existent-files/): How to stop missing static files from being routed through the bootstrap and logging out users whose session regenerates on each request. -- [Caching in Dotkernel using Zend Framework](https://www.dotkernel.com/dotkernel/caching-in-dotkernel-using-zend-framework/): How Dotkernel's upcoming 1.8 cache layer stores router, ACL, menu and other data between requests, using APC/APCU or file storage. -- [camelCase Table Names in MySQL on Windows](https://www.dotkernel.com/dotkernel/camelcase-table-names-in-mysql-on-windows/): How to fix MySQL on WAMP/XAMPP lowercasing camelCase table names by setting lower_case_table_names=2 in my.cnf. - [Commitment to PHP - new Zend Certified Engineers - ZCE - in our team](https://www.dotkernel.com/dotkernel/commitment-to-php-new-zend-certified-engineers-zce-in-our-team/): Two more team members passed the ZCE exam, bringing the team's total to 5 Zend Certified Engineers. -- [Configuring the Cache in Dotkernel](https://www.dotkernel.com/dotkernel/configuring-the-cache-in-dotkernel/): A configuration guide for Dotkernel's Zend Framework Cache-based caching layer, covering the main frontend settings and the optional per-backend settings. - [Dependency Injection made easy in Laminas/Mezzio applications](https://www.dotkernel.com/dotkernel/dependency-injection-made-easy-in-laminas-mezzio-applications/): Introduces Dotkernel's dot-dependency-injection package, which autowires constructor dependencies in Laminas/Mezzio applications via a PHP attribute instead of a hand-written factory per class. -- [Detecting Mobile Devices in Dotkernel 1.6.0](https://www.dotkernel.com/dotkernel/detecting-mobile-devices-in-dotkernel-1-6-0/): Explains how mobile device detection changed in Dotkernel 1.6.0 with the move to Wurfl Cloud, including the required application.ini settings and sample Dot_UserAgent usage code. -- [Disable Wurfl redirect for mobile browsers](https://www.dotkernel.com/dotkernel/disable-wurfl-redirect-for-mobile-browsers/): Shows the application.ini setting introduced in revision 408 to control Dotkernel's automatic Wurfl-based redirect of mobile visitors to the mobile site, and the code that checks it. - [Disambiguation: Dotkernel 1 and Dotkernel 3](https://www.dotkernel.com/dotkernel/disambiguation-dotkernel-1-and-dotkernel-3/): Clarifies what Dotkernel 1 and Dotkernel 3 are, how they differ architecturally, and which version is meant when someone simply says 'Dotkernel'. - [Doctrine cache using symfony/cache](https://www.dotkernel.com/dotkernel/doctrine-cache-using-symfony-cache/): How to enable and configure the dotkernel/dot-cache component, a wrapper around symfony/cache, to cache Doctrine's result, metadata, query, and hydration data in Dotkernel Admin. - [Doctrine enum implementation in Dotkernel](https://www.dotkernel.com/dotkernel/doctrine-enum-implementation-in-dotkernel/): How Dotkernel adopted Doctrine ORM 3.2's EnumType support to replace loosely-enforced string-based status columns with PHP enums backed by a custom DBAL type. -- [DotBoost Technologies : Products and Services North American Relaunch](https://www.dotkernel.com/dotkernel/dotboost-technologies-products-and-services-north-american-relaunch/): Dotboost Technologies announces its North American relaunch, centered on the source release of its in-house Dotkernel framework alongside expanded IT integration and consulting services. -- [Dotkernel 1.2.0 release](https://www.dotkernel.com/dotkernel/dotkernel-1-2-0-release/): Release notes for Dotkernel 1.2.0, covering database naming convention changes, the new 'dots' submodule concept, new and updated library classes, and the use of prepared statements for all SQL queries. -- [Dotkernel 1.2.2 release](https://www.dotkernel.com/dotkernel/dotkernel-1-2-2-release/): Dotkernel 1.2.2 is a bug-fix release closing five issues, including captcha error handling, a pagination bug, and a copyright line update that touched every PHP file. -- [Dotkernel 1.3.0 release](https://www.dotkernel.com/dotkernel/dotkernel-1-3-0-release/): Dotkernel 1.3.0 adds an admin skin switcher, a way to protect member-only links, and reorganizes resource.xml into route.xml and dots.xml, at the cost of backward compatibility. -- [Dotkernel 1.3.2 release](https://www.dotkernel.com/dotkernel/dotkernel-1-3-2-release/): Dotkernel 1.3.2 is a maintenance release with many bug fixes, a couple of minor features, and some refactoring, released just before the winter holidays. -- [Dotkernel 1.5.0 Released](https://www.dotkernel.com/dotkernel/dotkernel-1-5-0-released/): Dotkernel 1.5.0 skips version 1.4 entirely and brings a switch from Dojo to jQuery, redesigned admin and frontend, model inheritance via Dot_Model, dashed controller support, and a reorganized Zend Registry. -- [Dotkernel 1.8.0 LTS Released](https://www.dotkernel.com/dotkernel/dotkernel-1-8-0-lts-released/): Dotkernel 1.8.0 (LTS) introduces a plugin architecture, a redesigned mobile-friendly admin and frontend, APC/File caching for speed, a new Dot_Request class, and several security and alerting improvements. -- [Dotkernel 1.8.1 + Upgrade from 1.8.0 Released](https://www.dotkernel.com/dotkernel/dotkernel-1-8-1-upgrade-from-1-8-0-released/): Dotkernel 1.8.1 adds Enhanced Cache Support with cache tagging, and ships with a dedicated upgrade package for users coming from 1.8.0. -- [Dotkernel Coding Standard](https://www.dotkernel.com/dotkernel/dotkernel-coding-standard/): Dotkernel borrows the Zend Framework coding standard with a few exceptions, covering indentation, class/interface/file naming, and curly brace placement for control statements. -- [Dotkernel Database Naming Conventions for MySQL](https://www.dotkernel.com/dotkernel/dotkernel-database-naming-conventions-for-mysql/): Dotkernel borrows its database naming conventions from FaZend, covering singular table names, auto-incrementing id columns, foreign key and constraint naming patterns, and camelLetter casing. - [Dotkernel Light - Starting with Mezzio microframework and Laminas components](https://www.dotkernel.com/dotkernel/dotkernel-light-starting-with-mezzio-microframework-and-laminas-components/): Dotkernel Light is a stripped-down version of Dotkernel Frontend built on Mezzio and Laminas components, keeping only routing, templating, error handling, and tests, for a gentler learning curve. - [Dotkernel Light: the best choice for your presentation site](https://www.dotkernel.com/dotkernel/dotkernel-light-the-best-choice-for-your-presentation-site/): A walkthrough of using Dotkernel Light to build a simple presentation site: adding new pages, managing assets, and configuring Twitter/OpenGraph cards, the top menu, and the footer. -- [Dotkernel on Nginx](https://www.dotkernel.com/dotkernel/dotkernel-on-nginx/): A walkthrough of testing whether Dotkernel runs out of the box on Nginx, and how the Nginx configuration was set up as a substitute for Apache's .htaccess. -- [Dotkernel Reserved Variable Names for Caching](https://www.dotkernel.com/dotkernel/dotkernel-reserved-variable-names-for-caching/): A reference of the variables Dotkernel caches — router, ACL role, menu, options, and browser/OS data — and the cache keys they use. -- [Dotkernel Template Engine](https://www.dotkernel.com/dotkernel/dotkernel-template-engine/): Dotkernel Template Engine is an implementation of the PHPLib Template engine for PHP5, separating application code from the presentation layer. -- [Dotkernel version 1.0 in action](https://www.dotkernel.com/dotkernel/dotkernel-version-1-0-in-action/): An overview of Dotkernel 1.0, DotBoost's in-house framework built on Zend Framework, its simplified MVC architecture, and the specific Zend Framework classes it relies on. - [Forcing UTF8 connections and character set in MySQL](https://www.dotkernel.com/dotkernel/forcing-utf8-connections-and-character-set-in-mysql/): How to force the MySQL server's character set and collation to UTF8 via my.cnf, so every connecting script uses it regardless of client. -- [GeoIP City Removed From Dotkernel](https://www.dotkernel.com/dotkernel/geoip-city-removed-from-dotkernel/): Why the GeoIP City integration was removed from Dotkernel due to a segmentation fault with GeoIP extension 1.1.0+, and how to remove the affected code if you don't need GeoIP City. -- [GeoIP: Ip Address Location In Dotkernel](https://www.dotkernel.com/dotkernel/geoip-ip-address-location-in-dotkernel/): How Dotkernel's getCountryByIp function in library/Dot/Geoip.php uses MaxMind's GeoIP technology and its .dat files to determine a visitor's country. - [Handling and Logging errors with dot-errorhandler and dot-log](https://www.dotkernel.com/dotkernel/handling-and-logging-errors-with-dot-errorhandler-and-dot-log/): A guide to using dotkernel/dot-errorhandler alongside dot-log (or zend-log) to log errors in Zend Expressive applications, covering its two handler types, configuration, and how it was tested. -- [Highcharts Integration in Dotkernel 1.6.0](https://www.dotkernel.com/dotkernel/highcharts-integration-in-dotkernel-1-6-0/): Dotkernel 1.6.0 integrates the Highcharts charting library, adding interactive pie, column and line chart samples to the admin. - [How to group log files by date using dot-log](https://www.dotkernel.com/dotkernel/how-to-group-log-files-by-date-using-dot-log/): How dot-log Version 3.1.1 lets you use datetime formatter strings in the stream option of a log writer, so log files get grouped by date. -- [How to Set a Persistent Connection to Database with Zend Framework Zend_Db adapter](https://www.dotkernel.com/dotkernel/how-to-set-a-persistent-connection-to-database-with-zend-framework-zend-db-adapter/): How to configure a persistent database connection in application.ini using the Zend_Db adapter, and the option that will not work. -- [How to use Alerts in Dotkernel](https://www.dotkernel.com/dotkernel/how-to-use-alerts-in-dotkernel/): How the Dot_Alert system works in Dotkernel, used to e-mail developers when something goes wrong, illustrated with the failed-email-send use case. -- [Implementing the new Password Hashing API from PHP 5.5 in Dotkernel](https://www.dotkernel.com/dotkernel/implementing-the-new-password-hashing-api-from-php-5-5-in-dotkernel/): Dotkernel 1.8.0 refactors password handling to use PHP 5.5's Password Hashing API, using the Password Compat library for older PHP, with steps to upgrade existing systems. -- [Installing GeoIP extension in Zend Server 5.6 on Windows](https://www.dotkernel.com/dotkernel/installing-geoip-extension-in-zend-server-5-6-on-windows/): Step-by-step guide to testing, downloading, installing and enabling the php_geoip extension and MaxMind databases on Zend Server 5.6 for Windows. -- [Installing GeoIP extension in Zend Server 6 on Windows](https://www.dotkernel.com/dotkernel/installing-geoip-extension-in-zend-server-6-on-windows/): Update to the Zend Server 5.6 GeoIP guide, covering how to install and enable php_geoip on Zend Server 6.1 on Windows. - [Logging with dot-log in Zend Expressive and Dotkernel](https://www.dotkernel.com/dotkernel/logging-with-dot-log-in-zend-expressive-and-dotkernel/): How to wire up, configure and use the dot-log component (compatible with zend-log) within Dotkernel, Zend Expressive, or any project using Zend Service Manager. -- [Manual upgrade of WURFL xml file in Dotkernel](https://www.dotkernel.com/dotkernel/manual-upgrade-of-wurfl-xml-file-in-dotkernel/): How to manually upgrade the bundled WURFL XML file in Dotkernel now that its license has changed and Dotkernel no longer updates it. -- [Migration of Zend Framework 1 PEAR channel](https://www.dotkernel.com/dotkernel/migration-of-zend-framework-1-pear-channel/): The unofficial PEAR channel for Zend Framework 1 moved from Google Code to a new dedicated server, with instructions on how to switch to the new channel. -- [New Features in Zend Framework 1.12](https://www.dotkernel.com/dotkernel/new-features-in-zend-framework-1-12/): Overview of Zend Framework 1.12.0RC1, covering new components back ported from ZF2, the removal of the WurflApi adapter, and over 200 bug fixes. -- [PHP Formatter and Templates for Zend Studio 10.1](https://www.dotkernel.com/dotkernel/php-formatter-and-templates-for-zend-studio-10-1/): An updated PHP Formatter plugin and a Dotkernel coding standard templates file for Zend Studio 10.1, along with the required Formatter plugin change. -- [Protecting admin folder with .htaccess in Plesk](https://www.dotkernel.com/dotkernel/protecting-admin-folder-with-htaccess-in-plesk/): How to protect the /admin folder with HTTP Basic Auth in a Plesk vhost.conf file, and how to apply the change and finish setup with .htpasswd. - [Replacing laminas-mail with Symfony mailer in dot-mail](https://www.dotkernel.com/dotkernel/replacing-laminas-mail-with-symfony-mailer-in-dot-mail/): Why and how Dotkernel replaced the abandoned laminas/laminas-mail package with symfony/mailer inside dotkernel/dot-mail, including configuration changes and the upgrade path to version 5. -- [Scientia Mobile licensed its Wurfl Cloud PHP library to Dotkernel 1.6](https://www.dotkernel.com/dotkernel/scientia-mobile-licensed-its-wurfl-cloud-php-library-to-dotkernel-1-6/): Dotkernel 1.6.0 removed the obsolete GPL'ed WURFL PHP library and replaced it with Scientia Mobile's WURFL Cloud PHP library, under a special license limited to use with the Dotkernel framework. -- [Sending emails using Dot_Email component and Zend_Email](https://www.dotkernel.com/dotkernel/sending-emails-using-dot-email-component-and-zend-email/): Dot_Email extends Zend_Mail with two additional methods, setContent() and send(), and this article covers how to use it and which Zend_Mail methods are inherited. - [Templating in Dotkernel3](https://www.dotkernel.com/dotkernel/templating-in-dotkernel3/): Dotkernel3 replaces its 10-year-old templating engine with Twig, gaining layouts, loops, variables, and escaping while keeping the familiarity of HTML. - [Using Dotkernel with Composer Dependencies](https://www.dotkernel.com/dotkernel/using-dotkernel-with-composer-dependencies/): How to use external Composer dependencies in Dotkernel, demonstrated by rendering a barcode with both the non-namespaced Zend Framework 1 and the namespaced Zend Framework 2. -- [Using UTF8 charset in Dotkernel](https://www.dotkernel.com/dotkernel/using-utf8-charset-in-dotkernel/): How to enable UTF8 encoding in a Dotkernel-based system, covering both database collation and the application.ini charset setting. -- [Wurfl Cloud Integration in Dotkernel 1.6.0](https://www.dotkernel.com/dotkernel/wurfl-cloud-integration-in-dotkernel-1-6-0/): How WURFL Cloud, WURFL's cloud-based device detection service, was integrated as the default mobile detection method in Dotkernel 1.6.0. -- [WURFL PHP API license incompatible with Dotkernel](https://www.dotkernel.com/dotkernel/wurfl-php-api-license-incompatible-with-dotkernel/): The WURFL PHP API's license changed from GNU/GPL to AGPL in version 1.3.0, making it a trial-only library incompatible with keeping Dotkernel free. -- [WURFL Zend Framework Integration into Dotkernel](https://www.dotkernel.com/dotkernel/wurfl-zend-framework-integration-into-dotkernel/): Step-by-step tutorial on integrating WURFL into Dotkernel using the Zend_Http_UserAgent class from Zend Framework 1.11.0rc1. -- [Zend Framework dropped integration of WURFL adapter](https://www.dotkernel.com/dotkernel/zend-framework-dropped-integration-of-wurfl-adapter/): Zend Framework 1.12.0 drops the WURFL adapter from Zend_Http_UserAgent due to WURFL's licensing change to AGPL; Dotkernel is unaffected since it uses its own WURFL adapter. -- [Zend Registry usage in Dotkernel](https://www.dotkernel.com/dotkernel/zend-registry-usage-in-dotkernel/): The variables stored in Zend_Registry in Dotkernel and how to read them, either as a full instance or one value at a time. -- [Zend Studio PHP Formatter file for Dotkernel coding standard.](https://www.dotkernel.com/dotkernel/zend-studio-php-formatter-file-for-dotkernel-coding-standard/): A downloadable XML file for Zend Studio 9.x that configures the PHP code formatter to follow Dotkernel's coding standard. -- [Zend_Auth and Zend_Acl integrated in Dotkernel](https://www.dotkernel.com/dotkernel/zend-auth-and-zend-acl-integrated-in-dotkernel/): How Zend_Auth and Zend_Acl were integrated into Dotkernel 1.5.0 through the Dot_Auth and Dot_Acl classes for user authentication and access control. -- [Zend_Console implementation in Dotkernel](https://www.dotkernel.com/dotkernel/zend-console-implementation-in-dotkernel/): How Dotkernel's Console bootstrap lets you run PHP scripts from the command line, including its arguments and bundled example actions. -- [Zend_Session usage in Dotkernel - Refactor of Dot_Session class](https://www.dotkernel.com/dotkernel/zend-session-usage-in-dotkernel-refactor-of-dot-session-class/): A session cookie bug found in IE8/IE9 on Dotkernel 1.5.0, traced to redundant regenerateID()/rememberMe() calls in Dot_Session, and the fix shipped in 1.5.1. - -## PHP Development (20 posts) + +## PHP Development (8 posts) *general PHP tooling, environments, IDEs, security* - [AlmaLinux 9 in WSL2 : install PHP, Apache, MariaDB, Composer, PhpMyadmin](https://www.dotkernel.com/php-development/almalinux-9-in-wsl2-install-php-apache-mariadb-composer-phpmyadmin/): A step-by-step guide to installing AlmaLinux 9 under Windows Subsystem for Linux (WSL2) and provisioning it with Ansible to run PHP, Apache, MariaDB, Composer, and phpMyAdmin. -- [Aptana PHP installation in Aptana 2.x](https://www.dotkernel.com/php-development/aptana-php-installation-in-aptana-2-x/): A quick fix for restoring PHP support in Aptana 2.x after the bundled Aptana PHP plugin was discontinued in favor of PDT, plus adding SVN support via Subclipse. -- [Better Unicode Support in MySQL 5.5 UTF8MB4](https://www.dotkernel.com/php-development/better-unicode-support-in-mysql-5-5-utf8mb4/): How Dotkernel adopted MySQL 5.5's utf8mb4 character set for fuller Unicode support, and the config and column-length changes that switch requires. - [Database seeding: Doctrine data fixtures vs Phinx](https://www.dotkernel.com/php-development/database-seeding-doctrine-data-fixtures-vs-phinx/): Why Dotkernel moved database seeding from Phinx to doctrine/data-fixtures, the CLI package built to fill Doctrine's missing command-line interface, and how to install, use, and order fixtures. -- [End of Support for PHP 5.2.x Branch](https://www.dotkernel.com/php-development/end-of-support-for-php-5-2-x-branch/): PHP 5.2.14 marks the end of active support for the PHP 5.2 branch, with PHP 5.3.3 released and ready for upgrade. - [Floating-Point Arithmetic - Why is (int)((0.7+0.1)*10) = 7 ?](https://www.dotkernel.com/php-development/floating-point-arithmetic-why-is-int-0-7-0-1-10-7/): An explanation of why PHP's floating-point arithmetic and int casting can produce unexpected results like (int)((0.7+0.1)*10) = 7 instead of 8. -- [How To Upgrade Wamp to PHP 5.3.4](https://www.dotkernel.com/php-development/how-to-upgrade-wamp-to-php-5-3-4/): Step-by-step instructions for upgrading a WAMP server's PHP version to 5.3.4. - [Mezzio app development in WSL2](https://www.dotkernel.com/php-development/mezzio-app-development-in-wsl2/): A step-by-step guide to installing a Mezzio application (Dotkernel API) inside WSL2, running it on Ubuntu 20.04 LTS. -- [PHP 5.3.6 released. No upgrade possible for WampServer.](https://www.dotkernel.com/php-development/php-5-3-6-released-no-upgrade-possible-for-wampserver/): PHP 5.3.6 dropped Visual Studio C++ 6 Windows builds, making an in-place WampServer upgrade impossible since WampServer itself is built with VC++ 6. - [PHP Environment : Development Staging Production](https://www.dotkernel.com/php-development/php-environment-development-staging-production/): An overview of the development, staging and production server environments used to improve the development, testing and release process of client-server applications. -- [PHP support back in Aptana 3.0](https://www.dotkernel.com/php-development/php-support-back-in-aptana-3-0/): Aptana PHP support is coming back and will be integrated directly into the Studio 3 core rather than as a separate plugin. - [Protection against SQL Injection using PDO and Zend Framework](https://www.dotkernel.com/php-development/protection-against-sql-injection-using-pdo-and-zend-framework/): An overview of what SQL injection is, what PDO provides, and how prepared statements in Zend Framework help - but don't fully guarantee - protection against SQL injection. - [Protection against SQL Injection using PDO and Zend Framework - part 2](https://www.dotkernel.com/php-development/protection-against-sql-injection-using-pdo-and-zend-framework-part-2/): A closer look at Zend_Db's query, fetchAll, insert, update, and delete methods, and where SQL injection can still slip through even with prepared statements. -- [Remote connections to MySQL server on Plesk based servers](https://www.dotkernel.com/php-development/remote-connections-to-mysql-server-on-plesk-based-servers/): How to fix remote MySQL connection failures on Plesk-based Linux servers caused by the default old_passwords flag, by creating a user with a modern password hash. - [Static Analysis - Replacing Psalm with PHPStan](https://www.dotkernel.com/php-development/static-analysis-replacing-psalm-with-phpstan/): Why Dotkernel replaced Psalm with PHPStan for static analysis, and a walkthrough of updating composer.json, CI, and configuration files to run PHPStan checks. -- [Using Aptana to connect to Dotkernel tracker (Mantis)](https://www.dotkernel.com/php-development/using-aptana-to-connect-to-dotkernel-tracker-mantis/): A step-by-step guide to integrating the Aptana IDE with Dotkernel Tracker, a Mantis-based bug tracker, using the Mylyn plugin's Mantis connector. -- [Using PHP 7 Express in Zend Studio 13](https://www.dotkernel.com/php-development/using-php-7-express-in-zend-studio-13/): A walkthrough of Zend Studio 13's PHP 7 Express feature, covering test-project setup, PHP interpreter selection, adding Zend Framework 1, and running a PHP7 compatibility check. -- [Version Control Ignore Patterns in Zend Studio](https://www.dotkernel.com/php-development/version-control-ignore-patterns-in-zend-studio/): How to configure global 'Ignored Resources' patterns in Zend Studio so they apply across all projects, instead of setting them individually per project. -- [Welcome to the 10th Zend Certified Engineer in Dotboost Team](https://www.dotkernel.com/php-development/welcome-to-the-10th-zend-certified-engineer-in-dotboost-team/): Announcement that the 10th member of the Dotboost Technologies team has passed the Zend Certified Engineer exam, plus the team's next certification goals. -- [Zend Server 5.5 Quick Setup on Windows](https://www.dotkernel.com/php-development/zend-server-5-5-quick-setup-on-windows/): Three quick configuration steps to make a fresh Zend Server 5.5 install on Windows 7 ready for development: enabling mod_rewrite, tuning PHP directives, and enabling APC. ## How to's (14 posts) @@ -127,19 +69,15 @@ Content spans foundational PHP/middleware architecture (PSR-7, PSR-15, request l - [What is cross origin token redemption?](https://www.dotkernel.com/how-to/what-is-cross-origin-token-redemption/): An explanation of cross-origin token redemption, the technique for securely verifying and redeeming a token issued on one domain when it's used on another, including how JWT and OAuth 2.0 implement it. - [What is PSR-7 and how to use it](https://www.dotkernel.com/how-to/what-is-psr-7-and-how-to-use-it/): A practical reference to PSR-7's HTTP message interfaces and a cheatsheet-style walkthrough of working with headers and message bodies using Zend Diactoros. -## Best Practice (13 posts) +## Best Practice (9 posts) *coding standards and database access patterns* -- [Aptana - set SVN keywords](https://www.dotkernel.com/best-practice/aptana-set-svn-keywords/): How to set the svn:keywords property (e.g. - [Basic Security in Dotkernel Headless Platform](https://www.dotkernel.com/best-practice/basic-security-in-dotkernel-headless-platform/): A practical overview of software security practices implemented across the Dotkernel Headless Platform, covering input validation, content negotiation, CORS, RBAC, OAuth2, sessions, dependencies, and more. -- [Golden Rules of Professional PHP Coding](https://www.dotkernel.com/best-practice/golden-rules-of-professional-php-coding/): A short list of practical rules for professional PHP development: error reporting settings, fixing warnings, marking hacks, single-responsibility functions, version control, and IDE usage. - [htaccess 301 redirect non-www to www](https://www.dotkernel.com/best-practice/htaccess-301-redirect-non-www-to-www/): How to configure .htaccess RewriteCond/RewriteRule directives to redirect a non-www domain to its www version, or vice versa. - [INSERT, UPDATE, DELETE statements with Zend_Db](https://www.dotkernel.com/best-practice/insert-update-delete-statements-with-zend-db/): How to write INSERT, UPDATE, and DELETE (DML) statements using Zend_Db, alongside their equivalent raw SQL. - [SQL queries using Zend_Db – SELECT](https://www.dotkernel.com/best-practice/sql-queries-using-zend-db-select/): How to write SELECT queries with JOINs and WHERE IN clauses using Zend_Db, alongside their equivalent raw SQL. - [Subqueries with Zend_Db](https://www.dotkernel.com/best-practice/subqueries-with-zend-db/): How to build a query combining COUNT, LEFT JOIN, and GROUP BY across multiple tables using Zend_Db, including a subquery embedded as a column. -- [SVN Export in a virtual host](https://www.dotkernel.com/best-practice/svn-export-in-a-virtual-host/): How to export the contents of an SVN repository into a virtual host directory using the svn export command. -- [SVN keywords setup in PHP IDE ( Zend Studio)](https://www.dotkernel.com/best-practice/svn-keywords-setup-in-php-ide-zend-studio/): How to set SVN ignore, bug tracker, and svn:keywords properties per project in the Zend Studio PHP IDE. - [Using LIKE wildcards with Zend_Db](https://www.dotkernel.com/best-practice/using-like-wildcards-with-zend-db/): How to use the SQL LIKE condition and its _ and % wildcards, including NOT LIKE, with Zend_Db's quoteInto and quoteIdentifier methods. - [What are returning the FETCH functions from Zend_Db](https://www.dotkernel.com/best-practice/what-are-returning-the-fetch-functions-from-zend-db/): A side-by-side comparison of the legacy query()/next_record()/f() row-fetching style with the fetchAll, fetchAssoc, fetchCol, fetchOne, fetchPairs, and fetchRow methods of Zend_Db_Adapter_Abstract. - [Why use CURRENT_TIMESTAMP on a field that record date/time?](https://www.dotkernel.com/best-practice/why-use-current-timestamp-on-a-field-that-record-date-time/): Why a TIMESTAMP column should default to CURRENT_TIMESTAMP on insert, how ON UPDATE CURRENT_TIMESTAMP keeps it fresh on every update, and how the DEFAULT/ON UPDATE clause combinations behave. @@ -188,26 +126,18 @@ Content spans foundational PHP/middleware architecture (PSR-7, PSR-15, request l - [Shared Core Submodule in Dotkernel Headless Platform](https://www.dotkernel.com/headless-platform/shared-core-submodule-in-dotkernel-headless-platform/): An explanation of the Core submodule pattern in Dotkernel's Headless Platform, and step-by-step instructions for extracting it into a shared Git submodule. - [Version 7 adds PostgreSQL, Native UUID and PHP 8.5](https://www.dotkernel.com/headless-platform/version-7-adds-postgresql-native-uuid-and-php-8-5/): Overview of Dotkernel API and Admin's v7 release, which adds native UUID v7 support, PostgreSQL compatibility, PHP 8.5/8.4 support, and drops MySQL support. -## Zend Framework (8 posts) +## Zend Framework (2 posts) *Zend Framework 1 history and end-of-life notes* -- [Scienta ZF Debug Bar: A very helpfull ZF debug tool](https://www.dotkernel.com/zend-framework/scienta-zf-debug-bar-a-very-helpfull-zf-debug-tool/): A short note on discovering the Scienta ZF Debug Bar and Dotkernel's decision to replace its own basic debug bar with it. - [Sunsetting PEAR Channel for Zend Framework 1](https://www.dotkernel.com/zend-framework/sunsetting-pear-channel-for-zend-framework-1/): Dotkernel announces the sunsetting of its unofficial PEAR channel for Zend Framework 1, citing PHP 8 compatibility issues and aging server infrastructure. -- [WURFL PHP API libraries , GPL versions](https://www.dotkernel.com/zend-framework/wurfl-php-api-libraries-gpl-versions/): A brief announcement of GPL-licensed WURFL PHP API library versions, including which one Zend Framework's Zend_Http_UserAgent component uses, with a later edit noting the download's removal. - [Zend Framework 1 End-of-Life](https://www.dotkernel.com/zend-framework/zend-framework-1-end-of-life/): Announcement that Zend Framework 1 has reached End-of-Life (EOL) status following the release of Zend Framework 3, with security updates continuing only until 28 September 2016. -- [Zend Framework 1.12.4 Released with Security Fixes](https://www.dotkernel.com/zend-framework/zend-framework-1-12-4-released-with-security-fixes/): Matthew Weier O'Phinney announces Zend Framework 1.12.4, 2.1.6, and 2.2.6 with security updates, plus a follow-up 1.12.5 release fixing a backward compatibility issue. -- [Zend Framework 1.7.0 Released](https://www.dotkernel.com/zend-framework/zend-framework-1-7-0-released/): Short announcement of the Zend Framework 1.7.0 release, highlighting its new support for Adobe's Action Message Format (AMF) protocol in PHP 5 applications. -- [Zend Framework as PEAR accessible repository on Plesk server](https://www.dotkernel.com/zend-framework/zend-framework-as-pear-accessible-repository-on-plesk-server/): How to install Zend Framework as a PEAR-accessible repository on a Plesk server, so it doesn't need to be copied into every project and can be updated centrally. -- [Zend_Mail and Zend_Http Security Fixes in Zend Framework 1.12.12](https://www.dotkernel.com/zend-framework/zend-mail-and-zend-http-security-fixes-in-zend-framework-1-12-12/): Zend Framework 1.12.12 was released with security fixes for the Zend_Mail and Zend_Http components, and a follow-up 1.12.13 release soon after fixed a regression. -## Javascript (3 posts) +## Javascript (1 post) *frontend/JS topics* -- [Codelobster PHP Edition - Free PHP, HTML, CSS, JavaScript editor (IDE)](https://www.dotkernel.com/javascript/codelobster-php-edition-free-php-html-css-javascript-editor-ide/): An overview of Codelobster PHP Edition, a free multi-language code editor with autocompletion, debugging, SQL and FTP tools, and plugins for popular PHP frameworks and CMS platforms. - [Intro to jQuery](https://www.dotkernel.com/javascript/intro-to-jquery/): A short introduction to jQuery basics for early Dotkernel developers switching from Dojo, covering the jQuery object, selectors, DOM manipulation, events, and Ajax. -- [Javascript: Email Validator](https://www.dotkernel.com/javascript/javascript-email-validator/): A regex-based fix for email validation that allows the plus (+) and dash (-) characters in the appropriate parts of an email address. ## Middleware (3 posts) @@ -232,13 +162,6 @@ Content spans foundational PHP/middleware architecture (PSR-7, PSR-15, request l - [[FIX] Installing PEAR packages with PHP 7.2](https://www.dotkernel.com/php-troubleshooting/fix-installing-pear-packages-with-php-7-2/): How to fix the 'Cannot use result of built-in function in write context' PEAR error on PHP 7.2 by patching Archive_Tar's func_get_args() call, and how to reinstall the affected packages afterward. - [Where is the intl PHP extension? Problem solved!](https://www.dotkernel.com/php-troubleshooting/where-is-the-intl-php-extension-problem-solved/): Common causes of 'missing intl PHP extension' errors and step-by-step fixes for installing or enabling the Intl extension on Linux and Windows PHP setups. -## Android (2 posts) - -*Android install-referrer and broadcast receivers* - -- [Listen for Android install referrer](https://www.dotkernel.com/android/listen-for-android-install-referrer/): Android market broadcasts an intent containing referrer information at install time, before the app is opened, which can be used for install tracking. -- [Multiple broadcast receivers in the same app, for the same action](https://www.dotkernel.com/android/multiple-broadcast-receivers-in-the-same-app-for-the-same-action/): Using multiple broadcast receivers to listen separately for the same intent in the same Android app can lead to unexpected results, since one receiver may consume the broadcast and leave the others with nothing. - ## PHPStorm (1 post) *IDE setup* @@ -250,3 +173,9 @@ Content spans foundational PHP/middleware architecture (PSR-7, PSR-15, request l *open-source license comparisons* - [MIT versus LGPL in practice: Dotkernel case](https://www.dotkernel.com/licensing/mit-versus-lgpl-in-practice-dotkernel-case/): How Dotkernel handled discovering an LGPL v3 dependency in one of its MIT-licensed packages. + +## Design Patterns (1 post) + +*naming conventions for PSR-15 handlers* + +- [Naming pattern for PSR-15 handlers in Dotkernel applications](https://www.dotkernel.com/design-pattern/naming-pattern-for-psr-15-handlers-in-dotkernel-applications/): The PSR-15 handler naming pattern adopted in Dotkernel Admin v6, and planned for Frontend and Light, meant to stay clear as a project's size and number of contributors grow. From 8674276a8c753caa4d2692d4ffca83faaf1c0ab9 Mon Sep 17 00:00:00 2001 From: OStefan2001 Date: Tue, 18 Aug 2026 20:12:56 +0300 Subject: [PATCH 5/6] Updates --- .../adding-composer-support-in-your-dotkernel-project.md | 2 +- ...on-against-sql-injection-using-pdo-and-zend-framework.md | 3 --- src/App/src/Fixture/articles_cleaned.json | 2 +- ...ing-composer-support-in-your-dotkernel-project.html.twig | 3 --- ...utologin-using-cookie-remember-me-in-dotkernel.html.twig | 6 ++---- .../dotkernel/templating-in-dotkernel3.html.twig | 2 -- .../how-to/what-is-psr-7-and-how-to-use-it.html.twig | 2 +- ...h-psr-15-compliant-handlers-in-dotkernel-light.html.twig | 2 -- ...nst-sql-injection-using-pdo-and-zend-framework.html.twig | 4 ---- 9 files changed, 5 insertions(+), 21 deletions(-) diff --git a/public/md-articles/dotkernel/adding-composer-support-in-your-dotkernel-project.md b/public/md-articles/dotkernel/adding-composer-support-in-your-dotkernel-project.md index 3dc353cf..8cfa8a38 100644 --- a/public/md-articles/dotkernel/adding-composer-support-in-your-dotkernel-project.md +++ b/public/md-articles/dotkernel/adding-composer-support-in-your-dotkernel-project.md @@ -109,4 +109,4 @@ A: The article states it works for any Dotkernel 1.x version, as long as the ser ## Resources - [Composer install / PHP dependency manager tutorial](https://www.codementor.io/php/tutorial/composer-install-php-dependency-manager) -- Using Dotkernel with Composer dependencies +- [Using Dotkernel with Composer dependencies](http://www.dotkernel.com/dotkernel/using-dotkernel-with-composer-dependencies/) diff --git a/public/md-articles/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 index 8ac12d2d..105b17ec 100644 --- a/public/md-articles/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 @@ -85,7 +85,4 @@ To avoid this, you should use the correct prepared statements from Zend Framewor A: Zend_Db has two escaping methods that can be used: quote() and quoteIdentifier(). Both of these methods handle strings by putting them between single quotes. -## Resources -- SQL Injection Protection in PHP With PDO (ezinearticles.com) -- Zend Webinar: Secure Application Development with the ZF diff --git a/src/App/src/Fixture/articles_cleaned.json b/src/App/src/Fixture/articles_cleaned.json index a9b03d51..2e6e1704 100644 --- a/src/App/src/Fixture/articles_cleaned.json +++ b/src/App/src/Fixture/articles_cleaned.json @@ -2011,7 +2011,7 @@ { "post_title": "Development Report December 11, 2017", "post_date": "2017-12-15 06:19:24", - "post_status": "publish", + "post_status": "archived", "author": { "display_name": "Gabi DJ", "github": "gabidj" diff --git a/src/Blog/templates/page/blog-resource/dotkernel/adding-composer-support-in-your-dotkernel-project.html.twig b/src/Blog/templates/page/blog-resource/dotkernel/adding-composer-support-in-your-dotkernel-project.html.twig index 7684f6f5..f62f0566 100644 --- a/src/Blog/templates/page/blog-resource/dotkernel/adding-composer-support-in-your-dotkernel-project.html.twig +++ b/src/Blog/templates/page/blog-resource/dotkernel/adding-composer-support-in-your-dotkernel-project.html.twig @@ -71,9 +71,6 @@ Later on, the packages can be used like this: $myDependency = new MyDependency($neededArguments); $myDependency->doSomething(); -Learn more about how to use dependencies in Dotkernel 1.x by reading this article. - -This article works for any Dotkernel 1.x version if your server is running PHP >5.4.0.

      Frequently Asked Questions

      diff --git a/src/Blog/templates/page/blog-resource/dotkernel/autologin-using-cookie-remember-me-in-dotkernel.html.twig b/src/Blog/templates/page/blog-resource/dotkernel/autologin-using-cookie-remember-me-in-dotkernel.html.twig index 43db20e2..77e32244 100644 --- a/src/Blog/templates/page/blog-resource/dotkernel/autologin-using-cookie-remember-me-in-dotkernel.html.twig +++ b/src/Blog/templates/page/blog-resource/dotkernel/autologin-using-cookie-remember-me-in-dotkernel.html.twig @@ -67,10 +67,8 @@

      After you've created the entity, you have to create migration file for the new table using the following command:

      -
      vendor/bin/phinx create --configuration=config/migrations.php  RememberUserSchema
      - -

      After the migration file is created modify it as in user_remember_schema and run the following command to add it to you database:

      - +
      vendor/bin/phinx create --configuration=config/migrations.php  RememberUserSchema
      < +

      class="mb-3">After the migration file is created modify it as in user_remember_schema and run the following command to add it to you database:

      vendor/bin/phinx migrate --configuration=config/migrations.php

      The table generated by migration is used to store data from coockie. The stored data will help to login the user utomatically.

      diff --git a/src/Blog/templates/page/blog-resource/dotkernel/templating-in-dotkernel3.html.twig b/src/Blog/templates/page/blog-resource/dotkernel/templating-in-dotkernel3.html.twig index 2bd93cae..e9d67a00 100644 --- a/src/Blog/templates/page/blog-resource/dotkernel/templating-in-dotkernel3.html.twig +++ b/src/Blog/templates/page/blog-resource/dotkernel/templating-in-dotkernel3.html.twig @@ -15,8 +15,6 @@ In Dotkernel 3, we made the move to the popular Frequently Asked Questions
      diff --git a/src/Blog/templates/page/blog-resource/how-to/what-is-psr-7-and-how-to-use-it.html.twig b/src/Blog/templates/page/blog-resource/how-to/what-is-psr-7-and-how-to-use-it.html.twig index 68aa1db2..4315f240 100644 --- a/src/Blog/templates/page/blog-resource/how-to/what-is-psr-7-and-how-to-use-it.html.twig +++ b/src/Blog/templates/page/blog-resource/how-to/what-is-psr-7-and-how-to-use-it.html.twig @@ -62,7 +62,7 @@ $body->write($contents); // stream contains "efabcd"

      Note: getContents() seeks the stream while reading it, therefore if the second rewind() method call was not present the stream would have resulted in abcdefabcd because the write() method appends to stream if not preceeded by rewind() or seek(0).

      Prepending by using contents as a string

      $body = $response->getBody();
       $body->rewind(); // or $body->seek(0);
       $bodyText = $body->getContends();
      -

      More information can be found in the PSR-7 article in Dotkernel3 documentation portal.

      Sources: PSR-7: HTTP messages zend-diactoros

      +

      More information can be found in the PSR-7 article in Dotkernel3 documentation portal.

      Sources: PSR-7: HTTP messages zend-diactoros

      Frequently Asked Questions

      diff --git a/src/Blog/templates/page/blog-resource/middleware/replacing-controllers-with-psr-15-compliant-handlers-in-dotkernel-light.html.twig b/src/Blog/templates/page/blog-resource/middleware/replacing-controllers-with-psr-15-compliant-handlers-in-dotkernel-light.html.twig index 2e40c962..b7a2274d 100644 --- a/src/Blog/templates/page/blog-resource/middleware/replacing-controllers-with-psr-15-compliant-handlers-in-dotkernel-light.html.twig +++ b/src/Blog/templates/page/blog-resource/middleware/replacing-controllers-with-psr-15-compliant-handlers-in-dotkernel-light.html.twig @@ -161,7 +161,5 @@ class GetPageViewHandler implements RequestHandlerInterface

      Mezzio features

      -

      Single Action Handlers in PHP Frameworks

      -

      {% endblock %} diff --git a/src/Blog/templates/page/blog-resource/php-development/protection-against-sql-injection-using-pdo-and-zend-framework.html.twig b/src/Blog/templates/page/blog-resource/php-development/protection-against-sql-injection-using-pdo-and-zend-framework.html.twig index fab6bfb1..cd036ccf 100644 --- a/src/Blog/templates/page/blog-resource/php-development/protection-against-sql-injection-using-pdo-and-zend-framework.html.twig +++ b/src/Blog/templates/page/blog-resource/php-development/protection-against-sql-injection-using-pdo-and-zend-framework.html.twig @@ -22,10 +22,6 @@ Zend_Db has two escaping methods which can be used: quote() and quo For more details see: -SQL Injection Protection in PHP With PDO (ezinearticles.com) - -Zend Webinar: Secure Application Development with the ZF -

      Frequently Asked Questions

      From 45245d3ef47762099d8560fb7c9713a28b0fbb2c Mon Sep 17 00:00:00 2001 From: OStefan2001 Date: Tue, 18 Aug 2026 23:50:22 +0300 Subject: [PATCH 6/6] Update requested --- .../adding-composer-support-in-your-dotkernel-project.md | 1 - .../autologin-using-cookie-remember-me-in-dotkernel.md | 4 ++-- .../dotkernel/migration-of-zend-framework-1-pear-channel.md | 1 - public/md-articles/dotkernel/templating-in-dotkernel3.md | 3 +-- .../dotkernel3/development-report-december-11-2017.md | 5 ----- public/md-articles/how-to/what-is-psr-7-and-how-to-use-it.md | 2 +- ...lers-with-psr-15-compliant-handlers-in-dotkernel-light.md | 1 - ...inst-sql-injection-using-pdo-and-zend-framework-part-2.md | 2 +- .../JSON-LD/dotkernel/templating-in-dotkernel3.jsonld.twig | 2 +- .../dotkernel/templating-in-dotkernel3.html.twig | 2 +- ...l-injection-using-pdo-and-zend-framework-part-2.html.twig | 2 +- ...inst-sql-injection-using-pdo-and-zend-framework.html.twig | 2 -- 12 files changed, 8 insertions(+), 19 deletions(-) diff --git a/public/md-articles/dotkernel/adding-composer-support-in-your-dotkernel-project.md b/public/md-articles/dotkernel/adding-composer-support-in-your-dotkernel-project.md index 8cfa8a38..d2c9cbfd 100644 --- a/public/md-articles/dotkernel/adding-composer-support-in-your-dotkernel-project.md +++ b/public/md-articles/dotkernel/adding-composer-support-in-your-dotkernel-project.md @@ -109,4 +109,3 @@ A: The article states it works for any Dotkernel 1.x version, as long as the ser ## Resources - [Composer install / PHP dependency manager tutorial](https://www.codementor.io/php/tutorial/composer-install-php-dependency-manager) -- [Using Dotkernel with Composer dependencies](http://www.dotkernel.com/dotkernel/using-dotkernel-with-composer-dependencies/) diff --git a/public/md-articles/dotkernel/autologin-using-cookie-remember-me-in-dotkernel.md b/public/md-articles/dotkernel/autologin-using-cookie-remember-me-in-dotkernel.md index fc3289a1..800652cd 100644 --- a/public/md-articles/dotkernel/autologin-using-cookie-remember-me-in-dotkernel.md +++ b/public/md-articles/dotkernel/autologin-using-cookie-remember-me-in-dotkernel.md @@ -84,7 +84,7 @@ npm run prod ```shell vendor/bin/phinx create --configuration=config/migrations.php RememberUserSchema ``` -3. Modify the generated migration file as in user_remember_schema, then run it against the database: +3. Modify the generated migration file as in [user_remember_schema](https://www.dotkernel.com/dotkernel/autologin-cookie-remember-me-feature/), then run it against the database: ```shell vendor/bin/phinx migrate --configuration=config/migrations.php ``` @@ -131,7 +131,7 @@ A: Add the CSS to src/App/assets/scss/components/_profile.scss, then run npm run - [Dotkernel Frontend on GitHub](https://github.com/dotkernel/frontend) - [UserRememberMe entity example](https://github.com/dotkernel/frontend/blob/3.0/src/User/src/Entity/UserRememberMe.php) -- Remember user schema migration example +- [Remember user schema migration example](https://www.dotkernel.com/dotkernel/autologin-cookie-remember-me-feature/) - [RememberMeMiddleware example](https://github.com/dotkernel/frontend/blob/3.0/src/App/src/Middleware/RememberMeMiddleware.php) - [pipeline.php example](https://github.com/dotkernel/frontend/blob/3.0/config/pipeline.php) - [UserService example](https://github.com/dotkernel/frontend/blob/3.0/src/User/src/Service/UserService.php) diff --git a/public/md-articles/dotkernel/migration-of-zend-framework-1-pear-channel.md b/public/md-articles/dotkernel/migration-of-zend-framework-1-pear-channel.md index ae7c21ea..0847332d 100644 --- a/public/md-articles/dotkernel/migration-of-zend-framework-1-pear-channel.md +++ b/public/md-articles/dotkernel/migration-of-zend-framework-1-pear-channel.md @@ -65,5 +65,4 @@ A: Using the PEAR installer: remove the installed package with `pear uninstall z ## Resources -- PEAR channel for Zend Framework 1 - [@dotkernel on Twitter](https://twitter.com/dotkernel) diff --git a/public/md-articles/dotkernel/templating-in-dotkernel3.md b/public/md-articles/dotkernel/templating-in-dotkernel3.md index 70df4e10..a50b0156 100644 --- a/public/md-articles/dotkernel/templating-in-dotkernel3.md +++ b/public/md-articles/dotkernel/templating-in-dotkernel3.md @@ -43,9 +43,8 @@ A: The previous templating engine, although solid and robust, was also 10 years A: Templates can now be written as HTML code with extra Twig tags, and Twig includes features such as layouts, loops, variables, and escaping, giving the familiarity of HTML with the overview and convenience of PHP. **Q: Where can I read the official Twig templating documentation for Dotkernel?** -A: The official documentation is linked in the article at docs.dotkernel.com/Prerequisites/Templates. +A: The official documentation is available at [twig.symfony.com](https://twig.symfony.com/). ## Resources - [Twig Templating Engine](https://twig.symfony.com/) -- Dotkernel Templates documentation diff --git a/public/md-articles/dotkernel3/development-report-december-11-2017.md b/public/md-articles/dotkernel3/development-report-december-11-2017.md index 2cd5ded4..72832278 100644 --- a/public/md-articles/dotkernel3/development-report-december-11-2017.md +++ b/public/md-articles/dotkernel3/development-report-december-11-2017.md @@ -39,8 +39,3 @@ A: Release notes were added for Dotkernel3 frontend and admin, a Webpack tutoria **Q: Who was credited as a contributor in this report?** A: JapSeyz was thanked as a contributor. -## Resources - -- Release Notes -- Webpack tutorial -- Api Endpoint Documentation Guidelines diff --git a/public/md-articles/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 index 5f3e19bc..8128fccb 100644 --- a/public/md-articles/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 @@ -200,7 +200,7 @@ $body->rewind(); // or $body->seek(0); $bodyText = $body->getContends(); ``` -More information can be found in the PSR-7 article in [Dotkernel3 documentation portal](https://docs.dotkernel.com/). +More information can be found in the [PSR-7 article](https://www.php-fig.org/psr/psr-7/) in Dotkernel3 documentation portal. Sources: [PSR-7: HTTP messages](http://www.php-fig.org/psr/psr-7/), [zend-diactoros](https://zendframework.github.io/zend-diactoros/) diff --git a/public/md-articles/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 index 5f20d96e..228620b4 100644 --- a/public/md-articles/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 @@ -145,4 +145,3 @@ A: Not necessarily - in Dotkernel Light most static-page actions were combined i - [Dotkernel Light](https://github.com/dotkernel/light) - [PR for replacing controllers with handlers](https://github.com/dotkernel/light/pull/33) - [Mezzio features](https://docs.mezzio.dev/mezzio/v3/getting-started/features/) -- Single Action Handlers in PHP Frameworks diff --git a/public/md-articles/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 index ee6d09ca..019586a1 100644 --- a/public/md-articles/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 @@ -65,4 +65,4 @@ A short tip mentioned is to use type casting to avoid SQL Injection in a WHERE c - [Protection against SQL Injection using PDO and Zend Framework (part 1)](http://www.dotkernel.com/php-development/protection-against-sql-injection-using-pdo-and-zend-framework/) - [Secure Programming with the Zend Framework (Stefan Esser slides)](http://www.suspekt.org/downloads/DPC_Secure_Programming_With_The_Zend_Framework.pdf) -- Type casting in PHP - what's the point? +- [PHP Type Casting](https://www.w3schools.com/php/php_casting.asp) diff --git a/src/Blog/templates/page/JSON-LD/dotkernel/templating-in-dotkernel3.jsonld.twig b/src/Blog/templates/page/JSON-LD/dotkernel/templating-in-dotkernel3.jsonld.twig index 948176e4..e594a297 100644 --- a/src/Blog/templates/page/JSON-LD/dotkernel/templating-in-dotkernel3.jsonld.twig +++ b/src/Blog/templates/page/JSON-LD/dotkernel/templating-in-dotkernel3.jsonld.twig @@ -44,7 +44,7 @@ { "@type": "Question", "name": "Which templating engine does Dotkernel3 use?", "acceptedAnswer": { "@type": "Answer", "text": "Dotkernel3 moved to the popular Twig Templating Engine." } }, { "@type": "Question", "name": "Why did Dotkernel move away from the previous templating engine?", "acceptedAnswer": { "@type": "Answer", "text": "The previous templating engine, although solid and robust, was also 10 years old and used techniques that had become slightly outdated, and it was one of the pain points in the previous version of Dotkernel." } }, { "@type": "Question", "name": "What features does Twig bring to Dotkernel3 templates?", "acceptedAnswer": { "@type": "Answer", "text": "Templates can now be written as HTML code with extra Twig tags, and Twig includes features such as layouts, loops, variables, and escaping, giving the familiarity of HTML with the overview and convenience of PHP." } }, - { "@type": "Question", "name": "Where can I read the official Twig templating documentation for Dotkernel?", "acceptedAnswer": { "@type": "Answer", "text": "The official documentation is linked in the article at docs.dotkernel.com/Prerequisites/Templates." } } + { "@type": "Question", "name": "Where can I read the official Twig templating documentation for Dotkernel?", "acceptedAnswer": { "@type": "Answer", "text": "The official documentation is available at twig.symfony.com." } } ] } ] diff --git a/src/Blog/templates/page/blog-resource/dotkernel/templating-in-dotkernel3.html.twig b/src/Blog/templates/page/blog-resource/dotkernel/templating-in-dotkernel3.html.twig index e9d67a00..d228d044 100644 --- a/src/Blog/templates/page/blog-resource/dotkernel/templating-in-dotkernel3.html.twig +++ b/src/Blog/templates/page/blog-resource/dotkernel/templating-in-dotkernel3.html.twig @@ -39,7 +39,7 @@ The templating engine in Dotkernel3 gives you the familiarity o
      Where can I read the official Twig templating documentation for Dotkernel? +
      -

      The official documentation is linked in the article at docs.dotkernel.com/Prerequisites/Templates.

      +

      The official documentation is available at twig.symfony.com.

      diff --git a/src/Blog/templates/page/blog-resource/php-development/protection-against-sql-injection-using-pdo-and-zend-framework-part-2.html.twig b/src/Blog/templates/page/blog-resource/php-development/protection-against-sql-injection-using-pdo-and-zend-framework-part-2.html.twig index 493e21ce..9491ff9a 100644 --- a/src/Blog/templates/page/blog-resource/php-development/protection-against-sql-injection-using-pdo-and-zend-framework-part-2.html.twig +++ b/src/Blog/templates/page/blog-resource/php-development/protection-against-sql-injection-using-pdo-and-zend-framework-part-2.html.twig @@ -41,7 +41,7 @@ What you should know about their methods is: For more details see Stefan Esser slides. -PS. A short tip, you can use cast type to avoid SQL Injection in WHERE clause where is possible. +PS. A short tip, you can use cast type to avoid SQL Injection in WHERE clause where is possible.
      $sql= 'SELECT * FROM table WHERE id = ' . (int)$_POST['id'];
       
      diff --git a/src/Blog/templates/page/blog-resource/php-development/protection-against-sql-injection-using-pdo-and-zend-framework.html.twig b/src/Blog/templates/page/blog-resource/php-development/protection-against-sql-injection-using-pdo-and-zend-framework.html.twig index cd036ccf..f5354eb1 100644 --- a/src/Blog/templates/page/blog-resource/php-development/protection-against-sql-injection-using-pdo-and-zend-framework.html.twig +++ b/src/Blog/templates/page/blog-resource/php-development/protection-against-sql-injection-using-pdo-and-zend-framework.html.twig @@ -20,8 +20,6 @@ It may also occur a problem in Zend Framework when you have SQL injection in Zend_Db has two escaping methods which can be used: quote() and quoteIdentifier(). Note that these two methods are handling strings by putting them between single quotes. -For more details see: -

      Frequently Asked Questions