Harmoni Change Log
Version 1.10.1
2010-03-04
This release fixes a few minor errors related to CAS authentiation.
-
Bug Fix: CASAuthNMethod now doesn't throw errors when checking if a random id is a group id. (2010-03-04 - Adam Franco)
-
New feature: CASAuthNMethod: Added support for searching for class groups. (2010-03-04 - Adam Franco)
-
New feature: CASAuthNMethod: Added optional regex to allow determining if an id is for a group without having to make a web service request for every single check. (2010-03-04 - Adam Franco)
-
Bug Fix: CASAuthNMethod: Fixed usage of wrong parameter. (2010-03-04 - Adam Franco)
Version 1.10.0
2009-10-09
This release adds support for CAS authentication.
This release also reworks how admin-act-as-user authentication operates, requiring a change in the AuthenticationManager configuration.
New AuthenticationManager configuration options are required if using admin-act-as-user authentication:
* jquery_src - The URL of a JQuery library > 1.3
* jquery_autocomplete_src - The URL of a JQuery-Autocomplete library
* jquery_autocomplete_css - The URL of a JQuery-Autocomplete CSS.
See: http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/
-
New feature: Utilities: New Harmoni_Filing_FileInterface::getExtension() method. (2009-10-09 - Adam Franco)
-
New feature: Authentication: Added support for CAS authentication. (2009-10-09 - Adam Franco)
-
Change: Authentication: Reworked admin-act-as-user authentication to enable searching for user accounts and operation with any authentication menthod. (2009-10-09 - Adam Franco)
Version 1.9.7
2009-09-25
This release includes a few minor additions to the MIME Type list and a method in the FileSystemFile utility class.
Version 1.9.6
2009-07-24
This release fixes a small issue with the Agent OSID implementation.
-
Change: Agent: Updated the AnonymousAgent class to be operational. It appears not to have been used in a long time and no longer aligned with the HarmoniAgent parent class. It is now just a lightweight container. (2009-07-24 - Adam Franco)
Version 1.9.5
2009-02-25
This release fixes a few issues with the Agent OSID implementation. Please note that the structure of the agent_external_children table has changed.
-
Bug Fix: Agent: Small fix to remove notice when deleting a group that was not fetched. (2009-02-17 - Adam Franco)
-
Change: Agent: HarmoniGroups now include External sub-groups when returning members recursively. (2009-02-18 - Adam Franco)
(reported by Alex Chapin of Middlebury College)
-
Change: Agent: HarmoniGroups now filter out duplicate agents when returning members recursively. (2009-02-18 - Adam Franco)
(reported by Alex Chapin of Middlebury College)
-
Change: Agent/SQL: Size of agent_external_children columns has been increased from 70 characters to 140 characters to prevent long DNs from being truncated. (2009-02-25 - Adam Franco)
(reported by Alex Chapin of Middlebury College)
Version 1.9.4
2009-02-09
This release makes a few minor improvements. See the change log for details.
-
Bug Fix: UserData: Fixed storage conflicts when the sameuser had two sessions going. (2009-02-09 - Adam Franco)
Version 1.9.3
2009-01-30
This release makes a few minor improvements. See the change log for details.
-
Bug Fix: Fixed typo in in the String class's use of ConfigurationErrorException. (2009-01-30 - Adam Franco)
-
Change: Filing: Creating a file-system-file object with an invalid path now throws an InvalidArgumentException with code 78345 rather than a generic Exception. (2009-01-30 - Adam Franco)
Version 1.9.2
2009-01-28
This release fixes a few minor issues with the ErrorHandler. See the Change Log for details.
-
Bug Fix: ErrorHandler: Now defines E_RECOVERABLE_ERROR for PHP 5.1 support. (2009-01-27 - Adam Franco)
-
New feature: ErrorHandler: New method for printing exceptions, HarmoniErrorHandler::printException(Exception $e) (2009-01-28 - Adam Franco)
Version 1.9.1
2009-01-26
This release includes a fix to allow Harmoni to run under PHP 5.1.
-
Bug Fix: Agent: Compatability fix to allow Harmoni to run under PHP 5.1, which lacks full support of __toString() (2009-01-26 - Adam Franco)
Version 1.9.0
2009-01-23
This release includes a number of fixes to allow Harmoni to run under PHP 5.1.
-
Bug Fix: Fixes to allow Harmoni to run under PHP 5.1, which lacks full support of __toString(), the DateTime class, and the HTTP_Only parameter for session_set_cookie_params(). (2009-01-23 - Adam Franco)
-
Bug Fix: MIME: added support for the flash video mime type, video/x-flv. (2009-01-13 - Adam Franco)
Version 1.8.6
2009-01-12
This release fixes a character-encoding issue in the String's makeUTF8() method.
-
Bug Fix: Primitives: Fixed UTF-8 conversion to not garble some instances of Russian Text. (2009-01-12 - Adam Franco)
(reported by Kevin Moss of Middlebury College)
Version 1.8.5
2009-01-09
This release fixes a number of minor bugs and issues that were found during Segue and MiddMedia development. See the change-log for details.
-
Bug Fix: Chronology: TimeStamp->asDateAndTime() now returns a real DateAndTime object. (2008-10-24 - Adam Franco)
-
Bug Fix: Filing: FileSystemFile now returns a DateAndTime instead of a TimeStamp as per its doc. (2008-10-24 - Adam Franco)
-
Bug Fix: MIME: Now recognizes mp4 and m4v files. (2008-10-24 - Adam Franco)
-
Change: AuthN: Pulled token validation into its own method so that tokens can be validated independently of prompting. (2008-10-24 - Adam Franco)
-
New feature: AgentManagement: LDAP groups now support reading properties dynamically. (2008-11-19 - Adam Franco)
-
Change: Primitives: ByteSize primitive now supports suffixes like 'M' as well as 'MB'. (2008-11-19 - Adam Franco)
-
New feature: Primitives: DateAndTime now supports conversion to PHP's new built-in DateTime object as well as formatting strings using the PHP date() format strings. (2008-11-21 - Adam Franco)
-
Bug Fix: ErrorHandler: Now doesn't raise notices on empty backtrace arrays. (2008-12-02 - Adam Franco)
-
Bug Fix: CLI: Improvements to command-line request handling and error printing. (2008-12-02 - Adam Franco)
-
Bug Fix: Primitives: String->makeUtf8() now converts all ASCII control characters to empty strings. (2008-12-04 - Adam Franco)
-
New feature:
#2189950 Request: New methods for parsing URLs created with alternate bases. (2009-01-09 - Adam Franco)
(reported by Alex Chapin of Middlebury College)
Version 1.8.4
2008-10-22
This release fixes an omission in the Authorization cache that was preventing HTTP authentication from working without cookies.
-
Bug Fix:
#2187465 AuthZ2: Now properly clearing user-specific information after authentication. (2008-10-22 - Adam Franco)
Version 1.8.3
2008-10-15
This release fixes an error in the Chronology library in which DateAndTime objects were off by a day when created with a year and no day parameter.
-
Bug Fix:
#2112633 Primitives: Chronology's DateAndTime is now not off by a day when created with a year and no day. (2008-10-15 - Adam Franco)
(reported by Bryan Carson of Middlebury College)
Version 1.8.2
2008-10-13
This release fixes a few small issues. See the change-log for details.
-
Change: AuthN: Now only logging login success so that usage of multiple authentication methods doesn't fill the logs with failures when each method is tried. (2008-10-06 - Adam Franco)
-
Change: Errors: IP addresses are now included in error logs for anonymous users to aid in tracing anonymous intrusion attempts. (2008-10-06 - Adam Franco)
-
New feature: Primitives: New string parser to handle multiple date formats with times that include time-zone information. (2008-10-13 - Adam Franco)
Version 1.8.1
2008-10-03
This release fixes a few small issues. See the change-log for details.
-
Bug Fix: Fixed typo in classname, 'DuplucateKeyDatabaseException' is now 'DuplicateKeyDatabaseException'. (2008-09-30 - Adam Franco)
-
New feature:
#1939677 Request Context: Added new method for accessing current context data.
This provides access to the parameters currently passed-through so that they may be passed on to javascript functions. (2008-09-30 - Adam Franco)
Version 1.8.0
2008-09-24
This release adds support for IP-range-based group membership, user-preference storage, and caching of group membership information.
New database tables must be installed for user-preferences.
-
New feature:
#2102311 Agent: Now supports IP-range-based group membership. (2008-09-24 - Adam Franco)
(reported by Bryan Carson of Middlebury College)
-
New feature:
#2112775 UserData: New UserData system for storing persistent and per-session user preferences. (2008-09-22 - Adam Franco)
-
Change: AuthZ2: IsAuthorizedCache now saves the current user's group ids for the session to avoid unneeded groups membership searching. This doesn't change execution time too much, but does cut out between 17 and 18 queries or statement executions per execution cycle. (2008-09-24 - Adam Franco)
Version 1.7.0
2008-08-27
This release adds the ability to pass session information in the URLs to select actions, enabling access to some actions by Flash and other clients that do not reliably support cookies for all access.
-
New feature:
#1820865 Harmoni now allows configuration of actions that allow the SESSION ID in URLs.
If we are using an SID for an action configured to allow it in the url, the Set-Cookie header is overwritten with a bogus one to prevent session fixation. (2008-08-26 - Adam Franco)
Version 1.6.2
2008-08-25
This release makes a few improvements to the Request system. See the change log for details.
-
Bug Fix:
#2068136 Request: PathInfo URLs now do not include empty values as these will break the order of arguments on the receiver side since PHP converts double-slashes (//) to a single slash (/) in the PATH_INFO variable. (2008-08-22 - Adam Franco)
-
Change: Request: UrlWriters now support moveValueToBeginning() method to re-order how parameters appear in the URLs. (2008-08-22 - Adam Franco)
-
Bug Fix: Request: RequestContext->mkURLWithBase() now supports addition of request-tokens. (2008-08-22 - Adam Franco)
Version 1.6.1
2008-08-14
Fixed a thumbnail generation bug.
-
Bug Fix: ImageProcessor: Now uses the ImageMagick 'identify' command to determine if an image has one or more frames (such as a multi-page PDF). Only multi-framed images will have the first-frame identifier '[0]' used when generating thumbnails. (2008-08-14 - Adam Franco)
Version 1.6.0
2008-08-14
This release fixes a number of security issues.
Security issues fixed:
* Cross-Site Request Forgeries (CSRF) are now eliminated from data-modification actions. Read about CSRF at: http://shiflett.org/articles/cross-site-request-forgeries
* Harmoni can now be configured to use secure/http-only cookies.
* Admin actions are now restricted to prevent listing of users and ids in the system.
-
New feature:
#2040513 Security/Actions: Actions that involve data modification can now be configured to require per-usertokens in the request to prevent Cross-Site Request Forgeries.
Actions can be added to the list by using $harmoni->ActionHandler->addRequestTokenRequiredActions().
Once a module/action pair is added to the list, all URLs written to it will include the per-user token and that token will be checked before the action is allowed to execute. (2008-08-14 - Adam Franco)
(reported by Josh Abraham of Rapid7, LLC.)
-
Bug Fix:
#2040501 Security: Harmoni now supports setting the session.cookie_secure and session.cookie_httponly parameters in the harmoni config. (2008-08-14 - Adam Franco)
(reported by Josh Abraham of Rapid7, LLC.)
Version 1.5.0
2008-08-13
This release makes several improvements to the Authorization, Repository, and Request systems to support Segue 2. See the change log for details.
-
New feature:
#1820937 Request: RequestContext now has a new mkUrlWithBase() method that allows the specification of a base-url to be used instead of the MYURL constant. (2008-08-07 - Adam Franco)
-
Change: Repository: HarmoniRepository's getAssetsByType() method now first loads nodes by type to prevent lookups on all nodes. Cuts Segue 'All Visible' portal page loading from 65 seconds to 10 seconds. (2008-08-11 - Adam Franco)
-
Bug Fix:
#2048119 AuthZ2: Session-caching of authorizations now works again. (2008-08-12 - Adam Franco)
(reported by Gabe Schine)
-
Change: AuthZ2: Authorization cache now expires after 10 minutes to prevent users with very old sessions from retaining abilities due to cached authorizations. (2008-08-12 - Adam Franco)
Version 1.4.7
2008-08-07
This release fixes an authorization issue as well as enhances security by preventing Javascript from being written to the logs. See the change log for details.
-
Bug Fix: AuthZ2: A typo in the view authorization id was preventing cascading-up implicit view authorizations from ever being written. (2008-08-07 - Adam Franco)
(reported by Peter Wilkins of MIT)
-
Bug Fix:
#2040255 Logging: Log messages are now filtered to prevent Javascript insertion. (2008-08-05 - Adam Franco)
(reported by Josh Abraham of Rapid7, LLC.)
-
Change: ErrorHandler: New NoMoreIteratorElementsException available.
UnimplementedException now includes class and method name of the unimplemented method. (2008-08-04 - Adam Franco)
Version 1.4.6
2008-08-01
This release fixes a number of issues that were affecting Segue 2.
Most important is a fix to the image-processor to correctly support generation of thumbnails from multi-page PDF files.
-
Bug Fix:
#2031483 ImageProcessor: Thumbnail generation from multi-page PDFs now only extracts the first page enabling valid thumbnails to be generated and preventing extra processing of other pages that was being overwhelmed by very large PDFs. (2008-07-29 - Adam Franco)
(reported by Tom Coppeto of OnTapSolutions/O.K.I.)
-
Bug Fix:
#2034986 Sets: Fixed up SQL keys to allow sets to contain an item several times at different positions as is allowed in the interface. (2008-08-01 - Adam Franco)
-
Bug Fix: AuthZ2: Fixed up Hierarchy Exceptions to use valid Exception classes. (2008-07-25 - Adam Franco)
Version 1.4.5
2008-07-24
This release fixes a few minor issues that were causing problems with Segue.
-
Bug Fix:
#2021574 Request: PathInfoRequest handler now replaces encoded question marks "%3F" with a "_quest_" placeholder to get around an issue with Apache's mod_rewrite accidentally decoding encoded question marks in some situations. (2008-07-23 - Adam Franco)
-
Bug Fix: GUI2: Now forces the empty namespace for the theme id parameter to prevent the CSS from breaking when namespaces are not closed. (2008-07-22 - Adam Franco)
Version 1.4.4
2008-07-21
This release fixes an issue with Authorization settings for members of groups the ids of which contain quotes.
-
Bug Fix:
#2023672 AuthZ/PDO: Adding temporary work-around for bug 2023672/ PHP bug 41125
A PHP/PDO bug is resulting in problems when escaped quotes exist in an SQL string that is then prepared. This is occurring for users who are members of groups that have a quote in their LDAP DN.
This is the second time this bug has bitten us, this time in the AuthZ2 AuthorizationCache. The first workaround was added to fix Harmoni bug 1970447.
See: https://sourceforge.net/tracker/index.php?func=detail&aid=1970447&group_id=82171&atid=565234 See: http://slug.middlebury.edu/~afranco/PHP_PDO_segfault/ See: http://bugs.php.net/bug.php?id=41125 (2008-07-21 - Adam Franco)
(reported by Hector Vila of Middlebury College)
Version 1.4.3
2008-07-17
This release fixes several issues with Themes and Logging.
-
Bug Fix:
#2018232 GUI2: Output handler now sends theme options in the theme CSS URL. (2008-07-17 - Adam Franco)
-
Bug Fix:
#2009090 Logging: Now returns an empty string if there is no backtrace. (2008-07-17 - Adam Franco)
Version 1.4.2
2008-07-11
This release includes a minor improvement to support Segue.
-
Change: AuthZ2: More use of prepared statements in Authorization fetching methods to speed up Segue's 'roles' UI. (2008-07-11 - Adam Franco)
Version 1.4.1
2008-07-10
This release adds some minor improvements to support Segue.
-
New feature: GUI2: GUIManager now can be configured to link to theme styles at a URL. (2008-06-18 - Adam Franco)
-
Change: DatabaseManager: New NoSuchTableDatabaseException to classify missing table errors. Currently only supported by MySQL. (2008-07-08 - Adam Franco)
-
Bug Fix: Agent: The Users group now includes all groups except itself and Everyone and all agents except Anonymous. This enables the Users group to be a stand-in for any user who has been authenticated. (2008-07-10 - Adam Franco)
Version 1.4.0
2008-06-16
This release includes two improvements:
* The ActionHandler now supports the specification of default parameters to be used when the default module and action are used.
* New methods for converting strings to UTF-8 and converting 'smart-quotes'. Usage of this new String->makeUtf8() method requires PHP to be compiled with the --enable-mbstring option.
-
New feature:
#1995141 ActionHandler/HarmoniConfig: Can now specify default parameters along with the default module and action. (2008-06-16 - Adam Franco)
-
New feature:
#1993889 Primitives: String and HtmlString now include a new method for converting non-UTF-8 characters to UTF-8: makeUtf8 (2008-06-16 - Adam Franco)
Version 1.3.5
2008-06-13
Harmoni versions 1.2.0 through 1.3.4 included a bug in AuthZ2 in which implicit authorizations were not created when new nodes were created with Hierarchy->createNode(). This release fixes that issue.
For other improvements please see the change-log.
-
Bug Fix:
#1991183 AuthZ2: Fixed AuthZ2 issue where implicit AZs were not being created for new nodes.
This had the effect of causing Admins to not be authorized to view new Segue sites. Implicit AZs were created OK in other situations because nodes were attached to parents via the addParent() method which triggered implicit AZ insertion. (2008-06-12 - Adam Franco)
-
Change: Request: Specifying null for a URL value will now remove the key rather than setting the value to an empty string. (2008-06-10 - Adam Franco)
-
New feature: Logging: Can now return a list of existing categories. (2008-06-10 - Adam Franco)
-
Change: AuthNMethods: Visitor registration system now logs registration and email confirmation steps. (2008-06-10 - Adam Franco)
-
Change: AuthNMethods: Visitor registration email now informs the user that their username is their email address. (2008-06-10 - Adam Franco)
-
Bug Fix: StatusStars: Now keeps the output buffers in the correct order. (2008-06-13 - Adam Franco)
Version 1.3.4
2008-06-09
This release adds support for a visitor registration authentication method.
-
New feature:
#1820894 AuthNMethods: New Visitor Authentication method that allows for visitor registration. (2008-06-05 - Adam Franco)
Version 1.3.3
2008-06-03
This release fixes a few issues that were affecting Concerto, most notably, several issues with safe-mode restrictions when creating or extracting tar archives.
Harmoni now includes a custom version of the Archive/Tar PEAR library with a fix for bug #14058 that prevents proper extraction of archives with Safe Mode on.
-
Bug Fix: AuthZ: Fix to old authorization implementation that was causing function types to get messed up on installation of Concerto. (2008-06-02 - Adam Franco)
-
Change:
#1912944 Archiving: Harmoni now includes a custom version of Archive/Tar with a fix for bug #14058 that was preventing decompression of tar files that have a directory hierarchy when in PHP 5.2+ with Safe Mode on.
http://pear.php.net/bugs/bug.php?id=14058 (2008-06-03 - Adam Franco)
-
Change: Repository: Repository::getAssetsBySearch() now recognizes a null-type properties object. (2008-06-03 - Adam Franco)
Version 1.3.2
2008-05-23
This release fixes a few errors affected a few users, notably a work-around for a PHP/PDO bug that results in segmentation faults when escaped quotes exist in an SQLstring that is then prepared. This is occurring when checking authorization for users who are members of groups that have a quote in their LDAP DN.
-
Bug Fix:
#1970447 PDO: Adding temporary work-around for bug 1970447/ PHP bug 41125
A PHP/PDO bug is resulting in problems when escaped quotes exist in an SQL string that is then prepared. This is occurring for users who are members of groups that have a quote in their LDAP DN.
See: https://sourceforge.net/tracker/index.php?func=detail&aid=1970447&group_id=82171&atid=565234 See: http://slug.middlebury.edu/~afranco/PHP_PDO_segfault/ See: http://bugs.php.net/bug.php?id=41125 (2008-05-23 - Adam Franco)
-
Bug Fix: Hierarchy: Fix to the older Hierarchy implementation to prevent errors when not using Harmoni_Db. (2008-05-22 - Adam Franco)
Version 1.3.1
2008-05-22
This release fixes a minor theming issue that was affecting the Polyphony log-browsing actions.
-
Bug Fix: Gui2: Theme URLs now do not get messed up in names-spaced actions like log-browsing. (2008-05-21 - Adam Franco)
Version 1.3.0
2008-05-20
This release adds support for a new Theming system, Gui2. Gui2 simplifies the expectations of themes to allow a wider range of possible implementations and storage techniques.
As well, a number of minor bugs have been fixed.
-
New feature:
#1820834 Gui2: New Gui2 system re-envisions the way themes are defined and accessed. Rather than forcing themes to be concrete classes, a variety of theme sources can be defined that can each determine how their themes are stored and retrieved.
Themes may have options for varying their color scheme or other attributes, but this is an optional level of compliance, not forced. Similarly, themes may optionally support modification. (2008-05-14 - Adam Franco)
-
Change: Gui/Gui2: The EMPHASIZED_BLOCK has be deprecated and a SIDEBAR_BLOCK added to enable better syntactical alignment between usage and theme definition. (2008-05-20 - Adam Franco)
-
New feature: Utilities/Filing: A simple Filing interface has been added to provide an abstraction on 'files'. These are currently used in the new Gui2 system to get and set Thumbnails and theme images. (2008-05-20 - Adam Franco)
-
Change: AuthNMethods: HttpAuth-token collector now can accept a user-function array instead of just a string. (2008-05-13 - Adam Franco)
-
Bug Fix:
#1964729 Request: Multiple calls to startNamespace(null) were not filling the name-space stack with null name-spaces, so when endNamespace() was then called, extra non-null name-spaces were removed from the stack. (2008-05-20 - Adam Franco)
(reported by Jeff Merriman of MIT)
-
Change: Request: Replacing slashes in path-info URLs.
Apache denies requests where the path-info includes %2F, the encoded version of the forward slash, /. This is done to aid the security of CGI scripts, but means that we can't pass encoded slashes in PATH_INFO parameters.
This fix replaces slashes with the string, '_slash_', when writing the path info urls and reverses that replacement on read. (2008-05-13 - Adam Franco)
-
Bug Fix: Primitives: Fixed static/non-static method access in Chronology. (2008-05-13 - Adam Franco)
-
Bug Fix: Primitives: Adding in a pass by reference to fix an Chronology bug.
The _normalize() method needed an array passed by reference to act on. In the PHP 5 migration the reference got deleted by accident, so the normalization wasn't being done. This had the effect of not rolling over days when adding durations that bumped a date and time over the length of a day. (2008-05-14 - Adam Franco)
Version 1.2.0
2008-05-05
This release includes a new implementation of the Authorization and Hierarchy services along side of the original implementations. This new 'AuthZ2' implementation stores hierarchy and authorization data in a set of tables with foreign-key constraints/triggers to manage the removal of authorizations when nodes in the hierarchy are dropped. As well, AuthZ2 stores implicit authorizations as rows in an implicit_azs table to allow simple lookups without the need of traversing the hierarchy at read-time. AuthZ2 enables Segue to run approximately 600% faster, with some operations seeing 2000% decreases in execution time.
Additional improvements in this release include more robust Harmoni_Db support, as well as fixes to Tagging, Language, and Database services.
-
New feature:
#1951075 AuthZ2: New Authorization/Hierarchy package stores implicit authorizations as rows in their own table so that they can be quickly read at the expense of a small increase in writing time and storage space.
Either AuthZ2 or the original Authorization and Hierarchy implementations can be used by Harmoni applications as these implementations are independent of one another. A migration script for moving hierarchy and authorization information out of The original tables and into the AuthZ2 tables can be found at harmoni/core/oki2/AuthZ2/migration.php
Please note that in AuthZ2 the 'edu.middlebury.authorization.view' function has the property of cascading up the hierarchy as well as down. This property is needed by our Segue and Concerto applications and the lack of it in the original implementations required the use of the isAuthorizedBelow() function. All other authorization functions cascade down only. (2008-04-24 - Adam Franco)
-
New feature: AuthorizationManager: Now can be configured to use Harmoni_Db. (2008-04-18 - Adam Franco)
-
Change: Authorization: Cleaned up query syntax to do use addWhereEqual(), addWhereLike(), etc methods rather than manually building WHERE strings. (2008-04-21 - Adam Franco)
-
Bug Fix: Authorization: Now explicit AZs do not create identical duplicate implicit AZs when searching for AZs for any agent. (2008-04-24 - Adam Franco)
-
Change: Authorization: Added AuthorizationManager::getIsAuthorizedCache() method to access the IsAuthorizedCache used by the current AuthorizationManager for queueing of qualifier-ids. This new method and its usage by the Repository and Authentication systems allows swapping of the Authorization-Hierarchy implementation. (2008-04-21 - Adam Franco)
-
Change: Authorization/Hierarchy: Now relying on type-hinting for validation of object parameters rather than using the ArgumentValidator. (2008-04-21 - Adam Franco)
-
Change: Hierarchy: Cleaned up query syntax to do use addWhereEqual(), addWhereLike(), etc methods rather than manually building WHERE strings. (2008-04-21 - Adam Franco)
-
New feature: IdManager: Now can be configured to use Harmoni_Db. (2008-04-18 - Adam Franco)
-
Bug Fix: Harmoni_Db: Insert now ensures that at least one row of values exists. (2008-04-18 - Adam Franco)
-
Bug Fix: Harmoni_Db: Can now set Auto-Increment table/key for retrieving the last insert id from INSERT query executions. (2008-04-24 - Adam Franco)
-
Bug Fix: Harmoni_Db: Backtrace collection now works when preparing queries directly as well as from query-building objects. (2008-04-25 - Adam Franco)
-
Change: Harmoni_Db: It seems that only the MySQL PDO adapter supports buffered queries, so result buffering is now done in PHP in Harmoni_Db rather than in the adapter. Hopefully performance won't take too much of a hit and portability will be preserved. (2008-04-29 - Adam Franco)
-
Bug Fix: Harmoni_Db: New Harmoni_Db query result class for INSERT, UPDATE, and DELETE queries.
Harmoni_Db_SelectResult is now only for SELECT results. Other modes of operation for INSERT, UPDATE, and DELETE queries have been moved to a new class, Harmoni_Db_InUpDeResult. (2008-05-01 - Adam Franco)
-
Bug Fix: DatabaseManager: InsertQueries will now convert numeric parameters to strings rather than throwing InvalidArgumentExceptions. (2008-04-18 - Adam Franco)
-
Change: DatabaseManager: Now sends null instead of NULL for auto-increment columns for better compatibility. (2008-04-25 - Adam Franco)
-
Bug Fix: DatabaseManager: Fix to transaction exception class name. (2008-04-28 - Adam Franco)
-
New feature: ErrorHandler: Exceptions can now define a getHtmlMessage() method and have this HTML-formatted message printed without entity conversion. (2008-04-18 - Adam Franco)
-
Change: Harmoni_DOMDocument: Now defines getHtmlMessage() in its ValidationException to print more legible messages. (2008-04-18 - Adam Franco)
-
New feature:
#1940489 Tagging: Can now access information about individual applications of a tag via TagManager::getTagInfoForItem(). (2008-04-18 - Adam Franco)
-
Change:
#1940489 Tagging: Can now specify a time-stamp when setting a tag for a particular agent. (2008-04-18 - Adam Franco)
-
Bug Fix: Language: Since putenv() is restricted in safe-mode, errors are now suppressed when calling it with safe-mode on as it is not needed in many systems. (2008-05-01 - Adam Franco)
Version 1.1.0
2008-04-11
This release adds a new database access and SQL query system, Harmoni_Db. Harmoni_Db is an extension of Zend_Db and adds Harmoni query-building syntax to the Zend_Db system. Through Harmoni_Db, prepared SQL statements are now supported and can be configured for use in the Hierarchy and AgentManagement services for increased performance.
See the change log for additional fixes and improvements.
-
New feature:
#1814119 Harmoni_Db: New Zend_Db and PDO-based database abstraction and query writing system.
See the following page for more information: http://harmoni.sourceforge.net/wiki/index.php/Harmoni_Db (2008-04-03 - Adam Franco)
-
New feature:
#1814119 Harmoni_Db: Required Zend_Db sources are now included with Harmoni. No extra installation is needed. (2008-04-03 - Adam Franco)
-
Change: DatabaseManager: Can now trace query-calling functions. (2008-04-04 - Adam Franco)
-
New feature:
#1814119 Hierarchy: Can now optionally use Harmoni_Db for some common queries. (2008-04-08 - Adam Franco)
-
Change: Hierarchy: Now only catches UnknownIdExceptions to allow database exceptions to bubble up. (2008-04-08 - Adam Franco)
-
New feature:
#1814119 AgentManagement: Can now optionally use Harmoni_Db for some common queries. (2008-04-08 - Adam Franco)
-
Bug Fix:
#1934661 AgentManagement: LDAP search cache now is per baseDN. (2008-04-04 - Alex Chapin, Adam Franco)
-
Change: Debug: added var_dump_pre() function for doing a var_dump() with pre-format tags. (2008-04-08 - Adam Franco)
-
Bug Fix: ErrorHandler: now prints the full file path in the backtrace file title. (2008-04-03 - Adam Franco)
-
Bug Fix:
#1938748 ErrorHandler: Now filters request values whose names contain 'password' and other configurable request values out of logs, inserting a placeholder. (2008-04-09 - Adam Franco)
-
New feature: Request: Can now set or override a request parameter through a new setRequestParam() method. (2008-04-10 - Adam Franco)
Version 1.0.6
2008-04-02
In addition to a few bug fixes elsewhere, this release improves the LanguageLocalizer to support all ISO 639-3 language codes and adds native translation of language names from Wikipedia.org.
-
Change: Request: Can now pass additional variables to mkURLWithPassthrough(). (2008-04-02 - Adam Franco)
-
Change:
#1897447 AgentManagement: LDAP connector now caches returned info in the session to dramaticallyimprove speed of repeated data access. (about 3x) (2008-04-02 - Adam Franco)
-
Change:
#1931215 Hierarchy: HierarchyCache now throws classed exceptions rather than generic ones. (2008-04-02 - Adam Franco)
-
Change:
#1930276 Language: Now supports three-letter language codes such as 'ave_VE'. Also supports secondary three-letter codes such as 'cym', 'wel', and 'cy' for 'Welsh'. (2008-04-02 - Adam Franco)
(reported by José Alfonso Accino of University of Málaga)
-
Change: Language: Country names are now nicely mixed-case rather than all upper. (2008-04-02 - Adam Franco)
-
Change:
#1930280 Language: Now does a
putenv('LANG='.$this->_lang);
in addition to
setlocale(LC_ALL, $this->_lang); (2008-04-02 - Adam Franco)
(reported by José Alfonso Accino of University of Málaga)
-
New feature:
#1930291 Language: New methods LanguageLocalizer::getCurrentLanguageCode() and LanguageLocalizer::getCurrentCountryCode() to provide access to the simple versions of the current codes. (2008-04-02 - Adam Franco)
(reported by José Alfonso Accino of University of Málaga)
-
Change: Language: Added new ISO 639-3 language list. Added language-name translation table from Wikipedia.org. Can now return language names in native form or in specified translation order. (2008-04-02 - Adam Franco)
Version 1.0.5
2008-03-25
This release includes some improvements to enable more flexibility in the Request system as well as fixes a few minor issues.
-
New feature: Request: Can now override the specified module and action. This is useful to allow entry points to force usage of a particular action. (2008-03-20 - Adam Franco)
-
New feature: Request: Can now retrieve parameters from a url string. (2008-03-20 - Adam Franco)
-
New feature: Request: Can now retrieve name-spaced parameters from a url string. (2008-03-20 - Adam Franco)
-
Bug Fix: ErrorHandler: Now escapes entities in back-traces. (2008-03-20 - Adam Franco)
-
Bug Fix: Architecture: Now throws an UnknownActionException if no module is specified. (2008-03-20 - Adam Franco)
-
Bug Fix: Agent: AgentManager now throws an UnknownIdException instead of a generic one when an agent doesn't exist with the id specified. (2008-03-17 - Adam Franco)
Version 1.0.4
2008-03-12
This release updates the default case of column names in several minor database tables.
-
Change: GUI: Table columns are now all lowercase. (2008-03-11 - Adam Franco)
Version 1.0.3
2008-03-10
This release fixes a few bugs.
-
Bug Fix:
#1908762 Request: PathInfo Request variables are now encoded with rawurlencode() instead of urlenced() to encode spaces with '%20' instead of '+'. This prevents some decoding issues when values contain spaces. (2008-03-06 - Adam Franco)
(reported by Bryan Carson of Middlebury College)
-
Change:
#1907111 ArgumentValidator: Now throws an InvalidArgumentException on validation fail to allow for easier catching of this type of error. (2008-03-06 - Adam Franco)
-
Change:
#1907239 Logging: Logging Items must now implement a new AgentNodeEntryItemInterface. (2008-03-06 - Adam Franco)
-
Bug Fix: Logging: HarmoniWritableLog now correctly implements the WritableLog interface. (2008-03-06 - Adam Franco)
-
Bug Fix: SimpleTableRepository: Internal IdManager now implements IdManager. (2008-03-06 - Adam Franco)
-
Bug Fix:
#1824819 SimpleTableRepository: Now converts search criteria to the proper character set. (2008-03-06 - Adam Franco)
Version 1.0.2
2008-03-03
This release fixes a few minor bugs.
-
Bug Fix: Primitives: Fixed a Date method definition to define it as static. (2008-02-29 - Adam Franco)
-
Bug Fix: GUI: Fixed error in Blank component constructor. (2008-02-28 - Adam Franco)
-
Bug Fix:
#1899163 Request: Path-info handler now doesn't raise a notice when no action is passed. (2008-02-26 - Adam Franco)
-
Change: AuthN: Removed legacy class HarmoniAuthenticationType. (2008-02-26 - Adam Franco)
(reported by José Alfonso Accino of University of Málaga)
Version 1.0.1
2008-02-21
This release fixes an issue in which Cookie values were being appended to some URLs. Also fixes a few other typos and bugs.
-
Bug Fix:
#1896959 Request: Cookie values are now stripped out of URLs made with mkURLWithPassthrough(). (2008-02-19 - Adam Franco)
-
Bug Fix: AuthZ: Fixed issue in default Type constructors. (2008-02-19 - Adam Franco)
-
Change: DatabaseManager: The DuplicateKeyDatabaseException now extends the QueryDatabaseException as it occurs due to problems with a query. (2008-02-21 - Adam Franco)
Version 1.0.0
2008-02-15
This release includes a newly generated set of the O.K.I. OSIDs as PHP5 interfaces instead of concrete classes. As well, a number of bug have been fixed and the reliability of PATH_INFO-based urls has been improved.
-
*** IMPORTANT ***Change: The O.K.I. OSID interfaces have all been converted from classes with die() statements to actual PHP 5 interfaces. (2008-02-06 - Adam Franco)
-
Change: OSIDs: The O.K.I. OSID interfaces have all been converted from classes with die() statements to actual PHP 5 interfaces.
Class typing has been added to all OSID method declarations.
Class-constants which were bound as static methods to support PHP 4 are now actual class constants.
OsidExceptions now extend the base 'Exception' class.
The DataManager's 'Record' class has been renamed 'DMRecord' so that it will not conflict with the OSID 'Record'. (2008-02-06 - Adam Franco)
-
Bug Fix: Primitives: HtmlString can now take additional protocols to pass unchanged through the cleanXSS() method. (2008-02-14 - Adam Franco)
-
Change: Moved Type::fromString(Type $type) to HarmoniType class. (2008-02-07 - Adam Franco)
-
New feature: Agent: New search method for searching based on agent properties. (2008-01-31 - Adam Franco)
-
Bug Fix: Request: PathInfo and GET url writers now support arrays of parameters (such as from a multi-select). (2008-01-28 - Adam Franco)
-
New feature: Repository: Assets can now have their Creator and Creation/Modification dates force-set, enabling retention of these properties when importing from backup. (2008-01-25 - Adam Franco)
-
New feature: RequestContext: Now provides help methods to interpret URLs written by the system. (2008-01-25 - Adam Franco)
-
Change:
#1891413 Repository: When updating to null values in the FILE record, data rows are now deleted directly rather than updated to null values. (2008-01-24 - Adam Franco)
-
New feature:
#1815898 New Harmoni_DOMDocument that adds on a few helper methods and work-arounds to the default PHP5 DOM implementation. (2008-01-23 - Adam Franco)
-
Bug Fix: Agent now requires needed HtmlString class. (2008-01-23 - Adam Franco)
-
Bug Fix:
#1854967 ImageProcessor: Multi-page PDF files seem to not give an exit code when thumbnail generation fails. Thumbnail existence is now manually checked with file_exists() to prevent errors from coming through. (2008-02-15 - Adam Franco)
-
Change:
#1871570 RequestContext: Can now get the module and action listed in a url. (2008-02-15 - Adam Franco)
Version 0.13.8
2008-01-15
A minor fix to Group searching.
-
Bug Fix:
#1872249 Agent: Token search now ensures uniqueness of Ids. (2008-01-15 - Adam Franco)
Version 0.13.7
2008-01-14
This release fixes a few minor issues.
-
Change: ErrorHandler: Now prints the error and/or exception code. (2008-01-04 - Adam Franco)
-
Change: Database: MySQL database now throws a DuplicateKeyException on error code 1062. (2008-01-04 - Adam Franco)
Version 0.13.6
2007-12-20
This release fixes a few minor bugs.
-
Change:
#1854956 GUI: Can now pass in components to use as non-blank placeholders in case the placeholder never gets replaced. (2007-12-20 - Adam Franco)
-
Bug Fix: GUI: Moving table-width definitions to style tags to aid validation. (2007-12-17 - Adam Franco)
-
Bug Fix: GUI: Removing empty width attributes from table data. (2007-12-17 - Adam Franco)
-
Bug Fix: GUI: Removing 'px' from the values of cellpadding and cellspacing attributes. (2007-12-17 - Adam Franco)
-
Bug Fix: AuthN: Fixed error in isUserAuthenticatedWithAnyType(). (2007-12-14 - Adam Franco)
Version 0.13.5
2007-12-12
This release adds a few minor fixes and a few minor cleanup changes. It also includes the addition of HTML cleaning support, available through the HtmlString 'primitive' class. This support can be used by client applications to strip HTML markup of tags and attributes that might result in XSS attacks.
-
Change:
#1845759 Agents: Agent display names are now stripped of XSS-vulnerable-markup. (2007-12-07 - Adam Franco)
-
New feature:
#1845757 Primitives: HtmlString now allows cleaning of potential cross-site-scripting (XSS) markup from html.
Cleaning is done using the safehtml libraryby Roman Ivanov (http://pixel-apes.com/safehtml/?page=safehtml).
Use the HtmlString::getSafeHtml($aString) method to clean HTML strings or use the cleanXSS() instance method of HtmlString. (2007-12-06 - Adam Franco)
-
Change: Shared: A new interface, Harmoni_Iterator, defines the additional methods beyond those in OSID v2 that Harmoni's iterators provide and use. (2007-12-06 - Adam Franco)
-
Change: Request: Can now get the module and action from a UrlWriter. (2007-12-03 - Adam Franco)
-
Bug Fix: Hierarchy: Now more reliably throws an UnknownIdException when no node is found. (2007-12-03 - Adam Franco)
-
Bug Fix:
#1841763 Agent: Fixed an error in the display name update implementation. (2007-11-30 - Adam Franco)
Version 0.13.4
2007-11-13
This release fixes a few minor issues with the Error Handler.
-
Bug Fix:
#1829095 ErrorHandler: Categories and priority types are now separate logging fields.
Uncaught Exceptions all have priority 'Uncaught Exception' and a category which is their type or class-name as applicable.
Errors use their type as their priority and have no category. (2007-11-12 - Adam Franco)
-
Bug Fix:
#1827143 ErrorHandler: Backtrace arguments are now escaped to prevent invalid characters from killing log-browsing HTML or causing XSS injections. (2007-11-12 - Adam Franco)
Version 0.13.3
2007-11-09
This release fixes a few minor bugs and adds the ability to attach externally-defined groups (such as from LDAP) underneath locally defined groups.
Changes to the Agent tables require running a database updater script: harmoni/core/DBHandler/db_updater.php
-
Bug Fix: Authorization: The HarmoniAuthorizationManager now accepts null arguments to getExplicitAZs() as per the OSID. (2007-11-05 - Adam Franco)
-
Bug Fix:
#1824880 Agent: The OSID Agent implementation now supports the addition of externally defined groups (such as from LDAP) as subgroups under locally defined groups. This allows for locally defined amalgamations of externally defined groups into one entity.
This relationship is stored outside of the hierarchy in a new database table and requires a database update. (2007-11-07 - Adam Franco)
-
*** IMPORTANT ***Change: Changes to the Agent tables require running a database updater script: harmoni/core/DBHandler/db_updater.php (2007-11-07 - Adam Franco)
-
Change: Shared: The MultiIteratorIterator now throws an exception if arguments are inadvertently passed to the constructor. (2007-11-07 - Adam Franco)
-
Bug Fix: ErrorHandler: Now checks for trace elements to be set to prevent notices. (2007-11-07 - Adam Franco)
-
Bug Fix:
#1828488 Repository: Asset create-date now properly set. (2007-11-08 - Adam Franco)
Version 0.13.2
2007-11-01
This release fixes a few minor bugs and improves support for using the Harmoni Architecture via a command line interface.
-
Change: ErrorHandler: Now allows specifying of which log to write to. (2007-10-25 - Adam Franco)
-
Bug Fix: Logging: Fixed error that occurred when browsing to more than 50 log entries. (2007-10-25 - Adam Franco)
-
New feature: Repository: The SimpleTableRepository now will convert character encodings to UTF-8 if a non-UTF-8 encoding is specified in the configuration. (2007-10-30 - Adam Franco)
-
Bug Fix: Chronology: Fixing E_STRICT-level runtime notices. (2007-10-30 - Adam Franco)
-
Bug Fix: ErrorHandler: Now checks for the existence of various $_SERVER properties as they won't be available when running in CLI. (2007-11-01 - Adam Franco)
-
Change: Architecture: Harmoni::execute() can now be called multiple times with different actions. (2007-11-01 - Adam Franco)
-
New feature: Architecture/CLI: New request handling support for command line scripts.
A CommandLineRequestHandler will read parameters of the form --name='value' into the RequestContext for usage by Harmoni and actions, allowing the action system and RequestContext system to be fully utilized by command-line scripts.
A CommandLineOutputHandler simply passes returned and printed text to stdout, ignore the HTTP specific header() calls and HTML formatting. (2007-11-01 - Adam Franco)
-
Change: ActionHandler: Now throws an UnknownActionException when the specified action is not found, allowing for special-case handling of this common Exception. (2007-11-01 - Adam Franco)
Version 0.13.1
2007-10-22
This release fixes a few issues that were missed in the last point release.
-
Bug Fix: ErrorHandler: Now doesn't halt if exceptions are thrown during error logging. (2007-10-22 - Adam Franco)
-
Bug Fix: GUI: Font validator rules now properly fit the parent classes interface. (2007-10-22 - Adam Franco)
Version 0.13.0
2007-10-22
New in this release include the addition of alternate repository implementations for reading from simple database tables and federating together several different repository implementations.
Also, Be sure to point the database updater script (harmoni/core/DBHandler/db_updater.php) at your harmoni databases to add new columns that changed in harmoni-0.11.0 and harmoni-0.12.0.
Changes to the Logging tables require running a database updater script: harmoni/core/DBHandler/db_updater.php
-
New feature: A new repository implementation, SimpleTableRepository, exposes simple database table rows as Assets. (2007-10-05 - Adam Franco)
-
Bug Fix: A new RepositoryManager implementation, FederationRepositoryManager, allows the usage of multiple Repository implementations. (2007-10-05 - Adam Franco)
-
Change: Many implementations are now throwing OsidExceptions such as the UnimplementedException, UnknownIdException, etcetera, to allow these to be caught separately from generic errors. (2007-10-05 - Adam Franco)
-
Change: AuthZ: The Authorization caching system now searches for and verifies the existence of qualifier Ids passed to it. It caches a list of unknown ids and throws an UnknownId Exception when asked about that qualifier. This change prevents the AuthorizationCache from continually rechecking authorizations for qualifiers it will never match, such as those in non-HarmoniRepository Repository implementations. (2007-10-05 - Adam Franco)
-
Bug Fix: AuthN/LDAP: Previously, when users where members of objects that were not under the baseDN, searching for parent groups fell into an infinite loop. (2007-10-05 - Adam Franco)
-
Bug Fix: SQL: Adding a harmoni-0.11.0 database updater that will add the 'creator' field to the dr_asset_info table. (2007-10-08 - Adam Franco)
-
New feature: Custom error_handling function. (2007-10-09 - Adam Franco)
-
Change:
#1810364 The HarmoniRepositoryManager object is now passed to the objects it creates rather than being accessed globally from within its implementation preventing conflicts when multiple RepositoryManager implementations exist. (2007-10-09 - Adam Franco)
-
Bug Fix: Fixing a number of E_STRICT notices and improving the class and interface hierarchies. (2007-10-10 - Adam Franco)
-
New feature: Improved Error and Exception handling class, HarmoniErrorHandler. Adds unified Error and Exception printing and logging. (2007-10-10 - Adam Franco)
-
New feature: DatabaseManager: Can now add LIKE clauses to query objects. (2007-10-11 - Adam Franco)
-
New feature: DatabaseManager: Can now add sub-queries to the FROM clause via a new addDerivedTable($subQuery, $joinType, $joinCondition, $alias) method. (2007-10-11 - Adam Franco)
-
Bug Fix: Logging: Log-browsing has been dramatically speeded up by re-factoring its queries and indexes. (2007-10-11 - Adam Franco)
-
*** IMPORTANT ***Change: Changes to the Logging tables require running a database updater script: harmoni/core/DBHandler/db_updater.php (2007-10-11 - Adam Franco)
-
Bug Fix: Repository: fixing delete repository syntax to work with PostgreSQL. (2007-10-11 - Adam Franco)
-
New feature: RequestContext: Now can set the null (no namespace) namespace. (2007-10-12 - Adam Franco)
-
Bug Fix: Authorization: Fixed invalid static calls to instance methods. (2007-10-12 - Adam Franco)
-
New feature: ErrorHander: Exceptions and Errors are now printed in a plain text mode when scripts are called from the command line environment. (2007-10-12 - Adam Franco)
-
Change: Removing unneeded $harmoni parameters from Action Source methods. (2007-10-17 - Adam Franco)
-
Bug Fix: Authorization: Fixed type description searching. Only Domain, Authority, and Keyword define the type. (2007-10-22 - Adam Franco)
Version 0.12.3
2007-09-25
-
Change: ImageProcessor: Now throws exceptions when ImageMagic fails. (2007-09-25 - Adam Franco)
-
New feature: GUI: New 'UnstyledMenuItem' element. (2007-09-25 - Adam Franco)
-
Change: GUI: MenuLinks with Additional HTML now put that additional HTML in the themed part of the element. (2007-09-21 - Adam Franco)
-
Bug Fix: Hierarchy: Catching 'not found' Exceptions added in 0.12.2 in cases where no results should exist. (2007-09-21 - Adam Franco)
Version 0.12.2
2007-09-20
-
Change: Removed the legacy StorageHandler. If this functionality is needed in the future, the Filing OSID is more appropriate. (2007-09-19 - Adam Franco)
-
Bug Fix: Updated PhpDoc comments to generate properly. (2007-09-19 - Adam Franco)
-
Bug Fix: Agent: Fixed column type-mismatch in Agent table definition. (2007-09-17 - Adam Franco)
-
Bug Fix: DBHandler: SQLUtils::runSQLdir() now explicitly sorts SQL files and runs them in alphabetical order. (2007-09-17 - Adam Franco)
(reported by José Alfonso Accino of University of Málaga)
-
Bug Fix: Repository: Fixing PHP notices. (2007-09-14 - Adam Franco)
-
Change: Hierarchy: Adding some error-checking and Exceptions on errors. (2007-09-14 - Adam Franco)
Version 0.12.1
2007-09-14
-
Bug Fix: Updating the MySQL Hierarchy and Scheduling table definitions to work with fixes in harmoni-0.12.0. (2007-09-14 - Adam Franco)
Version 0.12.0
2007-09-13
-
*** IMPORTANT ***Change: In order to support PostgreSQL without re-factoring of the Database Handler, column names have been all made lowercase. To update a currently populated harmoni database to the new names, run the following updater script: harmoni/core/DBHandler/db_updater.php (2007-09-11 - Adam Franco)
-
*** IMPORTANT ***Change: Hierarchy: The node relation and ancestry tables, j_node_node and node_ancestry were both missing a reference to the hierarchy for which the node id was valid. This could cause conflicts if node ids are repeated in separate hierarchies. Existing Harmoni databases will need to have these columns added and the data updated. (2007-09-13 - Adam Franco)
-
*** IMPORTANT ***Change: Scheduling: Two sc_item columns "start" and "end" conflict with reserved words in PostgreSQL. Existing Harmoni databases will need to have these columns added and the data updated. (2007-09-13 - Adam Franco)
-
Change: DBHandler: The PostGre classes have all been renamed to PostgreSQL (2007-09-14 - Adam Franco)
-
Bug Fix: ErrorHandler: Fixed reliance on methods in the HarmoniException class when printing. (2007-09-13 - Adam Franco)
-
Bug Fix: Fixed numerous MySQL-specific SQL statements that didn't work with PostgreSQL. (2007-09-13 - Adam Franco)
-
Bug Fix: Added auto-increment-column designators to appropriate Insert Queries so that the sequence-values could be accessed when using PostgreSQL. (2007-09-13 - Adam Franco)
-
New feature: DBHandler: Can now run an entire directory tree full of SQL files. (2007-09-11 - Adam Franco)
-
Bug Fix: DBHandler: Some fixes to the PostgreSQL implementation and tests. (2007-09-11 - Adam Franco)
-
New feature: DBHandler: New database updater utility. The only function implemented currently is to convert column names to lowercase. (2007-09-11 - Adam Franco)
-
Bug Fix: ErrorHandler: Fixed HTML syntax error in Exception printing. (2007-09-11 - Adam Franco)
-
Bug Fix: Repository: Now properly escapes values in modification date-storing query. (2007-09-07 - Adam Franco)
-
New feature: Logging: New priority type 'All' allows for browsing of all priority levels at once. (2007-10-11 - Adam Franco)
Version 0.11.0
2007-09-07
-
*** IMPORTANT ***Change: As of this version, Harmoni no longer supports PHP4. Please use PHP5 or later. (Adam Franco)
-
Change: GUI: Y-Layout now uses div tags instead of tables to allow the setting of child widths. (Adam Franco)
-
Change: Removing ampersands for compatibility with other PHP5 code. The BBEdit-grep string used for the find and replace was:
(function )&|(=\s?)&([^a-z#])|([^&])&\s?(\$)
replaced with
\1\2\3\4\5
Special Changes were made to the following files to fix problems introduced in the search and replace for ampersands:
polyphony/main/library/ResultPrinter/ArrayResultPrinter.class.php - getLayout()
- $item = $this->_array[key($this->_array)];
======
+ $item = current($this->_array);
harmoni/core/oki2/repository/HarmoniRecord.class.php - getParts()
* Moved the following line out of the if-statement:
* $activeValue = $allRecordFieldValues[$key]->getActiveVersion();
harmoni/core/oki2/hierarchy/tree/Tree.class.php - _traverse()
* Kept the first parameter being passed by reference. Needed in this case. (Adam Franco)
-
Bug Fix: OutputHandler: fixing notices. (2007-09-07 - Adam Franco)
-
Change: DBC: Updating the Database Handler to throw from an exception hierarchy as well as use PHP5 interfaces. (2007-09-05 - Adam Franco)
-
Change: Errors: Expunging the old harmoni error handler now that we have exceptions. (2007-09-05 - Adam Franco)
-
Bug Fix: Hierarchy: Now properly clones the query object in PHP5. (Adam Franco)
-
Change: GUI: Now can include an xmlns namespace in the <html> tag. (Adam Franco)
-
Change: Id: Id can now be transparently cast as a string. (Adam Franco)
-
Change: Updating the Agent Package to use PHP5 interfaces to allow for type-checking. (Adam Franco)
-
New feature: Authentication: Adding methods to access a single current Agent. OSID v3 will specify a single agent authenticated at each time, rather than our current multiple case. The methods added are to enable working in that sort of paradigm, though they do not map directly to the v3 methods. (Adam Franco)
-
Bug Fix: DBHandler: Adding Support for table.column column-syntax. (Adam Franco)
-
Bug Fix: Repository: Creation date is now added properly when Assets are created, instead of on the first modification. (Adam Franco)
-
New feature: Repository: Assets can now store and retrieve the id of their creator. (Adam Franco)
-
New feature: HarmoniIterator now supports the add($item) method to allow incremental addition of items to the iterator. (Adam Franco)
-
Bug Fix: Converting all short tags (<?) to the full tags (<?php) for compatibility with more PHP configurations. (Adam Franco)
-
Bug Fix: Request: Added methods to ease access to the current module and action. (Adam Franco)
Version 0.10.1
2007-04-10
-
Bug Fix: Fixed a few bugs that prevented Harmoni from running in PHP 5. (Adam Franco)
Version 0.10.0
2007-04-05
-
Bug Fix: Architecture: Improved debug output on Harmoni instantiation errors. (Adam Franco)
-
New feature: GUI: Now 'placeholders' can be added to containers to provide support for out-of-order addition of components. (Adam Franco)
-
New feature: Utilities: StatusStars can now be used from a CLI environment. (Adam Franco)
-
New feature: DBHandler: Added methods to query objects allow the addition of values to queries without requiring the user to add quotes and escaping. Quoting and escaping is handled within these methods. (Adam Franco)
-
New feature: Authorization: Added isAuthorizedBelow() and isUserAuthorizedBelow() methods to allow determination as to the availability of the contents of a node. (Adam Franco)
-
New feature: Repository: Added an assetExists() method. (Adam Franco)
-
Bug Fix: Chronology: Now gets AM/PM correct for 12AM and 12PM (Adam Franco)
-
Change: RequestContext: Now doesn't add cookie values to the request parameters. (Adam Franco)
-
Change: RequestContext: Now doesn't add the module and action to the list of passed parameters. (Adam Franco)
-
Bug Fix: Agent: Removed debugging lines from Group implementation (Adam Franco)
Version 0.9.0
2006-12-13
-
New feature: AuthN: Added support for administrators to act as another user. (Adam Franco)
-
Bug Fix: AuthN: Fixed LDAP dnExists() method to work. (Adam Franco)
-
New feature: AuthN: Added support for LDAP Group searching. (Adam Franco)
-
New feature: Repository: Added support for files stored at remote locations. (Adam Franco)
-
Bug Fix: AuthZ: Increased the column length of the authorization agent Id to prevent long LDAP DNs from being truncated. (Adam Franco)
-
Bug Fix: Tagging: Tags could be accidentally added with no value, now cannot. (Adam Franco)
-
Bug Fix: Tagging: Fixed error to allow Collections with no items to be deleted. Zero numbers of tagged items were causing an error. (Adam Franco)
-
New feature: Tagging: Now can fetch related tags. (Adam Franco)
-
Bug Fix: Primitives: ByteSize::fromString() now supports integers. (Adam Franco)
Version 0.8.0
2006-12-01
-
Bug Fix: Chronology: Now handles parsing and display of am/pm-formated times between 12:00am and 1:00am properly. (Adam Franco)
-
*** IMPORTANT ***Change: Harmoni 0.8.0 is a merging of Harmoni 0.7.10 with work done on the harmoni trunk by Tim and John over the summer. The additions on the trunk include implementations of the CourseManagement and Scheduling OSIDs as well as some GUI-theme-management work. (Adam Franco)
-
New feature: Implementation of the CourseManagement OSID. (Tim Bahls)
-
New feature: Implementation of the Scheduling OSID. (Tim Bahls)
-
New feature: Implementation of the Grading OSID. (Tim Bahls)
-
Change: Changes to GUI system to support theme management. (Tim Bahls)
-
Change: AuthN: Additions to the authentication methods to support class searching. (Tim Bahls)
-
Change: ValidatorRules: Additions to support GUI theme management needs. (Tim Bahls)
Version 0.7.10
2006-11-30
-
Bug Fix: AuthZ: getWhoCanDo() was only returning explicit AZs, in error. (Adam Franco)
-
Bug Fix: AuthZ: AuthZ cache was not properly checking newly requested agentIds if they didn't correspond to the authenticated agents. (Adam Franco)
Version 0.7.9
2006-11-28
-
New feature: Database: Can now generate the appropriate query string for use in building complex sub-queries. (Adam Franco)
-
Change: Actions: Removing need to pass the harmoni object from all actions. (Adam Franco)
-
Change: Chronology: Allowing colon date delimiters to support dates from EXIF. (Adam Franco)
-
Bug Fix: Repository: Generating thumbnails now doesn't update the Asset modification date. (Adam Franco)
-
New feature: Tagging back-end added. (Adam Franco)
Version 0.7.8
2006-10-25
-
New feature: GUI: New GUI component, SubMenu. (Adam Franco)
-
Bug Fix: Errors: Now includes User-Agent, Referer, Request URI, GET, and POST with the logged backtrace. (Adam Franco)
-
Bug Fix: Chronology: Fixed a number of PHP notices that were occurring in PHP 4.4. (Adam Franco)
-
Bug Fix: ActionHandler: Now strips any non-word characters from the action and module strings to prevent dynamic including of files outside of the modules directory. (Adam Franco)
Version 0.7.7
2006-08-28
-
Bug Fix: Chronology: Now parses dates of the form 'August 10th, 2006' and doesn't choke on the 'th'. (Adam Franco)
-
Bug Fix: UnitTests: Removed deprecated pass-by-reference call. (Adam Franco)
-
Bug Fix: Chronology: Fixed error, ClockPrecision must be non-zero as otherwise dates span two days rather than a clock-tick less than 24 hours. (Adam Franco)
-
New feature: GUI: The table layout can now handle rendering direction of elements other than Left-Right/Top-Bottom. (Adam Franco)
-
New feature: GUI: The XLayout and YLayout can now handle rendering direction of elements other than Left-Right and Top-Bottom. (Adam Franco)
-
Bug Fix: ImageProcessor: Now if Image Magick barfs on some multi-page PDFs and generates a single black pixel as a thumbnail, it won't be saved and the nice default icon will be used instead. (Adam Franco)
Version 0.7.6
2006-08-15
-
Bug Fix: Repository: RepositoryManager now returns false instead of an error if the asset with the specified Id does not exist. (Adam Franco)
Version 0.7.5
2006-08-11
-
Bug Fix: Fixed incomplete method in RegexValidator rule. (Adam Franco)
-
Bug Fix: Now can force cookie usage to prevent accidental or intentional session hijacking by the passing of session ids in the url. (Adam Franco)
-
Bug Fix: Authentication/Authorization: Now can dirty the authentication cache to allow HTTP authentication (interrupting the execution cycle) to update the currently authenticated agent. (Adam Franco)
-
Bug Fix: Authentication: Now passes an auth type key to the token collectors to allow them to differentiate between prompting again for an auth type and just trying to get the tokens for another auth type. (Adam Franco)
-
Change: Authentication: Now can pass custom realm and callback function to execute on cancel for the HTTP authentication. (Adam Franco)
-
Bug Fix: ErrorHandler: Removed debugging line. (Adam Franco)
Version 0.7.4
2006-08-04
-
Bug Fix: Chronology: fromString() methods now return null for invalid strings rather than doing a die(). (Adam Franco)
-
Bug Fix: Repository: Authoritative values are now only added if a valid data object is passed. (Adam Franco)
Version 0.7.3
2006-08-02
-
Bug Fix: Chronology: Now does not die when fromString is called on an invalid date. Returns false instead. (Adam Franco)
-
Bug Fix: Repository: Now enforces deleting of file/thumbnail data properly. Previously, file records were being orphaned when assets were deleted. (Adam Franco)
-
Bug Fix: Authorization: Now calls addslashes() on agent and group ids to prevent errors when those ids contain apostrophes. (Adam Franco)
-
Bug Fix: Logging: Improved performance of the LogEntryIterator to make a more responsive interface. (Adam Franco)
-
Change: Logging: Errors now log the query string as well as the referrer to better trace errors. (Adam Franco)
Version 0.7.2
2006-07-21
-
Bug Fix: ImageProcessor: Now doesn't try to convert text files as images. (Adam Franco)
Version 0.7.1
2006-06-20
-
Bug Fix: AuthZ: Quotes in Group Ids were breaking queries. (Adam Franco)
Version 0.7.0
2006-06-16
-
*** IMPORTANT ***Change: The following 9 queries need to be run on a Harmoni 0.6.x database to upgrade it to support the needs of Harmoni 0.7.0:
ALTER TABLE `dm_schema` ADD `active` TINYINT( 1 ) UNSIGNED DEFAULT '1' NOT NULL AFTER `revision` ;
ALTER TABLE `dr_authoritative_values` ADD `fk_repository` VARCHAR( 100 ) NOT NULL AFTER `fk_partstructure` ;
ALTER TABLE `dr_authoritative_values` DROP PRIMARY KEY;
ALTER TABLE `dr_authoritative_values` DROP INDEX `fk_partstructure` , ADD INDEX `fk_partstructure` ( `fk_partstructure` , `fk_repository` ) ;
ALTER TABLE `dr_authoritative_values` CHANGE `value` `value` VARCHAR( 240 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ;
DROP TABLE `dr_authority_options` ;
ALTER TABLE `log_agent` ADD PRIMARY KEY ( `fk_entry` , `fk_agent` ) ;
ALTER TABLE `log_entry` ADD INDEX ( `log_name` );
ALTER TABLE `log_node` ADD PRIMARY KEY ( `fk_entry` , `fk_node` ) ; (Adam Franco)
-
New feature: RequestContext: Moved output buffer jumping methods to the RequestContext as ob_jump() and ob_land() from Chris's StatusStars. StatusStars is now in harmoni/core/utilities. (Adam Franco)
-
Change: Logging: Reworked db indexes to speed queries. (Adam Franco)
-
Bug Fix: Repository: Some Repository methods now allow the optional passing in of a status indicator which can allow the printing of update status. (Adam Franco)
-
Bug Fix: DataManager/Repository: DataManager Records now dynamically add fields if SchemaFields have been added to their Schema. (Adam Franco)
-
New feature: DataManager/Repository: Adding support for PartStructure/Part data-type conversion. (Adam Franco)
-
Change: DataManager/Repository: Adding support for schema/RecordStructure deleting. (Adam Franco)
-
Change: Repository: Added support for Record/RecordStructure duplication. (Adam Franco)
-
Change: Repository: AuthoritativeValues addition is now an AuthorizationFunction. (Adam Franco)
-
Change: Authoritative Values are now per Repository. (Adam Franco)
-
Bug Fix: BrowserHistoryManager: Now records full url with all parameters automatically. (Adam Franco)
-
Change: GUIManager has been updated to reflect the original design in its back-end. All Style objects are streamlined for programatic interfacing. (Christopher Shubert)
-
Bug Fix: Repository: File PartStructures now implement skeletons of Authoritative Values methods. (Adam Franco)
-
Bug Fix: Logging: Ensured that logging is now ready for use before attempting to log errors. (Adam Franco)
-
Change: DatabaseManager: Allowing the addition of custom messages for database connection errors. (Adam Franco)
-
Bug Fix: ErrorManager: Making Errors more legible.. (Adam Franco)
Version 0.6.1
2006-05-19
-
New feature: Shared: New Multi-Iterator Iterator to ease the combining of results received as several iterators. (Adam Franco)
-
Change: Repository: now caches AssetTypes loaded by getAssetTypes(). (Adam Franco)
-
Change: Repository: SQL definition now includes MAX_ROWS and AVG_ROW_LENGTH parameters to get over issues with the large table size in the dr_file_data table. (Adam Franco)
-
Bug Fix: RequestContext: In the request, periods and spaces will get converted to '_'s, so it is now done preemptively (Adam Franco)
Version 0.6.0
2006-05-05
-
Bug Fix: Now deletes the dr_asset_info record when deleting assets. (Adam Franco)
-
New feature: Assets and Asset-search-order now support modification and creation times. (Adam Franco)
-
Change: Asset::getAssets() now loads assets only on calls to next() rather than right away, saving time and queries when just checking for the existence of children. (Adam Franco)
-
New feature: Implemented Authority-Lists for Record Parts. These lists are accessed through the PartStructure. These lists are intended to be used to provide choices in Asset-editing interfaces. There is no restriction that Parts must have values not from the list. (Adam Franco)
-
New feature: Added added support for getting group information from LDAP. (Adam Franco)
-
Bug Fix: Argument validation for id-strings must allow integers as well, fixed in HarmoniId, HierarchyCache, Tree. (Christopher Shubert)
-
Bug Fix: Now actually gets the qualifier Id when deleting an authorization. (Adam Franco)
-
Change: Added access to the 'Authenticatable Users' group. (Adam Franco)
-
New feature: Now caches resized versions of images. (Adam Franco)
-
Bug Fix: Fixed authorization cache errors that occurred when explicit AZs triggered cache hits before implicit AZs were loaded. (Adam Franco)
-
Bug Fix: Fixed keyword searching to cut search time by 10x. Also fixed several reference errors in the DataManager. (Adam Franco)
-
New feature: Implemented an OSID Logging. (Adam Franco)
Version 0.5.1
2005-02-09
-
Bug Fix: Fixed table structure to support longer Id lengths. (Adam Franco)
-
Bug Fix: Fixed return by reference errors that throw notices in PHP 4.4. (Adam Franco)
-
New feature: Now can add HTML ids to GUI components. (Adam Franco)
-
Bug Fix: Fixed output HTML tabbing. (Adam Franco)
-
New feature: HtmlString now handles CDATA sections and HTML comments. (Adam Franco)
-
Bug Fix: Comparing Ids via object methods rather than string-values (Adam Franco)
-
New feature: Parts can now automatically convert from a string value into the appropriate data object. (Christopher Shubert)
-
New feature: New methods for manipulating OrderedSets. (Adam Franco)
Version 0.5.0
2005-01-10
-
New feature: AuthZ: IsUserAuthorized caching system to dramatically speed authorization checking. Look-ahead is currently implemented in the AssetIterator: if any assets are returned from the iterator, all elements of the iterator are queued for AuthZ caching. (Adam Franco)
-
Bug Fix: Hierarchy: Fix to Node->isLeaf() allows for faster population of browsing interfaces. (Adam Franco)
-
Change: Repository: Cleaned up the caching that was taking place with file data. (Christopher Shubert)
-
Change: Hierarchy: Improved hierarchy caching algorithm dramatically speeds hierarchy loading while retaining unchanged portions of the cache during hierarchy modification. (Adam Franco)
-
Change: DataManager: Updated id columns in SQL to support longer keys need in Schemas/fields. (Christopher Shubert)
-
New feature: GUI: New constants defined for GUI Block indexes to allow for more semantic definition and standardization of the levels used to aid Theming. Examples include BACKGROUND_BLOCK, STANDARD_BLOCK, WIZARD_BLOCK, EMPHASIZED_BLOCK. (Adam Franco)
-
Change: GUI: StyleProperties can now include arbitrary pre and post HTML to be wrapped around the content that they are styling. This allows for complex layout of corner and border images around content for instance. (Adam Franco)
-
New feature: GUI: New basic theme. (Adam Franco)
-
New feature: Id: Id table now only retains the most recent value instead of all used values, saving on wasted table space. (Adam Franco)
-
Change: Removed error suppression from the ActionHandler to allow errors to be shown during action-class instantiation. (Adam Franco)
-
Change: AuthN: Improved error handling of LDAP connection errors. (Christopher Shubert)
-
New feature: Repository: Keyword searching module in Repository. (Adam Franco)
-
New feature: Repository: Now supports Repository-specific RecordStructures. (Adam Franco)
-
Change: Repository: FileRecords now only have their data fetched on access, while their metadata (filename, size, mime-type) are fetched together. (Adam Franco)
-
Bug Fix: Repository: Repository->getAsset() was doing extra work verifying the existence of Assets it had just found in its search results. (Adam Franco)
-
Change: Argument validation can now be turned off for production. (Adam Franco)
-
Change: Many speed optimizations in Repository, Authorization, and Hierarchy. (Adam Franco)
-
New feature: Primitives: HtmlString primitive which provides cleaning of HTML text as well as trimming of an HTML string to a given number of words while preserving proper tag nesting and closure. (Adam Franco)
Version 0.4.0
2005-10-12
-
Change: Groups and Agents are now stored in the hierarchy, allowing authorizations to be placed on them as qualifiers. This allows for specific authorizations as to who can modify which groups or users. (Adam Franco)
-
Change: Added a check for magic_quotes_gpc being Off in harmoni.inc.php. (Gabe Schine)
-
Bug Fix: Fixed all functions returning references to newly created objects in HarmoniAuthorizationManager. (Gabe Schine)
-
New feature: Added new method getAllExplicitAZsForAgent() to HarmoniAuthorizationManager. (Gabe Schine)
-
Change: The Repository FileRecord now provides access to height and width information for images and thumbnails. (Adam Franco)
-
Change: Changed OKI agent management to use new Everyone/Anonymous/Users IDs. (Gabe Schine)
-
New feature: Added EventListener and EventTrigger to allow easy extensions of our code later. (Gabe Schine)
-
Change: DataManager: can now store with a Schema definition an arbitrary set of parameters for whatever is useful. Updated the Repository to use this method of storing extra data. (Gabe Schine)
-
New feature:
#102459 Added task-manager link-ability to the change-log. (Gabe Schine)
-
Change: Added retrieval of $_FILES-type data to the RequestContext and RequestHandler classes. (Gabe Schine)
-
Change: Updated DR module to use new DataManager. (Gabe Schine)
-
Change:
#890779 DataManager now uses unique ids to reference fields instead of purely by label. (Gabe Schine)
-
Bug Fix: Fixed a number of bugs in the Primitive and StorablePrimitive classes. (Gabe Schine)
-
Bug Fix: Fixed ISO date and time string parsers. (Gabe Schine)
-
New feature: DBHandler and Databases now implement a getTableList() function. (Gabe Schine)
-
New feature:
#102448 Implemented (but did not yet test) Oracle database connectivity. (Gabe Schine)
-
Change: Changed DBHandler's toDBDate functionality to automatically format and include quotations if necessary for the specific DB type. This became a problem for Oracle databases where a function call is necessary for date storage. (Gabe Schine)
-
New feature: Added getStringName() to the Database interface and added a method in the DBHandler to allows access to the string name based on the database index. (Gabe Schine)
-
Change:
#116890 All DataManager database queries now free() their results after processing. (Gabe Schine)
-
New feature: GUIManager now allows for the setting of pre and post HTML. These are HTML tags that need to surround a component. This is primarily used to properly nest form-tags around tables/divs to generate valid XHTML. (Adam Franco)
-
Bug Fix: Repaired many PHP notices. (Adam Franco)
-
Bug Fix: Repaired many PHP notices. (Gabe Schine)
-
Bug Fix: Repaired many PHP notices. (Niraj Dhungel)
-
Bug Fix: The hierarchy cache had a problem where _isCached() was called as a property instead of a method, square brackets [] versus parenthesis (), and was breaking the cache by creating nodes that were listed as children of other nodes, but did not have their parents listed. (Adam Franco)
-
Change: The Chronology Library as well as the dataManager primitives have now been moved to core/Primitives and generalized. (Adam Franco)
-
Change: The Time and DateTime classes have been removed and their functionality replaced by the new Chronology DateAndTime class. (Adam Franco)
-
Change: DataManager:
Records no longer have an active state. They either exist or they don't.
Fields that are deleted now are actually removed from the DB if the Record is not version controlled.
getIndices() now returns only the active indices per default, including inactive ones only if requested. (Gabe Schine)
-
New feature: Added a free() call to the SelectQueryResult classes to free memory used by the select query. (Gabe Schine)
-
New feature: Added the chronology library, a PHP implementation of the Squeak (Smalltalk) Kernel-Chronology package and aims to serve as a general PHP class-library for handling, comparing, and operating on chronological objects. The original Smalltalk implementation is licensed under the Squeak License http://squeak.org/download/license.html.
This library includes classes that represent instants in time (DateAndTime, TimeStamp), lengths of time (Duration), spans of time anchored at certain instants (Timespan, Year, Month, Week, Date), as well as recurring instants across a span of time (Schedule).
This library has been designed to support all possible dates, times, and durations, not just those since the UNIX epoch (1970). dates can have positive years (C.E./A.D.) or negative years (B.C.E./B.C.) and Durations have been tested to support lengths of time up to +/- 4 billion years with second-precision. Beyond 4 billion years to the limit of testing (50 billion years) Durations have hour-precision. (Adam Franco)
-
New feature: Added URL-writing functionality as well as centralized processing of request-related variables from/to the browser into a family of classes related to the RequestHandler.
All 'communication' between the browser and the program is now abstracted and can be subsequently changed transparently. (Gabe Schine)
-
Change: In order to allow for globally unique ids from the IdManager, the IdManager now allows for an Id prefix to place on ids. The prefix 'id.middlebury.edu-' would lead to ids similar to 'id.middlebury.edu-1234567890'. This will allow for multiple IdManagers to be used together without each giving out the same Id strings. (Adam Franco)
-
Change: In conjunction with the IdManager's added 'prefix' capabilities, the Harmoni SQL table definitions have been updated to support the storing of string Ids (currently up to 75 characters) that may have originated from the IdManager. Ids generated internally by the database remain as integers. (Adam Franco)
-
Change: In conjunction with the IdManager's added 'prefix' capabilities, the Harmoni services that store Ids have been upgraded to allow string ids as well as integer ids. (Adam Franco)
Version 0.3.3
Never Released
-
Bug Fix: Fixed some more PHP warnings. (Adam Franco)
Version 0.3.2
2005-04-14
-
Bug Fix: Existence of a try() function in the ErrorHandler was throwing parse errors PHP5. (Adam Franco)
-
Bug Fix: Services weren't starting because of case problems with the get_class() functions in PHP5. (Adam Franco)
-
Bug Fix: clone() is a reserved word in PHP5. All clone methods have been renamed replicate(). (Adam Franco)
-
Bug Fix: clone() is a reserved word in PHP5. All clone methods have been renamed replicate(). (Adam Franco)
-
Bug Fix: Type now validates arguments. ConfigurationPropertiesType now instantiates properly. (Adam Franco)
-
Bug Fix: Removed unused parameters from several methods that were throwing warnings. (Adam Franco)
-
Bug Fix: LanguageLocalizer now uses non-deprecated categories. (Adam Franco)
-
Bug Fix: If magic_quotes_gpc is on Harmoni now just strips slashes on the G/P/C arrays instead of dying with errors. (Adam Franco)
-
*** IMPORTANT ***Change: Harmoni now runs on PHP5 and on Win32 systems in addition to PHP4.3 and POSIX systems. (Adam Franco)
Version 0.3.1
2005-04-11
-
Change: Authentication now plays nicely with GET parameters and maintains them around during the authentication sequence. (Adam Franco)
-
Change: Agent searching works with new mapping system. (Adam Franco)
Version 0.3.0
2005-04-07
-
Change: New Framework/Architecture-GUI/Theme interaction decouples the Harmoni object from the output system. The GUIManager and other OutputHandlers extend the OutputHandler abstract class and can be attached to Harmoni. A default 'BasicOutputHandler' is used when no other OutputHandler is specified. (Adam Franco)
-
Change: Services::startService(), Services::stopService(), Services::restartService(), and Services::startAll() are now deprecated and print warnings if used. Please use Services::startManagerAsService() and/or Services::getService() instead. (Adam Franco)
-
Change: 'Service' classes no longer extend the services interface or use start()/stop() methods. These had been designed into Harmoni, but were never used and are now removed. start()/stop() methods will NOT be called during service starting/stopping. (Adam Franco)
-
Change: OKI version 1 interfaces and implementations have been removed, saving 2MB of files and cleaning up the source tree. (Adam Franco)
-
Change: The hierarchy's Tree class, HierarchyManager/tree/Tree.class.php, now caches its traversal results. (Savings: 93,529 calls to tree->_traverse(), 43 seconds execution time on a 500MHz PC in a 5000-node hierarchy) (Adam Franco)
-
New feature: ValidatorRule objects can now be accessed via static XxxxxValidatorRule::getRule() methods, allowing the ValidatorRule classes to behave as Singletons and avoid the instantiation of tens of thousands of ValidatorRule objects. (Adam Franco)
-
New feature: GUI Manager now complete. ThemeHandler and LayoutHandler have been removed. (Dobo Radichkov)
-
New feature: GUI Manager saving functionality. (Nikitas Stamatopoulos)
-
New feature: OsidManagers can now be started and configured by Services::startManagerAsService("name", $context, $configuration); (Adam Franco)
-
New feature: Service names can now have aliases. (Adam Franco)
-
Change: Authentication is completely handled by the AuthenticationManager OSID implementation instead of the LoginHandler/AuthenticationHandler. The LoginHandler and AuthenticationHandler have been removed. (Adam Franco)
-
New feature: New back-end for managing authentication tokens, agents, and the mappings between agents and authentication tokens. This is all contained within the core/oki2/agentmanagement/ directory. (Adam Franco)
-
Change: DBHandler now provides methods for transaction handling. Applications can be coded to use transactions to ensure atomic writes. Databases that do not support transactions will simply ignore the calls. Nested transaction calls in MySQL are interpreted so that only the outer transaction is run allowing applications coded to use nested transactions to often operate on MySQL 4.0.11+. (Adam Franco)
-
New feature: Now includes implementations of v2.0 of the O.K.I OSIDs. (Adam Franco)
-
New feature: Now includes v2.0 of the O.K.I OSIDs. (Adam Franco)
-
Bug Fix: AuthorizationManager now handles group membership. (Adam Franco)
-
Change: AuthorizationManager now properly returns implicit AZ corresponding to explicit AZs at a parent instead of returning the explicit AZs themselves. (Adam Franco)
-
Change: DataManager: added function to SchemaManager to generate valid PHP code for a given Schema. (Gabe Schine)
-
Change: DataManager: deleting a value from a Record without version control now actually deletes the value instead of flagging it as inactive. (Gabe Schine)
-
Change: The LanguageLocalizer now defines functions for _() and gettext() that simply return the passed string, so that localized apps can fail gracefully to their native language if gettext is not installed. (Adam Franco)
-
Change: DBHandler improvements: SQL strings are prettier now. Also added variable binding functionality. (Dobo Radichkov)
Version 0.2.0
2004-10-26
-
New feature: Added a "MIME" service for sniffing mime types from file extensions. (Adam Franco)
-
New feature: Added an ImageProcessor service for the resizing of images, generation of thumbnails, and other common image processing functions. This service can be configured to use multiple modules to handle different file types, as available. An example would be using PHP's GD libraries for handling jpegs and pngs, while using ImageMagick (via shell_exec()) for tiff, psd, pdf, etc. files. (Adam Franco)
-
Bug Fix: DBHandler: PostgreSQL now functions without throwing invalid errors. (Adam Franco)
-
New feature: Digital Repository: Now has a "File" Info structure system for storing binary files. (Adam Franco)
-
Change: Digital Repository: Now stores Asset dates outside of the the data manager. (Adam Franco)
-
New feature: Harmoni::addPreExecActions($action,...) adds a number of actions to execute before executing the action requested by the end user. (Gabe Schine)
-
New feature: Harmoni::addPostExecActions($action,...) adds a number of actions to execute after executing the action requested by the end user. (Gabe Schine)
-
New feature: Harmoni::executeLogin() executes the LoginHandler and stores the result to avoid discrepancies. (Gabe Schine)
-
Change: Migrated OKI DR implementation to use new DataManager. (Gabe Schine)
-
Change: DataManager: Records now dynamically update their fetch-mode (how much & what data has been fetched) depending on the operation to be performed. Previous version required one to manually re-fetch records (annoying). (Gabe Schine)
-
New feature: Function printDebugBacktrace([$traceArray]) will print out a debug_backtrace() in a pretty way. (Gabe Schine)
-
New feature: DataManager: Record::getValuesArray() returns an associative array of all active values in a Record. (Gabe Schine)
-
New feature: DateTime::toString() now has optional parameter to return a shorter M/D/Y for the date instead of Month DD, YYYY. (Gabe Schine)
-
Bug Fix:
#102455 AuthN queries now have slashes added to dbc query values. (Adam Franco)
-
Bug Fix:
#102455 Shared queries now have slashes added to query values. (Adam Franco)
-
Bug Fix:
#102455 Globally added addslashes() calls to quoted values in query strings. (Adam Franco)
-
Change: Fixed LoginHandler problem which was preventing the use of custom callback functions. (Adam Franco)
-
New feature: A new "Sets" service provides an easy system for the creation, ordering, and maintaining of persistent collections of Ids. (Adam Franco)
-
New feature: Added new system for storing primitive data values in objects (all classes implementing the Primitive interface - see harmoni/core/dataManager/primitives) (Gabe Schine)
-
New feature: Re-worked the DataManager with simpler class names and more flexibility. (see harmoni/core/dataManager) (Gabe Schine)
-
New feature: Added a "revision" to all DataSetTypeDefinitions for later program upgrades (can check revision number to see if the structure is up-to-date instead of comparing every field). (Gabe Schine)
-
New feature: GUIManager service, based around CSS, will eventually replace the theme/layout handlers. (Dobo Radichkov)
-
New feature: Implemented the Authorization OSID. (Dobo Radichkov)
-
Change: Reworked the Hierarchy implementation to use a better data-fetching/caching model. (Dobo Radichkov)
Version 0.1.0
2004-06-11
-
New feature: Added a new OKI-Hierarchy implementation (hierarchy2). (Dobo Radichkov)
-
New feature: DataManager: added a data type to store OKI-style types. (Gabe Schine)
-
Bug Fix: Bugs in LoginHandler. (Gabe Schine)
-
Change: LanguageLocalizer reworked for easier usage and caching of language preferences. (Adam Franco)
-
Change: The DataManager/metaData now uses the OKI Shared Ids instead of its own internal id system. This keeps all access to unique ids safely behind the Shared interface. (Adam Franco)
-
Change: Themes and layouts have been completely re-worked to support easier use and more user control of the themes. (Adam Franco)
-
Change: Argument Validator now doesn't fail on string representations of integers; i.e. "100" as well as 100 will validate. (Adam Franco)
-
New feature: Implemented the Digital Repository OSID in Harmoni. The DR uses the Hierarchy OSID, the DataManager, and the Shared OSID to provide for high-level access and browsing of Assets and their associated data/metadata. (Adam Franco)
-
Change: Services: The Harmoni Services now check for the Error Handler and use that to print out errors if it is available. This makes for easier to read backtraces. (Adam Franco)
-
Change: DBHandler: DBHandler now throws fatal errors with an explanation when a query fails. (Adam Franco)
-
New feature: Hierarchy: Implemented the Hierarchy OSID. The Hierarchy supports the storing of multiple hierarchies and their nodes in one database. In the current implementation, the entire hierarchy is pulled from the database each load. This needs to be re-written to optimize it for fast reads from 100,000+ node hierarchy (current Segue at Middlebury has ~50,000 nodes). (Adam Franco)
-
New feature: DataManager: added DataSet caching to the DataSetManager. Added support for required fields in DataSetTypeDefinitions. (Gabe Schine)
-
Change: Removed argument validation from DateTime constructor to speed up code by 33%. (Gabe Schine)
-
Change: DataManager: sped up fetching large numbers of DataSets at once (by a factor of two). (Gabe Schine)
-
Change: DataManager: DataSet::prune() now takes a required VersionConstraint object on which to base the pruning process. Handling of pruning Tags is very very messy, but it works. (Gabe Schine)
-
New feature: DataManager: can use DataSetManager::selectIDsBySearch() to search all/some DataSets and return a list of DataSets that match the criteria. (Gabe Schine)
-
Change: DataManager: ValueVersion::prune() now deletes itself if the DataSet it is part of is inactive. (Gabe Schine)
-
Change: DataManager: DataSet::prune() now removes all Tags associated with itself. (Gabe Schine)
Version 0.0.5
2004-01-09
-
Change: Implementation of the OKI SharedManager (HarmoniSharedManager) now uses the HarmoniDataManager's IDManager for ID creation.
-
Bug Fix: DateTime::toString() now correctly displays minutes.
-
New feature: Optional third argument to DataSetManager::fetchArrayOfIDs() specifies an array of DataSetTypes to limit the query. (Gabe Schine)
-
New feature: Completed the HarmoniDataManager! (Gabe Schine)
-
Change: HarmoniDataManager::setup($dbID) now takes optional second argument including a list of DataSetTypes to preload in a single query to save time and Database overhead. (Gabe Schine)
-
New feature: added FloatDataType, ShortStringDataType. finished up DataManager tagging, cloning, pruning functionality. (Gabe Schine)
-
New feature: added BooleanDataType to DataManager. (Gabe Schine)
-
New feature: DataSetManager::fetchArrayOfIDs() fetches an array of DataSet ids in one SQL query. (Gabe Schine)
-
New feature: DateTime::compare(date1, date2) returns difference in seconds between two dates. (Gabe Schine)
-
Bug Fix: Typo in constructor for UnknownDBError class.
-
New feature: Harmoni::forward(module,action) is now a synonym for Harmoni::ActionHandler::forward() for convenience. (Gabe Schine)
-
New feature: Classes: Timer and QueryCounter for easy micro-second timing or DB query counting, respectively. (Gabe Schine)
-
Change: Harmoni::getData has been deprecated and replaced by Harmoni::getAttachedData to avoid ambiguity. (Gabe Schine)
-
Change: IDManager::newID() now uses auto_increment DB functionality to reduce query count on compatible servers. (Gabe Schine)
-
Bug Fix: DataSet::populate() now sets its own ID to avoid super re-duplication of DataSets in database. (Gabe Schine)
-
Bug Fix: DateTime::now() now gives correct Hour value. Likewise MySQLDatabase::toDBDate() now adds 1 to hour value to give correct 1-24 value. Other DB Types haven't yet been checked. (Gabe Schine)
-
Change: Modified field in HarmoniDataManager table "datasetfield" from "datasetfield_created" to "datasetfield_modified" since it is updated on every commit(). (Gabe Schine)
-
New feature: Extensive work on DataManager. Now works for creating/retrieving datasets with version controls. (Gabe Schine)
-
Bug Fix: Corrected ArgumentValidator call in DBHandler checking for DateTimeInterface instead of DateTime. (Gabe Schine)
-
New feature: Added AgentInformationHandler::agentExists($name, [$method]) which steps through each AuthenticationMethod and checks for an existing agent. (Gabe Schine)
-
Change: LoginState now has better support for Active/Authenticated agents. It should allow one to change the active agent without disturbing the actual authentication process. (Gabe Schine)
Version 0.0.4
2003-12-06
-
New feature: DateTime class has two new functions: toString() and toMDY() which display a full date/time and a MM/DD/YY string, respectfully. (Gabe Schine)
-
New feature: Harmoni::pathInfoParts now contains an array of PATH_INFO elements. (Gabe Schine)
-
New feature: ErrorHandler has new method getErrorQueue() which returns the error queue in a Queue object. (Gabe Schine)
-
Change: Harmoni::attachContextData() has been renamed (again) to Harmoni::attachData(). Context::getData() has been moved to Harmoni::getData(). (Gabe Schine)
-
Change: Context object now carries an array holding the executed actions path, available by referencing Context::actionPath. (Gabe Schine)
-
Change: ActionHander and Harmoni: ActionHandler now only passes a reference to the Harmoni object to action functions and scripts. Other variables are available here: Harmoni::HTTPVars, Harmoni::Context, Harmoni::LoginState. (Gabe Schine)
-
Change: Removed many .interface.php files to save on load times and unnecessary flexibility. (Gabe Schine)
-
Change: LoginHandler no longer throws a default error on login failure. LoginHandler::setFailedLoginError() can be used to specify an error to be thrown to the UserError service. This change is primarily so that people using different languages won't be locked into using English for this error message (a pretty important one). (Gabe Schine)
-
Change: LoginState::attachData() has been moved to Harmoni::attachContextData() and LoginState::getData() has been moved to Context::getData() for logical and organizational reasons. (Gabe Schine)
-
Change: LoginHandler and Harmoni: when LoginHandler is used, the action that is checked for required authentication is now the LAST action executed instead of the first. This way, the action that finally ends up being executed is the "authoritative" action. (Gabe Schine)
Version 0.0.3
2003-11-26
-
Change: Made ActionHandler check for class and method definitions before trying to execute them. (Gabe Schine)
-
New feature: Added defines in config/services.cfg.php to allow a choice of which major "modules" of Harmoni to load, in order to save on startup time. (Gabe Schine)
-
Bug Fix: Numerous bug fixes in Harmoni, ActionHandler, LoginHandler (Gabe Schine)
-
New feature: Added a file under core/version.inc.php which holds the current harmoni versions. (Gabe Schine)
-
New feature: Implemented IDManager class under metaData/ to handle ID generation for the MetaData handler classes. (Gabe Schine)
-
Change: Updated HarmoniType OSID implementation to have a constructor that follows OKI's specifications. (Gabe Schine)
-
New feature: Services class now outputs a debug backtrace upon error.
-
Bug Fix: Fixed bug in optional arg-list for Services::startService that caused a syntax error in eval(). (Gabe Schine)
-
Change: Services class method startService($name) now takes optional additional arguments which are passed to the service class constructor. (Gabe Schine)
-
New feature: FormFieldSet class under 'utilities' combines FieldSet functionality with keeping track of changed values and easy validation. Intended for HTML Form use. (Gabe Schine)
-
Change: Various fixes to the OSIDs. Added 'requires' for classes being extended. Fixedsyntax errors. (Adam Franco)
-
New feature: Laid out a skeleton Shared Service implementation. Currently the shared manager only provides for the generation of unique IDs using a database. (Adam Franco)
-
New feature: Fully implemented the Hierarchy Service, the first of the OKI OSIDs to be implemented. The Hierarchy Service supports saving to a database as well as memory-only usage. (Adam Franco)
-
New feature: Harmoni Users's Guide stored locally in XML format. Wrote a gen-script in PHP using domxml to make pretty HTML interface. (Gabe Schine)
-
Change: LanguageLocalizer now uses gettext() functions instead of home-brewed. Included PO generators, "borrowed" from the Horde project (www.horde.org). (Gabe Schine)
-
Change: New OKI interfaces, OKI gen-scripts and token files added (under harmoni/oki and harmoni/core/tools/oki respectively) (Gabe Schine)
Version 0.0.2
2003-09-28
-
New feature: ActionHandler::forward($action) can now be called from within an action to continue execution. (Gabe Schine)
-
New feature: Services::registerObjectAsService() allows you to register an already-instantiated object as a service. (Gabe Schine)
-
Change: Services::requireService() now returns the started service. (Gabe Schine)
-
Change: LanguageLocalizer files can now have comments (designated by '#') and keys/valuesare trimmed. (Gabe Schine)
-
Change: Harmoni->execute() now returns the result from the action if outputHTML = false. (Gabe Schine)
-
Change: DebugHandlers now store an internal output level which is used when none is passed to the Printer. (Gabe Schine)
-
Change: LoginState now keeps track of both an Active and Logged-in agent. (Gabe Schine)
-
Change: Layouts & other VisualComponents now have setLevel() and getLevel() methods and store the level locally. (Gabe Schine)
-
Change: Template->output() now accepts a variable length argument list of FieldSets or hash tables. (Gabe Schine)
-
Change: Actions are now passed a reference to the Harmoni object. (Gabe Schine)
-
New feature: Databases now have a toDBDate() and fromDBDate() function to convert to the necessary Date format. (Gabe Schine)
-
New feature: Completed ActionHandler, LoginHandler and Harmoni classes and services. (Gabe Schine)
-
Change: Deprecated the createDatabase() method in DBHandler. Use addDatabase(), instead.This change was provoked by the fact that
Oracle requires different arguments to instantiate the DB object. (Dobo Radichkov)
-
New feature: Added RGBcolor and HTMLcolor classes. (Gabe Schine)
-
Change: Finished Layout, Theme and Template. (Gabe Schine)
-
Change: AuthenticationMethod includes changed to avoid random unprintable character output.
-
Change: FieldSetValidator and RuleSet now take optional argument on validate()/validateAll() functions specifying if errors should be thrown upon failure or not. (Gabe Schine)
-
Change: RuleSet can now accept an ErrorHandler to use via setErrorHandler(). (Gabe Schine)
-
New feature: DBHandler can now use a PostgreSQL server and fetching last insert ID works on all integrated DBs. (Dobo Radichkov)
-
Change: layoutHandler now works. Theme integration is to come. (Gabe Schine)
-
New feature: Database file storage method. (Max Ovsjanikovs)
-
New feature: Added interfaces for: VisualComponent, Layout, Menu, Content -- all part of the LayoutHandler. (Gabe Schine)
-
Change: AuthenticationResult now holds authenticated agent's system name as well as valid methods. (Gabe Schine)
-
Change: AgentInformationHandler now handles compiling of search results and returns the appropriate array format. (Gabe Schine)
-
Change: AuthenticationMethod::getAgentInformation now returns an associative array of [username]=>array([key1]=>value1,...),... (Gabe Schine)
-
New feature: Change-Log now held in an XML file and translated by XSL! (Gabe Schine)
Version 0.0.1
2003-07-10
-
Change: Changed AuthenticationMethod to allow for getAgentInformation(username,searchMode) so that one can search for a username/fullname etc as well as get information for a single entry. (Gabe Schine)
-
New feature: Added StatisticsHandler. (Max Ovsjanikovs)
-
Change: Updated DB and LDAP AuthenticationMethods to allow for user-info searching & tested backwards compatibility. (Gabe Schine)
-
Change: Changed naming scheme of packages so that they describe more clearly what they DO as opposed to what they CONTAIN. (Gabe Schine)