Skip to content

Releases: phalcon/cphalcon

v4.1.2

25 Apr 17:00
ae581a3
Compare
Choose a tag to compare

Supported PHP versions 7.3, 7.4

Changed

  • Corrected version in package.xml

v4.1.1

21 Apr 20:41
dcb2be7
Compare
Choose a tag to compare

Supported PHP Versions: 7.2, 7.3, 7.4

Changed

  • Corrected max PHP version for PECL

Fixed

  • Fixed Logger\Log::log() log to recognize all log levels #15214
  • Changed setClaims to be protected so that the Phalcon\Security\JWT\Builder class can be properly extended. #15322

v5.0.0-alpha.1

31 Mar 17:21
b08eab7
Compare
Choose a tag to compare

Supported PHP Versions: 7.4, 8.0

Fixed

  • Support for PHP 7.4 and PHP 8.0
  • Fixed Logger\Log::log() log to recognize all log levels #15214
  • Changed setClaims to be protected so that the Phalcon\Security\JWT\Builder class can be properly extended. #15322
  • Fixed Phalcon\Mvc\Model::average() to return float value when is string #15287
  • Fixed Phalcon\Storage\Serializer\Igbinary to store is_numeric and bool values properly #15240
  • Fixed Phalcon\Validation\Validator\Confirmation was failing to compare cases such as 000123 = 123 #15347
  • Fixed Phalcon\Storage\Adapter failing to retrieve empty like stored data (such as [], 0, false) 15125
  • Fixed declarations for function getEventsManager() to allow null return 15010
  • Removed underscore from method names (starting) to abide with PSR-12 15345
  • Fixed Phalcon\Flash\Session::has() to properly check if any messages are existing 15204

v4.1.0

31 Oct 15:57
81561d8
Compare
Choose a tag to compare

Supported PHP Versions: 7.2, 7.3, 7.4

Added

  • Added JWT (JSON Web Tokens) support under Phalcon\Security\JWT. Offers support for:
    • Token
    • Parser
    • Builder
    • Validator
    • Signers (None, HMAC)
    • Base64 encode/decodeUrl helper class
      #13856
  • Added additional HTML helpers under Phalcon\Html\Helper: Anchor, Base, Body, Button, Close, Element, Form, Img, Input\Color, Input\Date, Input\DateTime, Input\DateTimeLocal, Input\Email, Input\File, Input\Hidden, Input\Image, Input\Input, Input\Month, Input\Numeric, Input\Password, Input\Range, Input\Select, Input\Search, Input\Submit, Input\Tel, Input\Text, Input\Textarea, Input\Time, Input\Url, Input\Week, Label, Link, Meta, Ol, Script, Style, Title, Ul
    #14696
  • Added Phalcon\Http\Request::getPreferredIsoLocaleVariant() to return the base language if this is a specific one (en vs en-US) #3135
  • Added preload for Volt, which will send a HTTP/2 preload header #13128
  • Added Phalcon\Helper\Arr::blackList() to exclude elements of an array by the keys obtained from the elements of a blacklist #14801 @TimurFlush
  • Added Phalcon\Debug::renderHtml() to get a HTML representation of the exception #14794 @TimurFlush
  • Added Phalcon\Mvc\Router\Annotations->setActionPreformatCallback($callback) to set a callback which pre-formats actions to custom pattern #14819
  • Added new PDO wrapper for the Data Mapper implementation, with decorated instance, locator and profiler
    • Phalcon\DataMapper\Pdo\Connection
    • Phalcon\DataMapper\Pdo\Connection\Decorated
    • Phalcon\DataMapper\Pdo\Profiler\Profiler
    • Phalcon\DataMapper\Pdo\Profiler\MemoryLogger
    • Phalcon\DataMapper\Pdo\ConnectionLocator
      This component will be used in the Data Mapper implementation but can be used as a stand alone component for PDO connections. #14733
  • Added new Query Builder, as well as a factory, for the Data Mapper implementation supporting CRUD with bound parameters
    • Phalcon\DataMapper\Query\Bind
    • Phalcon\DataMapper\Query\Delete
    • Phalcon\DataMapper\Query\Insert
    • Phalcon\DataMapper\Query\Select
    • Phalcon\DataMapper\Query\Update
    • Phalcon\DataMapper\Query\QueryFactory
      This component can be used to create SQL statements using a fluent interface. Optionally the statements can be executed from the builder itself using the DataMapper\Pdo connection. #14734
  • Added Phalcon\Mvc\Micro\LazyLoader::getHandler() to return real handler when using lazy loaded controllers for Phalcon\Mvc\Micro #14871 @Jurigag
  • Added Phalcon\Collection\CollectionInterface and Phalcon\Config\ConfigInterface to use as typehints when extending or implementing custom classes #15106 @BeMySlaveDarlin
  • Added Phalcon\Db\Adapter\AdapterInterface::getDefaultValue() and supportsDefaultValue() methods to properly support the DEFAULT keyword #15180
  • Added Phalcon\Db\Adapter\AbstractAdapter::supportsDefaultValue() method to properly support the DEFAULT keyword #15180

