
                   Yii Framework Change Log
                   ========================

Version 1.1.2 May 2, 2010
-------------------------
- Bug #676, 891: merging criterias with parameters is impossible (Sam Dark)
- Bug #1006: Setting CForm::attributes may cause exception (Qiang)
- Bug #1007: CActiveForm did not update the validation result correctly when change of one attribute affects the validity of another (Qiang)
- Bug #1014: CDataProvider was accessing non-existing property modelClass (Qiang)
- Bug #1021: Missing return in CAuthItem::removeChild (Sam Dark)
- Bug #1031: Added a temporary fix for dropdown filter in CGridView not working in IE (Qiang)
- Bug #1035: RBAC BizRule security violation (Sam Dark)
- Bug #1048: CAutoComplete conflicts with jQueryUI 1.8.x (Sam Dark)
- Bug #1115: Fixed the bug that using bigint with MySQL, PostgreSQL and SQL Server may lose precision (Qiang)
- Bug #1121: typo in CActiveRecord::setPrimaryKey() (Qiang)
- Bug #1136: Fixed wrong API call in CXCache::flush() (Qiang)
- Bug #1147: zii widget messages are not translated via Yii::t() (Sam Dark)
- Bug: Removed the debugging line in CActiveFinder that caused many-many relational query to fail if FKs are not defined (Qiang)
- Bug: Fixed the bug that doing performance profiling while turning on YII_TRACE_LEVEL would throw exception (Qiang)
- Bug: user was redirected to AJAX URLs after logging in (Sam Dark)
- Bug: RBAC rules with bizRule and caching enabled worked wrong (Sam Dark)
- Bug: CSort may cause exception if an invalid column is to be sorted (Qiang)
- Bug: AR count() does not generate correct SQL when distinct is set true in the criteria (Qiang)
- Bug: Relational AR query may complain column not well defined when the column select spans multiple lines (Qiang)
- Enh #943: dynamic AR relations (Sam Dark)
- Enh #946: Added a new parameter to CBaseController::widget() method to allow capturing the output of the widget (Qiang)
- Enh #977: Added CModel::getValidatorList() to allow adding/removing validation rules on the fly (Sam Dark, creocoder)
- Enh #1001: Added CActiveRecord::resetScope() that resets all scopes and criterias applied including default scope (Sam Dark)
- Enh #1009: Allow quoted columns in CDbCriteria::select when performing relational query (Qiang)
- Enh #1025: added 'uncheckValue' option to CHtml::radioButton() and CHtml::checkBox() (Jonah)
- Enh #1042: CForm __construct now uses setModel() instead of assigning _model directly (Sam Dark)
- Enh #1062: Added CDbCriteria::addBetweenCondition() (Sam Dark)
- Enh #1071: Optimized file copying in CUploadedFile::saveAs() (Sam Dark)
- Enh #1084: Added CLocale::getOrientation() to return character orientation information of a locale (Qiang)
- Enh #1091: Added support to allow using normal PHP views with special views recognized by the installed view renderer (Qiang)
- Enh #1093: CJSON now tries to use native PHP functions prior to use Yii implementation (Sam Dark)
- Enh #1140: Added CHttpSession::get() (Qiang)
- Eng #1156: Updated jQuery BBQ to 1.2.1 (Sam Dark)
- Enh: Improved IDE code completion for generated AR models (Sam Dark)
- Enh: CCaptchaAction now supports unlimited tests by setting its testLimit to be 0 (Qiang)
- Enh: Added $forceCopy parameter to CAssetManager::publish() (Qiang)
- Enh: CTypeValidator now supports checking array data (Qiang)
- Enh: Added CFileHelper::getExtension() (Qiang)
- Enh: Added CModule::hasModule() (Qiang)
- Enh: CFileValidator now works with php.ini's upload_max_filesize strings with K, G, k, m, g (Sam Dark)
- Enh: Enhanced CActiveForm to make it more robust in case some code error occurs when performing ajax validation (Qiang)
- Enh: CMaskedTextField's jquery.maskedinput updated to 1.2.2 (Sam Dark)
- Enh: Added support to allow CActiveRecord::getAttributes() to return custom attributes if required (Qiang)
- Chg #1118: CActiveRecord::refresh() now updates the record by directly updating the attributes array (Qiang)
- Chg #1125: Ability to use model metadata in behavior's attach() method (Sam Dark)
- Chg #1163: CLinkPager will enable first and last page buttons unless the current page is first or last. (Qiang)
- Chg #1164: CUrlRule will not throw 404 exception when unable to parse a URL under strict parsing mode (Qiang)
- New #1005: added CWinCache (Sam Dark)
- New #1013: Added CJuiAutoComplete (sebas)
- New: Added Ukrainian translations (Valeriy)
- New: Upgraded JQuery UI to 1.8.1 (Qiang)

