Yii PHP Framework Changelog

What's new in Yii PHP Framework 2.0.20

Jun 8, 2019
  • Bug #16509: Fixed console command help text wordwrap for multi-byte strings (alexkart)
  • Bug #17299: Fixed adding of input error class in yiiwidgetsActiveField::widget (alexkart)
  • Bug #17328: Added mime aliases for BMP and SVG files (cmoeke)
  • Bug #17336: Fixed wildcard matching in Event::hasHandlers() (samdark)

New in Yii PHP Framework 2.0.16 (Feb 5, 2019)

  • Active Record:
  • A behavior for optimistic locking was added by Salem Ouerdani, @tunecino. Optimistic locking allows multiple users to access the same record for edits and avoids potential conflicts. In case when a user attempts to save the record upon some staled data (because another user has modified the data), a StaleObjectException exception will be thrown, and the update or deletion is skipped. The locking itself was implemented from the first versions of Yii but using it properly wasn't easy. Now it is. You can find details in the guide section on optimistic locks and in OptimisticLockBehavior itself.
  • Migrations:
  • Console migration generator defaults were changed so that the migrations are generated with table prefixes used. If you want to disable this behavior, set yiiconsolecontrollersMigrateController::useTablePrefix to false via console command mappings.
  • Databases:
  • The MySQL driver now supports fractional seconds for time types (require MySQL >= 5.6.4).
  • The Oracle driver now supports resetting sequences.
  • Helpers
  • yiihelpersInflector now works correctly with UTF-8.
  • Added yiimutexFileMutex::$isWindows for Windows file shares on Unix guest machines.
  • yiihelpersUnsetArrayValue, yiihelpersReplaceArrayValue object can now be restored after serialization using var_export() function.
  • GridView
  • Added $filterOnFocusOut option that allows to toggle if filtering should be triggerd when filter field is losing focus.
  • jQuery:
  • jQuery 3.3 is now allowed to be installed.
  • Mutex:
  • Increased frequency of lock tries for yiimutexFileMutex::acquireLock() when $timeout is provided.
  • Added support for $timeout in yiimutexPgsqlMutex::acquire().
  • Security fixes
  • Two security issues were fixed in this release:
  • CVE-2018-14578: CSRF token check bypassing in yiiwebRequest::getMethod()
  • CVE-2018-19454: Excess logging of sensitive information in yiilogTarget
  • Project templates
  • Codeception configs were cleaned up in both basic and advanced project templates.
  • A basic Docker configuration was added to the Advanced project template, allowing you to quickly start developing.
  • Advanced template tests require newer version of Codeception that works starting with PHP 7.0. Old applications will work with older versions of Codeception so there's no need for upgrade if you don't want it.

New in Yii PHP Framework 2.0.11 (Feb 7, 2017)

  • Version 2.0.11 is a minor release of Yii 2.0 which contains more than 110 enhancements and bug fixes.

