Skip to content

Latest commit

 

History

History
565 lines (489 loc) · 59 KB

File metadata and controls

565 lines (489 loc) · 59 KB

Changelog 4.1

v4.1.9 (2022-02-25)

Full Changelog

SECURITY

  • Remote CLI Command Execution Vulnerability was fixed. See the Security advisory for more information.
  • Cross-Site Request Forgery (CSRF) Protection Bypass Vulnerability was fixed. See the Security advisory for more information.

v4.1.8 (2022-01-24)

Full Changelog

SECURITY

  • XSS Vulnerability in the API\ResponseTrait was fixed. See the Security advisory for more information.

v4.1.7 (2022-01-09)

Full Changelog

Breaking Changes

  • fix: replace deprecated FILTER_SANITIZE_STRING by @kenjis in #5555

Fixed Bugs

  • fix: BaseConnection::getConnectDuration() number_format(): Passing null to parameter by @kenjis in #5536
  • Fix: Debug toolbar selectors by @iRedds in #5544
  • Fix: Toolbar. ciDebugBar.showTab() context. by @iRedds in #5554
  • Refactor Database Collector display by @paulbalandan in #5553

v4.1.6 (2022-01-03)

Full Changelog

SECURITY

  • Deserialization of Untrusted Data found in the old() function was fixed. See the Security advisory for more information.

Breaking Changes

  • fix: Incorrect type BaseBuilder::$tableName by @kenjis in #5378
  • fix: Validation cannot handle array item by @kenjis in #5405

Fixed Bugs

  • fix: FileLocator cannot find files in sub-namespaces of the same vendor by @kenjis in #5292
  • fix: add a workaround for upgraded users who do not update Config\Exceptions by @kenjis in #5314
  • Fix db escape negative integers by @kenjis in #5277
  • Fix: remove incorrect processing of CLI params by @kenjis in #5274
  • fix: table alias is prefixed when LIKE clause by @kenjis in #5361
  • fix: dot_array_search() unexpected array structure causes Type Error by @kenjis in #5372
  • fix: UploadedFile::move() may return incorrect value by @kenjis in #5302
  • fix: BaseModel::insert() may not pass all the values from Entity by @katie1348 in #4980
  • fix: IncomingRequest::getJsonVar() may cause TypeError by @kenjis in #5392
  • chore: fix example test code for appstarter and module by @kenjis in #5421
  • fix: Model::save() may call unneeded countAllResults() by @kenjis in #5439
  • fix: errors when MariaDB/MySQL has ANSI_QUOTES enabled by @kenjis in #5425
  • fix: Security class sends cookies immediately by @kenjis in #5429
  • fix: is_cli() returns true when $_SERVER['HTTP_USER_AGENT'] is missing by @kenjis in #5393
  • fix: MySQLi\Connection::_foreignKeyData() may return duplicated rows by @kenjis in #5416
  • fix: number_to_currency() error on PHP 8.1 by @kenjis in #5454
  • fix: VENDORPATH definition by @kenjis in #5453
  • fix: Throttler does not show correct token time by @kenjis in #5470
  • fix: directory_mirror() throws an error if destination directory exists by @kenjis in #5493
  • fix: KINT visual error when activating CSP by @kenjis in #5501

New Features

  • feat: add filter to check invalid chars in user input by @kenjis in #5227

Enhancements

  • Add support for PHP 8.1 by @paulbalandan in #4883
  • Toolbar - Make it possible to turn off var data collection by @najdanovicivan in #5295
  • feat: add CSRF token randomization by @kenjis in #5283
  • Display file:line and trace information to database queries in debug toolbar by @lonnieezell in #5334
  • feat: add SecureHeaders filter by @kenjis in #5419
  • Feature: BaseBuilder instance as subquery. by @iRedds in #5488

Refactoring

  • Do not inappropriately register bind when the value is a closure by @vlakoff in #5247
  • refactor: replace $request->uri with $request->getUri() by @kenjis in #5346
  • Determine if binds are simple or named by looking at the $binds array by @vlakoff in #5138
  • Remove unneeded cast to array by @vlakoff in #5379
  • Additional fix for deprecated null usage by @paulbalandan in #5388
  • refactor: dot_array_search() regex by @kenjis in #5443
  • refactor: Time::getDst() by @kenjis in #5415
  • The View class. Optimizing duplicate code. by @iRedds in #5455
  • refactor: fix ThrottleTest::testFlooding by @kenjis in #5463
  • refactor: update deprecated method in DatetimeCast by @kenjis in #5474
  • Remove semicolons from SQL statements. by @ytetsuro in #5513