Version 1.1.1 March 14, 2010
----------------------------
- Bug #727: AR may lose precision for numbers of bigint type (Qiang)
- Bug #738: COciColumnSchema must return 'double' if precision and scale designators of NUMBER field are absent (Qiang)
- Bug #816: CUniqueValidator did not work with CFormModel (Qiang)
- Bug #823: typo in CLinkColumn about linkHtmlOptions (Qiang)
- Bug #839: typo in CFormatter about calling method_exists() (Qiang)
- Bug #865: CWidgetFactory didn't set the owner of the newly created widgets correctly (Qiang)
- Bug #869: CDateFormatter::formatTimeZone() may report error for certain locale data (Qiang)
- Bug #871: A module generated by the yiic module command did not use the application layout by default (Qiang)
- Bug #890: The 'alias' option set in default scope was ignored when performing an eager relational query (Qiang)
- Bug #932: CLocale::getWeekDayName() causes PHP error when requesting 'narrow' format data (Qiang)
- Bug #947: CTabView does not target tab links correctly when extra elements are put in the header (Qiang)
- Bug #957: CGettextPoFile should allow optional msgctxt (Qiang)
- Bug #967: CFormInputElement doesn't respect element-id if set (Sam Dark)
- Bug #988: COcSchema::quoteTableName() and quoteColumnName() should quote the names (Qiang)
- Bug #995: The 'alias' option set in default scope was ignored when some find methods in AR (Qiang)
- Bug #996: "yiic message" command generates incorrect message file name when used in a module context (Qiang)
- Bug #14 (zii): Added documentation about the "js:" prefix in CJuiSortable (sebas)
- Bug #18 (zii): Change the way CJuiDatePicker sets its language option (sebas)
- Bug #27 (zii): Fixed the issue that when CSRF is turned on, delete button doesn't work for CGridView (Qiang)
- Bug: Setting the 'with' option in criteria array doesn't trigger eager loading for AR (Qiang)
- Bug: CActiveRecord should update oldPrimaryKey after calling save() (Qiang)
- Bug: CForm renders invalid 'name' and 'type' attributes when used to generate nested forms (Qiang)
- Bug: Fixed the bug that beforeAjaxUpdate/afterAjaxUpdate of CGridView/CListView do not take effect.
- Bug: Fixed the bug that the names of URL parameters were not encoded (Qiang)
- Bug: CGridView and CListView may not register the needed CSS file for the pager (Qiang)
- Enh #38: Added support to allow CHtml links and buttons work in AJAX responses (Qiang)
- Enh #392: Added CStringValidator::encoding to support checking the length of multibyte strings (Qiang)
- Enh #686: Added CUrlManager::setBasePath() (Qiang)
- Enh #726: Added CDbExpression::params (Qiang)
- Enh #794: Added support to allow using * to select all primary table columns in relational AR query (Qiang)
- Enh #820: Added CAccessRule::message to allow customizing authorization error message (Qiang)
- Enh #826: Added CMenu::itemTemplate property and template option for each menu item (Qiang)
- Enh #857: Added $exit parameter to CController::forward() (Qiang)
- Enh #872: Added CFlexWidget::allowFullScreen (Qiang)
- Enh #888: Added CBaseUserIdentity::setPersistentStates (Sam Dark)
- Enh #898: Added support to allow defining global yiic commands (Qiang)
- Enh #912: Added CModel::onUnsafeAttribute() which will log a warning message when massively assigning unsafe attributes (Qiang)
- Enh #916: Added visible option to buttons in CButtonColumn (Qiang)
- Enh #918: Added support to show attribute name as the label when displaying an array using CDetailView (Qiang)
- Enh #936: Current module ID is no longer needed when calling CController::forward() (Qiang)
- Enh #941: AR now allows MANY_MANY relation to be specified more flexibly (Qiang)
- Enh #953: Added CGridView::hideHeader (Qiang)
- Enh #955: Added validateValue() to CUrlValidator and CEmailValidator (Qiang)
- Enh #971: Added CDbCriteria::addNotInCondition() (Sam Dark)
- Enh #992: Added 'data' option to CTabView.tabs property (Qiang)
- Enh: Refactored the blog demo to make use of the new CActiveForm and the filtering feature of CGridView (Qiang)
- Enh: Improved the code generated by yiic, including menu refactoring, filtering/search support, and using active form (Qiang)
- Enh: Improved CHtml::beginForm() to auto-generate hidden fields for a GET form whose action contains query string (Qiang)
- Enh: Added CDataProvider::setTotalItemCount() (Qiang)
- Enh: Added skipOnError property to built-in validators (Qiang)
- Enh: Added CDbConnection::initSQLs (Qiang)
- Enh: Added CHtml::refresh() (Qiang)
- Enh: Added CListView.loadingCssClass and CGridView.loadingCssClass (Qiang)
- Enh: Added filtering support for CGridView (Qiang)
- Enh: Added 'template' option to each attribute specification in CDetailView (Qiang)
- Chg #841: Changed CUrlManager::parsePathInfo() to non-static (Qiang)
- Chg #851: yiic tool no longer turns off E_NOTICE (Qiang)
- Chg #949: The init() method will be invoked after an AR instance is created by the find methods (Qiang)
- Chg #974: CComponent::evaluateExpression() no longer suppresses expression error (Qiang)
- Chg #978: CActiveRecord::afterSave() will now be invoked only when the saving is successful (Qiang)
- Chg: Upgraded jquery to version 1.4.2 (Qiang)
- Chg: CMenu will render the 'active' CSS class in the container tag of the link (Qiang)
- Chg: Set the default theme for JQuery UI widgets to be 'base' (Qiang)
- New: Added CActiveForm that performs model validations via AJAX (Qiang)
- New: Added 'form' command to the 'yiic shell' tool (Qiang)
- New: Upgraded JQuery UI to 1.8rc3 (Qiang)

