cakephp-1.3.21
cakephp-1.3.21 copied to clipboard
CakePHP 1.3.21: The Legacy Rapid Development Framework for PHP7+
CakePHP 1.3 for PHP 7.3+
An unofficial port of CakePHP 1.3.21 to PHP 7.3+
:warning: Only use this code, if you have an active CakePHP 1.3 version that you have to port to PHP 8! Otherwise use a current CakePHP version!
Getting Started
- Make sure your code is PHP 7.3 or newer ready.
- If you made any changes in the cake-directory, that you want to reapply in this newer PHP version, write them down.
- Delete your cake-directory.
- Copy only the cake-directory from this repository to your existing installation.
- Reapply the changes you wrote down in step 2.
- Find and fix problems related to the changes described below.
Porting CakePHP to recent PHP versions required the introduction of some breaking changes. Make sure you update your own code according to the following changes:
Renamed classes
Two classes had to be renamed:
- The class
String
has been renamed toCakeString
- The class
Object
has been renamed toCakeObject
Renamed class functions
Three class functions had to be renamed:
-
JsHelper->value()
has been renamed toJsHelper->jsonValue()
-
JavascriptHelper->value()
has been renamed toJavascriptHelper->jsonValue()
-
JsBaseEngineHelper->value()
has been renamed toJsBaseEngineHelper->jsonValue()
Renamed files
One file had to be renamed:
- "cake/libs/error.php" has been renamed to "cake/libs/error_handler.php": Change any
App::import('Core', 'Error')
toApp::import('Core', 'ErrorHandler')
Removed database drivers
Two database drivers had to be removed:
- "mysql" (replace with "mysqli")
- "mssql"
Necessary configuration changes
One configuration variable has to be changed:
- "Security.cipherSeed" must be a valid
int
instead of a string. Make sure, it is small enough to be treated like an int, and not like a float on your system. Otherwise cookies will not be decoded correctly!
MySQL
The sql-mode ONLY_FULL_GROUP_BY
must be disabled. CakePHP creates queries that are incompatible with this mode.
Postgres
The method lastInsertId()
with a second parameter had to be renamed to lastInsertX()
due to inheritance
New possible configuration options
Two new options are possible:
- "Session.cookie_samesite" sets the SameSite-cookie-parameter. Defaults to "Lax". Requires PHP 7.3+ to work.
- "Session.httpOnly" sets the HttpOnly cookie parameter.
CookieComponent
The CookieComponent now supports the SameSite-attribute.
In your controller set it like this:
$this->Cookie->samesite = "None";
Note: Value of "None" will not be sent to incompatible clients like Safari, in order to keep the intended behavior. Defaults to "Lax".
Running the tests
Core-tests have been ported to PHP 7.3+.
To run any tests, you need a Simpletest 1.0.1 version with PHP 7 support in the vendors-directory.
Notes:
- The original CakePHP 1.3 developers noted, that the core-tests cannot be run all at once. You need to run them individually, or they will fail.
- Some core-tests will fail, if you are not using a dedicated test-database. These are shortcomings in the test-cases.
- Some core-tests fail randomly, that's why they are being excluded from travis.
Contributing
Please issue a pull request if you want to contribute.