New Contributors

  • @katie1348 made their first contribution in #4980

v4.1.5 (2021-11-08)

Full Changelog

Fixed bugs:

  • Fix entity name generation when bundled in model by @paulbalandan in #5055
  • Fix Model::__call throwing BadMethodCallException on empty results by @ytetsuro in #5139
  • Fixed an issue where the dropForeginKey method would execute an empty query when the dropConstraintStr property was empty. by @ytetsuro in #5173
  • Update 'updated_at' when enabled in replace() by @paulbalandan in #4684
  • Fix query binding with two colons in query by @kenjis in #5117
  • Fixed the problem that _createTable does not take into account that it returns true. by @ytetsuro in #5133
  • Fixed a problem with not run escape for identities in like when insensitiveSearch is true. by @ytetsuro in #5170
  • Fixed an issue where an unnecessary prefix was given when the random number was a column. by @ytetsuro in #5179
  • Always escape identifiers in the set(), setUpdateBatch(), and insertBatch() by @ytetsuro in #5132
  • Error when value is an object - validating api data by @daycry in #5142
  • Fix color not updated in several places of the precompiled CSS by @vlakoff in #5155
  • Fix debugbar styles printing by @paulbalandan in #5100
  • Fix highlighting in database debug toolbar by @vlakoff in #5129
  • Fix debug toolbar db connection count by @danielTiringer in #5172
  • Fix CSRF filter does not work when set it to only post by @kenjis in #5194
  • Add CSRF Protection for PUT/PATCH/DELETE by @kenjis in #5228
  • Fix GC issue when session lifetime is set to 0 by @lf-uraku-yuki in #4744
  • Fix wrong helper path resolution by @paulbalandan in #5246
  • Fix: remove CURLRequest headers sharing from $_SERVER by @kenjis in #5249
  • Fix Localization not working/being ignored for 404 page by @kenjis in #5267
  • fix: module filters are not discovered when using route filters by @kenjis in #5280
  • IncomingRequest - Trim trailing slash by @najdanovicivan in #4974
  • Previous Responses by @MGatner in #5034
  • (Paging) Ensure page validity by @puschie286 in #5125
  • Fix variable variable $$id in RedisHandler by @Terrorboy in #5062
  • Fixes and enhancements to Exceptions by @paulbalandan in #5052

Implemented enhancements:

  • feat: _ can be used as separators in environment variable names by @kenjis in #5156
  • Multiple filters for a route and classname filter by @kenjis in #5128
  • Feature - Mark duplicate queries by @danielTiringer in #5185
  • [Debug] Add formatted query string to timeline. by @sfadschm in #5196
  • [Debug] Improve keyword highlighting and escaping of query strings. by @sfadschm in #5200
  • Add dropKey method to Forge by @ytetsuro in #5171
  • Reduce memory usage of insertBatch(), updateBatch() by @kenjis in #5202
  • Add Session based CSRF Protection by @kenjis in #5201
  • feat: add valid_url_strict rule by @kenjis in #5268

Merged pull requests:

  • Merge branch '4.2' by @paulbalandan in #5060
  • Update to latest laminas-escaper 2.9.0 by @samsonasik in #5065
  • Remove unintended dead code in pre-commit by @kenjis in #5116
  • Adjust orange color in debug toolbar by @vlakoff in #5136
  • Extract method to get prefix for DB access function by @ytetsuro in #5178
  • Improve model() auto-completion by @kenjis in #5186
  • Rename toolbar loader to be a regular JS file by @paulbalandan in #5224
  • [HTTP] Update Http Status Description based on latest iana.org by @samsonasik in #5235
  • Remove CSRF properties by @kenjis in #5231
  • Remove static variables for PHP 8.1 by @kenjis in #5262
  • Replace usage of FILTER_SANITIZE_STRING by @paulbalandan in #5263
  • Simplify logic of number_to_roman function by @paulbalandan in #5270
  • Fix compatibility of PgSql\Result on closing the result instance by @paulbalandan in #5279
  • Fix compatibility of Postgres result for PHP 8.1 by @paulbalandan in #5278

New Contributors

  • @Terrorboy made their first contribution in #5062
  • @vlakoff made their first contribution in #5136
  • @Felipebros made their first contribution in #5152
  • @daycry made their first contribution in #5142
  • @danielTiringer made their first contribution in #5172

v4.1.4 (2021-09-06)