Version 1.1.0 January 10, 2010
------------------------------
- Bug #720: The new table prefix feature does not work with many-many relationship in AR (Qiang)
- Bug #735: CDbCriteria should save 'with' attribute when toArray() is called (Qiang)
- Chg #796: The alias name for the primary table in a relational AR query is changed to be 't' (Qiang)
- Chg: renamed CDetailView::model to be 'data'. renamed 'dataField' and 'dataExpression' to be 'name' and 'value' for grid view columns. (Qiang)
- Enh #656: Added support to indicate the size of enum column type for MySQL schema (sebas)
- Enh #767: Added CUrlRule::matchValue option to support creating URLs only when a rule's parameter value patterns are matched. (Qiang)
- Enh: Improved the default code generated by the yiic tool (Qiang)
- Enh: Refactored the blog demo (Qiang)
- New: Added CFormatter and CApplication::format (Qiang)
- New: Added CController::forward() and CController::route (Qiang)

Version 1.1rc December 13, 2009
-------------------------------
- Bug #713: webapp command generates incorrect test bootstrap script (Qiang)
- Bug #724: the rememberMe attribute is not validated in generated webapp code (Qiang)
- Enh #666: Added support for auto-flushing log messages (Qiang)
- Enh #668: Nested forms generated by CForm will render attributes in the fieldset tag (Qiang)
- Enh #695: Upgraded HTML Purifier to 4.0.0 (Qiang)
- Enh #711: Added CWebUser::autoRenewCookie to support automatically renew cookie-based login (Qiang)
- Enh: Added CSS class for links generated by CSort to differentiate sorting directions (Qiang)
- Enh: Added CComponent::evaluateExpression() (Qiang)
- Enh: Added CPagination::offset and CPagination::limit (Qiang)
- Chg: CSort.multiSort is changed to sort by single attribute by default (Qiang)
- New: Added CDataProvider and CActiveDataProvider (Qiang)
- New: Updated I18N data to CLDR 1.7.1.2 and added support for stand-alone month and day names (Qiang)
- New: Added CDbCriteria::with to support eager loading via a criteria with this property (Qiang)

