QCubed 1.1.1 Stable Release (released January 21, 2010)

New Features

  • Global QTimer class for lightweight performance measurement (#390)

Database adapters/Codegen/ORM

  • SqlServer2005/8 Adapter: Support for column comments (#405)
  • Use of database column comments for code-generated ORM class properties (#415)

Controls

  • QDataGrid:
    • QDataGrid::SetFilters() failing for TextFilters (#399)
    • QDataGrid filter doesn't render on reverse QQReverseReferenceNode (#416)
  • Supporting images on QButtons through HTML <button> tag (#403)

Plugin Ecosystem

  • Issues during plugin installations with nested folders (#407)
  • Plugins - Make examples/ and includes/ components optional (#397)
  • Update QArchive to access plugin archive extraction errors (#411)

Documentation

  • PHPDoc-style documentation for all QControls for better code completion (#207)

Design

  • QCubed logo not shown in the start_page.php footer (#396)
  • Slight visual improvements for plugin manager (#409)
  • Save/Cancel buttons don't look good on form drafts (#410)

Other

  • Upgrade to latest jQuery (1.4) and latest jQuery UI (#428)
  • PHP 5.3 Compat:
    • function set_magic_quotes_runtime() deprecated (#376)
    • Unit testing framework (Simpletest) throws warnings (#385)
  • Minor typo in QType (#374)
  • QSoapService produces an invalid output because there's an extra tab output somewhere (#370)
  • QCache::SaveData() directory creation code to be replaced with recursive mkdir (#387)
  • Includes all fixes from QCubed 1.1 and 1.0.2 releases

QCubed 1.0.2 Legacy Maintenance Release (released January 21, 2010)

Codegen/ORM/Database adapters

  • Many-to-many references were broken (#365)
  • QMySqliDatabaseField broken for custom queries (#420)

Controls

  • Paginated controls: Validate Page number in QPaginator (#117)
  • Delete button translation broken (#418)
  • Wrong Rich Text Format mime type in QMimeType (#426)

Other

  • PHP 5.3 compatibility:
    • QSoapService (#316)
    • SQL Server database adapters - PHP 5.3 / NotEqual? Fix (#401)
    • toString() bug in QDataGridBase (#369)
    • QDateTime:
      • Better backward compatibility with QCodo and earlier releases: QDateTime toString() workaround (#384 and #290)
      • Add() and setTime() are incompatible with base class (#401)
      • QDateTime legacy did not have a qFormat() method (#400)
  • QType::Cast can't cast some floats to string (#375)
  • Respecting the setting for level of error reporting (#383)
  • Includes all fixes from QCubed 1.0.1 release

QCubed 1.1.0 Development Release (released November 10, 2009)

Project-wide Infrastructure:

  • Integrate SimpleTest unit test framework (#94)
  • Light integration of jQuery: easy to include jQuery, but not mandatory for your QForms (#183, #297)
  • New directory structure that ensures security and provides for ease of future upgrades (#230, #262, #275, #281)
  • Plugin manager: support for installing and uninstalling QCubed extensions (#272, #274, #291, #292, #305)
  • Configuration checker: a tool that runs when you first install QCubed and verifies the prerequisites, also helping you configure QCubed settings (#296)

Codegen and DB Adapters:

  • Support for PHP-based codegen templates (#6)
  • Support for multiple type table suffixes (#255)
  • New JSON extension for codegen templates (#284)
  • Time columns used to display as dates by default (#158)
  • ORM object initialization with default values as specified in the DB fields (#317)
  • MySQL Adapter: using database field comments as code comment annotations (#238)
  • SQL Server DB Adapter
    • New adapter for SQL Server 2005/2008 (#327)
    • Possibility to use a different date format (#288)
  • MetaControls check for unique constraints on save (#319)
  • Codegen: small additions to QTable - GetColumnByName, HasColumn, LookupColumnPropertyName (#348)
  • Codegen: modularization of code generated file permissions (#324)

QForms Infrastructure:

  • Form Base is back and it works with MetaControls (#33)
  • Attributes of the <form> tag can be overridden (#7)
  • Use spl_autoload_register instead of autoload (#36)
  • Natively supporting servers with Magic Quotes turned on (#240)
  • AutoRenderWithNameChildren property for QPanel (#286)

Controls:

  • Paginated controls:
    • Integrated QFilteredDatagrid (#34)
    • Add WaitIcon suppport to QPaginators (#23)
    • Supporting row actions for QDataGrid (#101) and an example for it (#210)
    • Allow conditions and clauses in MetaDataGrid (#169)
    • Display bools in datagrids correctly (#295)
  • QFileAsset:
    • New $strRandomFileName (#248)
    • New optional limits on upload file size (#304)
  • New control: dynamic QTreeNav (#30)
  • Integrated jQuery visual effects (#183)
  • Per-control support for custom CSS stylesheets (#256)
  • Fire QChangeEvent on QDateTimeTextBox for Qcalendar date change (#329)
  • Allowing JavaScript actions on QHtml controls (#252)

Documentation:

  • New Example for QueryArrayCached (#132)
  • Documentation for qcodo_query_classes.tpl (#189)
  • QListControl, QListBoxBase, QListBox, QListItem documentation (#188, #193, #194, #196, #197)
  • QControl documentation (#195)
  • Examples missing tpl files (#289)
  • Don't allow the encrypt example to crash when no encryption libraries are installed (#298)

Misc:

  • Support translations to languages other than the default (#325)
  • QCache:
    • Add deletion support to QCache (#143)
    • QCache: support for hierarchy of namespaces (#201)
  • QType bug when casting to double or integer (#159)
  • Integrate QEmailStringAttachment into core (#264)
  • File Form State Handler: paths hard-coded in core distro files (#347)
  • Removed indexes that are not used in innodb example db (#165)
  • QCodo references in the code/folders should be replaced by QCubed (#63)
  • Includes all fixes from QCubed 1.0.1 release

QCubed 1.0.1 Stable (released October 19, 2009)

Codegen:

  • QuerySingle throws error instead of null on empty result set (#261)
  • QuerySingle sometimes returned first resultset record, sometimes - last (#234)
  • Form draft generator - translation support for edit links (#329)
  • Appropriately supporting time field in MySQL (#282)

Controls:

  • QDialogBox does not show correctly in IE8 Beta2 and Opera 9.22 (#131)

Documentation:

  • New QControlBase documentation (#207)
  • Typo on datagrid sorting example (#279)

Security:

  • Default index.php page should use CheckRemoteAdmin (#241)
  • Security: HTML escaping of ToolTip (#302)

Misc:

  • Includes all fixes from QCubed 1.0.0 release
  • Full compatibility with PHP 5.3 (#290)
  • QDateTimeSpan without GPL licence (#266)
  • QEmailServer, invalid Content-Length (#277)

QCubed 1.0 Stable (released April 21, 2009)

Controls:

  • QImageControl: cache did not work at all (#181)
  • QDialog box does not show up correctly in IE8 and Opera 9 (#131)
  • QFileAsset:
    • GetWebURL broken on Windows (#176)
    • Invalid caching of uploaded files (#216)
  • QFileAssetDialog: does not work inside a QForm (#182)
  • QDateTimePicker:
    • ability to translate month names (#177)
    • actual translation into Spanish (#178)
    • increasing default MaximumYear for QDateTimePicker (#180) and QCalendar/QCalendarPopup (#184)
  • Modal dialog box positioning is incorrect when rendered in an absolutely positioned QPanel
  • Drag-and-drop JavaScript errors (#218)

Codegen

  • QueryArrayCached does not work (#200)
  • Load and LoadBy generated functions now accept $objOptionalClauses param (#167)
  • Meta controls: syntax error in many-to-many generated controls around $strGlue (#198)
  • Dashes in column names are now explicitly disallowed (#175)
  • Codegen settings XML file: supporting both "qcodo" and "qcubed" as the format string (#219)

Examples / Documentation

  • Examples table relationship diagram (ERD) is outdated (#133)
  • Purged obsolete "migrating from Beta 2" example (#214)

Other

  • QEmailServer: Character encoding for plain-text messages (#217)
  • Correctly exiting after errors (#174)
  • Includes all fixes from QCubed 1.0 RC2

QCubed 1.0 RC2 (released February 16, 2009)

Examples / Documentation

  • New examples for QQuery:
    • subqueries with SubSql (#108)
    • conditional joins (#130)
    • multi-level ExpandAsArray (#164)
  • New example: persistent controls (#109)
  • New example: QRegex and QLexer (#110)
  • Update example on _type tables to explain support for more than 2 columns (#95)
  • Fixing explanation error in Reverse Relationship example (#163)

Database adapters, ORM, and QQuery

  • QQuery:
    • Multiple ExpandAsArray clauses cause duplicates (#151)
    • Validation for the number of parameters for LoadAll (#153)
  • Postgre database adapter: better handling of timestamps (#171)
  • Roundtripping "large" floats (doubles) and BigInts (#25)
  • Codegen for date/time fields:
    • labels were code-generated incorrectly on meta controls (#15)
    • "QDateTime to string conversion" error (#22)

QControls

  • QListBox: deselecting items through SelectedIndex=-1 did not work (#82)
  • QFileAsset: upload-delete-upload again is broken (#88)
  • QDialogBox:
    • QFileAsset does not work inside QDialogBox (#99)
    • QCalendar positioning is wrong inside a QDialogBox (#125)
    • QDialogBox does not show correctly in IE8 Beta2 and Opera 9.22 (#131)
    • Incorrect CSS style used for hiding dialog boxes (#135)
  • Paginated controls:
    • QDatagrid error when using base <html> tag (#124)
    • PHP Strict compliance for GetColumnAlias() declaration (#136)
    • QPaginator: validating page numbers (#117)
  • QPanel: fixed drag-and-drop for major browsers + "moveable" on-hover handles (#74)
  • Packed Javascript file _qc_packed.js was corrupt (#24)
  • Updated browser detection logic (#60)

Security

  • Cross-site scripting: Calendar (#62)
  • Cross-site scripting: Error page (#65)
  • PHP version headers were always sent (#66)
  • Cross-site scripting in QTextBoxBase was cast incorrectly (#104)

QEmailServer

  • Sending emails to addresses that contain allowed special characters (#27)
  • TestMode does not work (#87)

Other

  • Includes all fixes from QCubed 1.0 RC1

QCubed 1.0 RC1 (released November 2008)

QControls

  • QDataGrid:
    • Adding $_OWNER to datagrid column HTML parsing (#46)
    • Allowing other controls to cause the QForm to be rendered (specifically useful for Download as CSV links in QDataGrids) (#46)
  • QIntegerTextBox: Supplying friendly errors for when text is entered (#46)
  • QCalendarPopup returns incorect dates (#48)
  • QImageRollover should not have direct calls to htmlentities (#53)
  • QTreeNav:
    • add WaitIcon support (#57)
    • allowing for separate Hover and Select CSS classes (#46)
  • Javascript: wrong use of Array's as associative arrays (#50)

Database adapters, ORM, and QQuery

  • MySQL adapter: Prevent crashes if columns are unusual lengths (#46)
  • MS SQL adapter:
    • Allow large column types (#46)
    • Replaced @@IDENTITY with SCOPE_IDENTITY() (#56)
  • Codegen:
    • many-to-many reference template typo (#51 and #70)
    • supporting new reserved words in PHP 5.3 (#52)
    • QDateTimePicker meta label generation is incorrect (#49)
    • GetColumnAlias() issue with PHP versions before 5.2 (#58)

Security

  • Preventing PathInfo injection attacks (#54)

QI18n (internationalization)

  • Supporting empty translation strings (#47)

If you're interested in a complete list of bugs that were considered for each of the releases, take a look this Trac Report.