Changed

  • Added service checks for the session. Now cookies will be saved in the session only when the session service is defined #11770, #14649
  • Changed Phalcon\Db\Adapter\*::getRawSQLStatement() to return the full SQL query with parameters #12196
  • Changed Phalcon\Filter::sanitize to throw a E_USER_NOTICE when a filter does not exist. #14679
  • PHQL now supports the use of any printable characters from the extended ASCII table for escaped identifiers. The exception characters are [ and ]. To use [ and ] escape they (\[, \]) #14535
  • Removed UTF-8 charset when using Phalcon\Http\Response::setJsonContent to apply with rfc7159
  • Changed the visibility of properties in Phalcon\Http\Message\Uri to work with clone. #15040
  • Change Phalcon\Validation\AbstractValidator::__construct. Save custom validator message in options. #15053 @ivan-zolotavin
  • Add proxy methods without _ prefix in methods names: getRelatedRecords(), groupResult(), exists(), preSaveRelatedRecords(), preSave(), doLowUpdate(), postSaveRelatedRecords(), postSave(), cancelOperation(), doLowInsert(), getConnection(), getConnectionService(), getVersion(), getSpecial() #14971
  • Modified Phalcon\Mvc\Model\Relation to accept callable params for model relations. #15158

Fixed

  • Fixed Phalcon\Db\Dialect\Mysql::getColumnDefinition to recognize size for DATETIME, TIME and TIMESTAMP columns #13297
  • Fixed Phalcon\Events\Manager to provide callable support #13322, #15045
  • Fixed Phalcon\Validation\Validator\Uniqueness fixed except query #15084
  • Fixed Phalcon\Mvc\Model to also check the params option in cascade relations when deleting #15098
  • Fixed Phalcon\Mvc\Model to also check the params option in restricted relations when deleting #15172
  • Fixed Phalcon\Mvc\Model::findFirst() to return correct value #15077
  • Fixed Phalcon\Mvc\Model\CriteriaInterface::where() parameters #15144
  • Fixed Phalcon\Http\Response\Cookies::set() to utilize the options parameter correctly #15129
  • Fixed Phalcon\Http\Cookie::send() to define options parameter #15142
  • Fixed Phalcon\Crypt performance issues. #15118
  • Fixed Phalcon\Mvc\Router\Route unicode support in patterns #15102
  • Fixed fatal error in Phalcon\Mvc\Model::cloneResultMap() when column map is used with orm.cast_on_hydrate turned on. #14617
  • Fixed Phalcon\Mvc\Model::sum(), average(), minimum(), maxmium(), count() to utilize the transaction parameter. #15113
  • Fixed Phalcon\Mvc\Model::__set() to clear dirtyRelated when empty array is set. #14822
  • Fixed Phalcon\Mvc\Model to skip columns with default values when the DEFAULT keyword is not supported by the database adapter (SQLite) #15180
  • Fixed Phalcon\Mvc\Router to handle numeric routes properly #14926
  • Fixed Phalcon\Session\Adapter\Redis and Phalcon\Session\Adapter\Libmemcached to utilize the prefix option #15184
  • Fixed Phalcon\Mvc\Model to save the modified properties of previously queried single related records. #15148