Version 1.1b November 1, 2009
-----------------------------
- Bug #611: When using relation name as table alias, it should be properly quoted to avoid name conflict (Qiang)
- Bug #642: CPgsqlSchema::findTableNames() should not include view names in the result (Qiang)
- Bug #652: Calling CFormElementCollection::remove() triggers a method-not-defined error (Qiang)
- Bug: Using CFileValidator causes an error about accessing a method of a non-object (Qiang)
- Enh #570: Improved CSort so that it can support sorting by complex expressions or compound attributes (Qiang)
- Enh #597: Added support for modifying primary key of an AR instance by calling save() directly (Qiang)
- Enh #622: Added support for using HTML button tags in form builder (Qiang)
- Enh: Added getFixtureData() and getFixtureRecord() to CDbTestCase and CWebTestCase (Qiang)
- Chg #574: session ID is no longer hashed for CDbHttpSession (Qiang)
- New #633: Added support to allow using customized locale data (Qiang)
- New: Added support for using table prefixes (Qiang)

Version 1.1a October 1, 2009
----------------------------
- New #429: CFileValidator and CUploadedFile now accept multiple uploads (pestaa)
- New: Refactored scenario-based validation and massive assignments (Qiang)
- New: Added CDbSchema::checkIntegrity() and resetSequence() (Qiang)
- New: Added phpunit-based testing framework (Qiang)
- New: Added CForm and relevant classes to allow reusing form representation and rendering (Qiang)
- New: Added support for widget skins (Qiang)
- New: Added support for accessing behavior's properties via the component it is attached to (Qiang)
- Chg #433: Changed application and module parameter names to be case-sensitive (Qiang)
- Chg #556: CHtml::resolveName now supports array-typed properties (pestaa)
- Chg: Changed AR eager loading so that it generates and executes a single SQL statement by default (Qiang)
- Chg: Changed AR table aliasing so that it uses relation names as default table aliases (Qiang)
- Chg: Changed the default value of allowEmpty to be false for CCompareValidator. (Qiang)

Version 1.0.12 March 14, 2010
-----------------------------
- Bug #731: When using CWebService to generate WSDL, it may cause the error about Premature end of data in tag definitions in SoapClient (Qiang)
- Bug #740: CDbCriteria::addColumnCondition() should handle NULL parameter correctly (Qiang)
- Bug #742: CEmailValidator should allow upper case email addresses (Qiang)
- Bug #776: CWebUser may fail when unserializing invalid cookie data (Qiang)
- Bug #788: CHttpRequest.sendFile() gives incorrect content length when output_handler is enabled (Qiang)
- Bug #801: CCaptcha allows unlimited tests if the CAPTCHA image is not reloaded (Qiang)
- Bug #832: CJavaScript::quote() should also escape the sequence "</" (Qiang)
- Bug #843: CApcCache::mget() may fail if some entries of the specified keys are not cached (Qiang)
- Bug: CVarDumper sometimes doesn't dump object value correctly (Qiang)
- Bug: COciSchema::findTableNames() should use upper case for the keys of query results (Qiang)
- Bug: Fixed several bugs related with readdir problem. If the directory contains a file named '0', the iteration would quit prematurely. (Qiang)
- Enh #730: Relational queries now respect changes made to CActiveRecord::dbCriteria in the onBeforeFind event (Qiang)
- Enh #737: CUrlManager::createUrl() now supports multidimensional array params (Jonah)
- Enh #757: Allow CDbCriteria::addInCondition() to use parameter array that is not integer-indexed (Qiang)