Full Changelog

This release focuses on code style. All changes (except those noted below) are cosmetic to bring the code in line with the new CodeIgniter Coding Standard (based on PSR-12).

What's Changed

  • Use php-cs-fixer as coding style tool by @paulbalandan in #4770
  • Remove unused local variables by @jeromegamez in #4783
  • Use static lambda if a binding to $this is not required. by @jeromegamez in #4784
  • Use/Fix preg_quote() delimiters by @jeromegamez in #4789
  • Don't override $path parameter by @jeromegamez in #4787
  • Don't override $value parameter by @jeromegamez in #4788
  • Add brackets to clarify intent and avoid unwanted side-effects by @jeromegamez in #4791
  • Remove removed safe_mode ini Option by @jeromegamez in #4795
  • It will fix undefined index cid error when sending emails with embedded images by @mmfarhan in #4798
  • Revert Model coalesce by @MGatner in #4819
  • Master language constructs shall be used instead of aliases. by @paulbalandan in #4847
  • [Commands] Remove unused $minPHPVersion property at Serve command by @samsonasik in #4852
  • Update to latest laminas-escaper ^2.8 by @samsonasik in #4878
  • Remove 'memory_usage' from 'displayPerformanceMetrics()' comment by @Mauricevb in #4939
  • Remove useless code separator comments by @paulbalandan in #4946
  • Optimize Filters by @mostafakhudair in #4965
  • Fix properly the phpstan error in 0.12.93 by @paulbalandan in #4970
  • Manual cleanup of docblocks and comments by @paulbalandan in #4964
  • Make Cookie compatible with ArrayAccess by @paulbalandan in #5004
  • Replace deprecated FILTER_SANITIZE_STRING by @paulbalandan in #5005
  • Make CookieStore compatible with IteratorAggregate::getIterator by @paulbalandan in #5010
  • Make the session handlers all compatible with SessionHandlerInterface by @paulbalandan in #5012
  • Make CITestStreamFilter compatible with php_user_filter by @paulbalandan in #5014
  • Make Time compatible with DateTime by @paulbalandan in #5022
  • Add ReturnTypeWillChange attribute to Entity by @paulbalandan in #5028
  • Replace unused Entity private method by @paulbalandan in #5029
  • Make File compatible with SplFileInfo by @paulbalandan in #5040
  • Update documentation code samples by @paulbalandan in #5039
  • PHP Copy-Paste Detector by @MGatner in #5031
  • Fix key casting in form_dropdown helper. by @sfadschm in #5035
  • Switch to official coding standard by @paulbalandan in #5038

New Contributors

  • @mmfarhan made their first contribution in #4798
  • @Mauricevb made their first contribution in #4939

v4.1.3 (2021-06-06)

Full Changelog

Fixed bugs:

  • Bug: Error using SQLITE3 strftime in CodeIgniter 4.1.2 #4760
  • Bug: Caching something through cron, is not accessible in the web application #4751
  • Bug: SQLite Drop Column #4746
  • Bug: CURL Class - BaseURI options notworking #4713
  • Bug: autorouting #4711
  • Bug: curlrequest not using baseURI on localhost #4707
  • Bug: cli not working with cron #4699

Closed issues:

  • Bug: Class 'Locale' not found #4775
  • Bug: deprecated notice on CodeIgniter\HTTP\RequestInterface::getMethod() #4717
  • Allow to join models between primary keys and foreign keys #4714
  • DateTime::__construct(): Failed to parse time string () at position 0 (�): Unexpected character #4708
  • Bug: Query Builder breaks with SQL function LENGTH() and column name "row" #4687

Merged pull requests:

v4.1.2 (2021-05-18)

Full Changelog

Implemented enhancements:

  • New HTTP classes, Cookie and CookieStore, for abstracting web cookies.
  • New assertRedirectTo() assertion available for HTTP tests.
  • New logger handler, ErrorlogHandler, that writes to error_log().
  • Entity. Added custom type casting functionality.
  • New option in routing. The priority option lower the priority of specific route processing.
  • The Autoloader class can now load files which do not contain PHP classes. The list of non-class files will be listed in the $files property of Config\Autoload class.

