After too-long a hiatus, I’ve released Solar 0.7.0; you can get it from our PEAR channel server here. (Solar is a simple object library and application repository for PHP5; it is similar to PEAR and Horde, and might be described as a library-like framework for MVC development.)
The interim was filled with lots of improvements, not the least of which are some new classes and fixes from Matthew Weier O’Phinney. His work on the forms portions has been helpful and enlightening; I think we may now have a true MVC contender against HTML_QuickForm when combined with the improved form plugin for Savant3.
The change notes are quite long; you can read them below.
* WARNING: This is a public development release, and is not yet stable. * Added new class, Solar_Filter, to filter data. This is a companion to Solar_Valid and is currently used mostly for prefiltering submitted form values. Thanks, Matthew Weier O'Phinney. * Added new class, Solar_Form_Loader, to allow loading of form elements from external sources. Currently has only one method, fromXml(), to load elements from a SimpleXML file. Thanks, Matthew Weier O'Phinney. * Solar: * New protected method environment() performs some standardized environment setup at Solar::start() time. Solar now automatically... * Unsets all registered global variables if 'register_globals' is on. * Unsets $_REQUEST (you should use Solar::get(), ::post(), and ::cookie() for security reasons). * Dispels magic quotes from get/post/cookie/files/server superglobals if 'magic_quotes_gpc' is on; handles Sybase quotes as well as slashed quotes. * Turns off 'magic_quotes_runtime' and 'magic_quotes_sybase' so that SQL sources do not quote values on retrieval. * Solar::start() no longer sets error_reporting and display_errors. Per note from Matthew Weier O'Phinney. * Fixed bug where start() was calling __solar('start') instead of solar('start') on shared objects (the latter is correct). * Added locale strings for 'VALID_*' keys to support default validation messages in Solar_Sql and Solar_Form. * You can now specify an alternate config sources as the only parameter to calling Solar::start(). Pass an array to populate $config directly, an object to populate from the object properties, or a string to indicate an arbitrary path to a config file. The default remains to load $config from the file defined by the SOLAR_CONFIG_PATH constant. Per discussion with Matthew Weier O'Phinney. * Solar_App_*: * View scripts now use the new Savant3 auto-escaping function and the new Solar_Template plugin locale() for localized strings. * Solar_Base: * Constructor now allows passing of a string as the $config value, which is subsequently treated as a path to a php-array config file (this means you can have a config file specifically for a class instead of having to pass an array). * Solar_Filter: * The alphanumeric() method is deprecated; use alnum() instead, it's easier to type. The alphanumeric() method will be removed after the 0.7.0 release. * Solar_Form: * BC BREAK: Made $config protected like every other Solar class. Config values are now populated through to the new $attribs property, which stores attributes for the form tag itself. If you were using $config to retrive form-tag attributes, you should now use $attribs instead. Updated Solar_App_* views to reflect this change. * Added prefiltering of submitted values; use addFilter() method, or add a 'filter' key to the element array when using setElement(). Thanks, Matthew Weier O'Phinney. * The populate() and validate() methods now take an optional paramter; if that param is an array, it is used for the $submitted property. This allows you to pick the value population source instead of having to choose only from $_GET and $_POST. Thanks, Matthew Weier O'Phinney. * Added reset() method to restore form to its originally-configured state. * Added load() method to load attributes and elements (with filters and validations) from an external source. Per discussions with Matthew Weier O'Phinney. * When no message is given for validation, attempt to get a default validation message from Solar/Locale/en_US.php based on the method used for validation (c.f. the new VALID_* translation keys). * Solar_Sql: * In quote(), changed is_double() to is_float() to match with column pseudo-type name. * Solar_Super: * No longer uses the magicStripSlashes() filter when values are fetched, because the Solar environment setup now takes care of slashes at start() time. * Solar_Template: * Updated to Savant3 alpha2 and converted all Solar_App_* view scripts to use its new auto-escaping functions. See change notes at http://phpsavant.com/yawiki/index.php?area=Savant3. Of note, the 'form' plugin will change in the next release, and the 'scrub' plugin will disappear in the next release. * Added new 'Plugin/' directory with new 'locale' plugin to help with locale transalations (you can now use $this->locale('KEY') instead of Solar::locale('Solar', 'KEY')). All Solar_App_* view scripts now use this plugin. * Adds the 'Solar/Template/Plugin/' directory to the top of the configured resource_path automatically. * Solar_Valid: * The alphanumeric() method is deprecated; use alnum() instead, it's easier to type. The alphanumeric() method will be removed after the 0.7.0 release.