New in Yii PHP Framework 2.0.1 (Dec 9, 2014)

  • Bug #4471: yii\caching\ApcCache::getValues() now returns array in case of APC is installed but not enabled in CLI mode (samdark, cebe)
  • Bug #4823: yii message accuracy and error handling were improved (samdark)
  • Bug #4889: Application was getting into redirect loop when user wasn't allowed accessing login page. Now shows 403 (samdark)
  • Bug #5070: Gii controller generator should use controller class name instead of controller ID to specify new controller (qiangxue)
  • Bug #5402: Debugger was not loading when there were closures in asset classes (samdark)
  • Bug #5448: Date formatter was doing timezone conversion on date only values resulting in different date displayed than provided (cebe)
  • Bug #5452: Errors occurring after the response is sent are not displayed (qiangxue)
  • Bug #5521: Fixed yii\console\controllers\AssetController breaks CSS URLs, which start from '/' (klimov-paul)
  • Bug #5570: yii\bootstrap\Tabs would throw an exception if content is not set for one of its items (RomeroMsk)
  • Bug #5584: yii\rbac\DbRbacManager should not delete items when deleting a rule on a database not supporting cascade update (mdmunir)
  • Bug #5601: Simple conditions in Query::where() and ActiveQuery::where() did not allow yii\db\Expression to be used as the value (cebe, stevekr)
  • Bug #5619: yii\log\Target should not attempt to start session when there is none (klimov-paul, qiangxue)
  • Bug #5657: yii\caching\ApcCache::mset() and madd() may cause warning in some APC setup (LAV45)
  • Bug #5665: The currentPage meta data in the RESTful result should be 1-based, similar to that in HTTP headers (qiangxue)
  • Bug #5682: The asset command would incorrectly combine CSS files when UrlManager::linkAssets is true (dmvslv)
  • Bug #5702: Parenthesis should be automatically added to Validator::whenClient to avoid js error (mdmunir, qiangxue)
  • Bug #5745: Gii and debug modules may cause 404 exception when the route contains dashes (qiangxue)
  • Bug #5748: Smarty {path was generating absolute URLs instead of relative ones (samdark, motzel)
  • Bug #5768: When setting data-confirm attribute to a submit button, clicking on the button would not trigger form submission (qiangxue)
  • Bug #5780: QueryBuilder::batchInsert() may cause "undefined index" error (qiangxue)
  • Bug #5833: The message command fails with a FK constraint error when trying to update messages (qiangxue)
  • Bug #5863: Selecting all individual yii\grid\CheckboxColumn checkboxes in grid view wasn't resulting in "all" checkbox selected (samdark)
  • Bug #5893: yii\helpers\ArrayHelper::toArray() now applies $properties parameter for converting descending objects in recursive calls (otsec)
  • Bug #5925: ArrayHelper::htmlEncode() does not work properly when the value being encoded is a nested array (tebazil)
  • Bug #5962: DateValidator was throwing a warning on invalid dates using the ICU format on Windows, Yii now works around this PHP Bug (cebe)
  • Bug #5997: The same message may be exported twice to log targets (klimov-paul)
  • Bug #6018: When setting the encode option via yii\widgets\ActiveRecord::errorOptions, it works the other way around (stanishevsky, qiangxue)
  • Bug #6049: yii\db\Connection::getSchema() for Oracle should return false when the table does not exist. Oracle does not support ON UPDATE clause. (wenbin1989)
  • Bug #6081: yii\rbac\DbManager::getChildren() was not quoting column name properly (wenbin1989)
  • Bug #6107: yii message was emptying existing translations in .po in case of multiple categories (samdark)
  • Bug #6112: yii message was incorrectly writing not yet translated strings in .po in case of multiple categories (samdark)
  • Bug #6172: yii\rbac\DbManager should properly quote table and column names (qiangxue)
  • Bug #6164: Added missing support for yii\db\Expression to QueryBuilder BETWEEN and LIKE conditions (cebe)
  • Bug #6236: No JS scripts should be registered when yii\widgets\ActiveForm::enableClientScript is false (qiangxue)
  • Bug #6150: yii\bootstrap\Tabs dropdown IDs were generated incorrectly (samdark)
  • Bug #6266: Clicking on reset button does not hide error summary when using ActiveForm (InteLigent, qiangxue)
  • Bug #6271: Query caching returns the same data when running the same SQL with different fetch modes (grachov)
  • Bug #6279: yii\db\Schema::getLastInsertID() was passing wrong default schema name to PDO (samdark)
  • Bug #6305: yii\i18n\Formatter::asParagraphs() was not unicode-aware (samdark)
  • Bug #6311: Optimistic lock for ActiveRecord does not work as expected (qiangxue)
  • Bug #6367: Added yii\gii\generators\crud\Generator to support customizing view path for the generated CRUD controller (qiangxue)
  • Bug #6381: Client-side file validation should be disabled if the browser does not support it (Skysplit)
  • Bug: Gii console command help information does not contain global options (qiangxue)
  • Bug: yii\web\UrlRule was unable to create URLs for rules containing unicode characters (samdark)
  • Bug: yii\web\AssetManager should not publish disabled asset bundles (qiangxue)
  • Enh #608: Added yii\web\AssetConverter::$forceConvert (klimov-paul)
  • Enh #4146: Added yii\bootstrap\ButtonDropdown::$containerOptions (samdark)
  • Enh #4181: Added yii\bootstrap\Modal::$headerOptions and yii\bootstrap\Modal::$footerOptions (tuxoff, samdark)
  • Enh #4263: Added migration and SQL schema files for yii\log\DbTarget (samdark)
  • Enh #4395: Added $checkAjax parameter to yii\web\Response::redirect() to support default redirection behavior for AJAX/PJAX requests (qiangxue)
  • Enh #4450: Added yii\bootstrap\Nav::renderDropdown() (qiangxue)
  • Enh #4457: Added support for using noscript for css files registered through asset bundles and Html helper (samdark)
  • Enh #4492: Support PostgreSQL-specific syntax for QueryBuilder::alterColumn() (qiangxue)
  • Enh #4643: Extra options specified in yii\widgets\Breadcrumbs::links will be treated as HTML attributes for the generated hyperlinks (qiangxue)
  • Enh #4739: Better display of exceptions when the response format is set as "raw" format (qiangxue)
  • Enh #4791: Added console output support and more colors for console commands (6pblcb, samdark, klimov-paul, Ragazzo)
  • Enh #5005: Added support to suppress loading the same CSS files in AJAX responses (tof06, qiangxue)
  • Enh #5223: Query builder now supports selecting sub-queries as columns (qiangxue)
  • Enh #5367: Added yii\grid\DataColumn::encodeLabel (SDKiller)
  • Enh #5480: Added defensive code to yii\web\User::getIdentity() to avoid potential infinite recursion (qiangxue)
  • Enh #5494: Added support for specifying a menu header as a configuration array in yii\bootstrap\Dropdown (hiltonjanfield, qiangxue)
  • Enh #5503: Added support for DateTimeImmutable to Formatter (olegtsvetkov, cebe)
  • Enh #5587: json_encode is now used with JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE where it makes sense, also it is now default for Json::encode() (samdark)
  • Enh #5600: Allow configuring debug panels in yii\debug\Module::panels as panel class name strings (qiangxue)
  • Enh #5613: Added --overwrite option to Gii console command to support overwriting all files (motin, qiangxue)
  • Enh #5627: Added yii cache/flush-schema console command to flush DB schema cache of a given database connection (6pblcb, samdark)
  • Enh #5646: Call yii\base\ErrorHandler::unregister() instead of restore_*_handlers directly (aivus)
  • Enh #5683: Added yii\i18n\Formatter::defaultTimeZone for specifying the default time zone to use for datetime values stored in the database (cebe)
  • Enh #5688: Added optional $formName to Model::loadMultiple() to support customizing form name directly (qiangxue)
  • Enh #5735: Added yii\bootstrap\Tabs::renderTabContent to support manually rendering tab contents (RomeroMsk)
  • Enh #5770: Added more PHP error names for ErrorException (mongosoft)
  • Enh #5799: yii\bootstrap\ButtonGroup::buttons can take all options that are supported by yii\bootstrap\Button (aleksanderd)
  • Enh #5806: Allow Html::encode() to be used when the application is not started (qiangxue)
  • Enh #5954: yii message command now shows user friendly error if it's not able to parse source file (samdark)
  • Enh #5983: Added Inflector::sentence() (pana1990, qiangxue)
  • Enh #6113: Improved debugger configuration and request UI (schmunk42)
  • Enh #6207: Added support for truncating HTML strings using StringHelper::truncate() and StringHelper::truncateWords() (Alex-Code)
  • Enh #6318: Made widgets more error-tolerant and user-friendly when certain option values are null (qiangxue)
  • Enh: Console::confirm() now uses Console::stdout() instead of echo to be consistent with all other functions (cebe)
  • Enh: yii\rbac\DbManager migration now uses database component specified in component settings instead of always using default db (samdark)
  • Enh: Added yii\base\Controller::renderContent() (qiangxue)
  • Enh: yii fixture command now offers help if no arguments are provided instead of crashing (samdark)
  • Chg #3630: yii\db\Command::queryInternal() is now protected (samdark)
  • Chg #4277: yii\grid\GridView is no longer throwing an exception when results are empty and columns aren't defined (samdark)
  • Chg #5508: Dropped the support for the --append option for the fixture command (qiangxue)
  • Chg #5874: Upgraded Twitter Bootstrap to 3.3.x (samdark)
  • Apidoc Extension (yii2-apidoc):
  • Bug #5623: Fixed crash when a class contains a setter that has no arguments e.g. setXyz() (cebe)
  • Bug #5899: Incorrect class listed as definedBy reference for properties (cebe)
  • Bug: Guide and API renderer now work with relative paths/URLs (cebe)
  • Enh: Guide generator now skips images directory if it does not exist instead of throwing an error (cebe)
  • Enh: Made --guidePrefix option available as a command line option (cebe)
  • Authclient Extension (yii2-authclient)
  • Bug #6000: Fixed CCS for yii\authclient\widgets\AuthChoice does not loaded if popupMode disabled (klimov-paul)
  • Bootstrap Extension (yii2-bootstrap):
  • Bug #5570: yii\bootstrap\Tabs would throw an exception if content is not set for one of its items (RomeroMsk)
  • Bug #6150: yii\bootstrap\Tabs dropdown IDs were generated incorrectly (samdark)
  • Enh #4146: Added yii\bootstrap\ButtonDropdown::$containerOptions (samdark)
  • Enh #4181: Added yii\bootstrap\Modal::$headerOptions and yii\bootstrap\Modal::$footerOptions (tuxoff, samdark)
  • Enh #4450: Added yii\bootstrap\Nav::renderDropdown() (qiangxue)
  • Enh #5494: Added support for specifying a menu header as a configuration array in yii\bootstrap\Dropdown (hiltonjanfield, qiangxue)
  • Enh #5735: Added yii\bootstrap\Tabs::renderTabContent to support manually rendering tab contents (RomeroMsk)
  • Enh #5799: yii\bootstrap\ButtonGroup::buttons can take all options that are supported by yii\bootstrap\Button (aleksanderd)
  • Chg #5874: Upgraded Twitter Bootstrap to 3.3.x (samdark)
  • Debug Extension (yii2-debug):
  • Bug #5402: Debugger was not loading when there were closures in asset classes (samdark)
  • Bug #5745: Gii and debug modules may cause 404 exception when the route contains dashes (qiangxue)
  • Enh #5600: Allow configuring debug panels in yii\debug\Module::panels as panel class name strings (qiangxue)
  • Enh #6113: Improved configuration and request UI (schmunk42)
  • Enh: Made DefaultController::getManifest() more robust against corrupt files (cebe)
  • Elasticsearch Extension (yii2-elasticsearch):
  • Bug #5662: Elasticsearch AR updateCounters() now uses explicitly groovy script for updating making it compatible with ES >1.3.0 (cebe)
  • Bug #6065: ActiveRecord::unlink() was failing in some situations when working with relations via array valued attributes (cebe)
  • Enh #5758: Allow passing custom options to ActiveRecord::update() and ::delete() including support for routing needed for updating records with parent relation (cebe)
  • Enh: Add support for optimistic locking (cebe)
  • Gii Extension (yii2-gii):
  • Bug #5070: Gii controller generator should use controller class name instead of controller ID to specify new controller (qiangxue)
  • Bug #5745: Gii and debug modules may cause 404 exception when the route contains dashes (qiangxue)
  • Bug #6367: Added yii\gii\generators\crud\Generator to support customizing view path for the generated CRUD controller (qiangxue)
  • Bug: Gii console command help information does not contain global options (qiangxue)
  • Enh #5613: Added --overwrite option to Gii console command to support overwriting all files (motin, qiangxue)
  • Mongodb Extension (yii2-mongodb):
  • Bug #6026: Fixed yii\mongodb\ActiveRecord saves null as _id, if attributes are empty (klimov-paul)
  • Enh #3855: Added debug toolbar panel for MongoDB (klimov-paul)
  • Enh #5592: Added support for 'findAndModify' operation at yii\mongodb\Query and yii\mongodb\ActiveQuery (klimov-paul)
  • Redis Extension (yii2-redis):
  • Bug #4745: value of simple string returns was ignored by redis client and true is returned instead, now only OK will result in a true while all other values are returned as is (cebe)
  • Enh #3714: Added support for connecting to redis server using a unix socket (savvot, robregonm)
  • Smarty Extension (yii2-smarty):
  • Bug #5748: {path was generating absolute URLs instead of relative ones (samdark, motzel)
  • Sphinx Extension (yii2-sphinx):
  • Bug #5601: Simple conditions in Query::where() and ActiveQuery::where() did not allow yii\db\Expression to be used as the value (cebe, stevekr)
  • Bug #5634: Fixed yii\sphinx\QueryBuilder does not support comparison operators (>,= etc) in where specification (klimov-paul)
  • Bug #6164: Added missing support for yii\db\Exression to QueryBuilder LIKE conditions (cebe)
  • Enh #5223: Query builder now supports selecting sub-queries as columns (qiangxue)

