Skip to content

Latest commit

 

History

History
3175 lines (2935 loc) · 363 KB

CHANGELOG.md

File metadata and controls

3175 lines (2935 loc) · 363 KB

Changelog

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

Fixed Bugs

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

Fixed Bugs

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

New Features

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

Enhancements

Refactoring

New Contributors

v4.1.5 (2021-11-08)

Full Changelog

Fixed bugs:

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

Implemented enhancements:

Merged pull requests:

New Contributors

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

New Contributors

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:

v4.0.5 (2021-01-31)

Full Changelog

Deprecations:

  • CodeIgniter\Database\ModelFactory is now deprecated in favor of CodeIgniter\Config\Factories::models()
  • CodeIgniter\Config\Config is now deprecated in favor of CodeIgniter\Config\Factories::config()
  • HTTP Layer Refactor: Numerous deprecations have been made towards a transition to a PSR-compliant HTTP layer. See the User Guide

Mime Type Detection

  • Config\Mimes::guessExtensionFromType now only reverse searches the $mimes array if no extension is proposed (i.e., usually not for uploaded files).
  • The fallback values of UploadedFile->getExtension() and UploadedFile->guessExtension() have been changed. UploadedFile->getExtension() now returns $this->getClientExtension() instead of ''; UploadedFile->guessExtension() now returns '' instead of $this->getClientExtension(). These changes increase security when handling uploaded files as the client can no longer force a wrong mime type on the application. However, these might affect how file extensions are detected in your application.

Implemented enhancements:

  • Bug: controller routing on modules not working #3927
  • CLI: method prompt should accept array validation rules #3766
  • Validation: permit_empty, optional arguments #3670
  • php 8 support #3498
  • getRoutesOptions should return the controller and method if available #3445
  • before function in FilterInterface is missing response param #2085
  • Feature Request: Centralized loggedInUser before RC #2055

Fixed bugs:

  • Bug: UploadedFile::store() can't return null #4183
  • Bug: BaseBuilder::getCompiledDelete() runs real query #4180
  • Bug: Deprecated: Required parameter $userAgent follows optional parameter $body in /opt/lampp/htdocs/framework-4.0.4/system/HTTP/IncomingRequest.php on line 161 #4172
  • Bug: table template closes tbody after tfoot #4155
  • Bug: delete_cookie() helper not working #4149
  • Bug: Required parameter $userAgent follows optional parameter $body in #4148
  • Bug: spark issue #4144
  • Bug: PostgreSQL driver issues #4142
  • Bug: phpunit coverage report causes Cannot declare class Config\App, because the name is already in use #4114
  • Bug: Wrong file/line in exceptions created by "factory" methods #4110
  • Bug: Request::withMethod() uses deprecated code #4109
  • Bug: View rendering, extracted variables overwrites existed variables(arguments and etc.) #4108
  • Bug: Loss of escape value and data in the model #4087
  • Bug: classes overwrites parameter defaults, phpDoc's defined in interfaces #4086
  • Bug: getRandomName Return file extension .csv when upload docx or xlsx becouse mimetype application/octet-stream are set #4084
  • Bug: Required parameter $from follows optional parameter $verbs #4076
  • Bug: username input form shows root as a default value #4062
  • Bug: Issue with pagination #4045
  • Bug: Model calls builder before initializing #4036
  • Bug: can't run migrations when CI_ENVIRONMENT = testing #4033
  • Bug: can't get environment variable with dot #4026
  • Bug: CodeIgniter model not recognizing custom deletedField in find queries #3999
  • Bug: assertSee() can not assert title tag. #3984
  • Bug: RAR file detected as CSV #3979
  • Bug: Session Initialization via DatabaseHandler #3978
  • Bug: required_with validation rule does not work with arrays #3965
  • Bug: helper cookie not working #3939
  • Bug: Uploaded SRT files are saved as CSV #3921
  • Bug: Pre-commit hook for Phpstan and sniffer stop working after e111f04d74569e413c5aede3ed9bd9fa1ce7dca2 #3920
  • Bug: Documentation Example Leads to Bug #3914
  • Bug: Route filter runs twice #3902
  • Bug: Premature empty check in Model->update function. #3896
  • Bug: Sqldrv problems to insert when change DBPrefix #3881
  • Bug: CI4 won't recognise current namespace for language files #3867
  • Unexpected validation bug #3859
  • Bug: single_service does not set service's arguments correctly #3854
  • Bug: debugbar should not insert code in code tag #3847
  • Parser won't properly parse tags that have a similar name #3841
  • Bug: insertBatch not generating createdField #3838
  • Bug: Parser - Replacements happening even if key does not fully matches { value } #3825
  • Bug: Parser preg_replace_callback exception if template has # #3824
  • Translation function 'lang' does not work as described #3822
  • Bug: File rewrite.php is always lost in large-request unhandled error #3818
  • Bug: Model::builder() ignores parameter #3793
  • Bug: Warning no tests found in CodeIgiter\Tests... #3788
  • Bug: Class '\CodeIgniter\Database\pdo\Connection' not found #3785
  • Bug: Composer php spark migrate error #3771
  • Bug: ORDER BY RANDOM ON SQLite3 #3768
  • Bug: CLI: generateDimensions fails with a uncaught exception when exec is disabled #3762
  • Bug: createTable if not exists not working #3757
  • Bug: SQLite drop column corrupts table cache #3752
  • Bug: route filters don't apply for different methods #3733
  • /system/Images/Image.php image()->copy() mkdir #3732
  • Bug: route bug #3731
  • page not redirecting. when i redirecting by calling function #3729
  • Bug: \Config\Services::image()->flatten() #3728
  • Bug: Parser will overwrite the value if the initial variable is same #3726
  • Bug: Validating Json Requests #3719
  • Bug: view caching not work on windows #3711
  • Bug: getRoutesOptions return wrong when I have >2 routes has same name, but different method (HTTPVerb) #3700
  • Bug: Validation with request raw body. #3694
  • Image format webp is not preserve transparent #3690
  • problem: #3686
  • Documentation Error #3668
  • Bug: BaseBuilder's query is wrong #3659
  • Bug: The lifetime of the CSRF check cookie cannot be set to 0 (Session). #3655
  • Bug: isRedirect does not respond depending on how redirects are set up. #3654
  • Bug: SQL Error when countAllResults, groupBy and DBPrefix used together #3651
  • Bug: helper current_url() return wrong protocol #3648
  • Bug: IncomingRequest::setLocale() #3640
  • CodeIgniter\Database\Exceptions\DatabaseException #8 Unable to connect to the database. #3639
  • Bug: Cannot use view filter on array values #3630
  • Bug: Changelog navigation is not working properly #3625
  • Bug: Routing 404 Override confusion under route group #3623
  • Bug: Target batch not found when running php spark migrate:rollback #3620
  • Bug: getHeaders returns Array with no values #3616
  • Ignore this, was a false report #3611
  • Bug: Incorrect type that fails strict_types=1 #3610
  • The isAJAX method does not exist in filters #3604
  • Bug: current\_url\(\) helper returns wrong url with slash between host and port #3603
  • Bug: Connection ID unknown immediately after connection #3601
  • Bug: Join Query is not working in Library #3600
  • Bug: Database cache not working #3597
  • Bug: Issue in the route, redirect to parent domain, if you put / at the end of url #3595
  • Bug: Segments Also Include The Segments In BASE_URL #3594
  • Bug: Route Filters doesn't restart in FeatureTestCase. #3591
  • Bug: CURL call returns always code 200 in case de server uses HTTP/2 #3586
  • Bug: Language folders inside locale folders NOT Working ! #3582
  • Bug: Uninitialized string offset: 1 CI 4 #3573
  • Deprecated assertArraySubset in PHPUnit8 used in FeatureResponse::assertJSONFragment #3562
  • Wrong HTTP status code #3558
  • Bug: Invalid serialization data for DateTime object #3553
  • Bug: Setting session expires parameter via $this->sessionExpiration #3543
  • Bug: Upload file validation, $model->validate return true if failed #3532
  • Bug: Inconsistent behavior of view renderer on Windows and Linux #3529
  • Bug: Add dash to parser plugin regex #3523
  • Bug: When Cronjob run the ip address of the request is 0.0.0.0 #3512
  • Bug: Inconsistency in replace() method #3510
  • Bug: setPath function in UploadedFile.php is writing the index.html wrong #3506
  • Bug: Cannot get session data after server redirecting #3503
  • Bug: Database group defined in .env doesn't work #3497
  • Bug: I cant upload mp4 files #3494
  • Bug: Error message for matches rule doesn't support nested params #3492
  • CI_VERSION = '4.0.0-beta.4'; session 文件file缓存问题失效问题;session_start(): Failed to decode session object. Session has been destroyed #3485
  • Bug: onlyDeleted() conflicts to paginate() #3482
  • Bug: Unable to connect to the database #3477
  • Bug: Argument 1 passed to CodeIgniter\Config\Services::request() must be an instance of Config\App or null, instance of BackEnd\Config\App #3475
  • Bug: Fatal error running #3473
  • Bug: set() doesn't work on DateTime database field types #3471
  • before() Filters that are executed are missing from codeigniter debug toolbar. #3470
  • Bug: Model insert method always insert with current datetime on updatedField #3469
  • Bug: The search function in the documentation is not working #3458
  • Bug: env variable database.default.dsn not working for mysqli #3456
  • Bug: #3453
  • Bug: form_textarea in form_helper does not create specified 'rows' #3452
  • Bug: afterUpdate event return array instead of key value #3450
  • Using Cronjob with php line argument while using Crontab redirects the script and never executes #3444
  • Bug: Support for SameSite cookie setting missing #3442
  • Bug: Validation mime_in SVG files not working correctly #3439
  • Bug: Cannot declare class Config\Paths, because the name is already in use #3434
  • Bug: delete_cookie() helper function not working #3433
  • Bug: insertBatch not working correctly #3432
  • Feature request : CodeIgniter\File with SplFileInfo does not have a method to rewrite parts of the file only to append an CSV style row #3431
  • Bug: SMTP to port 465 should use TLS from the start #3429
  • Bug: Form data and file is not receiving well formed with PUT Method #3417
  • Bug: form_textarea helper row and col defaults not overwriting when defined as $extra #3412
  • Encryption Class does not allow to change digest parameter from SHA512 to SHA256 or others #3404
  • Bug: table.Array in first() ... - and complex primary keys! ;-) #3394
  • Error: Email SMTP configured wrong gives error #3390
  • Bug: CodeIgniter\Router\Router hasLocale returns true even if {locale} is absent #3386
  • Bug: Logs Collector isn't collecting logs for Debug Toolbar #3376
  • Bug: Entity's original is not set #3370
  • Bug: warning in Routes.php #3369
  • Bug: Model can not insert Entity #3368
  • Bug: stringify_attributes() looks unfinished. #3363
  • Bug: php spark migrate throws wrongful CodeIgniter\Database\Exceptions\DatabaseException Unable to connect to the database #3359
  • Bug: Image watermark after save.. text not align in center middle when resolution lower and higher. #3356
  • Bug: SQL Lite driver with Builder -> InsertBatch has intermittend lastError reporting issues #3350
  • Bug: isCLI error when calling a controller from a Command Line #3342
  • Bug: missing clear upgrade instructions #3332
  • Bug: API requests with a trailing forward slash #3330
  • Bug: Pager pagination ( page value in url ) #3328
  • Bug: View layout name hierarchy is not displaying correctly on Debugbar Views #3327
  • Bug: php spark migrate on testing environment doesn't work #3309
  • Bug: Empty Entity date attributes receive current timestamp when accessed #3251
  • Bug: no Filter arguments passed #3216
  • Bug: Url Helper have a bug #3180
  • $pager->links() not working inside view layouts #3164
  • Bug: AH01075: Error dispatching request on Basic CI4 #3110
  • Bug: Using assertJSONFragment with respond() in ResponseTrait #3079
  • Bug: Filters 'except' option not removing DebugToolbar comment for view #3002
  • Bug: useSoftDeletes with like function #2380

