# Development Roadmap This is the set of features that the Lithium team is focusing on in the near-term. If your must-have feature or favorite new technology doesn't appear here, don't fret: Lithium is very flexible and has a robust plugin API. Extending the core framework is trivial, and it's possible that someone has already developed a [project that meets your needs](http://rad-dev.org/projects). ### Session/Cookie Handling - Cookie and PHP-based session adapters need integration tests with the `Session` class. (jperras) - A mechanism to optionally encrypt cookie data (strategy?) (jperras) - A mechanism to optionally sign cookie data to ensure it has not been tampered with. (jperras) ### Model/Data Layer & Validation - The filter hooks system in the `Validator` class needs additional work, cleanup, and test coverage. (**complete as of 0.6.**) - SQL querying support is currently very basic. See `lithium\data\model\Query` and `lithium\data\source\Database` / subsidiary drivers. Support for joins / relationships -- **in progress**. ### Test Suite - Refactor test filters to not munge object state (`$Filter::$_results`). An instance of `Report` should instead be composed into each filter, which can then be used to push results back up, e.g. `$report->header($name, $title)` (**complete as of 0.6.**) - Common Report output formats of `header`, `message`, `table`, etc. should replace what is currently in `$Filter::output()` to better decouple the concepts of test data collection, aggregation and display. - Implement XML and JSON display formats for test data, with the intent on utilizing this for a continuous integration solution. ### Error Handling System - Needs additional filtering rules and interface testing. - Integration tests - Class documentation & example configurations ### Strategies - The current implementation of strategies is broken. It has been removed from the stable point releases until it can be properly re-implemented. (jperras) ### Globalization More information about Globalization in Lithium can be found in [the specification](http://rad-dev.org/lithium/wiki/specs/globalization). * Static dependencies on `g11n` classes should be refactored out of the `template` (**complete as of 0.6.**) and `console` packages if possible. * Translation methods outside templates (i.e within commands and controller flash messages). -- **complete as of 0.6.** * Relocation of template translation methods to <strike>a g11n helper?</strike> `Message` class -- **complete as of 0.5.** * Introduce environment settings as described in _Identifying, Setting and Passing Locale Settings_ of the spec. -- **in progress.** * G11n routing. * Accepted languages parsing from request. -- **complete as of 0.6.** * Implicit current locale (negotiation between accepted from request and available locales). -- **complete as of 0.6.** * Support for number formatting. * Support for date formatting. * Support for _direction_. * Support for retrieving plural functions via `Catalog` for `Cldr` and `Gettext` adapters. * Uniform plural functions (in `Cldr`, `Gettext` and `Memory` adapters). * Move `Validator` class's locale specific rules to g11n resources. -- **complete as of 0.5.** * `Inflector` g11n resources? * A g11n guide. ### Queuing - Actual work on the plugin needs to start/resume (jperras) ### Security - Authentication: Additional unit tests, integration tests & adapters. - Access control: Needs to be implemented. ### Static Code Analysis - The `lithium\analysis\Parser` class has only very rudimentary support for recognizing code patterns. Possibility: implement an object-oriented abstract syntax tree.