Yii Framework Change Log ======================== Version 1.1.5 November 14, 2010 ------------------------------- - Bug #997: Fixed the bug that relational AR query with page-by and sorting may fail to work for SQL Server (Qiang) - Bug #1130: Fixed the bug when renderDynamic and beginCache was used together without page caching (mdomba) - Bug #1244: Fixed the bug that CDbCommandBuilder::createCountCommand may generate invalid SQL when having and/or group options are used (Qiang) - Bug #1420: Fixed the bug that the table alias set in the model was not honored in STAT AR queries (Qiang) - Bug #1565: Fixed the bug that COutputCache may fail to work when used to cache whole pages (Qiang) - Bug #1577: Fixed the bug in CMssqlSchema::compareTableNames() (Qiang) - Bug #1592: Fixed the bug that the hidden field generated by CHtml::checkBox may have the same ID as the checkbox. (Qiang) - Bug #1615: Fixed the bug that caused CLogFilter::filter() to add context informations when the log was empty (Y!!) - Bug #1643: Fixed the bug that CFileValidator may cause a PHP error when using maxFiles>1 and the model attribute returning unexpected array (Qiang) - Bug #1647: Fixed the bug that CActiveRelation may attempt to set an undefined 'together' property when merging with a criteria (Qiang) - Bug #1653: Fixed the bug that in PHP 5.3 CArrayDataProvider will fail due to incorrect parameters sent to array_multisort (Qiang) - Bug #1655: Fixed the bug in COciSchema about checking DB schema (Qiang) - Bug #1673: Fixed the bug that CDbSchema::getTables() might return null table schemas (Qiang) - Bug #1685: Fixed the bug in COciSchema that will fail when used with DB schema (Qiang) - Bug #1696: Fixed the bug that CJSON and CJavaScript might serialize float numbers into local-dependent strings (Qiang) - Bug #1715: Fixed the bug that CActiveDataProvider.sort does not respect table alias set in the query criteria (Qiang) - Bug #1718: Fixed the bug that Gii may fail if the error handler or user component is customized in the main application (Qiang) - Bug #1719: Fixed the bug that CActiveForm->focus was not working if enableAjaxValidation was set to false (mdomba) - Bug #1730: Fixed the bug that CDbConnection may attempt to use "SET NAMES" to set charset for Oracle DB (Qiang) - Bug #1735: Fixed the bug that CGridView and CListView may fail to work in AJAX mode if setting pagerCssClass with multiple classes (Qiang) - Bug #1748: Fixed the bug that CDbDataReader does not properly reset internal pointer when it has multiple rowsets (Qiang) - Bug: Fixed the bug that some HTTP requests may cause a PHP notice complaining HTTP_HOST undefined in CHttpRequest (Qiang) - Bug: Fixed a bug in CGridView JavaScript that would fail the deletion action in IE when ajaxUpdate is set false (Qiang) - Bug: Fixed a bug that CFileCache may slow down performance when strlen is overloaded by mb_strlen (Qiang) - Enh #202: Added support for console command actions and parameter binding (Qiang) - Enh #970: Added CController::beforeRender() and CController::afterRender() (Qiang) - Enh #1081: Refactored application global state management to allow loading and saving states explicitly for long-run tasks (Qiang) - Enh #1126: CHtml can now properly render special HTML attributes, such as readonly, disabled, according to their boolean values (Qiang) - Enh #1419: CMaskedTextField, CAutoComplete, CStarRating, CJuiDatePicker, CJuiAutoComplete and CJuiSliderInput now can be used with tabular input (Sam Dark) - Enh #1450: Added support for theming widget views (Qiang) - Enh #1481: Added support for autoloading namespaced classes (Qiang) - Enh #1522: The attributes of CDetailView now support the property 'visible' (Y!!) - Enh #1546: Fixed the bug that disabling behaviors did not detach behavior event handlers (Qiang) - Enh #1555: Added support to allow unloading/resetting an application component by calling CModule::setComponent() (Qiang) - Enh #1561: Enhanced Gii tooltip feature to allow disable tooltips for certain input fields (Qiang) - Enh #1599: Refactored CMultiFileUpload by extending from CInputWidget (Qiang) - Enh #1560: Removed potential circular references in relational AR queries (Qiang) - Enh #1578: Added support to parse AM/PM by CDateTimeParser (Qiang) - Enh #1583: Upgraded HTMLPurifier to v4.2.0 (Sam Dark) - Enh #1591: Fixed yiic.bat to make sure it works even if the path of PHP executable contains spaces (Qiang) - Enh #1594: Added CWebLogRoute::ignoreAjaxInFireBug to make sure ajax calls work when showInFireBug is set to true (mdomba) - Enh #1596: Added 'not' property to CRangeValidator and CRegularExpressionValidator in order to support inversion of the validation logic (Y!!) - Enh #1598: Fixed CHttpRequest::getUserAgent() to make sure it works even if HTTP_USER_AGENT is not defined (Qiang) - Enh #1607: Added CDbCache::setDbConnection (Qiang) - Enh #1611: Added support for using composite keys in CActiveDataProvider (Qiang) - Enh #1618: Fixed CHttpRequest::getAcceptTypes() to make sure it works even if HTTP_ACCEPT is not defined (Y!!) - Enh #1625: Replaced rand() with mt_rand() for generating random private keys (Qiang) - Enh #1627: Added check if FreeType support is installed and enabled in GD (mdomba) - Enh #1633: Added $defaults to CDateTimeParser::parse() to support more reasonable datetime parsing (Qiang) - Enh #1641: Added PhpUnit 3.5.0RC1 and up support (Sam Dark) - Enh #1644: Added CModel::onAfterConstruct event and allowed CModelBehavior to respond to this event (Qiang) - Enh #1651: Added 'name' and 'model' properties to the attribute objects used in CActiveForm javascript code (Qiang) - Enh #1658: Added CAssetManager::linkAssets to support publishing assets via symbolic links (Qiang) - Enh #1659: Improved CHttpRequest::sendFile() and CWebService::renderWsdl() to make them more secure in case mbstring.func_overload is in effect (Qiang) - Enh #1661: Added CActiveForm 'reset' event handler to reset validation errors if using CHtml::resetButton() (mdomba) - Enh #1667: Added CDbCriteria::index to support indexing the AR query result array with the specified attribute values (Qiang) - Enh #1668: Added validation to ensure PHP keywords be not used as class names (Qiang) - Enh #1688: Refactored CDbMessageSource to allow easier extension (Qiang) - Enh #1699: Added capability to remove duplicated script files registered for different positions in CClientScript (Qiang) - Enh #1710: Upgraded treeview JavaScript to version 1.4.1 (mdomba) - Enh #1711: JavaScript registered in POS_LOAD will now be put in jQuery window load event instead of the previous global window load event (Qiang) - Enh #1742: Exposing the class map feature that was previously only available to core classes (Qiang) - Enh #1738: Upgraded JQuery UI to 1.8.6 (Sam Dark) - Enh #1740: Added CModelEvent::criteria so that in onBeforeEvent event, the query criteria can be accessed (Qiang) - Enh #1753: Added method chaining support for CClientScript (Qiang) - Enh: Added checking for empty keywords in addSearchCondition(), to prevent adding unnecessary conditions (mdomba) - Enh: Added flushValues() method to the cache classes (Y!!) - Enh: Added buttonset for CJuiButoon (sebas) - Enh: Improved error handling to catch errors occurring in CApplication::end() (Qiang) - Enh: Improved CHttpRequest::sendFile() to avoid timeout errors caused by long file downloading time (Qiang) - Enh: Improved action parameter binding by detecting if a parameter requires array or not (Qiang) - Enh: Added logging of DB query params in DB query profiling (Sam Dark, Vitaliy Stepanenko) - Enh: Added CDbCommand::bindValues() (Qiang) - Chg #1355: CHtml will no longer render null attributes in HTML tags (Qiang) - Chg #1540: The 'name' option set in CCheckBoxColumn::checkBoxHtmlOptions will be kept as is without any change (Qiang) - Chg #1678: The prompt and empty options used in CHtml methods will NOT be HTML-encoded anymore. (Qiang) - Chg #1680: Upgraded jQuery to version 1.4.4 (Sam Dark) - Chg #1756: Changed CGoogleApi::BOOTSTRAP_URL to CGoogleApi::$bootstrapUrl to allow customization (Qiang) - Chg: The javascript files of CListView and CGridView are now registered at the end of the page (Qiang) - Chg: Log filters will now be invoked only when there are some log messages available (Qiang) - Chg: removed destructor from CDbCache, CDbAuthManager and CDbLogRoute to avoid potential DB connection issue (Qiang) - New #1542: Added CTypedMap (Qiang) Version 1.1.4 September 5, 2010 ------------------------------- - Bug #698: Now you can get and modify criteria of the current query in beforeFind() event handler (Sam Dark) - Bug #1031: Fixed the bug that the filters in CGridView does not work in IE (Qiang) - Bug #1119: Added CUploadedFile::reset() to make it more test-friendly (Qiang) - Bug #1176: Fixed the bug that CVarDumper doesn't highlight well strings with quotes (Qiang) - Bug #1376: Fixed the bug that the timestamps displayed in Web application log may not be formatted properly (Qiang) - Bug #1377: Fixed the bug that CStarRating did not work when not setting the model property (Qiang) - Bug #1382: Fixed space removal in CDbCriteria::compare() (Sam Dark) - Bug #1384: SET NAMES problem with MSSQL PDO Provider (Qiang) - Bug #1390: AR may lose precision if a column is declared as unsigned int for MySQL database (Qiang) - Bug #1404: CSecurityManager::validateData() fails when the data is an array (Qiang) - Bug #1408: CDbAuthManager may throw exception when unserializing data from auth items in PHP 5.3 (Qiang) - Bug #1432: AR find methods with JOIN in query criteria may populate AR objects with attribute values belonging to other tables (Qiang) - Bug #1435: Table alias declared in scopes may be ignored when performing relational findByPk and findByAttributes queries (Qiang) - Bug #1476: Fixed the bug that setting 'id' to be false will still render 'id' attribute in CHtml::radioButton and checkBox (Qiang) - Bug #1455: CFormButtonElement generates wrong type for button tags (Qiang) - Bug #1488: When using cookies with CJuiWidget jquery.cookie.js is not registered (sebas) - Bug #1493: ShellCommand wouldn't process logs after exiting. (Qiang) - Bug #1521: CUniqueValidator may incorrectly fail the validation of a non-PK column when updating both this column and the PK column (Qiang) - Bug #1526: CFormInputElement by default should only show error if CForm::showErrorSummary is false (Qiang) - Enh #954: Refactored CActiveRecord and CActiveFinder so that CActiveRecord::with() always returns the AR object itself (Qiang) - Enh #1019: Improved CDataFormatter for formatting numeric weekdays (Qiang) - Enh #1073: Allow dependencies to be set in constructor of CChainedCacheDependency. Also allow dependencies to be specified as configurations. (Qiang) - Enh #1087: Allow CDbCriteria to be used as dynamic relational query options (Qiang) - Enh #1104: Added argument "$" to jQuery block to prevent $ alias conflict (mdomba) - Enh #1108: Added option to CFileHelper::getMimeType() to allow enable and disable falling back to extension-based MIME detection (Qiang) - Enh #1120: Improved error handling in session write handler of CDbHttpSession (Qiang) - Enh #1128: Improved error reporting when assets directory does not exist or is not writable (Qiang) - Enh #1222: Added relations information to Gii generated model's PHPDoc (Sam Dark) - Enh #1244: CActiveRecord::count() now respects GROUP-BY and HAVING settings (Qiang) - Enh #1347: Added CPagination::validateCurrentPage (Qiang) - Enh #1358: Enhanced the 'together' option of HAS_MANY/MANY_MANY relations so that setting it true will ensure the related table is joined with the primary table in a single SQL (Qiang) - Enh #1359: Added CActiveRecord::countByAttributes (Qiang) - Enh #1361: Added linkLabelWrapper, firstItemCssClass and lastItemCssClass to CMenu (Qiang) - Enh #1366: Added CListView::itemsTagName (Qiang) - Enh #1371: Improved js code in gii view templates to allow easier subclassing (Qiang) - Enh #1392: Added CCaptchaAction::fixedVerifyCode (Qiang) - Enh #1400: Enhanced CActiveRecord::getAttributeLabel() to support returning labels for related object's attribute (Qiang) - Enh #1412: Yii::import() now throws an exception when trying to include nonexisting PHP file (Qiang) - Enh #1414: Several enhancements to MSSQL driver used by AR (Qiang) - Enh #1433: Added CMessageSource::forceTranslation (Qiang) - Enh #1434: Added zii message translation in Italian (enrico.detoma) - Enh #1440: CDbException does now provide a valid error code if possible (Y!!) - Enh #1443: Added CCheckBoxColumn::checked to allow settings checked state for each CCheckBoxColumn row (Sam Dark) - Enh #1444: Added CFilter::init() (Qiang) - Enh #1449: Changed CDbCriteria's base class to be CComponent to better report configuration errors (Qiang) - Enh #1461: Enhanced CEmailLogRoute to support additional email headers (Y!!) - Enh #1471: CActiveForm AJAX validation should be cancelled when the form is already submitted (Qiang) - Enh #1509: Improved CMarkdownParser so that it can be used in console mode (Qiang) - Enh #1525: Added support to allow customizing 'name' attribute of checkboxes generated by CCheckBoxColumn (Qiang) - Enh #1532: Exposed the serviceName and namespace properties of CWsdlGenerator (Qiang) - Enh: Added CPortlet::hideOnEmpty property (Qiang) - Enh: Added CValidator::safe to allow marking a validator as safe or unsafe (Qiang) - Enh: Added CDbCacheDependency::params (Qiang) - Enh: Added CUrlManager::addRules() (Qiang) - Enh: Added support for using sqlsrv driver with MSSQL (Qiang) - Enh: Added CActiveForm::focus to set input focus on page load (mdomba) - Chg #1102: Added jQuery UI as a core client script package (Qiang) - Chg #1309: CHttpRequest::getPathInfo() now always returns decoded results (Qiang) - Chg #1494: CHtml::ajaxSubmitButton() will generate a submit button (Qiang) - Chg #1515: CModel::onUnsafeAttribute() will be invoked only when $safeOnly is true when calling CModel::setAttributes (Qiang) - Chg: Replaced jQuery live() with delegate() in CHtml-generated js code (Qiang) - New: Upgraded JQuery UI to 1.8.4 (Sam Dark) - New: Upgraded code highlighter: added sh and VBScript, fixed comments in CSS and hex numbers in JavaScript (Sam Dark) - New: Added CSqlDataProvider and CArrayDataProvider (Qiang) - New: Added support for automatic action parameter binding from $_GET (Qiang) Version 1.1.3 July 4, 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<5.3 (Sam Dark, parpaing) - Enh #217: Added support to allow using related objects as selection values in CHtml (Qiang) - Enh #663: Improved CSecurityManager to allow customizing the crypt/hash algorithms being used (Qiang) - Enh #716: Improved the performance of statistical query in AR (Qiang) - Enh #862: Enhanced CSort virtual attributes and support for related tables (Qiang) - Enh #887: Relative URL's will be returned when using a parameterized hostname url rule that has the current hostinfo (Qiang) - Enh #930: Updated CStarRating's jQuery plugin to v3.13, updated jQuery Metadata plugin (Sam Dark) - Enh #952: Enhanced support for using defaultParams in CUrlManager (Qiang) - Enh #1015: Added automatic column initialization when non-active data provider is used for CGridView (Qiang) - Enh #1022: Added CMenu::activateItems (Qiang) - Enh #1041: Added support to allow skinning pagers used in CGridView and CListView (Qiang) - Enh #1043: Improved view resolution to support using themeable application views in a module (Qiang) - Enh #1049: Enhanced label generation when using CDetailView with associative arrays (Qiang) - Enh #1127: Added support to automatically generate maxlength attribute for text/password inputs based on model rules (Qiang) - Enh #1151: Added support to generate grid column header based on attribute names (Qiang) - Enh #1158: Added translations in Latvian (lafriks) - Enh #1166: Added CActiveRecord::setOldPrimaryKey (Qiang) - Enh #1174: AR's count() now generates more reasonable SQL statement when 'group' option is specified (Qiang) - Enh #1179: Added CMultiFileUpload::file (Qiang) - Enh #1180: Exposed several member variables in CClientScript to be protected (Qiang) - Enh #1183: Added support to retrieve the currently active table alias in AR scopes (Qiang) - Enh #1188: Removed exception message display in production mode when a DB connection fails to improve security (Qiang) - Enh #1189: Added $loadedOnly parameter to CModule::getComponents() so that it can return all application components including unloaded ones (Qiang) - Enh #1199: AR's count() method now respects the 'select' option in the query criteria (Qiang) - Enh #1202: Added support for using anonymous functions as component property values (Qiang) - Enh #1203: Gii now respects the newDirMode and newFileMode settings even when lower umask is set (Qiang) - Enh #1210: Added support to generate proper labels for relational properties in CDetailView (Qiang) - Enh #1225: Added 'firstError' option to CHtml::errorSummary() to support displaying only the first error message of each model attribute (Qiang) - Enh #1232: Added CAuthManager::showErrors. When value is true Yii will turn on error_reporting for RBAC bizRules. False by default (Sam Dark) - Enh #1239: CBreadcrumbs should have the 'Home' label translated (Qiang) - Enh #1245: Optimized the implementation of checkAccess of CPhpAuthManager and CDbAuthManager (Qiang) - Enh #1261: Added magicFile parameter to CFileHelper::getMimeType() and getMimeTypeByExtension() (Qiang) - Enh #1268: Added isset and unset support to behavior properties in a component context (Qiang) - Enh #1271: Added CWebUser::getFlashes() (Qiang) - Enh #1276: Added CClientScript::coreScriptPosition to support customizing the insertion position of core scripts (Qiang) - Enh #1278: Gii model generator will now respect the table prefix when determining which tables the models should be generated for (Qiang) - Enh #1283: Added port and securePort properties to CHttpRequest (Qiang) - Enh #1284: Added support to allow passing an AR finder as the first parameter of the constructor of CActiveDataProvider (Qiang) - Enh #1286: Upgraded HTMLPurifier to v4.1.1 (Qiang) - Enh #1289: Added support to allow using non-string values when calling CDbCriteria::compare() (Qiang) - Enh #1290: Added cssClass to individual item in CDetailView (Qiang) - Enh #1306: Hide log route outputs when no messages are collected after filtering (Qiang) - Enh #1311: Added {page} and {pages} tokens to CBaseListView::summaryText (Qiang) - Enh #1326: Added CBaseActiveRelation::join property (Qiang) - Enh: CActiveRecord::beforeFind event is now triggered in all cases including related models with both lazy and eager loading (Sam Dark, creocoder) - Enh: Added support for using array-typed model attributes in active methods in CHtml (Qiang) - Enh: Added beforeValidate, afterValidate, beforeValidateAttribute and afterValidateAttribute options to CActiveForm (Qiang) - Enh: Changed @var declarations to class @property declarations in gii and yiic shell model templates (Sam Dark) - Enh: IDE code completion for CActiveRecord::attributes (Sam Dark) - Enh: Added beforeLogin, afterLogin, beforeLogout and afterLogout to CWebUser (Qiang) - Enh: Enhanced CSort::defaultOrder to allow using virtual attribute names (Qiang) - Chg #1323: Conditions declared in scopes of the related AR classes will be put in the ON clause of the JOIN statement (Qiang) - Chg: CAutoComplete is now deprecated (Sam Dark) - New: Added CJuiButton (sebas) 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) - Enh #1156: Updated jQuery BBQ to 1.2.1 (Sam Dark) - Enh #1282: Added support to configure widget default values in application configuration (Qiang) - 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) - New: Added CTimestampBehavior to automatically set timestamps in AR (Jonah) - New: Added CBaseMenu and CListMenu to aid in creating menus (Jonah) - New: Added CJuiWidget (sebas, Qiang) - New: Added CJuiInputWidget (sebas, Qiang) - New: Added CJuiSlider (sebas, Qiang) - New: Added CJuiSliderInput (sebas) - New: Added CJuiAccordion (sebas, Qiang) - New: Added CJuiProgressBar (sebas, Qiang) - New: Added CJuiTabs (sebas, Qiang) - New: Added CJuiDatePicker (sebas, Qiang) - New: Added CJuiSortable (sebas) - New: Added CJuiDialog (sebas) - New: Added CJuiSelectable (sebas) - New: Added CJuiDroppable (sebas) - New: Added CJuiResizable (sebas) - New: Added CJuiDraggable (sebas) - New: Added CGridView (Qiang) - New: Added CDetailView (Qiang) - New: Added CListView (Qiang) - New: Added CPortlet (Qiang) - New: Added CBreadcrumbs (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 "