Removed

  • Removed Phalcon\Http\Cookie binding to session #11770
    • Phalcon\Http\Cookie no longer depends on the session service and data will not be duplicated in the session. This made it difficult to use cookies in stateless applications (SPA).
  • Removed unused property Phalcon\Mvc\Router::uriSource. #15123

v4.0.6

16 May 17:34
Compare
Choose a tag to compare

Supported PHP Versions: 7.2, 7.3, 7.4

Changed

  • Changed Volt::convertEncoding to no longer using iconv for a fallback since it causes issues with macOS #14912
  • Changed schema manipulation in Phalcon\Db\Dialect\Mysql - unquote numerical defaults #14888, #14974
  • Changed the default ACL access level from boolean FALSE to Enum::DENY #14974
  • Changed the way Phalcon\Http\Response::__construct checks content data type. Now a TypeError will be thrown if incompatible data type was passed #14983
  • Changed return type hints of the following Phalcon\Flash\FlashInterface's methods: error, message, notice, success and warning #14994
  • Changed return type hint for Phalcon\Mvc\ModelInterface::sum #15000
  • Changed return type for Phalcon\Mvc\Model\Criteria::getLimit so that integer, NULL or array will be returned #15004
  • Changed return type hint for Phalcon\Mvc\Model\Manager::getCustomEventsManager to return NULL instead of boolean FALSE if there is no special events manager #15008
  • Changed Phalcon\Mvc\Model\MetaData::getDI so that now it will throw a Phalcon\Mvc\Model\Exception if there is no DiInterface instance #15011
  • Changed Phalcon\Http\Request::getJsonRawBody to use json_decode instead of Phalcon\Json::decode #14936
  • Changed Phalcon\Factory\AbstractFactory to expose getService which will throw an exception if it does not exist. Removed checkService and adjusted all references in newInstance() calls. #15038
  • Changed the visibility of methods and properties in Phalcon\Http\Message\Response, Phalcon\Http\Message\ServerRequest and Phalcon\Http\Message\Uri to work with clone. #15040