Version 1.0.11 December 13, 2009
--------------------------------
- Bug #608: yiic webapp command may generate incorrect path referring to yii scripts (Qiang)
- Bug #637: CDateTimeParser::parse() may generate unexpected result offset by the timezone in some environment (Qiang)
- Bug #639: CJSON::decode() should respect the second parameter recursively (Qiang)
- Bug #641: CDbCache::gc() is not defined (Qiang)
- Bug #651: Fixed a bug in Oracle driver that may cause big loop (Qiang)
- Bug #653: CDbMessageSource does translate messages when caching is enabled (Qiang)
- Bug #670: Requirements checker page shows wrong minute (Qiang)
- Bug #691: CUploadedFile::saveAs() may not return correct value for some PHP versions (Qiang)
- Bug #692: CHtml::listOptions() ignores the HTML options when handling nested options (Qiang)
- Bug #710: CRequiredValidator does not work as expected when its requiredValue is not null (Qiang)
- Bug: CQueue::peek() should return the first item in the queue (Qiang)
- Enh #629: Added support for specifying shell command search path via an environment variable YIIC_SHELL_COMMAND_PATH (Qiang)
- Enh #643: Enhanced CAccessControlFilter::expression, COutputCache::varyByExpression and CExpressionDependency::expression so that they can use PHP callback (Qiang)
- Enh #665: Added support for using CStarRating to collect tabular input (Qiang)
- Enh #672: Added Italian translation of error views (Qiang)
- Enh #674: Improved CPgsqlSchema to support auto-incremental column in composite primary  key (Qiang)
- Enh #677: Improved CPgsqlColumnSchema to recognize more column data types (Qiang)
- Enh #679: Added support for parsing and creating URLs with parameterized hostnames (Qiang)
- Enh #684: Improved Yii::import() to throw exception when set_include_path fails (Qiang)
- Enh #685: Added support for recognizing "Z" in CDateFormatter (Qiang)
- Enh #690: Enhanced the email validator pattern to capture 99% valid email addresses (Qiang)
- Enh #694: CActiveRecord count methods will ignore criterias that are incomatible with COUNT SQL statement (Qiang)
- Enh #697: Relational AR queries now also invoke CActiveRecord::beforeFind() (Qiang)
- Enh #703: Upgraded autocomplete js code to version 1.1.0 (Qiang)
- Enh #715: CHtml::textArea and CHtml::activeTextArea should respect the 'encode' option (Qiang)
- Enh: Added core message translation in Thai (Peerajak)
- Enh: Allow CHtml::label() and CHtml::activeLabel() not to render the 'for' attribute when it is set false (Qiang)
- Chg #723: When merging a CDbCriteria with another, the latter's order clause will take precedence over the former (Qiang)
- New #709: Added core message translation in Bosnian language (kenci81)

Version 1.0.10 October 18, 2009
-------------------------------
- Bug #550: Fixed image alt bug in CCaptcha (Qiang)
- Bug #551: CCache::mget() should return values (Qiang)
- Bug #561: CTabView fails to switch tabs on IE (pestaa)
- Bug #567: PHP <5.2 cannot convert exception class to string (pestaa)
- Bug #573: Typo in API (pestaa)
- Bug #584: CAutoComplete API was missing a fact (pestaa)
- Bug #594: The for-loop in jquery.yii.js breaks on IE (Qiang)
- Bug #596: CActiveFinder undefined $parent variable on line 1297 (Qiang)
- Bug #606: CMemCache does not work when useMemcached is set true (Qiang)
- Bug: Fixed a bug in Oracle driver when performing relational AR queries (Qiang)
- Bug: Fixed the problem of executing an SQL using CDbCommand may cause subsequent SQL executions to fail (Qiang)
- Enh #571: Enhanced CDbCriteria by adding several methods to help building common query conditions (Qiang)
- Enh #585: Added CChainedCacheDependency::setDependencies() (Qiang)
- Enh #598: Added CCaptchaAction::transparent (Qiang)
- Enh #600: Modified CHttpSession to allow open and close session multiple times (Qiang)
- Enh #612: Added YiiBase::registerAutoloader (Qiang)
- Enh #613: Enhanced Oracle driver to allow using views with AR (Qiang)
- Enh #615: Added cacheID property to several core components to allow specifying which cache component to use (Qiang)
- Enh #616: Added support to use anonymous functions (PHP 5.3+) as event handlers (Qiang)
- Enh #620: Enhanced message translation for modules (Qiang)
- Enh #623: Added the optional $params to CDbCommand::execute() and query*() methods (Qiang)
- Enh #626: Added labelOptions for checkbox and radiobutton lists in CHtml (Qiang)
- Enh #627: Improved AR metadata assignment to support single table inheritance (Qiang)
- Enh #628: Console commands are listed in alphabetical order now (Qiang)
- Enh: Enhanced CRequiredValidator so that it can validate an attribute contains the specified value (Qiang)
- Chg: Made request and urlManager components to be available for both console and web applications (Qiang)
- New #577: Enhanced the 'empty' option in CHtml so that it can render multiple extra list options with specific values (Qiang)
- New #621: Added YiiBase::createApplication (Qiang)
- New: Added CBooleanValidator (Qiang)

