08.06.2008 -------------------- (Series of fixes from 07.28.2008 included in this log) + Added ActiveDirectory security provider + Fixed long standing issue in lib/logger.php. MUCH faster now > Removed all Logger classes + Fixed RecordTable issues where references weren't being created correctly in SchemaTranslator + Added a few words in lang/en/main.php + Added FormViewer class which can be used to manipulate Record objects into a form that can be modified and displayed to console, browser, etc. + Added several new non-standard form elements in lib/html/form/ext which extend current form elements but provide extra functionality + Renamed HTMLFormCreator to FormCreator + HTMLForm now references lib/html/Form.php + DBMS now uses counter when associating SQL statements to prepared statements + SONAR now included library. SONAR is an RPC system, written in PHP, based off of the Sun ONC spec 07.28.2008 -------------------- + Fixed bug in lib/sql.php. If a Record member value was set to array, to load multiple records given a set of IDs, it no longer displays a warning. 07.24.2008 -------------------- + HTMLFormCreator now converts primary key columns to Hidden form field + HTMLFormCreator now converts columns that reference another table column to a Text, irregardless of type, and marks the field with a CSS type of ref_col. This was done to enable developers to easily identify fields that reference a record in database and build an appropriate controller for the field + SecurityProvider classes created to enable developers the ability to access resources, such as ActiveDirectory, with a common interface. It's far from complete. 05.18.2008 -------------------- + Removed lib/cosntants/CodeStyle.php. Constants are now in lib/abstract/CodeStyle.php and all begine with CODE_STYLE_ + Several fixes have been made to the CodeStyle class including a lingering bug that did not completely remove class files if a code style was changed + Force updates feature now available. This allows older classes to be updated to a newer version of the Wandervogel sub-system without deleting the classes from the project directory in order to apply changes + RecordTables now keep track of which other tables are referencing them. This allows for easy reverse-lookup to child records associated to a parent record + Several small fixes made to improve stability + HTMLForm class moved to lib/html/Form.php + HTMLElements are now considered a Form class + Form now contains a collection "fields." The previous behaviour was to extend the Form class and create member variables for each element in the form. This caused issues where field names would be in conflict with the member variables associated to the Form class. The old behaviour is still supported but deprecated. All fields will need to be in this collection in the future. In future: Both the RecordTable and Form classes will require that a collection of columns / field elements be associated to a single variable. It's obvious now that the design decision to make variable accessible via: RecordTable.columnName was not the best idea, as you would have column names / field names that would be in conflict with member variables associated to the base RecordTable / Form classes. These classes will allow the variable, which accesses the collection of columns / fields, to be either an associative array or an object. Here is an example of both: Associative array: RecordTable.columns['columnName'] OR Object: RecordTable.columns.columnName Both types will be supported. 04.02.2008 -------------------- + Tested project in production environment spanning multiple different projects. The projects included the existing project base of my current employer, IsolSoft's Support Center v2.2 (much of which was re-written to use Wandervogel), and a cool survey tool called PHP ESP. + Added support for Pervasive 7.x + Added support for Microsoft SQL 2000 + Added support for foreign key relationships in MySQL 5.x + Numerous fixes, updates, and additions. Several of the classes used to create classes were re-written, or improved, for clarity. A lot of work could still be done to it... + Added a new namespace class used to scrape information from web pages + Removed Spanish translation as it was never complete + Tested to work on IIS on Windows, Apache 2.x on windows, and Apache 2.x on Linux (Ubuntu 5.x, 6.x, 7.x) 12.02.2007 -------------------- This is an accumulation of over a month's worth of work to solve some of the major on-going issues within the system. Most have been resolved. All will be resolved for the 1.0 release. + Added cached SQL statements. Improves queries done on single record objects greatly as an SQL statement is no longer created at run-time + Eliminated several constants. There are only a few more constants that need to be moved within a name space + Moved Javascript events into lib/html/events/ + Moved all SQL columns to lib/sql/columns/ + Updated all comments in classes. Most have a page-level / class-level block. The 1.0 release will contain licensing information, or a link to the license, in every file + ENUM and SET columns are now supported 10.14.2007 -------------------- This release is more or less another improvement on design focused on simplicity and speed + Made the loading of objects much more simplistic by caching tables in the dbms and loading the corresponding RecordTable, associated to a Record, upon loading the Record file. + Tables are now created into classes as the table name. Before 'Table' was appended to a singularized inflection of the table name. So 'table games' would be created into a class named: GameTable. By making the class the name of the tables it removed some of the more complex logic associating a Record object to it's corresponding RecordTable. It provides more clarity as well as some interesting ways of associating RecordTable columns to other RecordTable objects (one to many relationships, etc.) Overall, the project has become more clean and simplistic. The one draw back to doing this is that the table name MUST be plural. ie. table games is acceptable, table game is not. Otherwise you'll run into conflicts when loading up a Record and RecordTable instance. Both would have the same name... + CodeStyle.getClassBody() now does not convert the class name. The class name being passed must be converted into the appropriate coding style, or your class will not be parsed out correctly. Removing this assumption that the developer wishes to have the class name generated upon calling this method affords more flexibility and less assumptions... 09.01.2007 -------------------- + XML Form Creator will become something a little more abstract. It's not part of the sub-system itself. Therefore, it's been removed from the task list. It will, however, be added at a later date. It will include a much more powerful API that will allow several different types of form submission methods that will store record information into the database including: CSV files, XML files, and JSON objects > Another task, which actually was related to the above task, has also been removed. This module should be completely separate from this sub-system. In future, the sub-system will contain a flexible solution to import and export data to and from the system that Wandervogel is being used. This task dealt with the more specific ways of translating RecordTable elements into their appropriate form elements: Object columns that refer to other table should be made into Note: The last few releases have been geared more towards stability and cleaning up the libraries rather than adding new features. This is, as far as to my knowledge, a stable release. 08.12.2007 & 08.22.2007 -------------------- Client 1.0 RC7 + Added RecordColumn.isValid(). Used as wrapper to identify if value being set on respective member variable is of the correct data type, etc. + Preparing to make logger messages console friendly by removing HTML tags. + Improved class type > Converted all double quotes to single quotes > type.is_int() is more efficient (uses ctype_digit instead of preg_match) > Modified / Updated all comments to reflect what methods do (including providing examples in class description) > Removed type.timestamp() + Began to create more specific Exceptions that occurr in project. This will most likely not be completed for a long while + Added new abstract class JavascriptEvent. This is meant to clean up the mess created in lib/html/Event.php. All javascript events are now stored in lib/html/events/. The name of the event class is the exact name as the javascript event that should be displayed to browser. Therefore, the onClick event will have a class name of: class onClick {}. This modularizes the events as well as making it trivial to add a new Javascript event to the framework (rather than having to create a new constant and then remember to update the event name in lib/html/Event.php) + Moved lib/constants/Types.php into lib/type.php static class. class type now provides namespace for variable types + Fixed: If user adds variable in RecordTable, TableComparator.getTableColumns() would attempt to find a the name of the column, even though variable was not a RecordColumn. + Fixed: Indentation in class files not correct when generated + lib/constants/FileTypes.php removed. functions is_allowed_filetype() no longer exists. There will need to be another method for this 07.29.2007 -------------------- Client 1.0 RC6 + Fixed: class Folder not extracting base directory as it should (will use basedir in next version) + RecordTable now loaded from within wandervogel class + Project directory now in class wandervogel. Project directory can now be specified at run-time + Fixed: class sql methods not public static + Added to class Record: toJson(), loadFromJson(), toArray() + If word can not be inflected the original word will be passed instead of throwing an Exception + Introduction page now displays correctly if no projects exist (This rendered new installations unable to make projects...) + Added logger.is_displaying_live() Client 1.0 RC5 07.22.2007 -------------------- Client 1.0 RC5 + Design changes completed. This included moving all utility functions in respective static class that would provide a quasi-namespace for functions as well as removing or adding methods to existing classes in project + Audited 100% of the code. All changes that need to be made or were made are listed below: - Record will use built-in PHP data type checking (Possibly. The current implementation isn't horrible and it's easy to change) - Project configuration will be in one file located in root folder of project called: config. All data will be included in this file including database configuration information. Two utilities have been created (but not completed) that will provide this new functionality - Removed several utility functions that were deprecated - Make the CodeStyle methods a little less verbose - Several methods in several classes need to be tested more thoroughly: . lib/sess.php . lib/type.php . lib/utils.php . lib/inflection.php [camelize may not be working for already camelized words] . lib/classes/Page.php [Possibly will remove from project] . lib/classes/PHPFile.php [Not complete] . lib/classes/SQLFile.php [Not complete] . lib/classes/SVN.php [Not complete] . lib/abstract/CompressedFile.php [Complete. Untested] - Classes that could be tested more: . lib/dbms.php - When instantiating a RecordTable object from class Record (Record relies on a RecordTable to exist relative to the object name of the current Record) determining what the extension is for that class needs to be solved + Wandervogel Client - Attempting to remove a type of code creator class will not display in review screen. It does perform the action correctly, however. It's only a matter of displaying the changes of a code to be created that is necessary Client 1.0 RC4 07.15.2007 -------------------- Client 1.0 RC4 + Added: Record.isSingle() Record.isNew() Record.getTable() Record.getErrorFields() Record.addErrorField() RecordTable.getReferences() RecordTable.hasReferences() RecordColumn.isReference() + Moved code that saved variables that contained errors in Record + Renamed mispelled functions in Record. (Happened during last week's conversion) + Class utils created. Provides namespace for all general utility functions + Incomplete. Method utils::file_get_config() added to retrieve a configuration file's contents + Incomplete. Method utils::file_put_config() added to store configuration info to a file + Deprecated DatabaseConfiguration and ProjectConfiguration. Will remove in next release + Class sql created. Provides namespace for sql utility functions + Class inflection created. Provides namespace for inflection utility functions 07.08.2007 -------------------- Client 1.0 RC3 + Programming style converted to Java-esque coding style + Moved language path to LanguageManager + Wandervogel system paths are now in class as static variables + Project path added to Wandervogel. This now allows the project folder to be located in any location + Removed Smarty path from Wandervogel + Unit tests updated + Removed method in ProjectConfiguration that found the project name to an object. It was in the wrong place and was very messy. + Fixed issue where project path in client was not displaying correctly + M (Modify) / D (Delete) / A (Add) now used to define what will happen to a class during review + Did a little bit of code auditing. Uncommented several files that weren't being used in a few classes. This task is about 10% complete. Should be done in next version. + Cleaned up ProjectConfiguration. Does not rely on Wandervogel any longer. Path to configuration file must be given. Planning to replace this class with a ConfigFile class. You give it a Folder and File and an array of key => value pairs to be saved to file. + Removed tests that tested the new class that creates project files. Did determine how this will work in a very clean manner + Removed configuration file 06.24.2007 -------------------- Client 1.0 RC2 > Update: Displaying obsolete message in classes/success page > Update: Remove "Fields contain error" message in projects/index page > Update: Add message to indicate that restriction of using multiple databases through one project will not effect other classes in future in classes/review > Update: Remove UnitTest CodeCreator. The unit tests that test Record and RecordTable already prove the Record functionality > Fix: Text in message displaying code rather than the submit's button value in classes/review > Update: Change project name to Wandervogel. Change all pages to reflect this name > Update: Update sub-domain to wandervogel > Update: Update Upstart Illustration to display project > Update: Add change list to home page > Update: Point template directory from tadone to wandervogel > Update: Update template directory in client project > Update: Change all references of TaDone to Wandervogel on website > Update: Added license to project zip > Update: Added unit tests to project zip. The unit tests can be executed to determine if the Wandervogel project is installed and working properly on your machine To install the unit tests: 1. Unzip project folder. 2. Put the project files in a directory on your hard drive 3. Go into unit_tests/src/init.php and change the location where base/Wandervogel.php is located 4. Make a vhost for unit_tests/ 5. Create a database called unit_test 6. Import schema from unit_tests/src/unit_test.sql into unit_test database 7. Run http://unit_tests/ (where 'unit_tests' is the name you chose for your vhost name for the unit_tests directory)