diff --git a/public/llms.txt b/public/llms.txt index 2f91346f..57fb7bdc 100644 --- a/public/llms.txt +++ b/public/llms.txt @@ -174,3 +174,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. 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..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](http://framework.zend.com/manual/en/zend.db.adapter.html) +- [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/adding-composer-support-in-your-dotkernel-project.md b/public/md-articles/dotkernel/adding-composer-support-in-your-dotkernel-project.md index 4dee466d..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-…ser-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..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](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](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](https://github.com/dotkernel/frontend/blob/3.0/data/database/migrations/20220621062142_remember_user_schema.php) +- [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/doctrine-cache-using-symfony-cache.md b/public/md-articles/dotkernel/doctrine-cache-using-symfony-cache.md index c74ffc61..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](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](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/dotkernel/migration-of-zend-framework-1-pear-channel.md b/public/md-articles/dotkernel/migration-of-zend-framework-1-pear-channel.md index 5de35850..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](http://pear.dotkernel.com/) - [@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 44a58980..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](https://docs.dotkernel.com/Prerequisites/Templates) 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..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](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) diff --git a/public/md-articles/dotkernel3/dotkernel-admin-v4.md b/public/md-articles/dotkernel3/dotkernel-admin-v4.md index dcb98ccf..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/](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 83d9fef2..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](https://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 0d82567b..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](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](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](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](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 6585574a..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](https://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/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..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](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](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 0c938489..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](https://dev.to/ilyasdeckers/single-action-handlers-in-php-frameworks-3jai) 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..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](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](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](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](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](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](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](https://github.com/dotkernel/development/blob/main/wsl/HELP.md#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-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..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?](http://www.dustinweber.com/main-page/type-casting-in-php-whats-the-point/) +- [PHP Type Casting](https://www.w3schools.com/php/php_casting.asp) 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..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)](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) 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..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?](https://www.gala-global.org/language-industry/intro-language-industry/what-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](http://php.net/manual/en/intro.intl.php) +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-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..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](https://docs.dotkernel.org/frontend/v5/reference/account-anonymization/) +- [Anonymization reference](https://docs.dotkernel.org/frontend-documentation/v5/reference/account-anonymization/) ### What anonymization changes diff --git a/src/App/src/Fixture/articles_cleaned.json b/src/App/src/Fixture/articles_cleaned.json index edbfece7..2e6e1704 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", @@ -1052,7 +1052,7 @@ "post_status": "archived", "author": { "display_name": "Stas", - "github": "stas@codelobster.com" + "github": null }, "isObsolete": false, "opengraph_img": null, @@ -1698,7 +1698,7 @@ "post_status": "publish", "author": { "display_name": "Jesper", - "github": "jesper@apidemia.dk" + "github": null }, "isObsolete": false, "opengraph_img": null, @@ -1712,7 +1712,7 @@ "post_status": "publish", "author": { "display_name": "Jesper", - "github": "jesper@apidemia.dk" + "github": null }, "isObsolete": false, "opengraph_img": null, @@ -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/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/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 df91be21..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 5bdaedf8..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 2d9019c0..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-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..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 0779fd94..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/doctrine-cache-using-symfony-cache.html.twig b/src/Blog/templates/page/blog-resource/dotkernel/doctrine-cache-using-symfony-cache.html.twig index eab1beb5..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/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/dotkernel/templating-in-dotkernel3.html.twig b/src/Blog/templates/page/blog-resource/dotkernel/templating-in-dotkernel3.html.twig index 3f7ec539..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 @@ -15,8 +15,6 @@ In Dotkernel 3, we made the move to the popular Templates -

    Frequently Asked Questions

    @@ -41,7 +39,7 @@ You can read the official documentation here: Where can I read the official Twig templating documentation for Dotkernel? +
    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..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 @@ -

    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 8ad53f2c..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 afb4fb61..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 8ff76d0e..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 363d3c4e..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 @@ -24,7 +24,7 @@ If your project only contains controller-based middleware it can be migrated by  

      Dotkernel3 Migration - Expressive 2.0 -> 3.0

        -

      Packages

      +

      Packages

      In composer.json replace the matching repositories with the following:
      "dotkernel/dot-authentication-service":"^1.0",
       "dotkernel/dot-authentication-service":"^1.0",
      @@ -74,8 +74,8 @@ Remove packages:
            
    • http-interop/http-middleware
    • webimpress/http-middleware-compatibility
    -

    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: 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/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..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 264be730..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/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..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/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/ 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..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 @@ -5,25 +5,25 @@ Following the preview article about query (mixed $sql, [mixed $bind = array()]) +
  • query (mixed $sql, [mixed $bind = array()])
  • -
  • fetchAll (string|Zend_Db_Select $sql, , ) +
  • fetchAll (string|Zend_Db_Select $sql, , )
  • -
  • insert (mixed $table,  $bind) +
  • insert (mixed $table,  $bind)
  • -
  • update (mixed $table,  $bind, [mixed $where = '']) +
  • update (mixed $table,  $bind, [mixed $where = '']) @@ -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 = '']) @@ -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..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,12 +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: - -http://ezinearticles.com/?SQL-Injection-Protection-in-PHP-With-PDO&id=1815110 - -http://www.zend.com/webinar/Framework/70170000000bEs9-webinar-secure-application-development-with-the-ZF-20100505.flv -

    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..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/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 e8e7e646..05bfab01 100644 --- a/src/Page/templates/page/frontend.html.twig +++ b/src/Page/templates/page/frontend.html.twig @@ -331,7 +331,7 @@ exactly those.