Version 1.0.9 September 6, 2009
-------------------------------
- Bug #470: Fixed CTimestamp getdate bug which is related with timezone setting (Qiang)
- Bug #499: Blog demo approve comment page doesn't have proper pagination (Qiang)
- Bug #510: CHtml::htmlButton() should render the label as the element body rather than value attribute (Qiang)
- Bug #513: CNumberValidator does not validate as expected when the attribute value is not string (Qiang)
- Bug #518: CFilterValidator uses call_user_func_array() incorrectly (Qiang)
- Bug #522: array-like parameters in path info are not parsed correctly by CUrlManager (Qiang)
- Bug #525: Invalid first chars in jquery.maskedinput.js (Qiang)
- Bug #527: Typo in CActiveFinder.php:581 (Wei)
- Bug #548: STAT queries don't work when the FK constraints are not defined in DB (Qiang)
- Bug #550: CCaptcha does not respect image alt option (Qiang)
- Bug #551: multiget in caching components does not use proper keys (Qiang)
- Bug: Set sequenceName in Oracle tables to be empty string so that yiic model command generates correct validation rules for PK (Qiang)
- Enh #417: Added CActiveRecord::beforeFind and onBeforeFind event (Qiang)
- Enh #419: Improved the performance of lazy relational AR by avoiding joining when possible (Qiang)
- Enh #473: Upgraded jquery multifile plugin to version 1.46 (Qiang)
- Enh #500: Added CDbCache::gcProbability (Qiang)
- Enh #505: Added CSS class to the table generated by CWebLogRoute (Qiang)
- Enh #508: CUrlManager should also store parsed GET parameters into $_REQUEST (Qiang)
- Enh #509: Enhanced CRequiredValidator to check for empty array value (Qiang)
- Enh #511: CHtml::activeCheckBox and activeRadioButton should respect the value attribute (Qiang)
- Enh #512: CHtml::beginForm() is made XHTML-compliant when CSRF is enabled (Qiang)
- Enh #521: Added CActiveRecord::deleteAllByAttributes() (Qiang)
- Enh #526: Added CSort::params and CPagination::params to allow customizing additional GET parameters in the generated URLs (Qiang)
- Enh #534: Allow using slash character as URL suffix when strict parsing is enabled (Qiang)
- Enh #542: Improved CInputWidget and all its descendant classes so that they can be used in tabular data input (Qiang)
- Enh #547: Changed CSort::resolveLabel and validateAttribute to be public (Qiang)
- Enh #549: Changed hour pattern in CDateTimeParser so that it is consistent with CDateFormatter (Qiang)
- Enh #554: Added CViewRenderer::fileExtension (Qiang)
- Enh #555: Added CApplication::timeZone (Qiang)
- Enh: Improved AR performance by not raising events when no event handlers (Qiang)
- Enh: Added CWebUser::setStateKeyPrefix() (Qiang)
- Enh: Added CLocale::getMonthNames and CLocale::getWeekDayNames (Qiang)
- Enh: Added uncheckValue option for CHtml::activeRadioButton (Qiang)
- Enh: Added CDbCriteria::addCondition() (Qiang)
- Enh: Added support for specifying DISTINCT when performing AR and relational AR queries (Qiang)
- New: Added core message and system view translations in Bulgarian (Nikolai)