Deprecations:

  • Deprecated Codeigniter\View\View::$currentSection property.
  • Language strings and exceptions on invalid cookie samesite are deprecated for the CookieException's own exception message.
  • Deprecated CodeIgniter\Entity in favor of CodeIgniter\Entity\Entity
  • Deprecated cookie-related properties of Response in order to use the Cookie class.
  • Deprecated cookie-related properties of Security in order to use the Cookie class.
  • Deprecated cookie-related properties of Session in order to use the Cookie class.
  • Deprecated Security::isExpired() to use the Cookie's internal expires status.
  • Deprecated CIDatabaseTestCase to use the DatabaseTestTrait instead.
  • Deprecated FeatureTestCase to use the FeatureTestTrait instead.
  • Deprecated ControllerTester to use the ControllerTestTrait instead.
  • Consolidated and deprecated ControllerResponse and FeatureResponse in favor of TestResponse.
  • Deprecated Time::instance(), use Time::createFromInstance() instead (now accepts DateTimeInterface).
  • Deprecated IncomingRequest::removeRelativeDirectory(), use URI::removeDotSegments() instead
  • Deprecated \API\ResponseTrait::failValidationError to use \API\ResponseTrait::failValidationErrors instead

Fixed bugs:

  • Bug: NULL Fields definition not working for MSQLi Forge in Migration due property $_null and $null names difference #4693
  • Bug: Missing Cookie Config #4619
  • Bug: #4610
  • Bug: Customized Validation language does not take effect #4597
  • Bug: colon issue in query binding #4595
  • Bug: set_checkbox() default value not working #4582
  • Bug: Request & Response objects stored multiple times #4580
  • Bug: Class information on output is missing during migrate:rollback command #4579
  • Bug: Cookie path replaced with system's PATH env variable #4559
  • Bug: Validation::withRequest() method does not receive data. #4552
  • esc and nl2br combo gives nasty HTML error output #4533
  • Bug: typo error when creating a model using php spark make:model #4525
  • Bug: if_exist not working with ".*" notation #4521
  • Bug: Query::matchSimpleBinds index problem only toolbar. #4518
  • Bug: Unable to use debugger toolbar on a live server #4516
  • Missing config options and config options repetition #4504
  • Bug: db:create command should create database even database not exists yet, and defined in .env #4498
  • Bug: Differences in file names created with CLI command #4495
  • Bug: Session removeTempdata() method not accepting arrays. #4490
  • Bug: Session remove() method not removing tempdata sessions. #4489
  • Bug: Session getFlashdata() not support for dot notation. #4488
  • Bug: New Service replacement fails at service provider precedence on core factory implementations #4483
  • Bug: Filter is not work ! #4482
  • Bug: PHPStorm anlysis fault #4474
  • Bug: apache mod_userdir causes weird URL segment duplication #4471
  • Postgre Forge doesn't use schema in creating tables #4469
  • Bug: UG QueryBuilder::from() wrong SQL example. #4464
  • Bug: results on getX() not equal #4452
  • Bug: Queries with LOWER( throwing errors #4443
  • Bug: RouteCollection::getHTTPVerb() can return null #4435
  • Bug: can't run spark migrate on CI server #4428
  • Bug: URI Routing Placeholders #4421
  • Bug: Third Flags needs default #4411
  • Bug: another Flags needs default #4410
  • Bug: Flags needs default value #4409
  • Bug: log_message passed object #4407
  • Bug: Model creation error #4393
  • Bug: If the file name contains "app", "php spark make: migration" will not create it successfully. #4383
  • Bug: IncomingRequest.php getVar() #4381
  • Bug: Minimum PHP Version Discrepancy #4361
  • Bug: insertBatch generates an incorrect SQL query if the fields differ only in number at the end #4345
  • Bug: Database/Live tests fail #4336
  • Bug: red line on model by setPrefix & prefixTable #4329
  • Bug: $model->errors() produce output when no error #4323
  • Bug: Can't Rewrite System Validation Messages #4318
  • Bug: "useSoftDelete" for model files generated by phpspark #4316
  • Bug: require the unused namespace #4309
  • Bug: FeatureTest cannot assert Status(404) #4306
  • Bug: BaseBuilder->_insert #4302
  • Bug: previous_url() contains current URL after reloading a page. #4299
  • Bug: Cannot add route to controller in filename with dash/hyphen #4294
  • Bug: FeatureTest dies when throws RedirectException/cached page #4288
  • Bug: /test.php show home page #4263
  • Bug: Fabricator::fake() function is breaking when it returns an array #4261
  • Bug: Session issue with CI Environment set to Testing (CI4) #4248
  • Bug: Wrong HTML code in output of "form_input" helper function #4235
  • make:scaffold input information is missing #4230
  • Bug: CodeIgniter 4.1.1 - csrf token is always regenerated #4224
  • Bug: getFileMultiple expects an "0" index but string is given #4221
  • Bug: cannot resolve Services::xxx() #4220
  • Bug: tfoot_open / tfoot_close have no default when using custom table template #4219
  • Bug: Spark PHP version #4213
  • Bug: Soft deletes and model validation when unique #4162
  • Bug: Debug Toolbar - Memory Leak - Allocation Exception #4137
  • current_url() global method returning URLs without the index.php part. #4116
  • Bug: appstarter HealthTest::testBaseUrlHasBeenSet fails #3977
  • Bug: Time::createFromTimestamp() uses default timezone, not UTC for timestamp #3951
  • Bug: Unexpected filter behavior #3874
  • Bug: Double initializing of class #3855
  • Bug: Registrars take priority over .env #3845
  • Bug: SQLite3 NOT NULL prevents inserts #3599
  • Bug: Model doesn't reset errors in FeatureTestCase #3578
  • Bug: Problem in "/system/Database/Query.php" function "compileBinds()" #3566
  • Bug: Exceptions cause risky Feature Tests #3114
  • Bug: current_url() loses subdomain #3004

Closed issues:

  • mysqli_sql_exception #2002 #4640
  • intl - Name missing exception #4636
  • HUGE BUG: update() function updates all records if id is empty #4617
  • Bug: Validation rule "matches" doesn't work #4615
  • Bug: chmod 777 writable/cache fixed codeignitor install for me #4598
  • Model->where method does not exist #4583
  • Transactions between two databases #4578
  • Bug: Mysql connection issue with MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT #4558
  • Release cycle #4526
  • Call to a member function setContentType() on null - Responsetrait #4524
  • Bug: mock single_service #4515
  • Bug: failed to open stream #4514
  • Array Validation Fails #4510
  • Bug: return $this->failValidationError($validation->getErrors()) Has Invalid Signature #4506
  • Bug: Ok The Model ERRORS came right back with the newest build again! #4491
  • Bug: Composer install loads require-dev when I require another package #4477
  • Logger #4460
  • Bug: Improve creation of scaffolds with the CLI #4441
  • Request: Feature Test Optimization #4438
  • request.getVar not populated with GET parameters | unexpected behavior #4418
  • Running via CLI - Only Default Controller works #4415
  • Parser content typehint [strict_types=1] #4412
  • Toolbar::setFiles() requires int [strict_types=1] #4408
  • FeatureTest currently supports file testing? #4405
  • Bug: set404Override now working in group rotes #4400
  • Dynamic URL #4394
  • ErrorException preg_replace_callback(): Unknown modifier '{' SYSTEMPATH/View/Parser.php at line 584 #4367
  • Feature: In HTTP Feature Testing, delivering in body in application/json format #4362
  • [Dev] Database Live Tests should depart from using deprecated CIDatabaseTestCase #4351
  • Bug: Migration in module (different namespace) do not find migrations #4348
  • Bug: getVar does not look at $_SESSION as documentation suggests #4284
  • QBSelect, QBFrom, other properties cannot be accessed, modified from the model. #4255
  • Dev: Restrictions on trait "ResponseTrait" #4238
  • ResponseTrait trait > Can the description support array? #4237
  • Feature: add old data in afterUpdate model event #4234
  • Dev: #4233
  • Cache unable to write to /var/www/html/ci4test/writable/cache/ #4227
  • Documentation: multiple databases setup in the ENV also need to be setup in the database config file #4218
  • Documentation: $this->request->setLocale() is missing in documentation #4091
  • vars in .env sometimes returns null #3992
  • parseRequestURI dose not override globals['server'] ? #3976
  • Feature: Spark header Suppression #3918
  • Feature: AJAX filters don't work #2314
  • Request: Bulk route filters with parameters #2078
  • Need a global way to set config values dynamically #1661
  • Feature Request : support the db config instead of .env while the core is initialzed #1618
  • TODO Database BaseConnection needs better connections #1253

Merged pull requests:

v4.1.1 (2021-02-01)

Full Changelog

Fixed bugs:

  • Fixed an issue where .gitattributes was preventing framework downloads

v4.1.0 (2021-01-31)

Full Changelog

Implemented enhancements:

  • Rector 0.9 fixes #4196
  • Cannot declare class Config\App error on running PHPUnit #4114
  • Backfill non-optional parameters (#3938)
  • Change deprecated assertFileNotExists (#3862)

For the changelog of v4.0, see CHANGELOG_4.0.md.