Fixed

  • Fixed Phalcon\Mvc\Model\Query\Builder::getPhql to add single quote between string value on a simple condition #14874
  • Fixed recognizing language operators inside Volt's echo mode ({{ ... }}) #14476
  • Fixed Tag::friendlyTitle to correctly convert titles under MacOS and Windows #14866
  • Fixed the Volt compiler to no longer parse cache fragments and thus searching for the viewCache service (deprecated for v4) #14907
  • Fixed IN operator precedence in Volt #14816
  • Fixed testing suite to work with PHPUnit 9 when we upgrade #14837
  • Fixed return type hints of the following Phalcon\Acl\AbstractAdapter's methods: getActiveAccess, getActiveRole and getActiveComponent #14974
  • Fixed default value of the following Phalcon\Annotations\Annotation's properties: $arguments and $exprArguments #14977
  • Fixed return type hints of the following Phalcon\Annotations\Annotation's methods: getArgument, getName and getNamedArgument #14977
  • Fixed incorrect return type hint for Phalcon\Http\Response\Cookies::setSignKey #14982
  • Fixed return type hints for Phalcon\Config\ConfigFactory::load and Phalcon\Config\ConfigFactory::newInstance to explicitly indicate the return type as Phalcon\Config instance #14978
  • Fixed return type hints for the following methods #14987:
    • Phalcon\Dispatcher\AbstractDispatcher::dispatch
    • Phalcon\Dispatcher\DispatcherInterface::dispatch
    • Phalcon\Filter::get
    • Phalcon\Http\Message\AbstractCommon::cloneInstance
    • Phalcon\Http\Message\AbstractCommon::processWith
    • Phalcon\Http\Message\AbstractMessage::withAddedHeader
    • Phalcon\Http\Message\AbstractMessage::withBody
    • Phalcon\Http\Message\AbstractMessage::withHeader
    • Phalcon\Http\Message\AbstractMessage::withProtocolVersion
    • Phalcon\Http\Message\AbstractMessage::withoutHeader
    • Phalcon\Http\Message\AbstractRequest::withMethod
    • Phalcon\Http\Message\AbstractRequest::withRequestTarget
    • Phalcon\Http\Message\AbstractRequest::withUri
    • Phalcon\Mvc\Model\Binder::findBoundModel
    • Phalcon\Validation::getEntity
    • Phalcon\Validation\ValidationInterface::getEntity
  • Fixed default value of Phalcon\Crypt::$key to satisfy the interface #14989
  • Fixed return type hint for Phalcon\Di::getInternalEventsManager #14992
  • Fixed return type hints of the following Phalcon\Flash\AbstractFlash's methods: error, notice, success and warning #14994
  • Fixed return type hint for Phalcon\Translate\InterpolatorFactory::newInstance #14996
  • Fixed return type hint for Phalcon\Mvc\Model::sum #15000
  • Fixed return type hint for Phalcon\Mvc\Model\CriteriaInterface::getLimit and Phalcon\Mvc\Model\Criteria::getLimit to follow documentation and original purpose #15004
  • Fixed return type hint for Phalcon\Mvc\Model::count and Phalcon\Mvc\ModelInterface::count to reflect original behavior #15006
  • Fixed return type hint for Phalcon\Mvc\Model::getEventsManager to reflect original behavior #15008
  • Fixed return type hint for Phalcon\Mvc\Model::average and Phalcon\Mvc\ModelInterface::average to reflect original behavior #15013
  • Fixed return type hint for Phalcon\Mvc\Model\MetaData::getColumnMap and Phalcon\Mvc\Model\MetaData::getReverseColumnMap to reflect original behavior #15015
  • Fixed return type hint for Phalcon\Mvc\Model\MetaDataInterface::getColumnMap and Phalcon\Mvc\Model\MetaDataInterface::getReverseColumnMap to reflect original behavior #15015
  • Fixed return type hint for Phalcon\Mvc\Model\CriteriaInterface::getColumns and Phalcon\Mvc\Model\Criteria::getColumns to reflect original behavior #15017
  • Fixed return type hint for Phalcon\Db\Column::getSize and Phalcon\Db\ColumnInterface::getSize to reflect original behavior #15019
  • Fixed return type hint for Phalcon\Db\Column::getAfterPosition and Phalcon\Db\ColumnInterface::getAfterPosition to reflect original behavior #15021
  • Fixed return type hint for Phalcon\Mvc\Model\Manager::executeQuery and Phalcon\Mvc\Model\Manager::ManagerInterface to reflect original behavior #15024
  • Fixed return type hint for Phalcon\Mvc\Model\Resultset::getFirst and Phalcon\Mvc\Model\ResultsetInterface::getFirst to reflect original behavior #15027
  • Rollback the regression changes for Phalcon\Mvc\Model\Query::_prepareSelect to properly prepare a SQL SELECT statement from a PHQL one #14657
  • Fixed SerializerInterface usage for Phalcon\Mvc\Model\Resultset\Complex::unserialize as well as Phalcon\Mvc\Model\Resultset\Complex::unserialize #14942

Removed

  • Removed Phalcon\Translate\InterpolatorFactory::$mapper as well as Phalcon\Translate\InterpolatorFactory::$services in favor of Phalcon\Factory\AbstractFactory ones #15036

v4.0.5

07 Mar 19:09
Compare
Choose a tag to compare

Supported PHP Versions: 7.2, 7.3, 7.4

Added

Changed

Fixed

  • Fixed Phalcon\Db::fetchAll to correctly return data when Enum::FETCH_COLUMN is supplied. #13321
  • Fixed Postgres NULL values to not be required during model update. #14862
  • Fixed MySQL alter column when default value contains not only CURRENT_TIMESTAMP #14880
  • Fixed MySQL default value with ON UPDATE expression #14887
  • Fixed Str::dirFromFile() to replace . with - to avoid issues with Windows environments #14858