Version 1.0.8 August 9, 2009
----------------------------
- Bug #435: Setting charset for PostgreSQL database connection may fail to work on some servers (Qiang)
- Bug #440: typo in COciColumnSchema (Qiang)
- Bug #444: typo in blog demo (Qiang)
- Bug #446: Fixed bugs in MSSQL driver that cause problem when updating attribues and a column is of timestamp type (Qiang)
- Bug #451: CAssetManager::publish() may not report error when an asset is missing on BSD (Qiang)
- Bug #460: CFileValidator would display wrong error message when the uploaded file size is too small (Qiang)
- Bug #472: Dynamic relational query options should not treat 'condition' as 'on'. (Qiang)
- Bug #475: MainMenu widget in webapp ignores URL parameters (Qiang)
- Bug #477: CUrlManager generates unwanted homepage URL when URL suffix is used (Qiang)
- Bug #482: Relational AR would fail when using Oracle due to column case issue (Qiang)
- Bug #484: CDbCommandBuilder generates an invalid SQL when inserting a row with all default values (Qiang)
- Bug #486: CDbExpression does not work as expected for PHP versions prior to 5.2.0 (Qiang)
- Bug: Fixed an issue in CNumberFormatter which incorrectly cached parsed formats (Qiang)
- New #424: Improved CCaptcha to allow clicking on CAPTCHA image to refresh it (Qiang)
- New #425: Added defaultParams option to the rules used by CUrlManager (Qiang)
- New #426: Added CApplication::setExtensionPath() (Qiang)
- New #436: Added error templates in Russian (idlesign)
- New #456: Added CCompareValidator::operator to support comparing values using different operators (Qiang)
- New #461: Added CHtml::htmlButton() (Qiang)
- New #467: Improved the algorithm for determining script URL by CHttpRequest (Qiang)
- New #474: Added CActiveRecord::refreshMetaData() to allow using the latest table meta data (Qiang)
- New #478: Enhanced CActiveRecord::findByAttributes and findAllByAttributes so that when an attribute value is array, an IN condition is generated for searching (Qiang)
- New #480: Improved CUniqueValidator to allow specifying AR class and attribute to validate against (Qiang)
- New #488: Added CCache::mget() to support retrieving multiple cached values at a time (Qiang)
- New #492: Enhanced form submit script so that it respects to existing submit event handlers (Qiang)
- New #493: Added call stack information to log when a PHP error occurs (Qiang)
- New: CDbCommand::bindParam() and bindValue() now return the command object so that they can be used in a chainable fashion (Qiang)
- New: Added thead and tbody to the code generated by crud command (Qiang)
- New: Added CFormModel::init() and CActiveRecord::init() (Qiang)
- New: Improved CFileHelper::getMimeType() so that it can return a meaningful result in most cases (Qiang)
- New: Improved yiic shell commands so that they are easier to be extended (Qiang)
- New: Added CExistValidator.criteria property (Qiang)
- New: Improved CHtml::statefulForm() to make it XHTML-compliant (Qinag)
- New: Added CBaseUserIdentity::clearState() (Qiang)
- New: Added 'ext' root path alias which points to the directory containing all extensions (Qiang)
- New: Added Greek translation of core messages (Vasileios)
- Chg #479: Imported path aliases now have precedence over existing include paths (Qiang)
- Chg: Modified the count() method of relational AR to support counting composite keys (Qiang)
- Chg: Reverted back the support for assigning a related object to an AR object (Qiang)

Version 1.0.7 July 5, 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)

Version 1.0.6 June 7, 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)

Version 1.0.5 May 10, 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)

Version 1.0.4 April 5, 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: CTRL-D 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 #292: Refactored CActiveRecord so that attribute assignment can be overridden more easily (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 HTML-encoding an array recursively (Qiang)
- New: Added case-sensitivity 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)


Version 1.0.3 March 1, 2009
---------------------------
- Bug #127: CUploadedFile is using an undefined variable (Qiang)
- Bug #132: CMysqlSchema has a typo (Qiang)
- Bug #133: CSort should properly quote the columns to be sorted (Qiang)
- Bug #135: CSort::link() does not work well with labels with special chars (Qiang)
- Bug #145: When layout property of CController is false, main layout is still applied (Qiang)
- Bug #153: Accessing related objects in afterFind() causes a duplicated SQL query (Qiang)
- Bug #154: Calling behavior method in relations() does not work (Qiang)
- Bug #161: Date formatting with timezones (Qiang)
- Bug: CHttpRequest.hostInfo may give wrong port number (Qiang)
- Bug: CHtml::activeListBox does not work when multiple selection is needed (Qiang)
- Bug: Inconsistency in timezone of log messages for different log routes (Qiang)
- Bug: Script file registered for POS_BEGIN is rendered twice (Qiang)
- Bug: CHtml::registerMetaTag() failed to be rendered when no other scripts are registered (Qiang)
- New #117: Added count() support to relational AR (Qiang)
- New #136: Added support to CWebUser to allow directly accessing persistent properties (Qiang)
- New #137: yiic model command should only set a column as required when it does not have default value (Qiang)
- New #138: Added support to specify additional attributes for OPTION tags (Qiang)
- New #140: Allow the route in a URL rule to contain parameters by itself (Qiang)
- New #146: Added CUrlManager.appendParams which allows creating URLs in path format whose GET parameters are all in the query part (Qiang)
- New #150: Register CTabView css file with media type='screen' (Qiang)
- New #156: Added CUrlManager.cacheID to allow disabling URL rule caching (Qiang)
- New #213: Enhanced CEmailValidator by allowing checking server port (Qiang)
- New: Upgraded jquery to 1.3.2 (Qiang)
- New: Upgraded jquery star rating to 2.61 (Qiang)
- New: Added skeleton application and refactored 'yiic webapp' command (Qiang)
- New: Added 'expression' option to access rules (Qiang)
- New: Refactored the code generated by yiic command (Qiang)
- New: Refactored the blog demo (Qiang)
- New: Added ignoreLimit option when joining tables all at once (Qiang)
- New: Added params option to relation declaration (Qiang)
- New: Added the blog tutorial (Qiang)
- New: Added CActiveRelation.together option to allow enforcing a table to be joined with the primary table (Qiang)
- New: Added CActiveRecord.hasRelated() (Qiang)
- New: Enhanced CHtml::listData() to work with raw query results (Qiang)
- New: Controllers under subdirectories are now referenced using "path/to/xyz" (Qiang)
- New: Added a defaut path alias named "webroot" (Qiang)
- New: Added support for auto-incremental composite primary keys in active record (Qiang)
- New: Added support for application modules (Qiang)
- New: Added "module" command for yiic shell tool (Qiang)
- New: Added support for using default roles in RBAC (Qiang)
- New: Added support for translating a message into multiple languages on the same page at the same time (Qiang)
- New: Added CClientScript::scriptMap to support remapping registered scripts (Qiang)
- New: Added CGoogleApi (Qiang)