Closed issues:

  • Seed Command in document Not found #4154
  • I18n/L10n: auto update translations #4151
  • Calling update() with an Entity throws an error #4143
  • BaseConfig property issue #4140
  • Bug: #4126
  • Bug: a new installation of codeignitor 4.0.4 show 404 error Sorry! Cannot seem to find the page you were looking for. #4111
  • Bug PHP SPARK MIGRATE #4101
  • Pagination work in local, but error in server #4096
  • updated_at field is filled with the current timestamp when inserting new data along with created_at #4038
  • Config for pager #4030
  • setUpdateBatch #4025
  • Empty html-file created when moving uploaded files with $img->move() #4020
  • php spark serve error on php 8 #3980
  • Bug: PHP8 session flush data is not deleted #3974
  • PHP8: Deprecate required param after optional #3957
  • Undefined function #3954
  • Missing function locale_set_default(...) in Codeigniter 4 #3953
  • Language\en\Language.php is only used in testing #3948
  • Bug: locale_set_default causing "Whoops" failure in MacOS PHP 7.3.9 on develop branch #3933
  • Pdo driver not found #3922
  • Mysqli Backup utility? #3906
  • Relationships - Many to many #3885
  • Bug: How can remove Codeinatore default icon #3883
  • How Can remove CodeIgniter4 icon #3882
  • Codeigniter review 2021 #3880
  • url_title doesn't work with decimal number in title #3878
  • IncomingRequest Class "hasFile" function does not exist as described in the documentation. #3852
  • Dynamically changing supported languages #3844
  • CodeIgniter\Database\Exceptions\DatabaseException #8 #3826
  • Blank page show #3812
  • Bug: folder tests not found #3807
  • Typo in the doc: cache_info() #3800
  • only_full_group_by - mysqli_sql_exception #1055 - MySql 5.7.24 #3795
  • Dev: Split ModelTest #3792
  • The formatMessage function of the Language class works intermittently #3784
  • .htaccess problem with syntax #3778
  • The page does not open correctly:( #3770
  • Restore method for CodeIgniter Model. #3767
  • Bug: Model update() only set first array value #3764
  • Bug: CLI: Exception view shows full path #3763
  • Bug: Maximum execution time exceeds while handling IPv6 Reverse Proxy IPs #3760
  • Fabricators documentation error #3743
  • is\_unique is not considering the db prefix in checking for unique values in db #3741
  • Grouping routes should let me pass additional variables within the closure function #3691
  • cannot find Ftp library. #3679
  • Make sessions never expire with $config['sess_expiration'] = -1 #3677
  • Migration trouble #3624
  • Files as optional in validation rules #3619
  • $_SERVER should not have .env file info #3615
  • Bug pars xml #3588
  • Bug: When have multi filter class, and "before" function return true,other filters after this filter not working #3579
  • can not install on linux os #3572
  • Incorrect grouping function names in documentation #3551
  • New Edge Browser missing from user agents config #3513
  • Form validation does not have a rule to validate if field value differs from a string #3462
  • updateBatch does not accept entities #3451
  • Support PSR4 #3405
  • CodeIgniter4 is ready to work with PHP 7.4? #3389
  • Using CodeIgniter4 with Oracle Database #3388
  • Can't get Controllers subfolder working #3347
  • Why redirect()->to() doesn't work inside events Model? #3346
  • Bug: requests PUT type without segment redirects to index method instead update method #3343
  • Migrations not working #3317
  • CURL Error htts SSL #3314
  • codeigniter composer global installer #3266
  • Bug: Migrations Deprecated #3195
  • Managed to reproduce this issue. Was uploading an image with jquery.dm-uploader.min.js, and trying to do some image manipulation, but when I got this error: #3174
  • Make the Model work without auto_increment primary key #3134
  • Call to undefined function CodeIgniter\Debug\current_url() #3106
  • Bug: select() & selectSum() not consistent / aligned with docs #3019
  • Remove /public in URL not working if using localhost #2930
  • The problem is in getting the file sharing by Mime #2732
  • Migration on PostgreSQL failes for tables with foreign keys #2575
  • Automatic Entity cast for Parser #2317
  • Feature: Cache Driver - Serialize/Unserialize Objects #2111
  • Model set $escape problem #1929
  • \I18n\Time setTimezone does not work as expected #1807
  • TODO Database utility backup builder #1257
  • Port FTP library from CI3 #506
  • Port MSSql Database driver from CI3 #503

Merged pull requests:

v4.0.4 (2020-07-15)

Full Changelog

Implemented enhancements:

  • Bug: incorrect type - system/Database/MYSQLi/Connection.php #2996
  • Bug: CI_DEBUG incorrect type and fails strict validation #2975

Fixed bugs:

  • Bug: Fix protocol version for DownloadResponse #3320
  • Bug: Add Honeypot::$container to env file #3318
  • Bug: Add multibyte support on DOMParser::see() #3324
  • Bug: Image width debug-bar has conflict #3323
  • Bug: Setting Encryption Service Key in app/Config/Encyption.php #3297
  • Bug: CodeIgniter\I18n -> Class 'Locale' not found #3294
  • bug cURL - Parse header and Body #3261
  • Bug: Forced HTTPS wrong redirect #3260
  • Bug: #3255
  • Testing ajax header problems #3246
  • Bug: Url's not working #3245
  • Missing code formatting for migration block in documentation #3243
  • Hint message in tutorial does not correspond to the example code shown #3242
  • How to call resource route #3239
  • Can't successfully validate CLI::prompt when field param has periods #3233
  • Bug: set_checkbox, set_radio not working default true. #3228
  • Bug: Validation wrong behaviour - Session mixed with internal validator state #3210
  • Bug: CLI: Smell on reading parameters #3205
  • Bug: MySQL Errors are not reported #3204
  • Bug: Error exception layout when its an error inside a view where code can go outside the limits #3199
  • Bug: MessageFormatter argType of "String" isn't valid #3191
  • Bug: pagination not working with segment #3188
  • Bug: is_image validation is vulnerable #3184
  • Bug: model->save() insert/update data #3177
  • Bug: The CLI::color cannot create multicolored strings if ordering of strings is reversed #3173
  • Bug: Missing function locale_set_default(...) #3171
  • Router RegEx not working. #3169
  • Bug: BaseBuilder::insertBatch() has 3 params and not 4 #3158
  • Bug: Issue using image library when original image and resized are the same size #3146
  • Bug: cannot call constructor on controller. #3145
  • Bug: CodeIgniter 4.0.3 Controller will not display pdf files in browser #3144
  • Bug: $request->getVar('test', FILTER_VALIDATE_INT) does not work if the input is an array #3128
  • Bug: A wrong escape on BaseBuilder::set() #3127
  • Bug: Can't override Translations Package Files / Keys #3125
  • Bug: Validation rules max_size #3122
  • Bug: Pagination not working with soft deleted items #3121
  • Bug: SQLite3 database file created in /public folder #3113
  • Bug: RedisHandler does not working on sessionExpiration is zero #3111
  • Bug: Implicit controller methods failing #3105
  • Bug: Custom Validation Error Messages #3097
  • Bug: API\ResponseTrait::respondNoContent return content-type header #3087
  • Bug: Running Feature Tests on multiple endpoints using filters #3085
  • Bug: FeatureResponse::isOk and redirects #3072
  • Documentation: "First Application" form validating before submitting #3071
  • Bug: Fatal error: Cannot declare class CodeIgniter\Exceptions\PageNotFoundException #3067
  • Bug: Risky feature tests with Controller returns #3063
  • Bug: Documentation news app project #3054
  • Bug: ClassMethod #3050
  • Bug: CodeIgniter\Router\RouteCollection->fillRouteParams() ErrorException on 'from' parameter containing regex pattern with '|' symbol #3048
  • Bug: Database connection #3043
  • Bug: Route redirection not working #3041
  • Bug: Model::getValidationRules() cant handle ::$validationRules if its a string #3039
  • Bug: Body data from curlrequest become unreadable when endpoint return long data #3034
  • Bug: File Validation not validate correctly. #3032
  • Bug: Fatal error when no user-agent is available #3029
  • Bug: Not possible manipulate results of renderSection() on View Layouts #3028
  • Bug: Helpers at non-default locations are not found #3026
  • Bug: Most validation rules enforce requirement of the field #3025
  • Bug: #3021
  • Bug: getPostGet($index) return $_POST if there is no $index in post and get #3020
  • Bug: Multiple File Uploads validation rule "uploaded[inputName]" does not work when the input name is an Array #3018
  • Bug: delete_files() and hidden directories #3015
  • Bug: Model::Insert() does not throw exception when object without data is passed as parameter #2998
  • Bug: Force download #2995
  • Bug: The example of "The Test Class“ is not working in Documets #2993
  • Bug: Difference in behaviour of native DateTime::setTimezone() and CI's Time:setTimezone() #2989
  • Bug: Blank Page on Production Server #2980
  • Bug: Mistake in uri_string() documentation #2972
  • Bug: route_to() does not return relative part of the path #2971
  • Bug: Encrypter->decrypt issue? #2970
  • Bug: form_upload second parameter VALUE is not used in source code #2967
  • Bug: There's no way to change default spark serve port using code #2966
  • Bug: 'method' is an empty string in PATH_INFO causes Unhandled Exception #2965
  • Bug: URI class - working with segments is really strange #2962
  • Bug: Documentation Issue #2960
  • Query Builder set update not working correctly #2959
  • Bug: Validation permit_empty does no work together with required_with and required_without #2953
  • Bug: Validation tries to validate inputs even for empty values with no required parameter #2951
  • Bug: Request URI segment is our of range CI 4.0.3 #2949
  • Bug: start migration in manual mode #2942
  • valid_url rule from validation not working correctly same as valid_url|required #2941
  • redirect route when route is more complex #2937
  • set_value does not work with NULL as second parameter #2935
  • Bug: init of $data arrays in controllers #2933
  • Bug: Translation key separated by dot #2932
  • Bug: Model Instantiation #2924
  • Model #2923
  • Bug: CURLRequest baseURI option in user guide #2922
  • Bug: Not bug, but Fix Documentation, please #2920
  • Bug: Postgresql API call delete use ->connID->affected_rows after Model::delete() got error #2918
  • Multiple table query Model first #2885
  • Bug: pager "prev" and "next" links pointing to wrong URIs #2881
  • Bug: Automatic no CLI colors for Windows terminals #2849
  • Bug: $format in ResourceController is ignored #2828
  • Bug: "Type is not supported" in Postgresql POST restful #2812
  • Bug: Cookie Helper and Response class issue #2783
  • Bug: Models, useSoftDeletes not found in findAll #2658
  • Feature: About the SameSite COOKIE RFC changes for PHP > 7.3 #2374

Closed issues:

  • Language folders inside locale folders #3300
  • Encryption Class - Decrypting: authentication failed #3258
  • form_upload second parameter VALUE was not used in source code, i found a way to do it. #3256
  • erorr line in resize image using fit in visual studio code #3249
  • Testing withSession() generates an error. #3190
  • Why is getGetPost() returning all data instead of null when index not found? #3187
  • Request setGlobal not works #3186
  • Cannot extend core HTTPException class #3178
  • Add this relationship in model. #3170
  • Execute bootstrapEnvironment() & detectEnvironment() before Services::exceptions() #3138
  • Bag pars array to xml #3092
  • utf-8 slug character doesn't work in url #3089
  • Grammar in comment #3064
  • line 374 in system/Entity.php json_encode add JSON_UNESCAPED_UNICODE #3059
  • Link to User Guide on README.md #3053
  • How to set private properties in CodeIgniter\Database\BaseResult::getCustomResultObject() #3051
  • url_title not detecting some special characteres #3038
  • Error: No input file specified. #3030
  • Can findAll function in modeling data accept 3rd parameter reset #3024
  • Class 'App\Models\UserModel' not found #3014
  • Image reorient with exif #3006
  • set cookieHTTPOnly not work #2999
  • [Feature request] Slugs Link #2988
  • [Feature request] End processing app #2982
  • Pager should have getTotalResults method function #2954
  • URL rewrite problem #2925
  • Translation file not get correct locale in 4.0.3 #2921
  • Why this route does not work ? #2919
  • Cache redis or memcached #2909
  • Cookie helper not woking #2848
  • Bug: Routing group filter not working on nested or complex routes #2390

Merged pull requests:

v4.0.3 (2020-05-01)

Full Changelog

Fixed bugs:

  • Bug: is_unique validation rule with model->save() fails #2906
  • Bug: Debugging toolbar not showing #2893
  • Bug: database query bug #2890
  • Bug: Routes - missing (:id) #2889
  • Bug: Typo example "Using Named Routes" #2888
  • Bug: I am able to make POST request to a GET route #2880
  • Bug: Argument 1 passed to CodeIgniter\Database\BaseResult::getFirstRow() must be of the type string, null given, called in /system/Model.php on line 383 #2877
  • Bug: Can't override already defined language in pager #2875
  • Installation Problem: Composer installation halts while installing kint-php/kint #2863
  • Bug: composer require codeigniter4/translations without stable version #2862
  • Bug: Method Spoofing Validation #2855
  • Bug: You made it just as impossible to get going as Laravel – BUMMER! #2850
  • Bug: localised validation messages #2845
  • Bug: Commands discovery in custom namespaces #2840
  • Bug: When the $index parameter of getGetPost or getPostGet is null, you will get an error result #2839
  • Bug: delete_cookie() doesn't work #2836
  • Bug: Model save method not working if PRIMARY KEY is VARCHAR #2835
  • Bug: Alias Filter with Multiple Filter Class Doesn't Work #2831
  • Bug: Kint Config isnt loaded #2830
  • Bug: RouteCollection::resource() doesn't work with grouped rules #2829
  • Bug: $forge Property in Seeder Class Never Initialize #2825
  • Bug: getSegments() returns an array with 2 empty strings when accessing / #2822
  • Bug: Cell Caching in View Cells and SOLVE! #2821
  • Bug: saveData option doesn't work in Views #2818
  • Bug: Validation placeholder not being replaced #2817
  • Bug: Problems with QueryBuilder when run multiple queries one by one #2800
  • Bug: Routing placeholder in "controller"part of route doesn't work #2787
  • Bug: session()->push() Strange behavior #2786
  • Bug: php spark serve #2784
  • Bug: Can't paginate query with group by #2776
  • Bug: negotiateLocale bug in Safari with fr-ca locale #2774
  • Bug: Controller in Sub Directory is not working #2764
  • Bug: rename release By "v" #2763
  • Bug: db query '?' bind is not working when use sql with ':=' operator. #2762
  • Bug: Multiple select validation problem #2757
  • Bug: Official Site is not working #2749
  • Bug: Logger context placeholders {file} and {line} are wrong #2743
  • Bug: Decimal validation fails without leading digit #2740
  • Bug: Model insert Created_at and updated_at get when new record added #2737
  • Bug: appendHeader 500 error if header does not exist #2730
  • Bug: codeigniter4 download link 404 resource not found #2727
  • Bug: Logger path property ignored #2725
  • Bug: $this->request->getPost() is empty when json is send by postman #2720
  • Bug: open path /0 at uri got error "Class Home does not exist" on development environment #2716
  • Bug: calling countAllResults after find($id) produce wrong result #2705
  • Bug: $routes->cli() accessible via web browser if autoroute is true #2704
  • Bug: Controllers and Views in subdirectories not working #2701
  • Bug: undefined model method should throw exception #2688
  • Bug: The custom error config of validation is not working #2678
  • Bug: Can't test redirect()->route('routename'), while redirect()->to('path') is working with ControllerTester #2676
  • Bug: php spark migrate:create File -n NameSpace doesn't create migration class under NameSpace/Database/Migrations directory with composer autoload #2664
  • Bug: \I18n\Time object displaying +1 year when object date is set to 2021-12-31 #2663
  • Bug: Route options filter didn't working #2654
  • Bug: Error in Seeder #2653
  • Bug: spark no longer lists function when used by without any parameters #2645
  • Bug: Number Helper, Currency Fraction issue #2634
  • Bug: forceHTTPS method ignores baseURL configuration when redirecting #2633
  • While serving Application on CLI using different port debugbar is still using a default 8080 port #2630
  • Bug: spark migrate -all with appstarter #2627
  • Bug: Problem when compiled vendor as PHAR file #2623
  • Bug: debugbar javascript error #2621
  • Bug: ResourceController json response always empty #2617
  • Bug: Chrome logger does not work. #2616
  • Bug: #2608
  • User Guide is not in HTML in the download file #2607
  • Unnecessary files in the download installation #2606
  • Bug: Class 'Kint\Renderer\Renderer' not found #2605
  • Bug: Codeigniter4/framework composer.json not updated #2601
  • [Docs] Loading Environment into Configuration documentation described wrong #2554
  • Bug: Sessions dont work on PostgreSQL #2546
  • Bug: router service adds backslash to controllername if route is configured #2520
  • Bug: JSONFormatter->format() cannot handle errordata, only outputs it's own error #2434
  • Bug: HTTP Feature Testing only runs the FIRST test #2393
  • Bug: Spark issue with PHP install location #2367
  • spark route issue #2194

Closed issues:

  • Modular MVP on CI4 #2900
  • About javascript: void (0); #2887
  • Entity returns null when used on the model #2838
  • php spark migrate -g does not work #2832
  • Bug: Namespacing of app/Config folder vs. app/Controller #2826
  • Controller Call to a member function getPost() on null #2823
  • QueryBuilder - Does not support JOIN in UPDATE #2799
  • Database model error when limiting delete() #2780
  • codeigniter4/codeigniter4 package not exists in packagist #2753
  • datamap Entities not works! #2747
  • Error: Call to undefined function CodeIgniter\CLI\mb_strpos() #2746
  • CodeIgniter\Log\Logger::logPath property is never used. #2738
  • Bug: set_radio() in Form Helper does not work when radio button value equals "0" #2728
  • Array validation has a problem #2714
  • delete cookie not working #2700
  • remove default language local from url #2682
  • OpenSSLHandler: Encrypt/Decrypt #2680
  • RESTFUL API with CORS problem #2667
  • I guess there's no the third parameter #2657
  • set ci4 repo default branch = master #2643
  • BUG: 4.0.2 Kint not found #2639
  • Feature: Migrate:Rollback/Refresh confirmation in production environment #2385

Merged pull requests:

4.0.2 (2020-02-25)

Full Changelog

Fixed bugs:

  • Bug: Your requirements could not be resolved to an installable set of packages. #2613

Merged pull requests:

  • Removed unused test class that was causing appstarter not to work from CLI. #2614 (lonnieezell)
  • [UG] Fix all Sphinx warnings #2611 (LittleJ)
  • [UG] Sphinx_rtd_theme fixes and improvements #2610 (LittleJ)

v4.0.1 (2020-02-24)

Full Changelog

Fixed bugs:

  • Bug: Difficult architecture of the codeigniter4 project #2602
  • Bug: mentioned rc4 in the changelog file of V4 userguide #2599

Merged pull requests:

  • [doc] Removal of the 'rc' parameter from the installation / update co… #2604 (jlamim)

4.0.0 (2020-02-24)

Full Changelog

Fixed bugs:

  • Bug: CI cant display error with API Response Trait #2586
  • Bug: testOrHavingBy() requires a select #2584
  • Bug: Email->validateEmail() on wrong email address leads to TypeError #2580
  • Bug: $forge->dropColumn not allowing arrays #2576
  • Bug: CI4 set ID to NULL when I try insert a row #2557
  • "Required" rules are not being enforced at all by the model #2555
  • Bug: Debug Bar showing before the head tag #2545
  • Bug: Docs / Library Reference / Validation: missing important information on reset() method #2535
  • Bug: system/Config/BaseService.php getSharedInstance() will not return mocks with non-lowercase key #2534
  • Bug: multi-column WHERE not prefixed #2532
  • Bug: CodeIgniter\Files\File::getSize() - wrong type of result #2476
  • Bug: Move work with $_GET['page'] from Model to Pager #2467
  • Bug: ImageHandler has no reality checks #2421
  • Bug: No default HTTP protocol version is set when creating a new Response #2383
  • Bug: Filter wildcards ignore default methods #2455
  • trailing slash cause redirect to root #2445
  • Bug: Commands cannot accept many paths #2148

Closed issues:

  • Add an 'alpha_numeric_punct' rule to FormatRules #2549
  • Feature: Forge, Adding Foreign key for table already created #2543
  • Error In UserGuide #2530
  • Lack of test on Travis for PHP 7.4 and tests don't run on upcoming PHP versions #2293
  • Feature: model helper #2292
  • Issue with layouts renderer and sections => merge sections in one view #2491
  • Update package dependency version for kint-php/kint #2373

Merged pull requests:

v4.0.0-rc.4 (2020-02-07)

Full Changelog

Fixed bugs:

  • Bug: Class 'Locale' not found when I try to use Time::parse() #2519
  • Bug: Wrong Links for pager when having subfolders #2505
  • View Cell render not be call initController #2500
  • Bug: user guide compile failed. #2492
  • Bug: setAutoRoute to false not working #2480
  • Bug: CodeIgniter\Router\Router->checkRoutes() strpos() expects parameter 1 to be string, array given #2479
  • Bug: Unable to use ul() helper with out modification #2473
  • Bug: Cannot pass value in the function in ControllerTest #2470
  • Bug: $useTimestamps cause insert() exception #2469
  • Bug: prototype of setBody($data); method in CodeIgniter\HTTP\Message should be changed to setBody(string $data); #2466
  • Don't update it. It's rubbishBug: #2463
  • Bug: Autoload over Composer #2461
  • Bug: The docs say composer install instead of composer required #2457
  • Bug: if not CSPEnaled but i have some #2456
  • Bug: IsAJAX() relies on inconsistent headers #2454
  • Bug: #2448
  • Bug: Double use where and etc #2444
  • Bug: Double use esc function with form_input and etc... #2443
  • Bug: Entity casts do not cast the original data #2441
  • Bug: namespace view returns empty value #2440
  • Bug: php spark Call to undefined function CodeIgniter\Autoloader\get_filenames() #2439
  • Bug: Curly brace deprecation #2430
  • Bug: Routes and Namespace #2423
  • Bug: Validation not working #2418
  • Bug: Baseservice - getSharedInstance #2414
  • Bug: base_url() and redirect() not honoring baseURL with paths #2409
  • form_input double escaping data why ? #2405
  • Bug: initController not called in ResourceController #2404
  • Bug: #2397
  • URL Helper safe_mailto UTF8Bug: #2396
  • CSRF Filter redirect back not working #2395
  • Bug: 404 error page override with cache #2391
  • Bug: Mixed migration formats don't order #2386
  • Bug: \CodeIgniter\Model::validate() returns TRUE if $data is empty #2384
  • Bug: Usage of static::methodName in CodeIgniter\Config\Services prevents Service overriding #2376
  • Bug: Duplicate headers in response #2375
  • Bug: Nothing work with minimal config (DIRECTORY SEPARATOR) #2370
  • Bug: current_url function not working as expected. #2365
  • Bug: localhost development server after edit the content not updated or reloaded #2363
  • Bug: with the parser, nl2br in a foreach duplicates entries. #2360
  • Bug: Prevents the use of global functions with parameters [Validation] #2357
  • Bug: lang('app.name') should prefer APPPATH.Language/Validation/en/app.php over installed packages #2354
  • Bug: Inappropriate delimiter used in fillRouteParams #2353
  • Bug: Please there is issue on the time and date guide in codeigniter 4 #2351
  • Bug: Model()->find(null) should return null value #2350
  • Bug: URL, Redirect and Pagination misbehave #2347
  • Bug: Toolbar ErrorException Division by zero #2340
  • Bug: Cannot pass a string param with a space to a custom parser plugin #2318
  • Bug: Logger Path Duplicated #2286
  • Bug: Email: SMTP Protocol Implementation @ Data Termination #2274
  • Bug: Redirect to route ignores path set in baseurl #2119

Closed issues:

  • $routes not do the job as well #2531
  • Multiple composer.json handling in codeigniter!! #2528
  • Mention about events in the upgrading doc pages #2521
  • Missing Constant in E-Mail #2512
  • Image Manipulation Class #2498
  • Schema param in the .env file #2483
  • system\Database\MigrationRunner->regress() resets instance variable $namespace to null #2474
  • Issue passing data to views #2464
  • currentURL & previousURL doesnt work in parser #2460
  • Double quotes #2459
  • Feature about Localization #2419
  • Documentation Fix Needed #2412
  • No such file or Directory found In Ubuntu 19.10 #2394
  • previous_url() not loading the base path together #2378
  • Wrong Logo on GitHub page #2372
  • How to use the pagination with view parser? #2371
  • Feature Request: Validation: in_db[table.field] #2366
  • Feature request #2361
  • Feature: AJAX route option #2310
  • Return value of CodeIgniter\Database\BaseConnection::getConnectStart() must be of the type float, null returned #2158
  • Create Security Guideline #73

Merged pull requests:

v4.0.0-rc.3 (2019-10-19)

Full Changelog

Fixed bugs:

  • Route can not work: Controller or its method is not found #2299
  • CURLRequest - supplied argument is not a valid File-Handle resource #Windows x64 #2202
  • FilterExceptions result in blank page #2077

Closed issues:

  • Codeigniter 4 not redirecting well. is not including the baseUrl well on redirect #2342
  • Session variable value set to 0 #2334
  • Undefined variable: errors SYSTEMPATH/Validation/Validation.php at line 651 #2331
  • Router Regex not working with controllers #2330
  • --host,--port and others are not working #2329
  • Type juggling can be eliminated if these three small changes are made #2326
  • url_title doesn't handle diacritics #2323
  • View Cell Feature ? #2322
  • autoRoute function issue in case of sub-directory #2319
  • Can't store multidimensional data with Session Library #2309
  • Model()->find() return NULL for existing row #2306
  • Requesting Model::getValidationRules() documentation #2304
  • Routes Not working #2301
  • ViewPath cannot be moved only another path added #2291
  • Version not updated? #2287
  • _remap is not working #2277
  • Debug Toolbar error not found tpl error and fix #2275
  • cURL request returns 404 #2250
  • Problem with renaming deleted_at column inside model #2248
  • App\Config\Routes loaded twice #2203
  • Feature idea: Model results by key #2167
  • Remove "separator" comment between function declarations? #2146
  • find() is returning one character string instead of boolean #2096
  • Database Groups in Migrations #2087
  • "Cannot call session save handler in a recursive manner" #2056
  • Model afterInsert return originals? #2045
  • debug toolbar renderTimeline couses a non well formed numeric value encountered error #2034
  • Mysql update , affectedRows return bug #2003
  • Add validation on exists database before created #1759

Merged pull requests:

v4.0.0-rc.2b (2019-09-28)

Full Changelog

Merged pull requests:

v4.0.0-rc.2.1 (2019-09-28)

Full Changelog

Closed issues:

  • listTables() failing to use correct prefix #2210
  • Query Builder Class documentation #2140

v4.0.0-rc.2 (2019-09-27)

Full Changelog

Fixed bugs:

  • Add magic __isset to classes with __get #2219
  • CIDatabaseTestCase double-deletes tables #2206
  • Locals problems #2195
  • Translations are not loaded from composer repository #2120

Closed issues:

  • Query grouping not working for HAVING clause #2247
  • $builder->like() not support for HAVING clause #2242
  • invalid switch parameter #2239
  • DateTime::createFromFormat() parameter incorrect #2238
  • strlen() expects parameter string, integer given #2237
  • ini_set() expects parameter 2 to be string, integer given #2236
  • ini_set() expects parameter 2 to be string, integer given #2235
  • # ini_set() expects parameter 2 to be string, integer given #2234
  • Extending The Model #2223
  • BUG curl_setopt_array(): supplied argument is not a valid file-handle resource #2222
  • How do I dynamically modify the configuration? #2214
  • Document the "whoops" error page #2198
  • Fail to open system/bootstrap.php #2193
  • Function lang() / Type of return value #2192
  • Can we use codeigniter 4 on live server?? #2188
  • Custom query in model CI4 #2187
  • conflict between php zlib.output_compression and output buffering #2182
  • API Trait documentation fix - failValidationError #2176
  • Validation issue on multiple file upload #2175
  • exif_read_data #2161
  • Database count methods #2159
  • Devstarter $salt #2156
  • Migration migrate, rollback and create problems #2147
  • Query Builder getWhere Crash #2143
  • View: $parser->render(); #2086
  • Return value of lang() must be of the type string, array returned #2075
  • Wrong links for pager #2016
  • base_url() value dropped between namespaces #1942
  • Unable to use _remap without default method in controller #1928
  • RESTful resources #1765

Merged pull requests:

v4.0.0-rc.1 (2019-09-03)

Full Changelog

Implemented enhancements:

  • BaseConfig should support array values with dot syntax #454

Closed issues:

  • [internal function]: CodeIgniter\Debug\Exceptions->shutdownHandler() #2173
  • Message->setHeader allowing duplicates #2170
  • CLI: Exit status #2163
  • QB countAllResults shouldn't use LIMIT settings #2152
  • BaseBuilder::get() resets query even if reset = false #2141
  • Some migrations not running #2139
  • Migrations Refactor Namespaces #2138
  • $primaryKey forcefully 'needs' to be auto_increment #2133
  • response data not set #2124
  • RESTful behaviour #2122
  • Redis #2121
  • Toolbar download bug #2117
  • Packagist not updated with latest release? #2115
  • Fatal error Installing using composer #2114
  • Allow loading Common.php function overrides #2101
  • Result from database was auto encoded when using Entity #2088
  • Honeypot does not close the form #2084
  • Imagick Image library handler return array instead of boolean #2029
  • Migrations command should use the UTC datetime when creating new migrations #2018
  • FileLocator->getNamespaces with parameter #1866

Merged pull requests:

v4.0.0-beta.4 (2019-07-25)

Full Changelog

Fixed bugs:

  • Controller filters match too loosely. #2038

Closed issues:

  • File->getDestination fails without extension #2103
  • User Guide: UploadedFile Class #2102
  • Worries about postgresql errors #2097
  • README.md - Link to Announcement on Forums is a 404? #2094
  • Entity castAsJson returns an empty array #2080
  • Migrations Sequential field information is required #2076
  • function gussExtension return wrong result, return csv instead of right answer "txt" or "text" #2066
  • Unexpected empty "query" property when returning CodeIgniter\HTTP\URI #2062
  • Multiple rules for file upload always return false #2061
  • The assets of the public_folder are not loaded #2047
  • Modify Model's deleted field to be a date #2041
  • Filter Config not quite working with Routes? #2037
  • force_https() doesn't redirect #2033
  • URI segments passed in as method parameters skips segments with value as 0 (zero) #2032
  • /System/Debug/Toolbar/Collectors/Routes.php on line 83 #2028
  • php spark not working #2025
  • PR#2012 caused 404 exception in spark #2021
  • Cache config #2017
  • CodeIgniter\Entity Setter doesn't work #2013
  • validation match[x] don't work anymore... if custom setter is used. #2006
  • Paths issue when moving Views outside of app folder #1998
  • View Parser Register Plugins as closures not works! #1997
  • View Parser site_url not works? #1995
  • CURLRequest not respecting debug flag #1994
  • Entity null values cause database error #1992
  • SQLite driver throws exception when using dropForeignKey #1982
  • Security: DotEnv loads DB password plaintext in $_SERVER #1969
  • Feature: FK Constraint Enable/Disable #1964
  • redirect($namedRoute) missing helpful exception #1953

Merged pull requests:

v4.0.0-beta.3 (2019-05-06)

Full Changelog

Fixed bugs:

  • travis-ci build broken #1830
  • [Re-opened] 404 File not found when running CodeIgniter on local Apache web server and virtual hosts #1400
  • MySQLi SSL verify #1219

Closed issues:

  • SQLite driver doesn't drop indexes when dropping a table #1983
  • About mysqli options MYSQLI_OPT_INT_AND_FLOAT_NATIVE #1979
  • Toolbar won't accept custom collectors #1971
  • 404 Error in pathinfo mode #1965
  • A controller parameter without default value creates ReflectionException error #1948
  • Wrong datetime on history debug toolbar #1944
  • Appstarter is not working after installation #1941
  • AppStarter Vanilla Installation - No hint that writable directory is not writable #1934
  • Updating appstarter with composer does not take composer.phar into account #1932
  • Problem with extending core class. #1922
  • Debug Toolbar causes error if an array is provided as session value since Beta 2 #1919
  • Wrong controller filter processing because of faulty regular expression generation #1907
  • Toolbar not supporting IE11 (realXHR.responseURL) #1905
  • Validation Always Print Error Message #1903
  • Using soft deletes can lead to mysql ambiguous exception #1881
  • Error when running php spark serve (spaces in folder names) #1880
  • Class 'CodeIgniter\Filters\DebugToolbar' not found #1871
  • Should unmatched cache() return null? #1870
  • Class 'CodeIgniter\Test\CIUnitTestCase' not found when testing in Appstarter project #1864
  • Public methods in system/Controller #1849
  • Controller in folder - method not accessible unless I set a route on Linux - Windows OK #1841
  • Routing to hardcoded ids does not work #1838
  • Form Validation: required_with and required_without implementations #1837
  • Events.php on method $callable parameter accepts only callable #1835
  • Controller response property overriding by ControllerResponse inPHPUnit #1834
  • ValidationInterface run method $data attribute should be nullable #1833
  • Fail to render view in a view with layout #1826
  • UploadedFile::move and File::move have different implementation #1825
  • Missing documentation: parser is not able to handle nested loops #1821
  • Is hashId function missing? #1801
  • Parser is not able to handle nested loops #1799
  • Routing rules order [suspended / probably csrf] #1798
  • I need to call session() if I want to be able to use old() in the forms. #1795
  • Output getting buffered when running via command line #1792
  • Wrong CodeIgniter::handleRequest method definition #1786
  • File::move is not moving file #1785
  • Question about date helper #1783
  • Intention or bug? File::move does not update path #1782
  • Small typos in documentation section "Taking Advantage of Spl" #1781
  • Documentation mistake: Model::save does not return a boolean only #1780
  • Toolbar::run produces incompatible data for json_encode #1779
  • History::setFiles may crash when reading empty file #1778
  • Can't set subquery as WHERE condition. #1775
  • Ignoring 'required' validation rule for inserts. #1773
  • save() method trying to insert instead of update #1770
  • Controller Test / Feature Testing output issues #1767
  • MigrationRunner::version should return "current version string on success" #1766
  • DIRECTORY_SEPARATOR / Different Behavior under Windows #1760
  • HTTP Feature Testing not working #1710
  • alpha4->5 requires to have primary key in every model/table #1706
  • route_to('name'); does not work for other subdomains #1697
  • Router issue - overwriting. #1692
  • Using Memcache as Session Handler cause exception during regenerate. #1676
  • Model's without primary keys get pagination counts wrong #1597
  • Unable set ENVIRONMENT with Spark #1268
  • WIP Improve unit tests #512

Merged pull requests:

v4.0.0-beta.1 (2019-03-01)

Full Changelog

Fixed bugs:

  • Sequential Migrations don't run to the correct version #1666

Closed issues:

  • Back references not working in route #1761
  • setDefaultController not working as expected #1758
  • Spark doesn't work when using devstarter #1748
  • required_with and required_without validation rules #1735
  • validation rule password never match #1728
  • Entities errors #1727
  • Loading namespace helpers doesn't work as expected CI4 alpha5 #1726
  • spark migrate:latest ErrorException alpha5 #1724
  • redirect()->to lost $baseURL config #1721
  • Bug Report: Seeding #1720
  • Spark missing arguments #1718
  • Model required validation rule not working #1717
  • ZendEscaper - duplicate? #1716
  • Why we required form pointed to correct url? #1713
  • Why there is only 1 function in ArrayHelper? Can we introduce more? #1711
  • CodeIgniter\Model::cleanValidationRules() must be of the type array, string given #1707
  • alpha 4->5 query param binding #1705
  • failValidationError($description) #1702
  • Bug : changing viewsDirectory misses errors folder when exception occures #1701
  • Cannot define complex routes , i.e. date #1700
  • lang bug or not? (empty translations) #1698
  • Issue Extend Core Class #1653
  • Turn OFF getMyProperty() method during DB save. #1646
  • Model class crashes when handling complex validation rules #1574
  • Database ForgeTest hiccup #1478
  • SQLLite3 Forge needs better column handling #1255
  • TODO BaseConnection needs better error handling #1254
  • Model Alternative Keys #428

Merged pull requests:

v4.0.0.0-alpha.5 (2019-01-30)

Full Changelog

Implemented enhancements:

  • Cache system should support site-wide prefixes #1659

Fixed bugs:

  • Problem with Database BaseBuilder binds #1226

Closed issues:

  • DB query not working with disabled escaping #1687
  • migrate:refresh ArgumentCountError #1682
  • Do I need to clear old session files manually? #1681
  • Pagination / pager->links() double encodes links #1680
  • Document Method Spoofing for forms. #1668
  • insertBatch with escape=false still escapes values #1667
  • Filters should not be case sensitive #1664
  • RouteCollection::discoverRoutes incomplete #1662
  • Feature request make is_unique - more than one field. #1655
  • Toolbar logs tab - not logging #1651
  • DebugToolbar - too much recursion #1650
  • [documentation] Typing mistake in transaction example #1639
  • Transaction documentation error and/or bug #1638
  • Bug : pagination broken when using 1 as perPage #1628
  • View data not being passed between each call? #1621
  • Composer Installation downloads app and application folder. #1620
  • countAllResults() should respect soft deletes #1617
  • redirect function don't redirect to base_url #1611
  • Memory issue - Toolbar collects every query #1607
  • Pls remove string type in parameter $group at Database::forge #1605
  • SQL JOIN : bad aliasing on join with prefixed db tables #1599
  • Model's update method fails when validation rules exist #1584
  • maybe need to modify session garbage collector section. (FileHandler) #1565
  • Maybe routes has problem. [setTranslateURIDashes] #1564
  • ErrorException Trying to get property 'affected_rows' of non-object #1559
  • UG - typo in Managing Apps #1558
  • Database migration uses wrong database when initialising migration classes #1532
  • Database migration table not correctly created when a non-default database connection is used #1531
  • MYSQL : orderBy() considers CASE statement as a column #1528
  • getCompiledSelect() return query without binds #1526
  • Commit pre-hook misbehaving #1404
  • Lack of proper instruction in documentation for changing Application and System folder name #1366
  • SubQueries (tables from outside of the current model) #1175
  • FileHandler Garbage Collector fails to delete expired session files. #942

Merged pull requests:

v4.0.0-alpha.5 (2018-12-15)

Full Changelog

v4.0.0-alpha.4 (2018-12-15)

Full Changelog

Implemented enhancements:

  • WIP Vagrant and/or Docker support #1452

Closed issues:

  • Custom routing rule not match the User Guide #1609
  • Memory leak - binds not being cleared after find() #1604
  • Soft deletes need parentheses around proceeding query? #1592
  • Cannot use Model first() and update() in table without primary key #1583
  • tried to allocate #1578
  • Database Migrations inconsistent info about sequential type #1577
  • Wrong or not precise documentation of magic __get and __set methods in section Handling Business Logic #1568
  • Entity's fill method is not supporting key mapping #1567
  • Ability to add namespace to FileLocator class #1552
  • Should log file contain plain text database username passwords etc? #1542
  • Issues with redirects - had to use exit to make it work and blank page #1501
  • Use of undefined constant BASEPATH #1439
  • MYSQL : BETWEEN operator loses condition value on JOIN in (:) used #1403
  • The problem in catching exceptions #1274
  • TODO Language needs improved locating #1262
  • Email attachment #1008

Merged pull requests:

v4.0.0-alpha.3 (2018-11-30)

Full Changelog

Implemented enhancements:

  • Events should pass it's arguments by reference #1298
  • Feature request. Small but useful. Entity class. #1176

Fixed bugs:

  • \Config\Database::connect returns unexpected result for custom config values #1533
  • Old() - Seems to have an issue with retrieving array values #1492
  • Language is not merging with modules #1433
  • RedirectResponse does not set cookies #1393
  • ThrottleTest intermittent failure #1382
  • Support replacer functions on validations #1363
  • Filter on route group only attach / #1247
  • TypeError in MemcachedHandler::__construct() #1204
  • Required_without validation rule #1007
  • Division by zero - fresh install #979

Closed issues:

  • need change file_exists to is_file? #1543
  • Docs : some links are broken due to lack of prefix CodeIgniter4 #1537
  • Spelling mistake /wrong function reference in documentation "Handling Business Logic" #1535
  • Sample code in Entity documentation contains useless statement #1534
  • Model events why is there no beforeFind? #1527
  • [Documentation] Bug in code example for "Validating $_POST data" #1520
  • Before filters with sessions break php spark serve #1519
  • Missing documentation for placeholders in validation errors #1503
  • no $baseURL set will be notice "The baseURL value must be set" #1476
  • $field parameter as string at Forge::addField #1474
  • FeatureTestCaseTest still broken #1446
  • Unit test output not captured #1435
  • Response setJSON body <?php{ problem #1430
  • Migrations.classNotFound #1420
  • Controller helper Form validate('groupname') error with rules group #1419
  • Use the update() in BaseBuilder method #1414
  • Spark error #1408
  • Fix class namespacing in the user guide #1401
  • 404 File not found error when running CodeIgniter on local Apache web server and virtual hosts #1391
  • boolean cast in entity and validation error for required, in_list[0,1] #1372
  • guessExtension() #1367
  • insert() doesn't return boolean but CodeIgniter\Database\MySQLi\Result #1365
  • Entity json-array casting not functioning as expected #1359
  • An error occurs in View Class #1358
  • URI Routing bug #1354
  • Query binding - long names with funcs #1353
  • Bug report: Important bug in is_unique with DBGroup different than defined in $defaultGroup #1326
  • Environment Configuration file #1309
  • Can't call run() method with params from migrate:latest #1308
  • TODO ImageMagickHandler needs resizing fixed #1261
  • TODO CURLRequest needs helpers #1259
  • TODO Toolbar needs logging #1258
  • TODO BaseBuilder error handling #1250
  • TODO Database migrations need more flexibility #1249
  • Kint problem, chinese characters #1177
  • CSP + DebugBar #1165
  • The _remap function is wrong in the development (CI_DEBUG) #1137
  • Debug Bar Routes params bug #1104
  • Session expire time refresh by xhr/ajax request. #1074

Merged pull requests:

v4.0.0-alpha.2 (2018-10-26)

Full Changelog

Implemented enhancements:

  • Filter in the router #1315
  • Making Views path changeable #1296

Fixed bugs:

  • Error in user guide for session config #1330
  • Route in the News Tutorial Routes are ERROR all over. #1240
  • Time testing in travis-ci wonky #1229

Closed issues:

  • CLI CommandRunner is trying to instantiate abstract classes #1349
  • redirect()-> problem #1346
  • Question new form validation rule #1332
  • Download Response Not working #1331
  • Incorrect Error Message ? #1328
  • Wrong variable reference #1324
  • Model Pagination: Problem with total rows #1318
  • Should display an exception when minimum PHP version not met. #1307
  • News Tutorial Error on form submit #1301
  • Small Typo Correction #1299
  • Making config variable global as CI3 #1297
  • Config files aren't discovered automatically when using the config() function. #1293
  • News Tutorial post riute still not working #1292
  • Form Validation #1290
  • News Tutorial Routes #1288
  • I want to separate responsibility of Cast from Entity. #1287
  • error 404 in routing with controller in subdirectories #1276
  • TODO Extending helpers #1264
  • TODO MockResponse needs cookies solution #1263
  • TODO url_helper needs fixing #1260
  • TODO FileLocator better path checking #1252
  • TODO FileLocator filename sanitizing #1251
  • BUG in form_hidden with associative array #1244
  • Save entity after selected find results in null data #1234
  • System/Database/Database.php::loadForge returns Connection when using custom DBDriver #1225

Merged pull requests:

v4.0.0-alpha.1 (2018-09-29)

Full Changelog

Implemented enhancements:

  • Parser plugins should be allowed to have non-paired directives #547
  • Modify View Parser to support quoted phrases #537
  • Move Formatting functionality from the API namespace to it's own namespace #451
  • Add method spoofing for forms. #432
  • Add overwrite option to UploadedFile->move() #275
  • Add Download method to Response object. #208
  • Cache/Session fallback to predis/predis composer package if phpredis not available #192
  • View: saveData #181
  • url_helper implementation #157
  • Add true 'prepare' functionality to Queries #131
  • Add :hash placeholder for URI parameters #130
  • [URI] Provide ability for query vars manipulation #119
  • [FilesCollection] Allow getFiles with dot syntax #112
  • Database to fire events #105
  • New Toolbar Collector for Events #84
  • Debug Toolbar Enhancements #83
  • Add indexing functions to Forge #65
  • Refactor DB Backup to stream to file instead of holding in memory #64
  • Add support for foreign keys to the Forge #63
  • Headers must support multiple headers with same name #16
  • Add 'secure' option for Routes #10
  • [Test Helper] assertLogged #9
  • Additional Logger Enhancements #8
  • Implement Content Secure Policy #6
  • Replace our escaper with Zend Escaper #5
  • Redirect Security #4
  • Reverse Routing #3

Fixed bugs:

  • Testing output buffer not closed #1230
  • XML formater xmltoarray indexed array incorrect #577
  • stringify_attributes method MUST escape the values #282
  • base_url() function doesn't work properly when it used on page with uri segments #240
  • mysqli update bug #229
  • database update #201
  • Paginating Multiple Results - user Guides #196
  • 'Filters' Bug #188
  • POST and debugbar #172
  • url_helper functions don't correctly apply $baseURL #155
  • Routes ending in '/' redirect oddly #147
  • Error when trying access URI with Global Function's name #136
  • CLI problem with progress complete's message #135

Closed issues:

  • validation error #1214
  • How to use Controller own constructer? #1208
  • autoload psr4 is not right. #1205
  • multiple rules in validate() for File Upload not working #1201
  • can't use the same model to update, delete and insert record #1193
  • $myModel->find(string "value-of-my-primary-key") #1188
  • Undefined variable: _SESSION in command php spark #1183
  • Typographical error #1179
  • CSP + .kint d(foo) #1174
  • DebugBar -> Server Error 500 #1170
  • NULL in select is escaped (mysqli_sql_exception) #1169
  • Routing for "cli" actions. #1166
  • Create Auto-discovery system #1161
  • Routing wrong default value #1139
  • $session->push gets wrong #1136
  • Toolbar Oldest files delete bug #1135
  • redirect helper : redirectResponse is ignored #1127
  • redirect to route ignore baseurl #1126
  • redirect->route wrong docu or default values #1125
  • #1109 breaks route setup/uri parsing #1114
  • [TESTS] Session tests for php 7.2 #1106
  • set_cookie - not working #1103
  • safe_mailto - not working #1102
  • CLI tool sorting wrong #1099
  • Issues with redirect #1098
  • Can't use validate with regex_match[] #1084
  • problem with redirect() withInput() when validation #1081
  • Redis Handler Fails #1079
  • about cache path #1078
  • validation error #1077
  • #Request. Features for REST server. #1076
  • Database Migrations #1075
  • Codeigniter/Model - Select Database Table Fields #1072
  • New Config helper #1071
  • HTTP\ResponseTest Language Problem #1069
  • CLI Error #1068
  • Entity _options dates #1061
  • class Locale not found when using I18n/Time on xampp localhost #1059
  • Cookie not working #1057
  • Where is class 'MessageFormatter' #1054
  • Is CI 4 ready for production, please? #1051
  • Router 404 #1050
  • Toolbar - memory usage #1049
  • Session saving #1045
  • $Email->initialize($config) not work! #1042
  • Class '\CodeIgniter\Database\postgre\Connection' not found #1038
  • Tutorial controller Pages and file_exists() case sensitivity #1030
  • options base_uri not being based from curlrequest client instantiation #1029
  • Missing method in db result #1022
  • Email Config $fromEmail not work #1021
  • Class 'CodeIgniter\PageNotFoundException' not found #1016
  • Redirect glitch #1013
  • CSRF Error #1012
  • Php serv CLI stopped working #1006
  • Unit testing broken in travis-ci #1003
  • empty php_errors.log file #1001
  • [Help] setVar('body', $view, 'raw') #1000
  • It's blank page and set $baseURL #999
  • Unable to use another controller'method in one controller? #997
  • CodeIgniter\Session\Handlers\FileHandler Class and writable\session Directory not found while using .env #994
  • route_to() function not work if greater than 3 parameters. #992
  • Redirect Back #991
  • helper method should accept more than one filename.... #987
  • New Feature Request - Sub queries using query builder class #985
  • MySQL join / missing value for field which was used in join. #983
  • Documentation - Session Library - session()->start() #982
  • Cache with handler file woking incorrect on windown os #978
  • Formatter for: "content-type: application/json" #977
  • route_to function working incorrect #975
  • Getters and Setters in the Model #974
  • About Replacing Core Classes! #973
  • CodeIgniter 4 should use PSR-2 #972
  • Model Validations and Insert/Update Batchs #967
  • function old() not allow input name type array #966
  • test #963
  • namespace error in centos7 #959
  • Session cannot be saved #958
  • Model calling Query Builder replace() #957
  • gzuncompress(): data error #956
  • Additional space in a parameter which is a string (mysql) #955
  • Pager with search queries #950
  • IncomingRequest getUserAgent problem only object #948
  • url_helper current_url https fix. #947
  • Validation "matches" rule is not getting the label from the corresponding field #946
  • no luck setting up user_guide #944
  • mysqli_sql_exception: No such file or directory #943
  • Major Security Flaw - Database Credentials get leaked. #935
  • Debug Toolbar is not loaded when CSP is enabled #934
  • This is a problem with frequent operations #933
  • Redirects not working #931
  • Model fillPlaceholders() rule reference #930
  • session in not working on database #925
  • Twig #919
  • setDefaultNamespace Sub directories #917
  • Load language issue #913
  • Find a bug ,CSRFVerify #912
  • validation form_error() #911
  • About Filters matching rules #908
  • Prepared Query Update problem #904
  • Model::first() ambiguous id error #903
  • Add Model beforeDelete property #902
  • passing form_validation() errors with redirect() to any view | and include methods for post only by using [ HTTP verbs in routes ] and Resource route #900
  • Database failover error on postgresql #899
  • valid_email validation error #898
  • Multi language ( on same page ) support #891
  • About environnement error_reporting #889
  • Subfolders for lang() #887
  • Urgent issues #875
  • remark #871
  • Bug fix mysqli transaction function call #870
  • Debugbar SSL request javascript problem #867
  • Backslashes being escaped in where conditions. #866
  • Model::delete method #865
  • about SessionHandlerInterface error #864
  • Respond Error Pages by Content-Type #863
  • When codeigniter 4 will be released ? #860
  • Catch in Controllers/Checks.php #859
  • View render function LFI(local arbitray file include) issue #857
  • Suggestion regarding codeigniter 4 #856
  • Problem with using Entity class (Could not execute App\Entities::__construct()) #855
  • Config Unexpectedly Being Overwritten by $_ENV variable #853
  • Use PHP 7.0 or 7.1 typehints? #847
  • There is something wrong with ViewTest::testRenderScrapsDataByDefault #846
  • Session in filter #840
  • Moved uploaded files doesn't retain new filename. #839
  • Unable to use like in where? #838
  • Status of the version #837
  • when set cache to file, when get a error #836
  • Bug toolbar #834
  • Table name can not use the alias #831
  • Validation - permit_empty #830
  • Unable to install Codeigniter using composer #829
  • Throttler usage #827
  • Display Label on Form Validation #826
  • Question about Filters #824
  • uri->getHost() #815
  • Error changing databases CodeIgniter\Database\MySQLi\Connection::dbSelect() #813
  • Create a skeleton system for codeigniter #806
  • Feature - CLI Prompt with Validation #800
  • Routing problem /sth-abc->App:sth/foo (ok) and /sth/abc->App:sth/foo (nok) #799
  • Update with delete value #796
  • redirect()->to() is changing value of the base64 parameter #790
  • View Parser escaping data even if passed 'raw' as context in setData() #788
  • Cant instantiate Parser Directly. #787
  • about redis error #783
  • Validation issue and routing issue #782
  • Query binding stopped working #781
  • Entity exception in line 270 and 143 (current version). #780
  • about Error Handling #778
  • $this->CI->request->getIPAddress() protected #776
  • How do you access the $this bound data of the controller in the view? Ci3 is OK, ci4 doesn't seem to work #775
  • I wish I could call the $this of the controller in the business model. What's the solution? #774
  • Ignore_value should be the value of ID, how do I get it? #772
  • Can you increase the function of unique values in the test database? #771
  • about where(null) #770
  • redirect()->to() problem with output buffering #769
  • Class 'App\Models\NewsModel' not found #766
  • Undefined property: Config\App::$errorViewPath #765
  • Zend/Escaper too big ,its not necessary #764
  • .htaccess on php7.0.12 nts not work. #763
  • DebugBar Routes Collector throws ErrorException when optional parameter is not passed to controller #762
  • Debug View change page structure #761
  • Debug Tool: Show view filepath #758
  • PHPCBF - CodeIgniter4-Standard #757
  • about errorViewPath #745
  • Combine Composer with Install #744
  • I have multiple applications. How can I share helpers and Class Map in multiple applications? #742
  • I have multiple applications. How can I share helpers and Class Map in multiple applications? #741
  • When can the fourth version be released, too much #738
  • about Sub-directories #737
  • About 【Use Config\Services as CodeIgniter\Services】 #735
  • Mysqli Driver doesn't throw sql level exceptions / error #734
  • LogicException #403 - CSRF #733
  • User guide for ci4 is not responsive on mobile.(screen width less then 769px) #730
  • Composer intall, as described in documentation, points to different github repository(!) #726
  • Fatal error when trying to run using PHP built in server #725
  • Passing array as argument in Parser Plugin not working #724
  • $request->uri->getSegment(); return error #722
  • Double quotation in getFieldData(); #721
  • Should Model class implement the magic setter/getter methods for protected properties? #720
  • Forge class trying to create UNSIGNED integer fields in Postgresql #719
  • Tests Failing #717
  • Form validation not working when Passing Empty array [ ] #715
  • Redirects to wrong incomplete URL #710
  • pg_escape_literal() expects parameter 1 to be resource, boolean given #709
  • Separate DebugToolbar from CI_DEBUG #707
  • common.php #706
  • Parser::parsePair fails if template contains a $ sign #705
  • view parser throws InvalidArgumentException #704
  • Auto redirect to root folder #703
  • ErrorException #1 htmlspecialchars() expects parameter 1 to be string #702
  • Support for Labels in Validation #696
  • Why is system/bootstrap.php lowercase? #695
  • To much escaping in where #691
  • session in DB not working #690
  • imagecopyresampled(): supplied resource is not a valid Image resource #689
  • Postgres json column search error #680
  • multiple File upload issue #679
  • Postgres Json type error on save #677
  • show strange chracters in kint.php inside system/ThirdParty folder. #676
  • Need Parser plugin for validation errors. #675
  • Fatal error: Cannot use Config\Services as Services #674
  • Routing issue - bad args in function call. #672
  • Entity Concerns #662
  • Undefined method CLIRequest::isSecure() #656
  • PREG_QUOTE and SQL String Binding #655
  • Discussions on Pagination hasNext() and hasPrevious() #651
  • Feature requested- Auth and Template Engine #647
  • route_to doesn't work for post routes #642
  • CURL response header parsing (100-continue) #638
  • Q: Support of array notations is not longer supported? #627
  • Formvalidation not skip validation rules if field not required and field data empty #614
  • Route naming and Groups #612
  • Image resizing issue #610
  • Too much escaping negative int (int < 0) #606
  • Problem with Sth3Model loading from Sth2Model when Sth3Model is in subdiretory (Subdir1) #605
  • I'm not sure but captcha seems currently unavailable. Would it be included in ci4? #604
  • Issue with UploadFile [tempName == name/originalName] ? #602
  • Command Line Seeding Error #601
  • form_open_multipart('', [], $hidden) #598
  • Minor issue with docs - form helper (there is no html_escape function) - shoud be esc #595
  • $session->destroy() and $session->stop() do not work? #592
  • file upload issue #591
  • \IncomingRequest method getFiles() - Should really return only arrays? #590
  • Third argument '$param' missing in validation getErrorMessage #589
  • Error on Postgre insertID #587
  • \InputRequest $request->getFiles() doesn't return FileCollection instance #586
  • Documentation out of date? discoverLocal() #581
  • Storing data #580
  • Propose Moving Model::classToArray() method to Entity class as public method #579
  • camelize helper function incorrect #576
  • helper function uses include instead of include_once #575
  • system/Validation/Views/list.php fix #574
  • [FEATURE] Model Class: updateWhere() #572
  • Model Order #571
  • Minor thing with View file not found exception... #570
  • Error: redirect() - ltrim() expects parameter 1 to be string, object given #568
  • Tutorial is Wrong #562
  • Model Hooks/Events Suggestion #557
  • Initialize on Model __construct #556
  • Event trigger "pre_system" not found #555
  • Validation Issues #550
  • Model Entity suggestion #549
  • CodeIgniter\Files\File() and FileNotFoundException issue with creating new files #548
  • override core files #546
  • CodeIgniter\Format\JSONFormatter needs a look. #544
  • getenv non covered system method #543
  • Couldn't manage without index.php #541
  • Debug bar: Uncaught ErrorException: str_repeat(): Second argument has to be greater than or equal to 0 #538
  • Create localization filters for View Parser to aid in formatting numbers #536
  • Create lang plugin for the View Parser #535
  • Minor: Debug bar showing htmlentities (<strong>) #531
  • Autoloading not functional with custom namespaces outside application dir #529
  • where i extends Controller, and rewrite __construct, get error #527
  • Debug/ImageException.php failed to open stream: No such file or directory #525
  • Superglobals reset #524
  • Bring ENV definition back out to the index file. #519
  • Exception issue #517
  • Port Zip library from CI3 #505
  • Port Encryption library from CI3 #504
  • Port SQLite database driver from CI3 #502
  • A template engine suggession in this phase #500
  • __set in \App\Entities\Sample doesnt works #499
  • Router rule: (:alphanum) doesn't work #498
  • Undefined index: host #497
  • Unreasonable default parameter #482
  • Model issues #479
  • Route Blocking #474
  • Class 'CodeIgniter\Hooks\Hooks' not found #473
  • Work with entities and validation bug #472
  • route bug or not? #470
  • serve.php option --host no effect on line 37 #469
  • File class should stand on its own #468
  • Database can't save connect instances because var "$group" default is NULL #466
  • redirect() issue #465
  • Join not working in Query Builder #464
  • If the controller’s method's parameter has a default value , the program will show 500 error #461
  • Wrong ROOTPATH on console #460
  • Rename "public" Folder Not Working #453
  • Environment File #452
  • Currency Localisation Not Working #448
  • session getFlashdata() is not removing the flash data #446
  • CURLRequest: HTTPHEADER and POSTFIELDS #445
  • Language Line Prepend Recommendation #443
  • Debug Toolbar Array Post Data #442
  • Migration File & Class Name Issues #437
  • Validation Rule Constants #436
  • CURLRequest: Only variables should be passed by reference #434
  • CLI new commands #433
  • issue in phpunit #429
  • Model Class To Array Does Not Use Get Magic Method Or Allowed Fields Property #427
  • Response 404 not same satus get it #425
  • Response Trait Fail Server Error Method #424
  • Validation Required Rule Only Accepts Arrays or Strings #423
  • CLI with parameters is not working #422
  • API Response Trait :: failValidationError() Status Code 422 #420
  • Validation Get & Set Rule Group #419
  • One-Off Validation for a Single Value #418
  • Language File Array Support #414
  • Pagination: How to trans string param when using $pager->links()? #413
  • Validation Exceptions #412
  • Incorrect .htaccess #410
  • Call to a member function getResult() on boolean #409
  • Writable directory question #407
  • Paginate Class #406
  • Base URL Not Working With HTTPS #396
  • How to current page detailed information on router or etc? #393
  • timer long time getElapsedTime problem #390
  • Problem with system bootstrap file needs to be fixed! #389
  • redirect reverseRoute problem #387
  • Hooks::on not working (it was working some time ago) #383
  • disable coveralls auto comment on pull request #382
  • phpunit don't work (fatal error) on PHP 7.0.0 #373
  • session id validation when using php7.1 #371
  • travis test coverage report service #370
  • The efficiency of 'insertBatch' function #368
  • Run phpunit with --coverage-text/html got Error: Undefined variable: matchIP #363
  • Extending Core Classes #358
  • Validation field name issue? #356
  • Old Cache-Control header tag remove? #355
  • $this->request->getPost() // Subkey not included data #353
  • Routes static parameter problem not found page #352
  • bug-form_open_multipart #345
  • Recently ci4 everything goes well? I look ci the space named #336
  • Request setBody not working #332
  • HTTP/URI, CreateURIString yield unexpected result (http:/// instead of http://) #331
  • session class: inconsistency on get() between document and code #330
  • Model.php Return Type Object causes Error when Saving. (Fixed with this modification) #329
  • a bug about set() #325
  • google map in Mysqli Could be a Mistake #324
  • Modules Controllers sub-directory problem #322
  • Post action after Toolbar -> Vars -> Headers Content-Type 2 lines #321
  • Database builder->table() connection reference problem #320
  • RedisHandler, Session regenerate id problem #318
  • view_cell optional variables array_key_exists null fix. #317
  • sessionDriver Database not available #315
  • Add support for Content-MD5 headers #314
  • Scalar type declaration 'string' must be unqualified #312
  • Now ci4 product development can be used? Or how long before they can be released? Very much looking forward #311
  • Sessions in Debug Bar Could be a Mistake #310
  • Should namespaces be used or fully written at method heads #309
  • More filtering issues with Query #306
  • Too much escaping in DB? #302
  • Error Cell caching #297
  • A suggestion for debug exceptions layout #295
  • getSharedInstance doesn't work on costum services #294
  • Separated services default with trait #292
  • HTML-Purifier #291
  • Implement native ORM #289
  • Igniter 4 services #287
  • Error Documentation - Tutorial #286
  • Request is doing the filter_var even if value is not in the $_REQUEST array #285
  • controller routing #284
  • URI Routing issues #278
  • Email Library #276
  • sql error #273
  • DB Needs Transactions implemented. #268
  • Error Call to undefined method CodeIgniter\Database\MySQLi\Connection::close() #267
  • Application/ThirdParty folder necessity #265
  • ErrorException when Connecting to Multiple Databases #255
  • Toolbar.php :: ErrorException: Array to string conversion #254
  • The Hooks feature does not work #248
  • $baseUrl problem with Router #238
  • File upload bugs #236
  • standardize comments #234
  • 3.1.0 Email Library Corrupting PDF Attachments #220
  • Error DotEnv.php on line 121 #216
  • Typography Helper #214
  • Security Helper #213
  • Number Helper #212
  • Text Helper #211
  • Inflector Helper #210
  • HTML Helper #209
  • FileSystem "Helper" #207
  • Date Helper #206
  • Cookie Helper #205
  • Missing {memory_usage} ? #197
  • Exception or disable toolbar for specific URI #195
  • Config Settings Usability #186
  • Binders #185
  • Mess Detector rules #184
  • Coding Standards Fixer rules #183
  • Code Sniffer Rules #182
  • Placing view template outside of the 'Views' dir when using view() #180
  • Controller return output instead of echo view #179
  • Honeypot Filter #176
  • Form Helper #174
  • ILIKE-based portion of the query for PostgreSQL #173
  • “&get_instance()” in the Ci3 how to use it? #166
  • system/Database/BaseConnection.php Change in getFieldNames() method #164
  • Error in session FileHandler and BaseHandler #152
  • No listFields() method in Postgre connection #151
  • Controller Filters #150
  • insert bug #149
  • Router striping real dirpath from the urls. #148
  • Problem throw error for default controller #146
  • Routing issues. #145
  • Pagination Library #142
  • [i18n] Localization In Core #141
  • Language #140
  • Parser #139
  • Application directory is missing the Helpers folder #133
  • HTTP/Request.php Error #132
  • Public properties issue? #124
  • ci4 support websocket it? #121
  • View Cells #116
  • Cache Engine #115
  • Image Class #114
  • Uploader Class #113
  • API Response Trait #86
  • phpDocumentor bug #85
  • Reserved method name #76
  • Provide Throttler Filter #75
  • Ensure docs are updated for current code. #72
  • Writing Testing Docs #71
  • Update Tutorial #70
  • Review Contribution Guidelines #69
  • Database Connection setDatabase() and getVersion() methods #68
  • BaseConfig getEnvValue type juggling #67
  • Migrations should track history per db group. #66
  • Allow passing custom config values to Config\Database::connect() #62
  • SessionInterface: unset() vs remove() #60
  • Remove Query Builder caching #59
  • Why is $getShared = false the default? #55
  • Why IncomingRequest has setCookie()? #52
  • AutoRoute and method arguments #45
  • Rename the loader class #39
  • exit() prevents from testing #31
  • getHeaders #27
  • SYSDIR #25
  • Coding style checker #21
  • Test folder structure #20
  • Namespace for test case classes #17
  • Missing protocolVersion in response header #15
  • Problem with Code Coverage Reporting #13
  • Class 'Config\App' not found #12
  • Can't get Code Coverage #7
  • APPPATH, SYSPATH and similar constants. Rename? #2

Merged pull requests:

* This Changelog was automatically generated by github_changelog_generator