v4.0.4

15 Feb 22:01
b28b0a2
Compare
Choose a tag to compare

Supported PHP Versions: 7.2, 7.3, 7.4

Added

  • Added a way to utilize GitHub actions to run database tests against each RDBMS and reworked the testing suite. #14779
  • Added the latest version of Codeception (v4) and utilized the phalcon4 module. #14779

Changed

  • Changed Column 'notNull' definition to make possible create nullable (NULL) columns #14804

Fixed

  • Fixed Phalcon\Db\Adapter\Pdo\Postgresql to correctly identify bool fields instead of treating them as tinyint #14722 @tidytrax
  • Fixed Phalcon\Cli\Console to pass current container to the Phalcon\Mvc\ModuleDefinitionInterface::registerAutoloaders() #14787 @TimurFlush
  • Fixed Phalcon\Db\Dialect\Mysql::createTable() to create default value with CURRENT_TIMESTAMP ON UPDATE/DELETE [#14797]
  • Fixed Phalcon\Storage\Adapter\* to no longer accept the serializer option as it was clashing with the factory #14828
  • Fixed Phalcon\Http\Request to return the correct host on an UnexpectedValueException #14763
  • Fixed Phalcon\Assets\Collection to initialize position to 0 #14848

v4.0.3

25 Jan 22:14
Compare
Choose a tag to compare

Supported PHP Versions: 7.2, 7.3, 7.4

Fixed

  • Fixed Phalcon\Db\Adapter\Pdo\Mysql Tinyint(1) is handled as boolean under MySql #14708
  • Fixed Phalcon\Mvc\View\Engine\Volt to produce the correct order of variables for the join filter #14771
  • Fixed Phalcon\Storage\Adapter\Stream::getKeys() bug in the absence of a directory with a prefix name #14725, #14721
  • Fixed Phalcon\Debug::onUncaughtException Should accept \Throwable instead of \Exception as an argument #14738
  • Fixed Phalcon\Validation\ValidatorFactory Should return Phalcon\Validation\ValidatorInterface 14749
  • Fixed Phalcon\Mvc\Model\Binder to now correctly call has and set on the cache object #14743
  • Fixed Phalcon\Session\Adapter\Stream and Phalcon\Storage\Adapter\Stream to correctly handle simultaneous read/write #14694
  • Fixed Phalcon\Config\ConfigFactory to always add the correct extension #14756

v4.0.2

11 Jan 23:35
Compare
Choose a tag to compare

Supported PHP Versions: 7.2, 7.3, 7.4

Fixed

  • Fixed Phalcon version number incorrectly set in the previous release

v4.0.1

11 Jan 18:15
55577fd
Compare
Choose a tag to compare

Supported PHP Versions: 7.2, 7.3, 7.4

Changed

  • Changed the logic when logging times for Phalcon\Logger to use DateTimeImmutable so as to handle microseconds if necessary. #2893
  • Changed Phalcon\Http\Cookie::send and Phalcon\Http\Cookie::delete to allow for samesite to be passed in the options when using PHP > 7.3 #14627

Fixed

  • Fixed Phalcon\Mvc\Model\Criteria Di isn't set when using Criteria::fromInput() #14538
  • Fixed Phalcon\Db\Dialect\Mysql removing unnecessary parentheses for double and float #14645 @pfz
  • Fixed Phalcon\Http\Cookie::delete to parse the correct parameters - cannot use alternative syntax until PHP 7.3 #14643
  • Fixed Phalcon\Mvc\Model::__isset to take into account non visible properties by checking the getter if it exists #13518 #13900
  • Fixed Phalcon\Mvc\Model::__set to return a more informative message if we are tying to access a non visible property #13518 #13900
  • Fixed Phalcon\Mvc\Model\Resultset\Simple::toArray to correctly process virtual fields #14669
  • Fixed Phalcon\Session\Manager::getUniqueKey to prefix the key only if uniqueId is present #14688
  • Fixed Phalcon\Db\Adapter\Pdo::describeColumns to correctly detect ENUM columns #14691