Version 1.0.2 February 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)

Version 1.0.1 January 4, 2009
-----------------------------
- Bug #41: missing function CHttpRequest:: getCsrfTokenFromCookie() (Qiang)
- Bug #42: Wrong links in crud generated admin view (Qiang)
- Bug #45: Many-to-many relation does not work when both foreign tables are the same (Qiang)
- Bug #47: Wrong url parsing when CUrlManager is set in path format (Qiang)
- Bug #48: Typo in CActiveRecord::setAttribute (Qiang)
- Bug #49: Invalid markup generated by yiic tool (Qiang)
- Bug #53: tabular form input causes AR to fail (Qiang)
- Bug #54: typo in CHtml::listOptions (Qiang)
- Bug #57: Explicit column aliasing is not working in relational AR when the column appears in ORDER BY (Qiang)
- Bug #60: Related objects not available in CActiveRecord::afterSave (Qiang)
- Bug #69: Variable undefined error in CController::renderText (Qiang)
- Bug #79: CUrlManager::createUrl does not work for GET parameters that are arrays (Qiang)
- Bug #80: Improper unset in CHtml::activeCheckBoxList and activeRadioButtonList (Qiang)
- New #44: Make "yiic shell" command to support controllers organized in subdirectories (Qiang)
- New #51: Add support to import actions declared by a widget (Qiang)
- New #55: Add support for generating meta and link tags (Qiang)
- New #56: Allow specifying customized 'on' when a validator can be applied (Qiang)
- New #58: Allow specifying HAVING clause in DB criteria (Qiang)
- New #62: Allow URL routes to be case-insensitive by adding CUrlManager::caseSensitive property (Qiang)
- New #64: Add support to use relational AR when FK constraints are not defined in DB (Qiang)
- New #65: Added "alias" option to AR relations so that table aliases can be explicitly specified (Qiang)
- New #66: Add support to allow using isset() and unset() with component properties (Qiang)
- New #68: Upgrade the javascript for CMaskedTextField to 1.2.0 (Qiang)
- New: Fixed inaccurate error message when adding an item as a child of itself in CAuthManager (Qiang)
- New: CHtml::activeId and CHtml::activeName (Qiang)
- New: Added German, Spanish and Swedish core message translations (mikl, sebas, tri)
- New: Added CController::init() (Qiang)
- New: Changed Yii::createComponent() to support property initialization (Qiang)
- New: Optimized the framework (Qiang)
- New: Added CSort to support multisort (Qiang)
- New: Refactored the code generated by the crud command (Qiang)
- New: Added "contact" page to the skeleton application (Qiang)
- New: Added CMarkdownParser::safeTransform (Qiang)
- New: Added support to allow specifying anchor when using createUrl() to create a URL (Qiang)
- New: Added blog demo (Qiang)
- New: Added CXCache (Qiang)

Version 1.0 December 3, 2008
----------------------------
Initial release
