Yii Framework Change Log ======================== 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.11 to be released ----------------------------- - Bug #608: yiic webapp command may generate incorrect path referring to yii scripts (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) - Enh #643: Enhanced CAccessControlFilter::expression, COutputCache::varyByExpression and CExpressionDependency::expression so that they can use PHP callback (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) 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