New in Yii PHP Framework 1.1.14 (Dec 4, 2013)

  • In this release, we fixed more than 80 bugs and introduced more than 60 minor enhancements and features. We added CPasswordHelper that provides secure and up to date way to store and verify password hashes; We added CRedisCache to support using Redis for caching purpose; and Yii can now be installed as a Composer package.

New in Yii PHP Framework 1.1.12 (Aug 20, 2012)

  • This version mainly fixes the BC-breaking issues found in the prior release.
  • It includes about 20 bugfixes, minor features, and enhancements.

New in Yii PHP Framework 1.1.11 (Jul 30, 2012)

  • Bugs fixed:
  • #098: No correct identity value being returned when using Active Record and mssql (c-schmitz)
  • #114: CUniqueValidator and CExistValidator now respect table alias while creating db query condition (klimov-paul)
  • #145: CGettextMoFile now can parse strings with no context (eagleoneraptor)
  • #148: Fixed the bug in the blog demo that was not deleting right comment when not on the first page (mdomba)
  • #161: CCookieCollection::remove() now accepts an array of cookie options as a second argument to facilitate correct cookie removal (maximcherny)
  • #164: CEmailValidator.checkPort now checks the port 25 of listed MX servers (DaSourcerer)
  • #178: webapp creation with relative paths like ../ was not working correctly (cebe)
  • #193: Changed datetime column type for postgresql from 'time' to 'timestamp' (cebe)
  • #238: Fixed the problem that empty row could be selected in CGridView when there was no data (mdomba)
  • #295: Sometimes CJSON::decode returns null because native json_encode has bugs and returns null. Workaround to continue decoding when result of json_decode is null (luislobo)
  • #381: Fixed the bug that Gii model name input could get misspelled when autocomplete is used (mdomba)
  • #417: CAttributeCollections::mergeWith() does not take into account the caseSensitive (dmtrs)
  • #433: Fixed the bug that Gii model name input autocomplete was not working sometimes (mdomba)
  • #449: CDbHttpSession and CDbLogRoute now use query builder instead of DAO for proper quoting (mdomba, redguy)
  • #454: Removed translation on CDbConnection exception as it was creating an endless loop if the application used CDbCache (mdomba)
  • #517: Rule parameter sub-patterns are not checked correctly (ranvis)
  • #539: Fixed CUrlRule::createUrl() to treat sub-patterns as Unicode as parseUrl() does (ranvis)
  • #553: Criteria of related AR finders was affected after performing find with relational scopes (marcovtwout)
  • #618: Fixed caching of CWebUser::checkAccess() when it is called first time with and second time without $params (cebe)
  • #660: Fixed error when calling CDbCache::getValues (zilles)
  • #697: Fixed WSDLGenerator now generating proper namespace for certain complexTypes (BBoom)
  • #749: CActiveRecord::refresh() did not work in afterSave() for new records, will now always refresh, when db entry exists (cebe)
  • #769: Fixed the bug that $.fn.yiiGridView.getSelection was not working always if a custom CGridView::template was used (mdomba)
  • #772: CHttpRequest::getIsSecureConnection() was failing on some conditions (bulletbee, samdark)
  • #773: CGridView filters now filter on enter key in Internet Explorer (BBoom)
  • #803: Arbitary non-sorting links in CDataColumn's header were not working proper way (resurtm)
  • #827: Fixed the problem that CJuiSliderInput was rendering a name attribute for div element (mdomba)
  • #842: Active Records insert fails in MSSQL if a column has a default value of (NULL) (c-schmitz)
  • #852: Fixed the problem that CActiveForm was not revalidating fields if ajax submit was used (mdomba)
  • #859: Fixed CSort::applyOrder() and CSort::getOrderBy() to use custom table aliases (troch, samdark)
  • #865: CLogRoute called processLogs() even if log array was empty and caused empty emails and log files (cebe)
  • #879: Fixed a possible PHP error caused by CWebUser::restoreFromCookie() in combination with CHttpRequest.enableCookieValidation (kidol)
  • #901: Fixed possible encoding problem on exception (mdomba, samdark, cebe)
  • #1000: Added params to profiling token in CDbCommand::execute() to be consitent with CDbCommand::queryInternal() (cebe)
  • #1045: Building a query with empty array as parameter will not result in a broken sql-string anymore(suralc)
  • Fixed CMenu::isItemActive() to work properly when there is a hash in the item's url (SlKelevro)
  • Added missing return statement to CAuthItem->revoke() (mdomba)
  • CHtml::resolveValue() ignoring of array elements accessor at the beginning of the $attribute argument now works properly (resurtm)
  • Enhancement:
  • #120: Added ability to set cookies in an object based style without specifying the cookie-name twice (suralc)
  • #136: Added ability to select database connection in Gii model generator (samdark)
  • #157: Added ability to use models with objects implementing ArrayAccess as properties in CHtml::resolveValue (samdark)
  • #165: Allow CCacheDependency to be reusable across multiple cache calls (phpnode)
  • #171: Added support for PUT and DELETE request tunneled through POST via parameter named _method in POST body (musterknabe)
  • #179: CLogger now supports filtering profile timings by multiple & wildcard categories (intel352)
  • #191: Added ability to customize HTML classes of CLinkPager via its public properties (mashingan)
  • #206: Added ability to pass CDbCriteria object as AR relation parameter (samdark)
  • #215: Added tokens to CGridView::updateSelectors to allow adding custom selectors instead replacing only (mdomba)
  • #220: The URL pointing to the Google API in CGoogleApi is now protocol relative (suralc)
  • #237: The tabs of CTabView now support the property 'visible' (DaSourcerer)
  • #255: Sort CArrayDataProvider when elements is CActiveDataProvider or other object (rusmaxim)
  • #266: Add support for HTML5 url, email, number, range and date fields to CHtml (gregmolnar)
  • #267: CDbHttpSession is now able to store binary payload such as the output of the igbinary serializer (DaSourcerer, samdark)
  • #282: Added CCheckBoxColumn::headerTemplate to allow custom headers (mdomba)
  • #286: Added wildcard token to CDateTimeParser (cebe)
  • #294: Added deniedCallback to CAccessControlFilter and CAccessRule to allow forwarding control to a method on denial (luislobo)
  • #342: Added ability to pass parameters for RBAC bizRules from CAccessControlFilter configuration (claudejanz, samdark)
  • #356: Improved extendability of CDetailView by adding method renderItem() (cebe)
  • #369: Added $hashKey to CCache (kidol)
  • #414: Added sort parameter to yiic message command that sorts messages by key when merging (ranvis)
  • #455: Added support for default value in CConsoleCommand::prompt (eagleoneraptor)
  • #551: Added $safe parameter to CJavaScript::encode. If set to true, 'js:' will not be allowed. If you need to pass JavaScript, wrap your code with CJavaScriptExpression instead (samdark)
  • #552: Added support for http-level caching via CHttpCacheFilter (DaSourcerer)
  • #568: CHtml::getIdByName() will now convert spaces to underscore to get proper ID for HTML elements (mdomba)
  • #578: Added extension checks to CMemCache (samdark)
  • #581: Added formatSize method in CFormatter to format file sizes into units of different order - KB, MB, etc (brilyuhns, samdark)
  • #584: Refactored WebAppCommand to be more customizable, added more PHPDoc (samdark)
  • #599: Added case sensitivity check when autoloading classes (qiangxue)
  • #601: added the method loginRequired() to the IWebUser interface (mdomba)
  • #616: CVarDumper is now correctly highligting integer array keys (vernes, samdark)
  • #641: Added support for customizing serialization methods for cache components (DaSourcerer, Qiang)
  • #648: Added filterHtmlOptions property to the CGridColumn component (juban)
  • #652: Added namespace to yiiGridView events, so they can be easily removed by .off() jQuery method (Bethrezen)
  • #673: Changed CClientScript::scripts to be public (mdomba)
  • #675: CDateFormat::format() now returns null if the parameter $time is null (mdomba)
  • #690: Added sender name and proper headers for UTF8 encoding when sending e-mail in SiteController->actionContact() (mdomba)
  • #766: Added 'userId' to $params in CDbAuthManager::checkAccess() and CPhpAuthManager::checkAccess() (cebe)
  • #666: Added property $except to CValidator, a list of scenarios that the validator should not be applied to (resurtm)
  • #839: CListView::renderItems now resolves view file only once (nizsheanez)
  • #938: CFileValidator::sizeToBytes() is now public and available for using in the whole application (resurtm)
  • #943: CDateTimeParser is now able to parse short textual representation of month, e.g. Jan, Jun, Aug (resurtm)
  • #967: Commands from YII_CONSOLE_COMMANDS environment variable are now always added to yiic console application (schmunk)
  • CFileValidator could validate uploaded file by its MIME-type, added $mimeTypes and $wrongMimeType properties (resurtm)
  • Fixed romanian translation to use the better-supported cedilla characters (tudorilisoi)
  • Added default value to CConsoleCommand::confirm (musterknabe)
  • Allowed returning integer values as application exit code in CConsoleCommand actions (cebe)
  • Added third parameter to CHttpCookie to configure the cookie by array (suralc)
  • Added getIsFlashRequest(), proper handling of Flash/Flex request when using CWebLogRoute with FireBug (resurtm)
  • Added CBreadcrumbs::$activeLinkTemplate and CBreadcrumbs::$inactiveLinkTemplate properties which allows to change each item's template (resurtm)
  • Added full-featured behaviors and events CConsoleCommand::onBeforeAction & CConsoleCommand::onAfterAction (Yiivgeny)
  • Added HTML5 history support on ajax requests on CGridView and CListView using History.js v1.7.2-r2 (https://github.com/balupton/history.js) from Benjamin Arthur Lupton (lightglitch)
  • Changed CldrCommand to use medium dateTimeFormat and updated 18n data using newest(6546) CLDR (tanakahisateru)
  • Added CErrorHandler::getHttpHeader() to send correct HTTP error codes (pgaultier)
  • CGridView, only rows in tbody should have hover effect (mdomba)
  • CClientScript::$defaultScriptFilePosition and CClientScript::$defaultScriptPosition for controlling default $position argument for registerScriptFile and registerScript (resurtm)
  • CHttpCookie now implements __toString (suralc)
  • Ability to set namespace for module controllers using CWebModule::controllerNamespace, documentation about using namespaced controllers and modules (samdark)
  • Added possibility to set the container for CHtml::radioButtonList and CHtml::checkBoxList() (pgaultier)
  • Added zii romanian(ro) translation; edited core messages to include proper romanian characters with diacritic marks (tudorilisoi)
  • Added ILogFilter interface as an alternative to using CLogFilter as base class for implementing log filters (cebe)
  • CAssetManager, added $forceCopy property which globally forces publication of asset files and directories (resurtm)
  • WebAppCommand has ability to generate fresh application with git or hg specific files (resurtm)
  • Gii default templates: added additional metadata (PHPDoc) of the variables passed into views for better IDE autocompletion (resurtm)
  • WebAppCommand generated application: added additional metadata (PHPDoc) of the variables passed into views for better IDE autocompletion (resurtm)
  • #1053: CComponent::evaluateExpression will allow using global functions as callbacks (Ekstazi)
  • Changes:
  • #384: CWebUser::changeIdentity() will now delete old unused session data file (Qiang)
  • #440: Upgraded JQuery UI to 1.8.22 (samdark)
  • #497: Added log component and preloaded it in default console application config in order to properly log errors (samdark)
  • Upgraded jQuery to 1.7.2 (samdark)
  • More unit tests added for CHtml (resurtm)
  • Upgraded bundled markdown parser to v1.2.5 (DaSourcerer)
  • New:
  • Added TranslationsCommand build command aimed to help translation teams (samdark)

New in Yii PHP Framework 1.1.10 (Feb 13, 2012)

  • This version mainly fixes several critical bugs in CActiveForm, CJuiDatePicker, and yiilite.php which were introduced in release 1.1.9.

New in Yii PHP Framework 1.1.7 (Mar 28, 2011)

  • Bug #1080: Correct recursive merging for CDbCriteria::with (creocoder, Sam Dark)
  • Bug #1624: Fixed the bug that Gii would generate only one relation for a parent that has a child with more FK linking to it (mdomba)
  • Bug #1809: Fixed the bug that CPgsqlSchema did not detect sequence names correctly in some scenarios (Qiang)
  • Bug #1984: Fixed firing event multiple times when using live()/delegate() on AJAXified pages (Ekstazi, Sam Dark)
  • Bug #2026: Fixed the bug that migration command does not respect the connectionID property value (Qiang)
  • Bug #2032: Fixed the bug that beginCache with renderDynamic was not working if used multiple times (mdomba)
  • Bug #2037: Fixed CGridView js bug on selectionChanged "sboxname is undefined" (mdomba)
  • Bug #2060: Fixed the bug that CWebUser::getFlashes() would return a counter array in the result (Qiang)
  • Bug #2097: CHttpRequest::getUrl() should be the same as getRequestUri (Qiang)
  • Bug #2099: Fixed CDbCriteria::mergeWith error (creocoder, Sam Dark)
  • Bug #2107: Fixed the bug that calling CSqliteSchema::resetSequence() may throw exception when no autoincrement column (Qiang)
  • Bug #2130: Fixed bug that Gii code/diff view was not starting from top (mdomba)
  • Bug #2131: Fixed the bug that CGridView ajax calls would sometime display error alert when leaving the current page (mdomba,Qiang)
  • Bug #2136: CGridView filter now uses jQuery serialize() instead of param() so that a checkbox can be used as a filter (mdomba)
  • Bug #2140: Fixed the problem that CGridView even rows where not properly rendered in Firefox and Chrome (mdomba)
  • Bug #2146: Fixed the bug in CFileHelper::getExtension, validatePath and getMimeTypeByExtension that was not finding the file extension correctly (mdomba)
  • Bug #2169: Fixed the bug that some columns are not properly quoted in MigrateCommand (Qiang)
  • Bug #2178: Fixed the bug that query builder did not recognize the AS keyword when using table alias (Qiang)
  • Bug #2183: Fixed the bug that calling CActiveDataProvider::getTotalItemCount() explicitly would make the applied scopes disappear (Qiang)
  • Bug #2188: 'join' in default scopes is now respected by STAT relations (creocoder, Sam Dark)
  • Bug #2202: Fixed the bug that when setting CJuiDatePicker.flag=true, the date picker would not appear (Qiang)
  • Bug #2214: Fixed the bug that renameColumn for MSSQL did not work correctly (Qiang)
  • Bug: Fixed the bug that a PHP notice may occur in exception view if a method in the call stack has a very complex signature (Qiang)
  • Bug: Fixed error that CGridview breaks when updating non-cgridview elements (mdomba)
  • Bug: Fixed the bug in CCheckBoxColumn, "check all" checkbox was not being checked/unchecked when needed (mdomba)
  • Bug: Fixed the bug in CGridView, selectionChanged was not called when "check all" was clicked (mdomba)
  • Bug: Fixed resetting sequence in CDbCommand::truncateTable (Sam Dark)
  • Bug: Fixed CMemCache incompatibility with some pecl-memcache and memcached versions (Sam Dark)
  • Enh #558, #1755: Added parametrized named scopes, added scopes to criteria, implemented scope criteria merging (creocoder, Sam Dark)
  • Enh #802: Added RESTful URL management (Qiang)
  • Enh #923: Improved CUrlManager::parsePathInfo() to support multi-dimensional input arrays (Qiang)
  • Enh #1117: Added support for "through" in Active Record relations allowing to handle association table data (creocoder, Sam Dark)
  • Enh #1285: Added support for using custom script packages with CClientScript (Qiang)
  • Enh #1741: Exposed CActiveForm::attributes and summaryID (Qiang)
  • Enh #1770: Added CDbColumnSchema::autoIncrement property to allow checking whether a DB column is auto-incremental (Qiang)
  • Enh #1782: Added updateSelector property to both CGridView and CListView (Qiang)
  • Enh #1786: Enhanced CUrlValidator by adding 'validSchemes' and 'defaultScheme' property (Y!!)
  • Enh #1784: Enhanced CWidget::getViewPath() to support returning themed view path (Qiang)
  • Enh #1792: Enhanced CGridView: on ajax error a proper message is composed and displayed or optionally sent to the custom error handler (mdomba)
  • Enh #1795: Added CFormInputElement::$enableAjaxValidation and $enableClientValidation to allow turning on/off AJAX validation for individual input fields (Qiang)
  • Enh #1816: Added $dumpLogs parameter to CLogger::flush() so that log messages can be forced to be dumped at will (Qiang)
  • Enh #1843: Added 'uncheckValue' option to CHtml::activeRadioButtonList and CHtml::activeCheckBoxList. It allows to avoid hidden field rendering (creocoder, Sam Dark)
  • Enh #1847: Exposed CClientScript::$hasScripts (Qiang)
  • Enh #1852: Added CWebUser::authTimeout to support separation between authentication timeout and session timeout (Qiang)
  • Enh #1868: CDbConnection will now open a DB connection only when needed, unless autoConnection is set true (Qiang)
  • Enh #1937: Added support to use custom input ID for input fields that need AJAX-based validation (Qiang)
  • Enh #1993: Allow AR relations across separate db connections (Qiang)
  • Enh #1996: Added support for using parameter binding with class-based actions (Qiang)
  • Enh #1999: Added CCaptchaAction::offset property in order to decrease or increase the readability of the captcha (Y!!)
  • Enh #2011: Added CDbCommand::setFetchMode to allow setting PDO result fetching mode (Sam Dark)
  • Enh #2013: When creating model with Gii, database field names will be checked to conform with PHP variable naming rules (mdomba)
  • Enh #2024: Added CHttpRequest::getPut() and getDelete() to fully support RESTful requests (Qiang)
  • Enh #2059: Added support to respect the "target" attribute of an element generated by CHtml with "submit" HTML options (Qiang)
  • Enh #2063: The CActiveForm JavaScript should now correctly trigger validaton for checkbox and radio type input fields (Y!!)
  • Enh #2068: CTimestampBehavior::timestampExpression can now be a DB expression (Qiang)
  • Enh #2093: CDataColumn will now always render a filter if the filter property is a string (Qiang)
  • Enh #2094: Added SQL statement display in debug mode when an error occurs while executing a SQL (Qiang)
  • Enh #2105: Added CButtonColumn::afterDelete so that a custom javascript function can be called after the delete function (mdomba)
  • Enh #2108: Added CGridView::blankDisplay to allow customizing blank cell display (Qiang)
  • Enh #2125: Added memcached check and hint to requirements checker (Sam Dark)
  • Enh #2133: Set default focus to the password input for Gii login page (Qiang)
  • Enh #2141: Allow the 'label' option of CMenu menu items to be optional and take an empty string value (Qiang)
  • Enh #2142: Added CWebUser::autoUpdateFlash (Qiang)
  • Enh #2143: Added htmlOptions to CTreeView::data so that additional options can be set for any tree view node (mdomba)
  • Enh #2172: Added CDbMigration::execute() (Qiang)
  • Enh #2179: Added CMultiFileUpload::options so that additional options can be passed to the constructor of the multifile object (mdomba)
  • Enh #2185: Allow the column type to be optional when specifying columns for CGridView (Qiang)
  • Enh #2197: Added $escape parameter to CDbCriteria::compare() (Qiang)
  • Enh #2198: Improved CJuiTabs so that the tab content can be skipped (Qiang)
  • Enh #2199: Added CListView::separator (Qiang)
  • Enh #2206: Added $clearErrors parameter to CModel::validate() (Qiang)
  • Enh #2209: Added CDbConnection::setAttributes() and getAttributes() to support initializing DB connection with PDO attributes (Qiang)
  • Enh #2226: Added more tokens to summaryText when CBaseListView.enablePagination is set false (Qiang)
  • Enh #2227: Exposed CActiveRecord::query() (Qiang)
  • Enh: Added CGridView::ajaxUpdateError for the possibility to use a custom ajax error handler (mdomba)
  • Enh: Allowed using CController instead of Controller with webapp generated application (Sam Dark)
  • Enh: Added ability to perform Relational query without getting related models (creocoder, Sam Dark)
  • Enh: Error page now displays associative array keys in parameter list (Sam Dark)
  • Enh: Added CController::getActionParams() and invalidActionParams() to allow customizing action parameter binding feature (Qiang)
  • Enh: Added CEvent::$params (Qiang)
  • Enh: CStringValidator now uses application charset by default if mb_strlen is available (Sam Dark)
  • Chg #2001: CGridView now renders footer after the body content (Qiang)
  • Chg #2111: Calling CActiveRecord::getRelated($name, true) now will redo the DB query even if isNewRecord is true (qiang)
  • Chg #2144: Upgraded jQuery UI to version 1.8.11 (Sam Dark)
  • Chg #2148: Upgraded jQuery to version 1.5.1 (Sam Dark)
  • Chg #2163: CConsoleCommand::usageError() will now exit with error code 1 (Qiang)
  • Chg: jQuery UI now uses minified CSS (Sam Dark)
  • Chg: Removed jQuery dimensions plugin since it's in jQuery core (Sam Dark)
  • Chg: Upgraded bgiframe to 2.1.2 (Sam Dark)
  • New #1763: Added support for performing seamless client-side data validation using CActiveForm (Qiang, hightman)
  • New #2069: Added CDateValidator (Qiang)
  • New: Added support for query caching (Qiang)
  • New: Added Lithuanian translations (tomas.valacka)

New in Yii PHP Framework 1.1.6 (Jan 17, 2011)

  • Added a SQL query builder
  • Implemented database migration support
  • Enhanced support for using plural forms, and upgraded CLDR i18n data to version 1.9
  • Improved exception display in Web mode and error display in console mode
  • Added support for using anonymous parameters and global options in console commands
  • Added support for using X-Sendfile to send files

New in Yii PHP Framework 1.1.5 (Nov 15, 2010)

  • This version includes more than 80 bugfixes and feature enhancements.
  • Support for using actions in console commands, which take command line options as the parameters to the actions.
  • Support for theming views rendered by widgets.
  • Support for importing and autoloading PHP 5.3 classes that are taking advantage of using namespace.
  • Support for returning ActiveRecord results indexed by a specified attribute.

New in Yii PHP Framework 1.1.4 (Sep 6, 2010)

  • In this release, more than 60 bug fixes and feature enhancements were included.
  • Some of the important enhancements include the addition of support for automatic action parameter binding from $_GET; the addition of CSqlDataProvider and CArrayDataProvider; the addition of CUrlManager::addRules() to support dynamic addition of URL routing rules; and refactoring of CActiveRecord so that CActiveRecord::with() always returns the AR object itself.

New in Yii PHP Framework 1.1.3 (Jul 5, 2010)

  • Bug #856: Logout doesn't work when CWebUser::identityCookie is configured and allowAutoLogin is set true (Qiang)
  • Bug #1027: CButtonColumn->buttons is ignored (Sam Dark)
  • Bug #1039: Table prefix feature did not work with PostgreSQL and AR (Qiang)
  • Bug #1046: Fixed the bug that CDbFixtureManager did not properly initialize the fixture data (Qiang)
  • Bug #0147: Fixed the bug that changing CAuthItem.description value would cause an exception when using CPhpAuthManager (Qiang)
  • Bug #1050: Fixed the bug that filter conditions were prefilled with default values when using an AR model in CGridView (Qiang)
  • Bug #1109: CActiveRecord::getRelated() did not refresh when setting the $refresh parameter to be true (Qiang)
  • Bug #1142: Fixed the character encoding in polish translations (pawel.drylo)
  • Bug #1149: CHtml::resolveName() does not work with multiple dimensional attributes (Qiang)
  • Bug #1176: CVarDumper may omit some backslashes in the syntax-highlighted display (Qiang)
  • Bug #1190: CLocale::getMonthNames may fail due to a typo (Qiang)
  • Bug #1208: Unsigned integer column type was not handled correctly (Qiang)
  • Bug #1213: Fixed the bug that skipOnError doesn't have effect on inline validators (Qiang)
  • Bug #1226: CWebUser::autoRenewCookie does not handle the case when the user is already logged in (Qiang)
  • Bug #1227: CActiveRecord::resetScope doesn't work with default scope (Sam Dark)
  • Bug #1231: CPgsqlColumnSchema may incorrectly parse the default column when DB expression is used (Qiang)
  • Bug #1241: DB search parameters should have special characters escaped (Qiang)
  • Bug #1242: Fixed the bug that CGridView filtering and item deletion would not work when ajax-update is disabled (Qiang)
  • Bug #1252: CJSON::encode() was not able to encode models and model arrays (Sam Dark)
  • Bug #1262: Fixed the bug that CDbFixtureManager was unable to load fixture data if table prefix feature is used (Qiang)
  • Bug #1292: CDateTimeParser::parse() did not honor the number of digits in the required format in some cases (Qiang)
  • Bug #1293: Added tag to initial CAPTCHA image URL to avoid caching issue (Qiang)
  • Bug #1295: CHtml::beginForm() would generate useless CSRF field when in GET mode (Qiang)
  • Bug: Fixed AR memory leaks on PHP

New in Yii PHP Framework 1.1.1 (Mar 14, 2010)

  • In this release, we fixed more than 20 bugs. We also included numerous new features, some of which are expected to further accelerate development speed using Yii. For example, the new CActiveForm widget allows developers to easily build HTML forms that support both client- and server-side validation by writing validation rules only once; The CGridView widget now supports filtering; And the Yii code generator tool will now generate the code implementing searching and filtering features.

New in Yii PHP Framework 1.0.10 (Oct 19, 2009)

  • Nearly thirty bugs were fixed.
  • Minor feature enhancements were made.
  • The included CAPTCHA widget was improved by allowing it to use transparent backgrounds.
  • Yii::registerAutoloader() was added so that third-party class autoloader methods can be more easily hooked in the Yii environment.
  • Support was added for attaching anonymous functions (PHP 5.3+) as event handlers.
  • CPhpMessageSource was enhanced so that each extension can manage its own translated messages.
  • Last but not the least, CBooleanValidator was added so that validating boolean values (e.g. checkbox input) is easier.

New in Yii PHP Framework 1.1 Alpha (Oct 2, 2009)

  • This release marks a major milestone in the Yii framework development.
  • It includes many new significant features to the already powerful Yii framework.
  • It adds a PHPUnit-based testing framework so that developers can more easily write unit tests and functional tests.
  • It adds a form builder so that commonly used HTML forms can be built in terms of objects and thus enhance their reusability.
  • It adds support for changing skins for widgets globally.
  • It modifies the way of performing relational ActiveRecord queries so that they are more intuitive and easier to use.

New in Yii PHP Framework 1.0.9 (Sep 7, 2009)

  • About a dozen bugs were fixed.
  • More than twenty minor feature enhancements were made.
  • In particular, the performance of executing relational AR queries in a lazy way was improved by avoiding unnecessary SQL JOIN

New in Yii PHP Framework 1.0.8 (Aug 10, 2009)

  • In this release, we fixed about a dozen of bugs and included more than twenty minor feature enhancements. We refactored the yiic shell commands so that they are easier to be extended. We enhanced caching components to support multiget. We also improved CCaptcha, CCompareValidator, CActiveRecord in several aspects.
  • Upgrading to v1.0.8 should be safe except that you should pay attention to the change in the order of path alias importing. In particular, starting from v1.0.8, a directory imported using Yii::import() will have precedence over any existing include paths. For example, if we import 'application.models.*', then the corresponding directory will be searched before any other existing include paths. This also means, a directory imported later will have precedence over directories imported earlier. Previously, this order was reversed. This change may affect you if you have several classes with the same name and they are imported via different directories. You will need to adjust the import order of these directories to make sure your existing applications are not broken due to this change.

New in Yii PHP Framework 1.0.7 (Jul 6, 2009)

  • Bug #367: CUploadedFile may fail if a form contains multiple file uploads in different array dimensions (Qiang)
  • Bug #368: CUploadedFile::getInstance() should return null if no file is uploaded (Qiang)
  • Bug #372: CCacheHttpSession should initialize cache first before using it (Qiang)
  • Bug #388: 'params' options passed to linkButton are not cleared after submit (Qiang)
  • Bug #393: Greek language code should be 'el' insead of 'gr' (Qiang)
  • Bug #402: CNumberFormatter does not format decimals and percentages correctly (Qiang)
  • Bug #404: AR would fail when CDbLogRoute uses the same DB connection (Qiang)
  • Bug #421: Undefined variable: seconds in CDateTimeParser.php(140) (Qiang)
  • Bug: CMemCache has a typo when using memcached (Qiang)
  • Bug: COciCommandBuilder is referencing undefined variable (Qiang)
  • Bug: yiic webapp may generate incorrect path to yii.php (Qiang)
  • Bug: SQL with OFFSET generated by command builder for Oracle is incorrect (Qiang)
  • Bug: yiic shell model command may fail when a foreign key is named as ID (Qiang)
  • Bug: yiic shell controller command does not generate correct controller class file when the controller is under a sub-folder (Qiang)
  • Bug: When using MySQL enum type, AR may incorrectly typcasting the column values (Qiang)
  • Chg #391: defaultScope should not be applied to UPDATE (Qiang)
  • New #360: Added anchor parameter to CController::redirect (Qiang)
  • New #375: Added support to allow logout a user without cleaning up non-auth session data (Qiang)
  • New #378: Added support to allow dynamically turning off and on log routes (Qiang)
  • New #396: Improved error display when running yiic commands (Qiang)
  • New #406: Added support to allow stopping saving and deletion by an ActiveRecord behavior (Qiang)
  • New #415: Added HTML options to CHtml::errorSummary() and error() methods (Qiang)
  • New: Rolled back the change about treating tinyint(1) in MySQL as boolean (Qiang)
  • New: Added support for displaying call stack information in trace messages (Qiang)
  • New: Added 'index' option to AR relations so that related objects can be indexed by specific column value (Qiang)
  • New: Allow CHtml::activeLabel to override the automatically generated 'for' attribute (Qiang)
  • New: Added 'csrf' to CHtml client options so that js-based form submission can submit CSRF token (Qiang)
  • New: Removed typcasting in CNumberValidator so that it won't lose precision (Qiang)
  • New: Added userAgent parameter to CHttpRequest::getBrowser() (Qiang)

New in Yii PHP Framework 1.0.6 (Jun 9, 2009)

  • Bug #305: column aliases used in CActiveFinder should be quoted so that their cases are kept (Qiang)
  • Bug #308: typo in CLinkPager CSS class name (Qiang)
  • Bug #310: Leading space in auto generated labels if they end with "ID" (Qiang)
  • Bug #312: defaultScope not honored when other sopes are applied (Qiang)
  • Bug #313: Dynamic parameter for lazy loading resets the parameters specified in default scope (Qiang)
  • Bug #321: CProfileLogRoute should be disabled for AJAX requests (Qiang)
  • Bug #331: HTTP 403 status code should be used to indicate auth failure (Qiang)
  • Bug #338: Undefined variables in CTimestamp.php (Qiang)
  • Bug #343: HtmlPurifier should register its autoload to allow using its plugins (Qiang)
  • Bug #353: CClientScript may not generate expected output on some PHP version due to preg_replace bug (Qiang)
  • Bug: Syntax errors in autoloaded classes are not reported (Qiang)
  • New #36: Added column declarations to the generated model class using yiic (Qiang)
  • New #231: Enhanced yiic shell model command to generate relations automatically (olafure, Qiang)
  • New #271: Added CFileCache (Qiang)
  • New #300: Added support for using a controller action to display application errors (Qiang)
  • New #304: Added flv mimeType to the mimeType array (Qiang)
  • New #315: Added CDbConnection.enableProfiling (Qiang)
  • New #320: Added support for customizing a single URL rule by setting its urlFormat and caseSensitive options (Qiang)
  • New #326: Yii::powered() will show Yii site in a new window (Qiang)
  • New #328: Make yiic to work with f-cgi (Qiang)
  • New #344: Added support to automatically attach behaviors to a controller (Qiang)
  • New #346: Enhanced CMemCache so that it can be used with both memcache and memcached (Qiang)
  • New #347: Added CUrlManager.useStrictParsing to support parsing URLs only based on rules (Qiang)
  • New #349: Enhanced MySQL driver to recongize tinyint(1) as a boolean (Qiang)
  • New #351: Enhanced CModelBehavior so that its beforeValidate() can stop the current validation process (Qiang)
  • New: Enhanced the 'with' option in relational rules so that it also applies in eager loading (Qiang)
  • New: Enhanced yiic shell model command to generate all models for the whole database (olafure, Qiang)
  • New: Added support to allow using named scopes with update and delete methods (Qiang)
  • New: Refactored support for dynamic query options with relational AR (Qiang)
  • New: Added CDbCriteria::toArray() (Qiang)
  • New: Added support to allow merging CDbCriteria using 'OR' operator (Qiang)
  • New: Added CLogger::getStats() (Qiang)
  • New: Added support to import and autoload interfaces (Qiang)
  • New: Added tracing statements to cache components (Qiang)
  • New: Added CLogFilter to support logging additional context information (Qiang)

New in Yii PHP Framework 1.0.5 (May 11, 2009)

  • Bug #234: Multi-line Yii::t() not found by 'yiic message' (Qiang)
  • Bug #235: Dynamic content does not work when page caching is used together with fragment caching (Qiang)
  • Bug #239: Syntax error in translated Portuguese error view file (Qiang)
  • Bug #246: Undefined variable in CMaskedTextField (Qiang)
  • Bug #252: mimeTypes.php contains clashing types (Qiang)
  • Bug #258: Some eager loading queries may result in extra lazy loading queries (Qiang)
  • Bug #261: CWsdlGenerator should not use 'tns:' namespace when declaring a complex type (Qiang)
  • Bug #262: Setting 'charset' of CDbConnection causes exception when working with SQLite (Qiang)
  • Bug #263: Exception is thrown when column names contain "=" symbol (Qiang)
  • Bug #270: CComponent::detachBehavior() uses undefined index (Qiang)
  • Bug #290: date formatter generates incorrect narrow day output (Qiang)
  • Bug: Lazy loading HAS_MANY or MANY_MANY properties will get NULL instead of empty array when the result set is empty (Qiang)
  • Bug: CDateFormatter::formatYear() only returns one digit when the year pattern is 'yy' (Qiang)
  • Bug: The ON option is not respected for MANY_MANY relations (Qiang)
  • New #210: Added support for named scope of AR (Qiang)
  • New #211: Enhanced AR by supporting lazy relational query with on-the-fly query parameters (Qiang)
  • New #224: Added CModel::addErrors() method (Qiang)
  • New #241: Added support to define root path aliases in configuration (Qiang)
  • New #247: Added support to allow using Web services in PHP versions lower than 5.2.0 (Qiang)
  • New #249: Added option to CHtml to allow generate tags without encoding attribute values (Qiang)
  • New #254: Added support to allow input widgets to be used with tabular inputs (Qiang)
  • New #265: Added support to validate time and datetime inputs (Qiang)
  • New #268: Added support to allow using dot syntax to generate list options with CHtml (Qiang)
  • New #274: Added support to allow using route sub-patterns in URL rules (Qiang)
  • New #284: Refactored code about page states to simplify overriding efforts (Qiang)
  • New #291: Added support to validate emails with name part (Qiang)
  • New #293: Added support to allow Yii to be used with other libraries which rely on autoload (Qiang)
  • New #294: Added CDummyCache component (Qiang)
  • New: Deprecated CHtml::getActiveId() (Qiang)
  • New: Added CDbCriteria::mergeWith() (Qiang)
  • New: Added Oracle support for Active Record (Ricardo)
  • New: Modified CClientScript so that it can be used without the presence of a controller (Qiang)
  • New: Enhanced CWebUser::checkAccess() to allow caching the access check results (Qiang)
  • New: Enhanced the performance of CDbAuthManager::checkAccess() (Qiang)
  • New: Added CAccessControlFilter::accessDenied() (Qiang)
  • New: Added CWebUser::identityCookie property (Qiang)
  • New: Added new message placeholder to CCompareValidator (Qiang)
  • New: Added trace statements to auth components (Qiang)
  • New: Added CHtml::value() (Qiang)
  • New: Enhanced 'yiic shell model' command so that it generates attribute labels by default (Qiang)
  • New: Added CDbConnection::enableParamLogging to allow logging parameters bound to SQL statements (Qiang)

New in Yii PHP Framework 1.0.4 (Apr 6, 2009)

  • Bug #177: CFileValidator::getSizeLimit() not calculate well (Qiang)
  • Bug #185: German error views have syntax errors (Qiang)
  • Bug #183: Fatal error in CActiveFinder::afterFindInternal() (Qiang)
  • Bug #186: MainMenu component in yiic webapp doesn't detect active menu item correctly (Qiang)
  • Bug #187: SET CHARACTER SET is not working for MySQL in some cases (Qiang)
  • Bug #190: yiic shell command does not work when the Web application redirects by default (Qiang)
  • Bug #192: CDbLogRoute has several issues (Qiang)
  • Bug #199: yiic webapp command may fail in some directory setup (Qiang)
  • Bug #200: CDateFormatter does not recognize timestamp given as a string (Qiang)
  • Bug #205: CTRLD puts yiic into endless loop (olafure)
  • Bug #206: Property "click" in CStarRating does not work (Qiang)
  • Bug #218: Uppercase letter in controller in URL leads to exception (Qiang)
  • Bug #226: CJoinElement uses undefined _primaryKey (Qiang)
  • Bug #223: Calling CApplication::clearGlobalState causes error (Qiang)
  • Bug #229: dynamic content does not work with page caching (Qiang)
  • Bug: Setting the 'expression' option in an access url causes error (Qiang)
  • Bug: CAccessRule.roles should be case sensitive (Qiang)
  • Bug: CDbAuthManager::checkDefaultRoles() uses an undefined variable (Qiang)
  • Bug: CPgsqlSchema does not handle quotes well in detecting FK constraints (Qiang)
  • Bug: CPradoViewRenderer is calling an undefined method (Qiang)
  • Bug: CClientScript::scriptMap generates duplicated script tags (Qiang)
  • Bug: ActiveRecord may fetch the same PK column twice in a relational query (Qiang)
  • Bug: CWebUser::hasState does not return consistent result (Qiang)
  • Bug: A module layout in a theme cannot be applied (Qiang)
  • Bug: Enabling both CSRF prevention and theming may cause a PHP error (Qiang)
  • Bug: Eager loading in RAR may join the same table twice in some cases (Qiang)
  • New #171: Added version info to yiic help output (Qiang)
  • New #172: Added eAccelerator cache driver (Steffen)
  • New #176: Added support to make yiic tool working with modules (Qiang)
  • New #195: Added CModel::scenario property (Qiang)
  • New #197: Added getParam, getQueryParam and getPostParam to CHttpRequest (Qiang)
  • New #203: Added CZendDataCache (Steffen)
  • New #207: Enhanced CHtml::activeFileField so that we can still use $_POST to detect form submission under some rare cases (Qiang)
  • New #212: 'Readline' support in yiic console script (olafure)
  • New #225: Added trace statements to CActiveRecord and CActiveFinder (Qiang)
  • New #230: Enhanced CHtml so that it can be used in situations where controller is absent (Qiang)
  • New #233: allow CFileValidator::types to be set with an array (Qiang)
  • New: Added support to GROUP BY and HAVING in eager loading of AR (Qiang)
  • New: Added CClientScript::scriptFiles and CClientScript::cssFiles (Qiang)
  • New: Added SQL Server support for Active Record (Christophe)
  • New: Added support for performing statistical query with Active Record (Qiang)
  • New: Added CHtml::beginForm and endForm (Qiang)
  • New: Added 'controllers' option to access control (Qiang)
  • New: Added CContentDecorator.data property (Qiang)
  • New: Refactored application and module code (Qiang)
  • New: Added HTTP status code parameter to CHttpRequest::redirect (Qiang)
  • New: Added beforeControllerAction and afterControllerAction to CWebApplication and CWebModule (Qiang)
  • New: Added 'checkAll' option to CHtml::checkBoxList and CHtml::activeCheckBoxList (Qiang)
  • New: Added CHtml::encodeArray() to allow HTMLencoding an array recursively (Qiang)
  • New: Added casesensitivity parameter to CDbCommandBuilder::createSearchCondition (Qiang)
  • New: Added COutputCache.varyByExpression to allow variating cached content based on an expression value (Qiang)
  • New: Added CExpressionDependency to represent dependency based on an expression value (Qiang)
  • New: Added CAutoComplete.textArea to allow using it as a text area (Qiang)
  • New: Added support to allow using AR when a table has no primary key defined (Qiang)
  • New: Added support to CAPTCHA widget so that it can use captcha defined in other controllers (Qiang)
  • New: Added CExistValidator (Qiang)

New in Yii PHP Framework 1.0.3 (Mar 1, 2009)

  • This release includes about thirty feature enhancements and a dozen bugfixes.
  • In particular, it adds support for application modules that serve as highly reusable software units at the coarsest level.
  • It further enhances ActiveRecord by allowing developers to fully control how to join related tables, including lazy join, eager join, aggressive join, and hybrid join.
  • It also implements the script mapping feature, which can be used with the newly-added Google AJAX API support to optimize external script inclusion in Web pages.

New in Yii PHP Framework 1.0.2 (Feb 1, 2009)

  • Bug #81: Double backslashes in a clientscript became a singe backslash in the output (Qiang)
  • Bug #83: yiic command may unexpectedly render its starting line on Windows (Qiang)
  • Bug #87: yiic gives an error when using yiilite.php in the main application (Qiang)
  • Bug #91: Relational AR eager fetching may bring back result even if it shouldn't (Qiang)
  • Bug #109: CLinkPager shows wrong number of page buttons (Qiang)
  • Bug: CDbAuthManager::saveAuthAssignment() causes updating all rows (Qiang)
  • Bug: Fixed an issue in CUrlManager::createUrl when GET parameters contain arrays (Qiang)
  • Bug: Fixed an issue that CCaptcha::buttonOptions is not used (Qiang)
  • New #88: Added public properties to CActiveRecord::safeAttributes() (Qiang)
  • New #92: Empty error messages in models are handled better when being displayed (Qiang)
  • New #93: Changed CLinkPager and CListPager so that the messages are internationalized (Qiang)
  • New #95: Added an option to CHtml::activeCheckBox() to define default value if unchecked (Qiang)
  • New #98: Added support to translate messages in different plural forms. Added CChoiceFormat (Qiang)
  • New #103: Added support to use dynamic query options in relational active record (Qiang)
  • New #104: Added support to encode traversable objects using JSON (Qiang)
  • New #111: Implemented nonobtrusive javascript "Get new image" link in CCaptcha (Qiang)
  • New #113: Enhanced CSort so that it is easier to be used with relational active record (Qiang)
  • New #116: Enhanced checkBoxList and radioButtonList in CHtml to enclose labels in label tag (Qiang)
  • New #119: Added 'on' option to relational AR (Qiang)
  • New #122: Added support to upload and validate files in a tabular form (Qiang)
  • New: Added CActiveRecord::getRelated() (Qiang)
  • New: Added 'return' option to HTML options in CHtml (Qiang)
  • New: Refactored CSS-dependent widgets by adding registerCssFile static methods (Qiang)
  • New: Added CDbSchema::getTables() and getTableNames() (Qiang)
  • New: Modified CUniqueValidator so that it can correctly validate non-PK attributes when they are being updated (Qiang)
  • New: Added scenario-based massive model attribute assignment (Qiang)
  • New: Added support to specify views in terms of path aliases (Qiang)
  • New: Enhanced getBaseUrl to allow it to return an absolute URL (Qiang)
  • New: Allow flash message to be deleted right after its first access (Qiang)
  • New: Upgraded jQuery to 1.3.0 (Qiang)
  • New: Added CDbExpression so that AR can save DB expressions into database (Qiang)
  • New: Added CDefaultValueValidator (Qiang)
  • New: Implemented the behavior feature; added CBehavior, CModelBehavior and CActiveRecordBehavior (Qiang)
  • New: Added a set of new events to CActiveRecord and CFormModel (Qiang)
  • New: Added CModel::getValidatorsForAttribute (Qiang)
  • New: Added CHtml::activeLabelEx and added 'required' option to CHtml::label (Qiang)
  • New: Added array access support to CFormModel and CActiveRecord (Qiang)
  • New: Added CActiveRecord::instantiate to support class table inheritance (Qiang)
  • New: Added support to allow join tables all at once (Qiang)

New in Yii PHP Framework 1.0.1 (Jan 5, 2009)

  • This release includes over twenty minor enhancements and a dozen bugfixes.
  • It implements the feature for supporting scenario-based validation.
  • It adds core message translations in German, Spanish, and Swedish.
  • It has been optimized, and performance further improved.
  • A complete blog demo has been added to help new users learn Yii.