Skip to content
Find file
Fetching contributors…
Cannot retrieve contributors at this time
6048 lines (5280 sloc) 247 KB
[jan] Update Danish translation (Erling Preben Hansen <>).
Horde Changes
[mms] Fix regression where AJAX actions were not correctly checking permissions
and potential authentication expiration actions.
Address Book Changes
[jan] Fix importing vCard fields with lowercase TYPE attributes (Bug #13006).
[jan] Store full name in Kolab contacts.
[jan] Fix distribution list support in Kolab driver (Bug #12450).
Calendar Changes
[mjr] Fix triggering alarms for cancelled events (Bug #12928).
[mjr] Fix exporting recurring events with no recur_end value to CSV.
[mjr] No longer include AIRSYNCBASEBODY when exporting for ActiveSync if there
is no description.
[mjr] Properly set event status to Cancelled on Resource calendars when the
original event status is set to Cancelled.
[mjr] Fix updating free/busy display when updating event times (Bug #12676).
[mjr] Fix issue that could cause calendar sync to break when creating an
exception on EAS versions < 14.0
[jan] Fix rounding of start time when dragging events (Bug #11904).
[mjr] Fix fatal error when searching if Holiday driver is disabled (Bug
[jan] Ignore iCalendar alarms without action, and use first, not last alarm
(Bug #12865).
[mjr] Fix incorrect case comparison when synchronizing tags with Kolab (Bug
[mjr] Honor recurrence-id range values when deleting recurring events (Bug
[mjr] Fix deleting and sending iTip notifications for recurring events (Bug
[jan] Fix calculation of work week start if on a weekend.
[jan] Fix deleting calendars with exceptions to recurring events.
[jan] Fix fatal error if recurrence exceptions have timezones set (Bug #12801).
Tasks Changes
[jan] Don't return future tasks from cost objects API.
Notes Changes
[jan] Add Korean translation (Deokgon Kim <>).
[mjr] Fix unencrypting and saving a previously encrypted note (Bug #12890).
[mjr] Fix fatal error when exporting encrypted notes via ActiveSync.
[mjr] Fix saving note after saving failed due to mismatched passwords (Bug
Library Changes
[mjr] More workarounds for PHP 65776, preventing segfaults for text attachments
that contain inconsistent line endings.
[mjr] Rely on the IMAP adapter for returning accurate UID values after a
message move (Bug #13010).
[mjr] Expose public Horde_ActiveSync_Utils::ensureUtf8() method.
[mjr] Fix some issues caused by attempting to process iTip responses when
saving to sent mail folder (Bug #12956).
[mjr] Work around issues with clients that crash when receiving an empty body
element (Bug #12956).
[mjr] Improve device property management and forced-multiplex detecection.
[mjr] Attempt a fix for clients that duplicate calendar entries when tags are
received in a certain order (Bug #12741).
[mjr] Transparently handle moving from a non-MODSEQ IMAP server to a MODSEQ
server (Thomas Jarosch <>, Bug #12941).
[mjr] Fix handling of empty OPTIONS tags.
[mjr] More fixes for handling meeting responses sent by Outlook (Bug #12934).
[mjr] Fix some edge case issues that could cause issues in sending changes to
the client.
[mjr] Fix handling MEETING_RESPONSE requests for certain broken clients (Bug
[mjr] Add support for Recipient Information Cache collection.
[mjr] Fix issue with synchronizing recurring event series exceptions due to
missing properties in the exception object.
[mjr] Fixes to S/MIME support for issues that prevent the decrypting of S/MIME
encrypted email on certain clients.
[mjr] Improve error handling when state is lost and device continues to request
the same state despite being sent the proper status code.
[mjr] Fix returning device information from Mongo driver when multiple user
accounts exist on the same device.
[mjr] Improve detection of devices that cannot support non-multiplexed
[mjr] Add support for DocumentLibrary.
[mjr] Fix mailbox searching when number of results exceeds the requested RANGE
[mjr] Fix issue where attachments are not downloaded in certain situations on
EAS version 14+.
[mjr] Some fixes for EAS 14.0/14.1 ITEMOPERATIONS request parsing. Fixes issues
on some clients with broken email sync on Android 4.3 and 4.4.
[mjr] Fix issue that causes sync to break when SMS messages are deleted on the
client (Bug #12887).
[mjr] Add support for parsing TNEF data when possible (Bug #12882).
[mjr] Fix typo that was causing server side searching of mailboxes to fail (Bug
[mjr] Add workaround for inconsistent handling of POOMCONTACTS date fields that
causes fields like birthdays to become offset.
[mjr] Add ability to flag a specific device as blocked.
[mjr] Add ability to filter the list of devices on more than username.
[mjr] Attempt to recover old serialized data before forcing a repairing of
Email collections.
[mjr] Fix generating EAS folder uids for devices that can't tell the difference
between a string and an integer.
[mjr] Changes to support multiple non-email collections of the same type.
[mjr] Improvements to memory and database usage.
[mjr] Add MongoDB state driver.
[jan] Add getErrors() to return errors from alarm notifications.
[jan] Catch errors from alarm notifications (Bug #12951).
[jan] Fix compatibility with Oracle.
[jan] Add MySQL password hashing (Request #12962).
[rla] Add joomla encrypted password format (Request #12889).
[mms] Fix parsing salted SHA256 entries (Adam James
[mms] Remove duplicate paths when initializing the default Autoloader.
[mms] Add Horde_Autoloader_ClassPathMapper_PrefixString mapper implementation.
[mms] Use more efficient hashing algorithm, if available.
[mms] Saving cache data should be handled in a shutdown function, not a
[mms] Add Horde-specific prefix to filesystem cache name to allow for easy
[mms] Support msgpack for serializing the map lookup.
[mms] Detect Internet Explorer 11.
[mms] Cache prefix should be handled by Hashtable driver, not underlying
backend object.
[mms] Fix lifetime usage in the file driver.
[mms] Add 'no_gc' parameter to the Horde_Cache_Storage_File driver.
[mjr] Fix parsing TNEF data that does not contain a meeting request (Bug
[mjr] Fix tests when Horde_Mapi is not available.
[mjr] Add initial support for decoding TNEF meeting requests.
[jan] Don't try authentication to SMTP server if explicitly disabled (Bug
[mms] Fix hiding preferences if they are contained within a prefs container.
[mms] Added standardized/normalized mousewheelY javascript event handling to
[mms] Add nonce generation/checking to Horde_Session.
[mms] Application hook methods moved from Horde:: to Horde_Core_Hooks::.
[mms] Add 'fallback' option for the Horde_Registry#appInit() 'authentication'
[mms] Fix deauthenticating when a system-level logout event occurs.
[mms] Ensure that all text parts are Q-P encoded when signing a MIME part.
[mms] More efficient parsing in Horde_Crypt_Pgp_Parse.
[mms] Remove Horde_Crypt_Pgp#generateRevocation() (Bug #7375).
[mms] Fix submitting PGP keys to a public keyserver (Bug #10931).
[mms] PGP keyserver code now uses Horde_Http_Client to connect to the
[mms] Move PGP keyserver code to a separate Horde_Crypt_Pgp_Keyserver class.
[mms] Add Horde_Crypt_Pgp_Parse#parseToPart().
[mms] Move Horde_Crypt_Pgp#parsePGPData() to separate class
(Horde_Crypt_Pgp_Parse), since it can be used even if GnuPG binary is not
[mms] Horde_Crypt_Pgp#parsePGPData() now accepts a Horde_Stream object as an
[mms] Fixed comments parsing.
[jan] Fix date calculation if providing both a timestamp and a timezone (Bug
[mjr] Add ability to return human readable description of recurrence rules.
[mjr] Fix issue that could cause incorrect month values when populating an
empty date object.
[mjr] Fix handling of RRULE with full datetime UNTIL values (Bug # 12869).
[rla] Add aliases for Windows and Lotus timezone identifiers (Bug #11688).
[jan] Update to SabreDAV 1.8.9.
[jan] Fix synchronization with SOGo connector.
[jan] Update to SabreDAV 1.8.7/VObject 2.1.3.
[jan] Return generated (or manipulated) index name from addIndex().
[jan] Avoid cache collisions when changing adapters or configurations.
[jan] Add Horde_Db_Adapter_Base#writeCache() and readCache().
[jan] Add Horde_Db_Adapter#insertBlob().
[jan] Make value of Horde_Db_Value_Binary publically accessible.
[jan] Add Oracle driver (Request #11974).
[jan] Add Horde_Db_Adapter_Base_Schema#column() method.
[jan] Always re-throw PDOExceptions as Horde_Db_Exceptions.
[jan] Fix issues with active Turkish locale.
[jan] Always return a Horde_Db_Adapter_Base_Result sub-class from the select()
[jan] Don't ping server before each query in PDO drivers (Bug #12656).
[jan] Re-organize unit tests.
[jan] Make several methods abstract in Horde_Db_Adapter_Base.
[jan] Deprecate external usage of execute() method.
[jan] Don't submit disabled fields.
[jan] Make SQL backend compatible with Oracle.
[mms] Fix getting data from Redis clusters.
[mms] Fopen driver needs to handle URIs without a protocol scheme - default to
http (Bug #12991).
[mms] Fix updating cached flags list on a CONDSTORE-only server.
[mjr] Fix regression in obtaining bodypart size when BINARY extension is
[mms] Improved/more concise debug output.
[mms] Optimize sorting in Horde_Imap_Client_Ids object.
[mms] Workaround broken SASL capability responses from POP3 servers.
[mms] Prevent PHP error when a FETCH call is unsuccessful.
[mms] Relax type checking on cache driver object.
[mms] Fix obtaining bodypart size (Bug #12992;
[mms] More correct fix for Exception construction.
[mms] Fix regression where Horde_Imap_Client_Exception was inheriting from a
different class than before.
[mms] Use more efficient FNV1-32 hashing algorithm for internal hashtable
storage, if available.
[jan] Make SQL cache backend compatible with Oracle.
[mms] Optimizations to IMAP tokenizer.
[mms] Add raw error message text (in English) to Exceptions.
[mms] Add debug timing information for connection/commands.
[mms] Fix resetting capability list when internally cached authentication
information becomes invalid.
[mms] Fix updating message list in the hashtable cache driver when deleting.
[mms] When determining a sequence -> UID mapping, do sanity checking to make
ensure data is valid (Bug #12911).
[mms] Add a Horde_Hashtable specific cache driver.
[mms] Add remove() method to Horde_Imap_Client_Ids.
[mms] Don't login to IMAP server if namespace information is already cached.
[mms] Fix intermittent error when purging messages using a Horde_Cache caching
backend (Bug #12827).
[mms] Workaround broken IMAP servers that don't support the required AUTH=PLAIN
authentication method (Bug #12817).
[mms] Added direct TLS v1.x connection option when connecting to remote server.
[mms] Use SHA-1 instead of MD5 for internal hashing.
[mms] Correctly handle untagged BAD IMAP responses.
[mms] Added Horde_Imap_Client_Password_Xoauth2 class.
[mms] Fix harmless PHP undefined error when using with an IMAP server that
supports XOAUTH2.
[mms] Cache creation of Reflection objects when binding.
[mms] Initial release.
[mms] Initial release.
[jan] Correctly translate display-name attribute of distribution lists.
[mms] Only run shutdown task if the tasklist is currently incomplete.
[mms] More thorough job trying to parse addresses that contain an @ but no
domain information.
[mms] Correctly identify e-mail addresses without domain information when
[mjr] Clarify license is LGPL and fix package.xml/composer.json files.
[mjr] Initial release.
[mms] Fixed access to a non-visible internal method when performing actions on
[mms] Fix parsing MIME message that contains mixed EOLs (Bug #12842).
[mms] Initial release.
[mms] Need to expire SQL cache for all sub-permissions when deleting a parent
[mms] Correct fix for iteration of Horde_Prefs_Scope object.
[mms] More efficient reading of session data from filesystem in file driver.
[jan] Make SQL backend compatible with Oracle.
[mms] Add raw error message text (in English) to Exceptions.
[mms] Fix handling servers that don't support ESMTP (Bug #12853).
[mms] Fix returning reply code in Exceptions.
[mms] Added direct TLS v1.x connection option when connecting to remote server.
[mms] Added Horde_Smtp_Password_Xoauth2 class.
[mms] Handle transient socket connection issues.
[mms] Add 'tlsv1' as a secure parameter option in the Client constructor.
[mms] Fix packaging error.
[mms] Add the Horde_Stream_TempString class.
[mms] Add the Horde_Stream_String class.
[mms] Add 'all' parameter to Horde_Stream#getToChar().
[mms] Add unit tests.
[mms] Add Horde_Stream_Wrapper_Combine::getStream().
[mms] Add Horde_Stream_Wrapper_String::getStream().
[mms] Fix documentation regarding proper license for this package (BSD).
[jan] Add stubs for Horde_Registry_Loadconfig and
[mms] Add factory for a HashTable instance.
[jan] Correctly set up include paths on installed packages.
[mms] Restore error reporting level after running tests via
[mms] Move JSMin code to a separate package.
[mms] Initial release.
[mms] Add Horde_Translation#r() (raw gettext strings).
[mms] Optimize Horde_Url#toString().
[jan] Remove broken Kolab driver.
[mms] Add null VFS driver.
[jan] Support Oracle with SQL driver.
[mms] Update lz4 source to r108.
Horde Changes
[jan] SECURITY: Protect against CSRF attacks on share permissions form (Bug
[jan] SECURITY: Fix XSS vulnerabilities in top and left menu (Bug #12803).
[jan] Don't show admin alarm form if alarms are disabled.
[mms] Add horde-remove-user-data command-line script.
[mms] Add additional syntax checking for the configuration files in the test
[mms] Only update topbar if the underlying tree data has changed.
Address Book Changes
[jan] SECURITY: Fix XSS vulnerabilities when deleting address books.
[jan] Fix exporting selected contacts (Bug #12759).
[mms] Improved UI when viewing search results from Advanced Search.
[mms] Remove features from UI when VFS is not available or disabled.
[mjr] Fix filtering Facebook driver results (Bug #12739).
[jan] Gracefully deal with columns removed from the backend.
Calendar Changes
[jan] SECURITY: Protect against CSRF attacks on share permissions form (Bug
[jan] SECURITY: Fix XSS vulnerabilities when deleting calendars and resources.
[jan] Fix edge case that allowed to enter start time after end time (Bug
[mjr] Expire fb cache when fb_cals preference changes (Bug #12714).
[jan] Fix setting DTEND in iCalendar data if event has a timezone (Bug #12693).
[mjr] Fix importing new ActiveSync events created on the client with
[mjr] Fix some issues with recurring event exceptions due to improper timezone
handling (Bug #12630).
Tasks Changes
[jan] SECURITY: Fix XSS vulnerabilities when deleting task lists.
[jan] Fix updating alarm if completing a task recurrence.
[jan] Fix editing tasks via CalDAV (Bug #12745).
Notes Changes
[jan] SECURITY: Fix XSS vulnerabilities when deleting notepads.
[mjr] Fix removing a list of UIDs via the API (Bug #12790,
[mjr] Fix exporting memos as v-note (, Bug #12622).
Library Changes
[mjr] Improve performance related to conflict detection and change mirroring
[mjr] Return proper status codes when OOF is unavailable (Bug #12757).
[mjr] Fix fatal crash when conflict is detected (Thomas Jarosch
<>, Bug #12755)
[mjr] Fix returning contact image in GAL search for those clients that support
[mjr] Fix GAL searching for clients that depend on SEARCH_RANGE values.
[mjr] Fix some authentication issues when certain clients issue broken
AutoDiscover requests.
[mjr] Fix some minor issues with Autodiscover requests caught by unit testing.
[mjr] Remove dependency on unreleased Horde_Stream code.
[mjr] Work around for PHP bug 65776, preventing segfaults with certain emails.
[mjr] Remove loop counter code that was incorrectly growing sync_cache data
(Bug #12707).
[mjr] Ignore incoming SMS delete command. Prevents breaking sync on clients
that send SMS data, even though we do not return it as an available
[mjr] Prevent sending invalid UTF-8 data in the Subject header, which could
break sync in some clients.
[mjr] Support for SOFTDELETE.
[mjr] Fix possible infinite loop when a requested message is not found on the
serer during a SYNC request.
[mjr] Fix initializing Alarms when using PDO_Oci or PDO_PostgreSQL.
[mms] Password strength testing is now case-insensitive
(, Request #12708).
[mms] Fix key expiration for APC, Eaccelerator, and Xcache (Bug #12735).
[mms] Add Horde_Cache_Storage_Memoryoverlay driver.
[mms] Fix prototype.js issue in IE 9 regarding array iteration in a parent
[mjr] Ensure Bcc is removed from headers when sent via ActiveSync (Bug #12771).
[mjr] Fix calculating calendars to use for SOFTDELETE commands in certain
configurations (Bug #12765).
[mms] Upgrade jQuery Mobile to v1.3.2/jQuery Core to v1.9.1.
[mms] Add Horde_Core_Ui_FlagImage#getFlagImageObByHost.
[mms] Add base64img property to Horde_Themes_Image.
[mjr] Do not assume that the filter API is available (Bug #12757).
[mms] Add ability to load javascript via a HordeCore AJAX response (Request
[mms] Add ability to expire CSS cache based on file modification time.
[mms] Allow disabling VFS via the configuration interface.
[mjr] Send back dummy mail folders when the Mail API is not available (Bug
[mms] Upgrade prototype.js to most recent git version
[mms] Cache permission results within a PHP access.
[mms] Don't initialize unnecessary prefs object when creating the topbar.
[mjr] Support ActiveSync SOFTDELETE.
[mms] Respect 'nobase64_img' configuration when generating image tags (João
Machado <>).
[mjr] Support for X509 certificate authentication in ActiveSync requests.
[mjr] Fix calculating policy value for SD card encryption and device encryption
[mms] Merge from upstream - handle keywords/dimensions case-insensitively.
[mms] Performance optimizations in the parser.
[jan] Correct dates with very large days-of-month more efficiently (Bug #12615).
[jan] Don't limit the argument to Horde_Date_Utils::isLeapYear() to 4 digits.
[mms] Remove duplicate constructor.
[mjr] Only query History when we have a range of modSeq values to query
(, Bug #12660).
[mms] Explicitly reject XOAUTH2 as a authentication mechanism if it is not
configured in the client (Bug #12756).
[mms] Sort UID list before sending in QRESYNC parameter.
[mms] Ensure that INBOX always appears in subscribed mailbox list when using a
server that supports LIST-EXTENDED.
[mms] Fix regression where INBOX may not be recognized as subscribed, if the
server doesn't list it in the subscribed list.
[mms] Handle case-insensitive INBOX return from the server.
[mms] Use strict RFC-compliant workaround for servers that don't support the
UNSELECT IMAP extension.
[mms] Ensure Horde_Imap_Client_Base#search() always returns the 'count' value
(Bug #12682).
[jan] Fix incorrect usage of Horde_Db API in cache backend.
[mms] Workaround servers that don't advertise UIDL until after authentication.
[mms] Fix parsing continuation requests sent in SASL AUTH command (RFC 5034).
[mms] By default, use TLS if available and necessary to login to server.
[mms] Fix adding status information to listMailboxes() return when LIST-STATUS
is not available.
[jan] Fix modifying entries with modify().
[jan] Try starting TLS without querying the rootDSE (Bug #12157).
[mms] Add Horde_ListHeaders#headers().
[jan] Add a CLI formatter and handler.
[mms] Discard personal information when it is identical to e-mail address.
[mms] Fix regression that broke quoted-printable encoding.
[mjr] Work around broken PHP behavior that could cause a segfault when encoding
certain strings as quoted-printable.
[mjr] Prevent data loss due to forced selection of incorrect database.
[mms] Fix iteration of Horde_Prefs_Scope object.
[mjr] Correctly catch HTTP client exceptions.
[mjr] Correctly catch HTTP client exceptions.
[mms] Fix handling EOLs split on a stream bucket boundary (Bug #12763).
[mms] Fix escaping periods that begin a line of DATA input.
[mms] Explicitly reject XOAUTH2 as a authentication mechanism if it is not
configured in the client.
[jan] Fix reading translations in PEAR-installed package.
[mms] Fix parsing SMTP error message on servers that support
[mms] Fix aborting a pipelined DATA command if only a subset of recipients were
rejected (Bug #12659).
[mms] Don't auto-detect TLS availability again once we have done initial
[mms] Initial release.
[mms] Fix spellchecking within the ALT HTML tag (Bug #12610).
[mms] Add Horde_Stream#substring().
[mms] Fix getString() in certain use cases.
[mms] Horde_Stream#getToChar() now supports multiple characters in search
[mms] Horde_Stream#search() now supports multiple characters in search string.
[mms] Add ability to get UTF-8 character length of stream from
[mms] Add length argument to peek().
[mms] Add Horde_Stream#close().
[mms] Add support for parsing UTF-8 characters in stream via
[mms] Add Horde_Stream#eof().
[mms] Add Horde_Stream#end().
[mms] Add Horde_Stream#seek().
[mms] Add Horde_Stream#rewind().
[mms] Add Horde_Stream#pos().
[mms] Add Horde_Stream#__destruct().
[mms] Fix EOL filter when multi-character EOL is split between incoming buckets
(Bug #2673).
[mms] Fix autoloading from a PHP-defined namespace.
[mms] Fix issue from upstream jsmin.c that was breaking parsing of a keyword
immediately followed by a regexp (Bug #12787).
[mms] Merge upstream updates to JsMin filter.
[jan] Fix broken offsets during first zone rules.
[jan] Make BYMONTHDAY property as short as possible.
[jan] Fix missing time of day in DTSTART and UNTIL properties.
[jan] Don't create transitions that overlap.
[jan] Use orginally requested time zone instead of alias in TZID.
[jan] Bump minimum version of SSH2 extension to 0.12.
[jan] Fix fatal errors if DAV support is disabled (Bug #12481).
Horde Changes
[jan] Fix fatal error on ActiveSync preferences page (Bug #12631).
[mjr] Fix issue displaying ActiveSync pref page when it contains a wiped
device entry.
[mms] Allow non-authenticated AJAX actions to be defined.
[mms] Improved session administration UI (Request #12515).
[jan] Make "Others" and cogwheel menu entry available on iOS (Bug #11937).
Address Book Changes
[mjr] Fix deleting multiple contacts via the API (Bug #12554).
[mjr] Fix issue generating contact hashes from EAS contacts that could prevent
duplicate contact detection from working when certain properties have
empty values (Bug #12506).
Calendar Changes
[jan] Fix inconsistent handling of all-day events (Bug #12627).
[mjr] Fix infinite loop for Kolab driver when event has recurrence (Bug #12160,
Thomas Jarosch <>).
[jan] Fix synchronization of shared events in Kolab driver (Thomas Jarosch
<>, Bug #12585).
[jan] Link to CalDAV help text from calendar dialog.
[mjr] Fix requesting changes by modification sequence (Bug #12508, Thomas
Jarosch <>).
[mjr] Fix subscribing to internal calendars via subscription URL (Bug #12495).
Tasks Changes
[jan] Fix highlighting task type tabs in list view.
[mjr] Fix requesting changes by modification sequence (Bug #12507, Thomas
Jarosch <>).
File Manager Changes
[jan] Fix saving columns preference if only one backend exists (Bug #12003).
Timeobject Changes
[jan] Fix timeobjects not showing up in the administration (Bug #12365).
[jan] Add Spanish translation (Manuel P. Ayala <>).
Library Changes
[mjr] Allow authentication to still be attempted without an available password,
allowing for the use of setups using client certificates.
[mjr] Fix Wbxml output of SEARCH_TOTAL and SEARCH_RANGE values in SEARCH
responses (Bug #12624).
[mjr] Allow reducing the amount of tag content that is logged to the Wbxml log.
[mjr] Fix broken wbxml in certain cases due to incorrect handling of encoding
empty array values (Bug #12595).
[mjr] Detect IMAP message deletions on non-CONDSTORE servers during PING
requests (Request #12597, Thomas Jarosch <>).
[mjr] Do not initiate a looping SYNC if there were any incoming changes, this
prevents an unnecessary backend ping for each collection.
[mjr] Fix issue that could cause message deletions on the server to not be
trasmitted to the client if the message falls outside of the FILTER
window and the IMAP server does not support CONDSTORE.
[mjr] Don't filter out messages flagged as DELETED during initial sync request.
[mjr] Fix issue that could cause corrupt email attachment downloads on certain
webservers due to PHP flushing the output buffer (Bug #12486).
[mjr] Output X-MS-RP header to advertise to clients that a more recent EAS
version is supported on the server.
[mjr] Fix issue that could lead to email being duplicated on client due to
incorrect Collection Type being detected for unsolicited SMS data (Bug
[mjr] Fix decoding EAS Timezone blobs on Big Endian systems.
[mjr] Fix race condition where changes may not be sent to the client due to a
combination of a long running MOREAVAILABLE sync and server side changes.
[mjr] Do not ask the IMAP server to fetch flags if we don't have an empty imap
search result (Bug #12551).
[mjr] Fix typos that could cause some sync actions to fail (Bug #12548 and
#12523, Thomas Jarosch <>).
[mjr] Ensure proper failure codes are returned when a client addition fails to
be added to the backend during a PARTIAL sync.
[mjr] Fix obtaining the timestamp of the last successful sync when backend uses
modification sequences (Bug #12529).
[mjr] Fix broken Email sync due to clients that send unsolicited SMS data (Bug
[mjr] Fix returning incorrect syncstamp when adding, editing, or deleting
messages and backend uses modification sequences (Bug #12523).
[mjr] Fix bug that could cause a sync loop if history data is removed or a
collection is empty and therefore has no history data (Bug #12531).
[mjr] Fix filtering out changes due to incoming client email requests in
certain cases.
[mjr] Send empty POOMMAIL_CATEGORIES tag as Exchange does.
[mjr] Fix sending deletion commands to clients when an item is created on one
EAS client, but deleted on another EAS client.
[mjr] Add X509 authentication driver.
[mms] Improved error handling/logging when system temporary directory is not
[mms] Don't cache missing class paths.
[mms] Purging the autoloader cache no longer requires knowledge of the various
SERVER_NAME settings used on a given system.
[mms] Detect stock N900 browser as mobile browser (Request #12613; Thomas
Jarosch <>).
[jan] Fix certain sizes reduced by factor ten (Bug #12462).
[mjr] Always honor activesync_replyposition pref (Bug #12636, Thomas Jarosch
[rla] Add support for external links in topbar (Request #11977).
[mms] Fix active session counting from CLI script (Bug #12628).
[mms] Fix regression in authenticating to an application when a session is
[mms] Update session data stored with secret key if session ID changed and we
are using non-cookie based sessions.
[mms] Horde_Session now handles resetting the secret key on login.
[mms] Add Horde_Session::ENCRYPT flag for session data.
[mms] The Horde_Mail factory now uses Horde_Smtp as the underlying SMTP driver
instead of Net_SMTP.
[mms] Don't redirect to current page's URL when logging out with a custom
message (Bug #12538).
[mjr] Ensure modseq values are always integers which prevents sync loops when
no history data is available (Bug #12531).
[mms] Ensure Registry exists in error handler before attempting to access it
(Bug #12540).
[jan] Remove text overlaying menu icon (Bug #12496).
[mms] Log unexpected authentication errors at a NOTICE level instead of EMERG.
[mms] SessionHandler should not use HashTable wrapper, as it explicitly can't
be serialized.
[jan] Fix detecting bad PGP signatures on some systems with non-English locales
(Bug #10273).
[jan] Fix installation path for translations.
[jan] Fix schema version table names when using horde-db-migrate-component.
[jan] Update Ukrainian translation.
[mms] Add read-only property indicating whether driver supports locking.
[mjr] Add method to get the most recent history entry for any given id (Thomas
Jarosch <>, Request #12558).
[mjr] Further fixes for database migration issues, very index name and
existence before removing (Bug #12498).
[mjr] Correctly remove unused index, readd erroneously removed indexes.
[mms] Fix usage of removeIndex().
[mms] Fix migrations nos. 4 & 5.
[mjr] Add index for better modseq query performance in sql driver (Bug #12476).
[mjr] Fix expiring the log cache when logging a new entry.
[jan] Provide more useful messages when throwing exceptions.
[mms] Added the 'statuscache' property to Horde_Imap_Client_Base (Request
[mms] The 'xoauth2_token' parameter now accepts a
Horde_Imap_Client_Base_Password object.
[mms] Deprecated the 'encryptKey' parameter and instead support passing a
Horde_Imap_Client_Base_Password object into the 'password' parameter.
[mms] Added the Horde_Imap_Client::STATUS_FORCE_REFRESH flag.
[mms] Fix regression in setting CAPABILITY for IMAP servers that don't
automatically send this information after login.
[mms] Fix regression in POP3 SASL PLAIN authentication command.
[mms] Fix regression in mapping message sequence numbers to UIDs when doing an
'all' activity in POP3.
[mms] Added support for the Google XOAUTH2 authentication mechanism for the
IMAP Socket driver.
[mms] Fix regression in retrieving CAPABILITY information after we login.
[mms] Fix regression in caching for POP3 servers.
[mms] Cache any data returned from POP3 capability sniffing.
[mms] Add remote POP3 server test.
[mms] Fix sniffing capabilities for POP3 servers that don't support the CAPA
[mms] Fix returning list of expunged UIDs when expunging all messages in a
mailbox that doesn't support CONDSTORE (Bug #12559).
[mms] Translate mailbox names from UTF7-IMAP -> UTF-8 in return from
Horde_Imap_Client_Base#getMetadata() (Bug #12541).
[mms] Added the Horde_Imap_Client::STATUS_RECENT_TOTAL return option to
[mms] More graceful handling of servers that return broken FETCH information
(Request #12441).
[jan] Fix saving all day events when the end date is on the next day (Thomas
Jarosch <>, Bug #12627).
[jan] Catch errors in Kolab_Storage_Driver_Imap#fetchComplete() (Thomas Jarosch
<>, Bug #12584).
[jan] Retrieve status changes during running requests (Thomas Jarosch
<>, Bug #12589).
[mms] Workaround broken Net_SMTP handling regarding the end of message data
(Bug #12614).
[mms] Added the Horde_Mail_Transport_Smtphorde driver.
[mms] Added the 'bare_addresses_idn' property to Horde_Mail_Rfc822_List.
[mms] Added the 'bare_address_idn' property to Horde_Mail_Rfc822_Address.
[jan] Fixed connection to Memcache servers.
[mms] Immediately throw exception when no servers can be connected to.
[mms] No need to serialize logging object twice.
[mms] Remove stream filters before returning stream to calling code.
[mms] Support Horde_Mail_Transport_Smtphorde when sending messages.
[mms] Net_SMTP does not support sending via BINARYMIME.
[mms] Fix parsing broken multipart messages (Bug #12536).
[mms] Use the correct EOL string when transfer encoding content (Bug #12452).
[jan] Fix unserialization notices in SQL driver.
[jan] Don't set default value for TEXT column.
[rla] Add Db backend for Queues.
[cjh] Add Horde_Queue_Runner#runTask().
[cjh] Allow RequestShutdown runner to handle tasks that spawn other tasks.
[jan] Try to parse error message from json-formated error response.
[mms] Fix session ID tracking for the Hashtable driver.
[mms] Fix rare race condition when creating file-based session data for the
first time (Thomas Jarosch <; Bug #12557).
[mms] More robust way of checking for locking in a HashTable instance.
[mms] Transparently handle required TLS connection when no security was
[mms] Change default security to use TLS, if available.
[mms] Fix storing password object in the Horde_Smtp object.
[mms] Deprecated the 'password_encrypt' parameter and instead support passing a
Horde_Smtp_Password object into the 'password' parameter.
[mms] Fix DIGEST-MD5 authentication method.
[mms] Added support for the Google XOAuth2 authentication mechanism.
[jan] Fix detecting if connection to SMTP server fails.
[mms] Initial release.
[mms] Add Horde_Stream#getEOL().
[mms] Horde_Support_Stub now handles array-like accesses.
[jan] Define missing Horde_Test_Stub_Registry property.
[mms] Use strpos() instead of preg_match() for simple string searches (Thomas
Jarosch <>, Request #12603).
[jan] Allow collections with arbitrary keys when rendering partials.
[mms] Update LZ4 source to r99.
[mjr] Add API methods for using history modification sequences.
Horde Changes
[jan] Set Basic Authentication HTTP headers if running PHP as CGI.
[jan] Return to original URL after logging in.
[jan] Fix login icon.
[jan] Enable Turkish translation on PHP 5.5.
[rla] Add a cli script for running queue tasks.
[jan] Create parent permissions too if automatically creating permissions (Bug
[mjr] Update Twitter block layout to honor Twitter's API version 1.1 display
requirements, and add support for updating favorites.
Address Book Changes
[jan] Import and export UID vCard attributes (Bug #12427).
[mjr] Honor the 'browse' setting when attempting empty searches.
[jan] Set generic 'phone' attribute when importing from vCard (Bug #12329).
Calendar Changes
[jan] Display CalDAV URL of system calendars and tasklists (Bug #12342).
[jan] Fix system calendar listing via WebDAV.
[rla] Add system calendar support for Kronolith CalDAV access (Request #12342).
[mjr] Fix automatically adding organizer as attendee in dynamic view.
[mjr] Prompt for sending cancellation iTip when deleting an event (Bug #12415).
[rla] Properly display system-owned calendars when browsing DAV (Bug #12325).
[mjr] Fix setting RECURRENCE-ID field when exporting ics file (Bug #12368).
[jan] Fix propagating calendar URLs if import/export is turned off.
Tasks Changes
[jan] Display CalDAV URL of system tasklists (Bug #12342).
[mjr] Only query Horde_History when it's required.
[jan] Fix system tasklist listing via WebDAV.
[rla] Add system tasklist support for Nag CalDAV access (Request #12342).
[jan] Fix task description tooltip (Bug #12421).
[mjr] Persist the tasklist and parent when creating a new task and using "Save
and New" (Bug #12400).
[mjr] Fix tag browsing of shared tasklists (Bug #12405).
[mjr] Fix importing VTODOs containing RELATED-TO fields (Bug #12355).
Bookmarks Changes
[mjr] Fix some minor issues with crawling bookmarks.
[mjr] Show recently used tags on-demand (Bug #11712).
Tagging Changes
[mjr] Fix obtaining tag cloud information when filtering by objectIds.
Library Changes
[mjr] Fix off by one error when checking WINDOWSIZE, which breaks syncing with
clients that have broken WINDOWSIZE implementations (Bug #12443).
[mjr] Fix bug that causes incorrect MIME truncation when the client requests no
MIME truncation (Bug #12437).
[mjr] Fix returning proper values for the
Horde_ActiveSync_Message_SendMail::replacemime property. The could cause
replying to email with some EAS 14+ clients to fail.
[mjr] Fix SmartReply/SmartForward commands when the client does not send Wbxml.
[mjr] Fix some fringe cases where client initiated message deletion may fail.
[mjr] Work around some broken behavior in Blackberry clients (Bug #12370).
[mjr] Fix regression that caused MEETINGRESPONSE requests to fail (Bug #12403).
[mjr] Fix ITEMOPERATIONS requests under 14.1.
[mjr] Fix issue the could cause sync to fail if an incorrectly formatted email
date header is encountered.
[mjr] Filter out email that falls outside of FILTERTYPE on CONDSTORE servers as
well (Bug #12360).
[mjr] Fix detecting changes for servers without CONDSTORE and a non-zero
FILTERTYPE (Bug #12316).
[mjr] Fix fetching email messages from search results using ITEMOPERATIONS
command (Bug #12212).
[jan] Add Spanish translation (Manuel P. Ayala <>).
[mjr] Add support for SyncStamps - either timestamps or backend controlled
modification sequences.
[jan] Add password policy for minimum number of non-alphabetic characters
(Friedrich Haubensak <>, Request #12243).
[jan] Fix resetting passwords with LDAP driver (Bug #12317).
[mms] Fix authentication with the Http auth driver.
[mms] Fix explicit key expiration (João Machado <>).
[jan] Print additional error details in fatal errors if available.
[jan] Fix Dbx and Tar unpacking on PHP 5.5+.
[mms] Silence decompression warnings.
[mjr] Fix sending s/mime signed email from EAS clients (Bug #12445).
[mms] Correctly logout when a Horde_Exception_AuthenticationFailure is handled
by the default Horde error handler.
[mms] Don't convert image data URLs already contained within a CSS file when
compressing (João Machado <>).
[mms] Prevent endless loop when checkExistingAuth() test fails when
initializing an application.
[mjr] Fix issue with replying to emails using EAS 14+ that was causing
duplicated original message bodies for some clients.
[mjr] Performance improvements to Horde_Core_TagBrowser when fetching related
[mjr] Fix bug in TagBrowser causing shared resources to be ignored (Bug
[jan] Fix returning the default from address from a different user without
[jan] Fix inactive email fields with multiple addresses if disabling linking
(Bug #12051).
[mms] Use built-in ISO 639 mapping in LanguageDetect factory if the underlying
library supports it.
[jan] Fix rendering of email addresses in inactive forms.
[jan] Fixed displaying photos in rendered vCard files.
[jan] Fix CalDAV/CardDAV access from iOS devices.
[mjr] Fix obtaining IMSP objects from Horde_Core_Factory_Imsp_Auth.
[mjr] Fix ActiveSync folder generation when email support is disabled (Bug
[mms] Fix language selection at login (Bug #12338).
[mjr] Add support for history modification sequences in ActiveSync driver.
[mjr] Fix incorrect offsets when generating free/busy data for ActiveSync
[mms] Add Horde_HashTable to dependency list (Bug #12314).
[jan] Don't overwrite host part of parsed email addresses (Bug #12302).
[mms] SECURITY: Fix XSS vulnerability in Horde_Crypt_Smime#certToHTML() (João
Machado <>).
[jan] Fix installation path of \Sabre\VObject\Document.
[rla] Add system share support for CalDAV (Request #12342).
[jan] Fix PUTing content from the input stream to the backend.
[jan] Update to SabreDAV 1.8.6.
[mms] Use changed behavior of '_formvars' in Horde_Variables.
[mms] Workaround broken redis installations that don't support the keys()
command (Bug #12416).
[jan] Use Horde_Cache instead of Horde_HashTable for caching.
[mjr] Add support for modification sequences.
[mms] Abstract history query caching to use Horde_HashTable.
[cjh] Add ability to cache history queries.
[jan] Fix generating DATE-TIME attributes with timezone information (Bug
[jan] Fix returning multiple attribute properties of the same name (Bug
[jan] Remove group identifiers from attribute types (Bug #12329).
[mjr] Fix generating center image crops on Solaris systems that still use older
Bourne shell.
[mms] Fix regression in handling response codes in POP3 driver.
[mms] Fix clearing data from the MongoDB cache.
[mms] So many IMAP servers have issues with BINARY, that we should not send
literal8 data unless we absolutely have to.
[mms] Remove read/write buffering from stream connection to remote server.
[mms] Ensure we only use literal8's in APPEND commands.
[mms] Abstract connection code into separate library, to better handle output
buffering and error handling.
[mms] Fix regression in throwing exceptions when parsing POP3 server responses.
[mjr] Fix some undefined constant errors.
[jan] Re-throw ReflectionExceptions as Horde_Injector_Exceptions.
[mms] Honor 'pipelining' configuration option in SMTP transport driver.
[mms] Fix handling of large items (João Machado <>).
[jan] Fix setting a different body if reusing a Horde_Mime_Mail object.
[mms] Update MIME extension mapping.
[mms] Fix Horde_Mime_Part::getRawPartText() when obtaining the first body part
of a single part message.
[mms] Fix checking/creating indices when a MongoCollection object is passed to
checkIndices()/createIndices() (Bug #12353).
[mms] Add ability to override locked pref status when setting value via
[mjr] Fix fetching user mentions.
[mjr] Use API version 1.1
[mjr] Add support for favorites.
[mjr] Fix setting permissions while saving shares when using the sqlng driver
(Bug #12413).
[mms] SECURITY: '_formvars' form input must now be JSON encoded, not PHP
[jan] Return more detailed error messages from File driver.
Address Book Changes
[jan] Fix searching in LDAP address books (Bug #12297).
Calendar Changes
[jan] Add help text for CalDAV usage.
Library Changes
[mjr] Fix some issues caused by broken non-mime part truncation.
[mjr] Fix handling MIMETRUNCATION for emails with attachments (Bug #12289).
[mjr] Fix missing email body data for certain clients (Bug #12203).
[mjr] Fix requesting email data via ITEMOPERATION command (Bug #12292).
[mjr] Fix a BC break that was causing FOLDERSYNC requests to f fail.
[mjr] Fixes for broken clients like the S3 that request SMS sync even when told
there is no SMS collection.
[mms] Fix return from get() when using the Hashtable driver.
[mms] Fix hashtable driver name.
[mms] Horde_Memcache cache driver is now deprecated in favor of the
Horde_HashTable driver.
[mms] Add Horde_HashTable cache driver.
[jan] Don't break existing unchanged sources in the preferences.
[mms] Be more lenient about mailboxes containing null characters in
Horde_Imap_Client 2.x for BC reasons.
[mms] Fix flushing debug buffer when unexpected data is returned from the
remote server.
[mms] Improved detection of client-side command errors before sending to the
remote IMAP server.
[mms] Better sanity checking that we don't send binary data for mailbox
[mms] Horde_Memcache driver is now deprecated in favor of the Horde_HashTable
[mms] Added Horde_HashTable driver.
[mms] Implement logging for all storage drivers.
[jan] Add file manager and bookmarks manager.
Horde Changes
[mms] Add 'ajaxaction_handle' hook and deprecate 'ajaxaction' hook.
[mms] Add configuration option to configure the e-mail address reset password
confirmation messages should be sent from.
[mms] Treat an AJAX session token failure as a session timeout.
[mms] Add ability to update/create NoSQL indices from the admin config page.
[mjr] Add activesync device hooks.
[mms] Add a global default NoSQL driver configuration.
[mms] Allow MongoDB to be used as a cache backend.
[jan] Check all installed PEAR packages when checking for updates.
[mms] Add 'ajaxaction_data' hook.
Address Book Changes
[mms] Back button in smartmobile view for group member returns to group entry,
not browse list.
[mms] Fix resetting smartmobile entry page when viewing more than 1 contact.
[mjr] Update the default SQL schema.
[jan] Fix incorrect dependencies.
[jan] Add CardDAV server support.
[mjr] Update the default SQL source schema (Request #11993).
[mms] Add links to group members on smartmobile entry page.
[mms] Add group icon to group contacts in smartmobile browse view.
[jan] Allow to search all search fields at once in basic searching.
Calendar Changes
[jan] Fix editing of events per CalDAV if client sends LAST-MODIFIED attribute
(Bug #12244).
[jan] Fix incorrect dependencies.
[jan] Add CalDAV server support (Request #4267).
[jan] Use Horde_Dav for accessing remote calendars.
[mjr] Expose Kronolith_FreeBusy::get() via the external API.
Tasks Changes
[jan] Don't include external tasks in listTasks() API results.
[jan] Fix incorrect dependencies.
[jan] Add CalDAV server support (Request #4267).
[jan] Update design to closer match the Horde 5 UI.
Notes Changes
[jan] Fix incorrect dependencies.
[jan] Add Ukrainian translation (Andriy Kopystyansky <>).
[mjr] Add support for ActiveSync synchronization of notes.
Library Changes
[mjr] Improvements to synchronizing reply/forward state and maillog entries
when using Outlook.
[mjr] Improvements and various fixes to detecting client originated changes.
[mjr] Fix numerous issues related to incoming changes with GETCHANGES
explicitly set to false.
[mjr] Fix mirroring back changes when an object created on the client is edited
on the same client within 1 sync cycle.
[mjr] Fix mirroring new entries created on certain clients back to the client.
[mjr] Fix creating new objects from Outlook clients.
[mjr] Fix setting incoming heartbeat value.
[mjr] Fix sending updated heartbeat interval when requested heartbeat is out of
[mjr] Fix building initial message state in certain cases for email collections
when IMAP server does not support per mailbox MODSEQ values.
[mjr] Fix fatal error when using the deviceCallback functionality (Bug #12236).
[mjr] Fix creating/deleting mailboxes with non-empty default namespaces (Bug
[mjr] Fix non-BC change in abstract method signature.
[mjr] Flag changes will now trigger a positive PING/SYNC if the IMAP server
supports per-mailbox MODSEQ and CONDSTORE.
[mjr] Add support for EAS 14.0 and 14.1 (see for complete feature list).
[mjr] Fix synchronizing certain recurring tasks (Bug #12223, Thomas Jarosch
[mjr] Fix issue that could cause some attachments to become corrupt on the
[mms] SECURITY: Fix token validation of AJAX actions.
[mms] Added Horde_Core_Factory_Mail factory to allow for alternative mailer
[mms] Fix honoring the sendmail_eol configuration option.
[mms] Make sure we are not using a SQL Cache driver in the DB object itself.
[mms] Horde_Memcache usage is deprecated in favor of Horde_HashTable.
[mms] Add factory for Horde_HashTable drivers.
[jan] Fix dependencies.
[mjr] Workaround some limitations with maillog and answered flag syncing in
Outlook 2013
[mms] Add the Horde_Registry_Application#nosqlDrivers() method.
[mms] Add the Horde_Core_Nosql library.
[jan] Fix setting configuration for timezone lookups.
[mms] Add a NoSQL factory.
[mms] Allow MongoDB to be used as a cache backend.
[mms] Regenerate session IDs during an active session to protect against
session fixation attacks.
[mms] Re-enable support for $conf['session']['timeout'] to allow for
non-session based cookie lifetimes.
[jan] Add menu entry to show the notification log.
[mms] Dynamic javascript framework now has support for audio notification
[mjr] Add support for EAS 14.0 and 14.1 (see for complete feature list).
[mms] Add ability to submit form data to AJAX action in smartmobile view.
[mms] Upgrade jQuery Mobile to v1.2.1/jQuery Core to v1.8.3.
[mms] Smartmobile view now honors the current CSS caching configuration.
[mms] Add Horde_Core_Ajax_Application#callAction().
[mjr] Close growler notification when alarms are dismissed (Bug #12122).
[mms] CSS parsing now uses the CSS3 compatible Horde_Css_Parser package instead
of Horde_Text_Filter_Csstidy.
[mms] Fire before/after events in core AJAX javascript code when processing
data returned from the server.
[mjr] Fix sending encrypted emails while locating recipient's public key via
the GAL.
[jan] Use PEAR package information to retrieve packages names in
[jan] Get version list from when checking for updates.
[mms] Add support for 'ajaxaction_data' hook (won't be documented in Horde
until 5.1+).
[jan] Fix empty collections if applications don't provide DAV methods (Bug
[jan] First beta release.
[mms] Add initial unit tests.
[mms] Add memory driver.
[mms] Actually have HashTable return results for get() and exists().
[mms] Add stats() method to the Memcache driver (Bug #12263).
[jan] Fix fatal errors.
[mms] First beta release
[mms] Add Horde_Mongo_Client#checkIndices() and
[mms] Add Horde_Mongo_Collection_Index interface.
[mms] First beta release.
[jan] Use Horde_Dav for DAV RPC backends.
[jan] Update Ukrainian translation (Andriy Kopystyansky
[jan] Update Basque translation (Ibon Igartua <>).
[jan/mms] Improve/fix unit tests.
[jan] Improve dependency detection.
Horde Changes
[mms] SECURITY: Fix XSS vulnerability on smartmobile portal page (João Machado
[jan] Fix changing expired passwords.
[jan] Fix form to reset passwords.
[mjr] Fix displaying activesync devices when a username hook is being used
(Bug #12186).
[jan] Hide navigation elements from print layout (Bug #12163).
[cjh] Add support for New Relic real-user monitoring (RUM) if New Relic is
[mms] Login screen now hides the mode input if javascript is not available, as
minimal view is the only supported mode (Request #12093).
[jan] Fix searching from topbar if search URL contains parameters.
Address Book Changes
[mms] SECURITY: Fix XSS vulnerability on smartmobile contacts details page
(João Machado <>).
[jan] Fix importing certain phone fields from vCard (Bug #12178).
[mjr] Fix issues with importing contacts via ActiveSync when no default_dir
pref is set (Thomas Jarosch <>, Bug #12188)
[mjr] Fix ActiveSync global address book searches when using LDAP as backend
(Bug #12089).
Calendar Changes
[jan] Don't throw error on importing events with unknown timezones (Bug
[jan] Don't send notifications for all recurrence exceptions when deleting
[jan] Only send update notifications for local calendars.
[jan] Re-enable users in drop-down list after revoking permissions (Bug
[jan] Fix exporting events of a certain time span (,
Bug #12074).
[mjr] Always populate the meetingstatus property in ActiveSync requests to
avoid issues with some versions of iOS (Bug #12056).
[mjr] Fix deletion of resource events after deleting resource (Bug #12034).
Tasks Changes
[jan] Fix recurring tasks in Kolab driver (Thomas Jarosch
<>, Bug #12222).
[mjr] Fix setting alarm time when syncing (Bug #12201,
[mjr] Fix issue causing due dates to be offset when syncing (Bug #12200,
[jan] Fix listing alarms of recurring tasks.
[jan] Fix default task list in portal block (Bug #12133).
[jan] Fix displaying of due dates of recurring events in some views.
[jan] Update broken rows due to migration bug in PostgreSQL (Bug #12101).
[mjr] Fix uncompleting tasks from task view in smartmobile view
(, Bug #12098).
[jan] Include parent tasks in cost object labels.
[jan] Only return completed tasks up to a week old as cost objects.
[mjr] Set correct timezone on incoming ActiveSync tasks (Bug #12053).
[jan] Update French translation (Paul De Vlieger
Library Changes
[mjr] Fix returning message property values when the value is defined, but
empty (Bug #12197).
[mjr] Fix saving IMAP folder state when CONDSTORE is available but no
per-mailbox MODSEQ.
[mjr] Fix mail synch failure due to messages being deleted on server during
initial synch.
[mjr] Fix issue with importing messages due to bad merge (Bug #12185).
[mjr] Fix typo that could cause device information to not be saved correctly.
[mjr] Fix authentication clean up during certain request types.
[mjr] Work around broken HTC clients when creating appointments with no
reminders (Bug #12155).
[mjr] Fix setting User Agent value for certain clients in EAS 12.1 or greater
(Bug #12154).
[mjr] Properly set disposition and content-id properties when building
attachments from multipart/related parts (Bug #12123).
[mjr] Various improvements and code cleanup.
[mjr] Some fixes to GETITEMESTIMATE requests.
[mjr] Logging improvements.
[mjr] Fix regression introduced in 2.2.1 caused by fix for Bug #12056.
[mjr] Fix synchronizing email messages containing ICalendar attachments with no
METHOD parameter (Bug #12083).
[mjr] Fix updating state when a PING detected changed has been removed before
SYNC runs (Bug #12075).
[mjr] Always output the optional POOMCAL_MEETINGSTATUS property to avoid issues
with some versions of iOS (Bug #12056).
[jan] Fix documentation formatting.
[jan] Add extensive documention.
[jan] Improve documentation.
[mms] Additional sanity checking when trying to load from cache.
[mms] Add support for horde_lz4 for compressing cache data.
[mms] Better error-checking when uncompressing cache data.
[mms] Add MongoDB cache driver.
[mms] Make Horde_Compress_Fast a required package (Bug #12166).
[mms] Fix serialization of all storage drivers.
[mms] Fix regression preventing compression of Horde_Cache data (Bug #12088).
[mms] Abstract data compression out into Horde_Compress_Fast package.
[mms] Silence decompression warnings.
[mms] Add horde_lz4 compression driver.
[mms] Initial release of package.
[jan] Fix error handler in some PHP versions (Bug #12103).
[mms] Queue log entries issued before framework is initialized and log them
once that occurs.
[mjr] Fix authentication issue when using Horde_Session_Null and expiring
sessions (Bug #12078).
[mjr] Fix logger creation during RPC access (Bug #12094).
[mms] Add logging wrapper class to reduce serialized size of factory-created
[mms] Always compress cache data, if possible.
[mms] Abstract data compression out into Horde_Compress_Fast package.
[mjr] Fix fatal error synchronizing an ActiveSync meeting response (Bug
[mms] Added Horde_Shutdown - global Horde shutdown function handler.
[mjr] Horde_Registry::getServiceLink() can now return full URLs.
[mms] Allow graphics/sounds to be loaded from view-specific theme directories.
[mms] Add Horde_Themes::viewDir().
[mms] Use csstidy library to parse CSS files when creating static CSS (Bug
[mms] Add Horde_Url#selfUrlParams().
[mjr] Fix determination of ActiveSync sent-mail folder in certain cases (Bug
[mms] Fix order of adding URL parameters in HordeCore.addURLParam (Bug #12058).
[mms] Ensure that session IDs are always 32 bytes long (Bug #12041).
[mjr] Fix saving ActiveSync sent mail when the message contains MIME parts (Bug
[mms] Fix replacing spellchecker elements within tables (Bug #12028).
[mms] Fix encoding of JSON parameters to Horde::popupJs() (Bug #12037).
[mms] Fix destroying session data when the null session driver is used.
[mms] Fix Horde_Crypt_Pgp#encryptedSymmetrically() from entering an infinite
loop when using GnuPg v2.
[mms] Improve security in PGP key generation (Request #12099).
[jan] Change default keyserver to
[jan] Fix finding key ID for an email address on a keyserver (
[mms] First release for Horde 5.
[jan] Don't use /e modifier with preg_replace() calls (Remi Collet
[jan] Fix parsing yearly recurrences on the same day from Kolab data (Bug
[jan] Fix recurring dates on the 5th weekday of a month (Bug #11181).
[mjr] Fix several parsing bugs (Bug #12006).
[mms] Fix storing schema information in Horde_Cache.
[jan] Use LONGBLOB columns in MySQL when creating binary fields
(, Bug #12195).
[jan] Fix updating existing rows with default values when adding columns in
PostgreSQL (Bug #12101).
[rla] Add license file.
[jan] Add configuration option to set User-Agent.
[jan] Allow self-signed certificates when using the fopen driver.
[jan] Fix exporting of base64-encoded attribute values.
[mms] Fix regression in Socket driver when moving messages without UIDPLUS.
[mms] Fix caching MIME structure data in POP3 driver.
[mms] Enhanced parsing of POP3 data from the remote server.
[mms] Workaround broken IMAP servers and prevent infinite loops (Bug #12265).
[mms] Add support for the DOWNGRADED IMAP response code (RFC 6858).
[mms] Fix returning the list of deleted messages in the POP3 driver.
[mms] Handle all additional namespace queries in a single call.
[mms] Pipeline multiple IMAP LIST/LSUB calls.
[mms] Fix login methods that require server continutation responses.
[mms] Correctly handle enabled cached status when not using imapproxy.
[mms] Fix caching of CAPABILITY information when not using imapproxy.
[mms] Support pipelining of STORE + EXPUNGE if UIDPLUS is available.
[mms] Pipeline multiple STATUS commands if LIST-STATUS is not available.
[mms] Fold statusMultiple() functionality into base status() command.
[mms] Pipeline multiple IMAP FETCH calls.
[mms] Delay sending LANGUAGE command until we send another command to save a
[mms] Delay sending ENABLE command until we send another command to save a
[mms] Add internal support for IMAP command pipelining.
[jan] Fix dependency.
[mms] Support UID EXPUNGE command for large UID lists (Bug #12228).
[mms] Don't attempt to expunge messages if the list of UIDs to expunge is empty
(Bug #12226).
[mms] Correctly use limit parameter to Horde_Imap_Client_Ids#split() (Bug
[mms] Add a MongoDB based backend for storing cached IMAP/POP data.
[mms] Add Horde_Imap_Client_Cache#clear().
[mms] Add a Horde_Db based backend for storing cached IMAP/POP data.
[mms] Abstract the backend storage into a separate driver for the
Horde_Imap_Client_Cache class.
[mms] Correctly parse message/rfc822 BODYSTRUCTURE responses if the server does
not provide any envelope information (Bug #12190).
[mms] Fix regression in storing cached flags if not using debug mode.
[mms] Add properties to Sync object to allow retrieval of previous sync state
[mms] Only do UNCHANGEDSINCE check when storing flags if the user explicitly
passes the 'unchangedsince' parameter.
[mms] Add the 'nocache' option to Horde_Imap_Client_Base#fetch().
[mms] Always return UID information for FETCH queries if cache is active, so we
ensure that mappings are updated and any cacheable data can be cached.
[mms] Don't cache FETCH data if it does not contain UID information (Bug
[mms] Fix SETQUOTA, GETQUOTA, and GETQUOTAROOT commands on mailboxes that
contain non-7bit characters (Bug #12059).
[mms] Fix returning UID data from the Horde_Imap_Client_Data_Sync object (Bug
[mms] More efficient implementation of Horde_Imap_Client_Ids#range_string.
[mms] Fix APPENDs on IMAP servers that do not support CATENATE.
[mms] Fix from/to searches on servers that support SORT=DISPLAY when using the
*_FALLBACK sort criteria.
[mms] Ensure that a FETCH and/or SELECT/EXAMINE (w/QRESYNC) will not exceed
maximum allowed command length on the IMAP server (Bug #12001).
[mms] Add Horde_Imap_Client_ids#split().
[mms] Fix regression in the replace argument, and multiple arguments to
add/delete, for the store() command.
[mms] Make sure the modseq given to the vanished() command is always at least 1
(Bug #12031).
[mms] Add MongoDB driver.
[jan] Fix retrieving lock list if permanent locks exist
(, Bug #12077).
[jan] Deny exclusive lock if shared locks exist.
[jan] Don't make lock non-permanent when resetting a permanent lock.
[jan] Fix retrieving information for permanent locks.
[jan] Add unit tests.
[mms] Correctly encode IDN domains when sending mail (Bug #12116).
[mms] Add 'no_body' parameter to Horde_Mime_Part#parseMessage().
[mms] Fix parsing wrapped header lines that contain no atom data (Bug #12189).
[mms] Allow a Horde_Domhtml object to be directly passed in to
[mms] Content-Type parameters are case-insensitive (Bug #12161).
[mms] Sanity checking: ignore empty values for Content-Transfer-Encoding MIME
header (Bug #12146).
[mms] Null characters are no longer allowed in e-mail headers as of RFC 2822.
[mms] More accurate/comprehensive Horde_Mime::is8bit() check (Bug #12127).
[mms] Only use non-ASCII in MIME parameters when absolutely necessary.
[mms] Need to always add charset information to MIME encoded parameters if they
are not displayable in pure US-ASCII (Bug #12127).
[mms] Correctly quote forbidden characters in MIME parameter data (Bug #12127).
[mms] Round up size output in Horde_Mime_Part#getSize().
[mms] Spreadsheet conversion now works without using temporary files.
[jan] Add Horde_Perms_Permission_Kolab#getOwnerPermissions().
[mms] Fix removing prefs from storage backends (Bug #12208).
[mms] Fix fatal error in Horde_Prefs_Scope#valid().
[mms] Add MongoDB storage driver.
[mms] Fix removing preference from backend (Bug #12207).
[mms] More compact internal/serialized representation of data in
[mms] Simplify Horde_Prefs_Scope iterator.
[mms] Fix regression that broke Horde_Prefs_Identity#getDefaultFromAddress() in
[jan] First stable release for Horde 5.
[jan] Fix examples location.
[mjr] Fix initial authentication for recently changed Twitter API requirements
(Bug #12165).
[jan] Fix examples location.
[mjr] Update WWO API endpoints.
[mms] Add MongoDB driver.
[jan] Fix testing for owner and user permissions in Kolab shares.
[mms] Add Horde_Support_CaseInsensitiveArray class.
[mms] Add missing magic methods to Horde_Support_Stub.
[mms] Simplify Horde_Support_Array iterator.
[jan] Improve documentation.
[mms] Add test factory for MongoDB.
[jan] Return to old directory after running all tests.
[jan] Improve performance.
[mms] Yet more sanity checking in the Text2html filter to workaround incorrect
charset information.
[mms] Handle non-supported htmlspecialchars() charsets in the Text2html filter
(Bug #12253).
[mms] If a preg call exceeds the backtrack limit, fallback to the original text
(Bug #12152).
[mms] Add 'words' option to the Words filter.
[jan] Fix caching of parsed timezone information.
[mms] Add MongoDB token backend.
[mms] Fix licensing documentation; Horde_Tree has been released under LGPL 2.1
since 2004 (Bug #12070).
[mms] Add Horde_Url_Data::isData().
[mms] Fix Horde_Domhtml#returnBody().
[mms] Simplify Horde_Variables iterator.
[mms] Can't add charset directly to HTML document or else DOM will alter
document when generating HTML.
[mms] Added Horde_Domhtml#getBody().
[mms] Add MongoDB storage driver.
[jan] Use ssh2_sftp_chmod() if available (ssh2 0.12).
[jan] Correctly detect sequences when dumping and be more strict when loading
[mms] First stable release.
[jan] Update French translation (Paul De Vlieger
[jan] Update Slovak translation (Jozef Sudolský <>).
Address Book Changes
[jan] Fix emptying shared address books.
[jan] Fix importing of LDIF data (Bug #11972).
Calendar Changes
[jan] Update alarms, resources, and tags when deleting Kolab events (Bug
[jan] Fix some issues with workweek views if first day of week is Sunday (Bug
[jan] Fix adding holiday calendars if not using English locale (Bug #11961).
[jan] More robust date parsing during event importing (Bug #11916).
[jan] Always export year numbers with four digits to CSV (Request #11917).
[jan] Fix JavaScript error if Nag is not installed.
Notes Changes
[jan] Fix exporting bodies of encrypted notes (Bug #11960).
Tagging Changes
[mjr] Fix logic that could possibly lead to incorrect content types being
applied to objects (Bug #12016).
Library Changes
[mjr] Fix handling of deleting or moving messages from the client that no
longer exist on the server (Bug #12013).
[mjr] Fix setting flags on messages marked for deletion (Bug #12007).
[mjr] Fix existence checking, again.
[mjr] Fix behavior when attempting to fetch attachment of a vanished message.
[mjr] Fix multiple accounts on a single client (Bug #11963).
[mjr] Fix setting PINGable collections on non-empty PING requests.
[mjr] Fix handling missing state when processing COMMANDS.
[mjr] Fix loading state for FOLDERSYNC requests for certain clients.
[jan] Fix argument reading in Samba drivers (Bug #11926).
[mms] Remove call-time pass-by-reference, which was causing PAM authentication
driver to fail in PHP 5.4+ (Bug #10965).
[mms] Upgrade jQuery Mobile to v1.2/jQuery Core to v1.8.2.
[mjr] Fix bug in OpenLayers that caused Prototype's Event object to be
overwritten (Bug #12019).
[jan] Fix notifications while authenticating transparently.
[mms] Add a configurable delay to the jQuery Mobile autocomplete plugin.
[mjr] Fix handling of moving or deleting messages that have been removed from
the server (Bug #12013).
[mms] Be sure tasks are passed to any derivative of the HordeCore AJAX response
[mms] Fix spellchecking on HTML data (Bug #11986).
[jan] Fix fatal error in signup and password reset forms (Bug #11952).
[jan] Fix error: DateTime::__construct(): Failed to parse time string
[jan] Catch DateTime exception in Horde_Date_Utils:daysInMonth() (Bug #11916).
[mms] Update CKEditor to v3.6.6.
[mms] Move ckeditor javascript files into a separate ckeditor directory
(Request #11950).
[jan] Don't set METHOD property unconditionally (Bug #10741).
[jan] Convert test suite to PHPUnit.
[mjr] Fix image watermarking for Imagick and ImageMagick drivers.
[mms] Fix regression in parsing LISTRIGHTS results (Bug #11994).
[mms] Workaround QRESYNC errata that allows FETCH FLAGS results to be returned
without UID information.
[mms] More robust handling of split FETCH responses.
[mms] Some IMAP servers require a mailbox to be unselected before it can be
[mms] Ignore fetch data returned from an UID FETCH command if it doesn't
include UID information (Bug #11946).
[mms] Add exists option to Horde_Imap_Client_Base#fetch().
[jan] Don't depend on an IMP identity object.
[jan] Replace preg_replace() /e modifier.
[mms] Fix regression in outputting Content-Disposition 'size' parameter if no
other Content-Disposition parameter is present.
[mms] Never return decimal values from Horde_Mime_Part#getSize().
[mms] Added parsing limit for deeply nested MIME parts.
[jan] Fix getFormatHeight() and getFormatWidth() in landscape mode.
[jan] Add Horde_Prefs_Identity#getFromAddress().
[jan] Fix LDAP driver and use Horde_Ldap (Heinz Schweiger
<>, Request #11697).
[mms] Horde_Prefs_Identity#getDefaultFromAddress() now returns a
Horde_Mail_Rfc822_Address object.
[mms] Fix detection of sys_getloadavg() on Windows (Bug #11972).
[jan] Add test/ directory to include_path to allow autoloading of test classes.
[mms] Html2text filter now has improved handling of extra whitespace.
[mms] Fix XSS filter removing control characters that cause certain charsets
(ISO-2022-JP) to break (Bug #12015).
[jan] Add license file.
[mms] Add Horde_Url_Data class.
[mms] Added 'charset' and 'metacharset' parameters to returnHtml().
[mms] Added Horde_Domhtml#getCharset() to get best-guess charset of current
encoding within the DOM object.
[mms] Fix inserting HEAD into HTML document with Horde_Domhtml#getHead() if it
doesn't already exist in the document.
[jan] Fix generating form tags.
[jan] Update Basque translation (Ibon Igartua <>).
[jan] Use default Kolab folders for default share preferences.
[jan] Mark Kolab folders as default when changing default share preferences.
Horde Changes
[jan] Fix setting menu refresh rate to none (Bug #11867).
[jan] Fix JavaScript errors after updating the top menu.
Address Book Changes
[mjr] Avoid sending broken datetime values to ActiveSync.
[jan] Update French translation (Laurent Foucher
Calendar Changes
[jan] Fix setting default start time in new event dialog of basic view (Bug
[jan] Fix saving alarm methods to Kolab backend (Thomas Jarosch
<>, Bug #11880).
[jan] Fix moving events between calendars (Bug #11830).
[jan] Fix fatal error on recurring events with custom timezone (Bug #11587).
[jan] Fix double owner name on shared calendars.
[jan] Defer navigation in dynamic view until environment has been initialized.
[jan] Fix receiving resource calendars in dynamic view (Bug #11776).
Tasks Changes
[mjr] Fix closing the quick task dialog when cancel is pressed (Bug #11848).
[mjr] Fix displaying and editing tasks from search results (Bug #11847).
[mjr] Fix incoming task sync with certain combinations of due date values.
[mjr] Fix quick task addition without session cookies enabled (Bug #11875,
Thomas Jarosch <>).
[jan] Fix editing tasks from the merged list view in smartmobile mode (Bug
Notes Changes
[mjr] Fix importing notepads (Bug #11849).
Library Changes
[mjr] Fix regression caused by fixing some logging in the sync cache.
[mjr] Fix some possible character set related issues with HTML email.
[mjr] Fix sending boolean policy values.
[mjr] Fix DB migration for some RDBMS (Bug #11877).
[mjr] Fix authentication related errors.
[mjr] Fix regression caused by incorrectly named variable (,
Bug #11919)
[mjr] Fix non empty PING requests with empty FOLDERS element.
[mjr] Fix exporting folder deletions (Bug #11918).
[mjr] Improvements to fetching and sending message body.
[mjr] Fix searching mailboxes on certain devices that send MIMESUPPORT flag,
like iOS (Bug #11900).
[mjr] Fix updating the read flag on iOS.
[mjr] Set the importance flag on mail messages.
[mjr] Fix detecting mailbox changes on IMAP servers that support CONDSTORE but
not per mailbox MODSEQ (Bug #11754).
[mjr] Check for invalid UTF-8 data before sending to client.
[mjr] Improve loop detection logic, preventing unnecessary state resets.
[mjr] Fix charset issues with certain broken emails which can cause iOS to
[mjr] Fix issue causing SYNC/PING loop in empty mail folders (Bug #11823).
[mjr] Fix importing message read flag (Bug #11741).
[mjr] Fix charset conversion of HTML messages when original body is plaintext
(Bug #11745).
[mjr] Use integer column for message_uid field for IMAP messages (Bug #11742)
[jan] Fix updating users in LDAP driver (Bug #11791).
[mjr] Properly detect mobile Chrome on iOS (Bug #11868).
[jan] Fix sourceselect preferences UI that includes multiple sources.
[mms] Fix multiple AJAX submits to same hidden IFRAME on the same page (Bug
[mjr] Fix some MIME related issues when sending email via ActiveSync (Bug
[mjr] Fix detecting non-default ActiveSync policies.
[mjr] Improvements to ActiveSync authentication failure handling.
[mjr] Fix issue with Null session driver that could cause authentication to be
[mms] Fix restoring cached theme data (Bug #11906).
[mjr] Fix dismissing reminders without session cookies enabled (Thomas Jarosch
<>, Bug #11875).
[mjr] Improve logging in ActiveSync drivers to better track down issues.
[jan] Fix returning complete groups with auto-completer.
[mjr] Fix various issues with charset encoding when sending ActiveSync email.
[jan] Link back to application from preference screen.
[mjr] Fix GAL searching via ActiveSync (, Bug #11808).
[mjr] Fix saving sent mail when using ActiveSync (, Bug
[jan] Reset NLS information when changing languages.
[jan] Fix downloading files with special characters in Gollem (Bug #11770).
[mms] Added Horde_Core_Factory_SpellChecker.
[mms] Don't log backtrace for E_STRICT errors.
[mms] Fix Openssl driver for PHP 5.3.0-5.3.2 (Bug #11797).
[jan] Fix more strftime() formatting of certain locale-specific format
specifiers (Bug #11831).
[mms] Fix multipart APPENDs when IMAP server does not support CATENATE.
[mms] Fix harmless PHP warning issued when IMAP server supports SORT but not
[mms] Fix bodystructure parsing for IMAP servers that do not return full
extension data (Bug #11907).
[mms] Re-add optimizations to IMAP token parser.
[mms] Additional workarounds for IMAP servers with broken BINARY
implementations (Bug #11855).
criteria to Horde_Imap_Client_Base#search().
[mms] Revert valid PHP changes that caused errors in broken old versions of
[mms] Fix client-side address sorting (Bug #11820).
[mms] Optimizations to IMAP token parser.
[mms] Fix setting language value when language is returned in an IMAP list.
[mms] Fix sending literal mailbox data to an IMAP server (Bug #11800).
[mms] Add Horde_Imap_Client_Data_Format_String#getStream().
[jan] Fix Dutch translation (Arjen de Korte <>).
[mms] Fix regression in POP3 driver for servers that don't support the
RESP-CODES extension.
[mms] Another workaround for broken Cyrus APPEND behavior (Bug #11769).
[jan] Return date-only values as floating dates (Bug #11767).
[jan] Correctly format all-day events (Bug #11767).
[mms] Fix behavior of 'persist' option in SMTP transport driver.
[mms] Fix default_domain parameter to Horde_Mail_Rfc822 (Bug #11804).
[mjr] Fix issue where parsing multipart/alternative messages would turn the
parts into attachments.
[jan] Update XSLT processor for OpenDocument files.
[jan] Fix swapped getFormatHeight() and getFormatWidth() methods (Bug #11762).
[jan] Remove creator permission mapping from Kolab backend (Bug #11713).
[mms] When removing a pref, reset its value in the cached scope to the default
(Bug #11895).
[mms] Delete preference from storage backend when calling Horde_Prefs#remove().
[mms] Add throw parameter to Horde_Prefs#store().
[jan] Fix creating storage folder for Kolab/IMAP backends (Bug #11751).
[jan] Fix generating cache key for generated URLs (, Bug
[mms] Honor the 'path' configuration parameter in Aspell driver (Bug #11778).
[mms] Minimum length configuration was not being honored in the Aspell driver.
[mms] Deprecated Horde_SpellChecker::factory().
[mms] Add Horde_SpellChecker_Exception.
[mms] Convert test suite to PHPUnit.
[mms] Fix validating certain strings of UTF-8 data (Bug #11930).
[mms] Convert Horde_String#validUtf8() from a preg-regex to a string iterator
to eliminate PCRE issues relating to stack sizes (Bug #11899).
[jan] Don't rely on PEAR to determine Windows OS in Samba backend.
[jan] Implement vfsroot parameter in Samba backend.
[jan] Re-packaged some 2.0.0 releases.
[mms] Use new Horde_Test layout.
Horde Changes
[jan] Fix adding user in admin actions (Bug #11690).
[mms] Fix removing user in admin actions (Bug #11690).
[jan] Allow to set custom search field label.
Address Book Changes
[jan] Add free-text country attributes and use them in default Kolab backend
(Request #11692).
[gwr] Fix handling empty dates in the Kolab driver (Bug #11691).
[jan] Use encoded UIDs as IDs in Kolab driver.
[jan] Fix searching shares for duplicates.
[mjr] Fix calling decode_attribute hook when exporting to ActiveSync
(, Bug #11678).
[jan] Update Slovak translation (Jozef Sudolský <>).
Calendar Changes
[jan] Try to translate holiday drivers (Request #11755).
[jan] Fix timezone when reading events from Kolab (Bug #11695).
[jan] Use encoded UIDs as IDs in Kolab driver.
[jan] Fix saving of events if no calendar has been loaded yet.
[mjr] Fix importing events from ActiveSync with empty descriptions in EAS
version 2.5
Tasks Changes
[gwr] Ignore empty dates (Bug #11736).
[jan] Use encoded UIDs as IDs in Kolab driver.
[mjr] Fix support for due/start dates for certain ActiveSync clients (Bug
[jan] Fix importing tasks from iCalendar (Bug #11681).
[jan] Fix listing of recurring tasks via timeobjects API.
Notes Changes
[jan] Use modification and creation dates from backend if available (Request
[jan] Use encoded UIDs as IDs in Kolab driver.
Tagging Changes
[jan] Add missing optional dependency on Horde_ElasticSearch.
[jan] Catch exceptions from Horde_ElasticSearch.
Library Changes
[jan] Use binary column for serialized sync state (Bug #11743).
[jan] Fix boolean table columns (Bug #11742).
[mms] Use new Horde_Test layout.
[jan] Add Dutch translation (Arjen de Korte <>).
[mjr] Answer Microsoft Outlook Autodiscover requests (Request # 11639).
[mjr] Fix fatal error due to abstract serialize methods.
[mjr] Fix issue causing a loop during FETCH requests caused by the
non-incrementing syncKey.
[mjr] Reduce number of IMAP server calls required when syncronizing email data.
[mjr] Fix issue causing iOS Mail to crash when receiving truncated body data.
[mjr] Improvements to detecting expunged messages.
[mjr] Fix detecting mailbox changes on servers that don't return UIDNEXT data.
[mjr] Fix issue in detecting certain text attachments.
[mms] Compress cached data with LZF, if the PECL module is available.
[mms] Add tablet detection/reporting.
[jan] Fix class name when using the Kolab group backend (Bug #11737).
[mjr] Fix synchronizing device message flag changes over ActiveSync (Bug
[mms] Fix returning session start time if session has been closed (read-only)
in the current page access (Bug #11685).
[mms] Mask harmless warning messages when using openssl_encrypt() on
out-of-date PHP versions.
[mms] Initial release of package.
[mms] Complete workaround for broken BINARY extension on Cyrus servers.
[mms] Workaround broken BINARY extension on Cyrus servers.
[mms] Fix returning UIDNEXT when using UIDNEXT_FORCE and the server does not
automatically return this information.
[mms] Significant optimization to append() command.
[mms] Add abstracted syncing methods to Horde_Imap_Client_Base.
[mms] Fix parsing PARSE response code associated with an OK response.
[mms] Workaround broken BINARY implementation on UW-IMAP servers.
[mms] If we have binary data, and server doesn't support BINARY extension, send
data anyway since we don't have any other option.
[mms] Correctly increment UIDNEXT when an EXISTS response is issued after the
mailbox is opened (Bug #11679).
[mms] Fix regression that may have caused message flags to have been improperly
cached if debugging was disabled (Bug #11665).
[jan] Deprecate timezone parameters, always write UTC datetime values (Bug
[gwr] Add a time based snychronization strategy (Bug #11590).
[gwr] Correct cache update after move (Bug #11305).
[gwr] Remove deleted objects from the cache (Bug #11674).
[mms] Ensure bare address is output to SMTP MAIL command.
[jan] Fix package.xml.
[mms] Use Horde_Crypt_Blowfish instead of Crypt_Blowfish.
[mms] Add Horde_Stream_Existing class.
[mms] Better generation of random IDs.
[mms] Refactor Horde_Test_AllTests.
[mms] Add Horde_Test_Bootstrap.
[jan] Improve HTML-to-Text filter.
[mms] Jsmin fixes merged from upstream C source.
[jan] Fix deleting folders from absolute path in FTP backend (Bug #11761).
[jan] Fix old folder not being removed when moving a folder (Bug #11703).
[jan] Fix checking source and destination paths being the same (Bug #11702).
[jan] Update Dutch translation (Arjen de Korte <>).
[jan] Update Slovak translation (Jozef Sudolský <>).
[jan] Update Japanese translation (Hiromi Kimura <>).
Horde Changes
[jan] Fix form for editing and removing of users.
[mjr] Workaround for broken iOS ActiveSync AUTODISCOVER requests (Bug #11624).
[mms] Fix topbar javascript on IE8 (Bug #11614).
[jan] Fix LDAP example for authusername hook.
Calendar Changes
[jan] Fix migration of exceptionoriginaldate field (Bug #11654).
[jan] Fix generating calendar names when exporting non-internal calendars to
[jan] Fix authentication to remote calendars (Bug #11643).
[jan] Fix incorrect nesting of VTIMEZONE components when exporting to iCalendar
(Bug #11636).
[jan] Fix fatal error when moving non-recurring events with resources (Bug
Library Changes
[mjr] Increase size of cache_data field.
[mjr] Add more complete error and debug output when saving syncCache.
[mjr] Attempt to detect infinite sync loops caused by server side errors.
[mjr] Fix moving/deleting messages on some devices.
[jan] Fix translations (Bug #11606).
[mjr] Fix detected email changes on certain IMAP servers.
[mjr] Fix determining special mailboxes and generating folder hierarchy on some
ActiveSync clients (Bug #11626).
[mjr] Limit the length of ActiveSync folder serverids to 64 per ActiveSync
[mjr] Fix displaying maps in Chrome while using SSL connections (Bug #11618).
[mms] Add Horde_Crypt_Pgp#getPublicKeyFromPrivateKey().
[jan] Fix strftime() formatting of certain locale-specific format specifiers.
[mms] Correctly workaround servers that incorrectly implement the LIST-EXTENDED
[mms] Fix determining subscribed mailbox list when not using LIST-EXTENDED (Bug
[mms] Work around servers that incorrectly implement the LIST-EXTENDED command.
[mms] Allow Horde_Imap_Client_Base#vanished() to work with non-QRESYNC servers
if the 'ids' option is given.
[mms] Always map UIDs to sequence numbers if resolving an all UIDs search.
[mms] Ignore empty ID search queries.
[mms] Fix parsing empty ACL responses.
[mms] Massive performance increase for cached FETCH queries.
[mms] Split debugging code from Base driver into separate object.
[mms] Fix double encoding of non-ASCII elements in listMailboxes() (Bug
[mms] Fix regression for non-cached Socket objects (Bug #11605).
[mms] Improved handling of server write errors in the Socket driver.
[mms] Add support for IMAP MOVE command.
[mms] Correctly handle FETCH results intermingled with EXPUNGE/VANISHED
requests within a single request.
[mms] Correctly handle EXISTS/EXPUNGE/VANISHED untagged responses which may
appear at any time.
[mms] Fix handling message sequence number actions returned from server when
[mjr] Workaround for broken iOS ActiveSync AUTODISCOVER requests (Bug #11624).
[mjr] Remove support for Google's dead weather API.
[mms] Only specify maxmemory argument when creating temp stream if it was
[mms] Allow Horde_Stream object to be cloned.
[mms] Allow Horde_Stream object to be serialized (Bug #11598).
[mms] Add Horde_Stream#__toString().
[jan] Support uuid extension from OSSP (, Request
[jan] Fix notice when parsing Etc/UTC rules.
[jan] Update Polish translation (Krzysztof Kozera <>).
[jan] Update Dutch translation (Arjen de Korte <>).
Library Changes
[mms] Confirmation link for new identity requires the full URL as it is
intended to be accessed outside of the Horde application (Bug #11593).
[mms] Need to unescape JSON data returned in a text/html response.
[mms] Fix regression in Horde_Imap_Client_Base#listMailboxes() return when both
the 'flat' and 'sort' options are active.
return options to Horde_Imap_Client_Base#status().
[mms] Fix invalid class name usage (Bug #11586).
[mms] Remove STATUS_LASTMODSEQ and STATUS_LASTMODSEQUIDS return options from
[jan] Remove optional dependency on Horde_DataTree.
[jan] Remove DataTree support.
Horde Changes
[jan] Port VAT identification block to use SOAP extension.
[jan] Fix dynamic updating of portal blocks.
[mms] Allow view-specific help files to inherit from base application help
[mms] Allow application basic/dynamic views to have different help source
[mms] Show non-javascript enhanced login screen for non-smartmobile mobile
browsers (Bug #11215).
[mms] Add version parameter to CSS/javascript file URLs to help with cache
busting when these files change between releases.
[mms] Add configuration option for maximum allowed session times.
[jan] Fix cancelling problem report.
[jan] Fix audio notification path printed in page output.
[jan] Fix logging in without JavaScript (Bug #11328).
[mms] Fix sidebar element wrapping.
[mms] Better handling of backend authentication errors when returning AJAX data
(Bug #11297).
[mjr] Fix autocompletion of tags in ajax views.
[jan] Fix dependency on Horde_Service_Weather.
[mjr] Request SSL connection from map providers if using SSL (Bug #11193).
[jan] Allow to configure encryption in global IMAP configuration (Request
[jan] Update icon set.
[rla] Retrieve more detailed message from Horde_Auth when a user is temporarily
or permanently locked out (Request #11254).
[jan] Implement new user interface.
[mms] Add 'suppress' option to prefs.php group entries.
[mms] Add 'on_change', 'on_init', 'requires', 'requires_nolock', and
'suppress' options to prefs.php preference entries.
[mms] Remove support for IE 6.
[mms] Token protect all AJAX actions.
[jan] Allow to use IMAP storage for shares and groupware data without a
complete Kolab server.
[mms] Implement growler-like notifications for smartmobile view.
[mms] Modified pushapp hook behavior.
[mms] Removed pushapp_post hook.
[mms] AJAX core features now contained within Horde_Core.
[mms] E-mail sending charset now defaults to UTF-8.
[mms] Add post-install script for the Horde application
[mms] Portal blocks can now load just the CSS necessary to display an
application's blocks.
[jan] Show notifications during logging into Smartphone mode.
Address Book Changes
[jan] Allow searching for 'emails' attributes (Bug #11185).
[jan] Fix LIKE matching of attributes in Kolab driver.
[mms] Convert turba minisearch block to the Horde AJAX framework.
[jan] Support 'emails' attribute in smartphone view (Bug #11544).
[jan] Attach share owner to all address book titles (Bug #11528).
[jan] Fix exporting from browse view (Bug #11526).
[jan] Return to the same page after running actions from the browse view.
[jan] Support importing contacts via API if using 'emails' attributes (Bug
[jan] Support 'emails' attribute with ActiveSync.
[jan] Fix marking contacts as deleted in the history if deleting shared address
books (Bug #11480).
[jan] Set gender field values literally to 'male' or 'female'.
[jan] Drop preference which address books to display.
[gwr] Mark the initial default share as such with the Kolab backend.
[gwr] Always mark the initial share as default addressbook.
[mms] Initial implementation of smartmobile view.
[jan] Use Horde 5 action bar.
[jan] Add configuration example for Kolab/IMAP address books.
[jan] Update icon set.
[jan] Fix searching multiple names via the API.
[jan] Fix searching and listing clients via the API.
[mms] Import API call now throws an ObjectExists exception when a duplicate is
[jan] Add parameters to specify field size of phone and email fields.
Calendar Changes
[jan] Show completed future tasks in complete category, not in future category
(Bug #11562).
[jan] Fix exporting of recurring events with exceptions from Kolab backends.
[jan] Fix export links for calendars (Bug #11576).
[jan] Fix broken Apple iCal behavior with exception dates (Evert Pot
[jan] Use more compatible message format for iTip notifications (Bug #9854).
[jan] Fix free/busy retrieval on Kolab.
[jan] Synchronize tags with Kolab categories.
[mjr] Improvements to resource calendar handling.
[gwr] Mark the initial default share as such with the Kolab backend.
[gwr] Always mark the initial share as default calendar.
[jan] Fix attendees button in traditional view.
[jan] Fix sending alarm emails.
[jan] Add quick task adding to dynamic view.
[rla] Fix sender of appointment notification (Bug #11198)
[mjr] Fix tagging in traditional interface.
[rla] Make system shares browseable in WebDAV (Request #10998).
[jan] Make calendar lists collapsible (Request #10865).
[jan] Delay calendar list loading to speed up initial display.
[mjr] Implement resource scheduling in dynamic view (Request #9774).
[mjr] Fix issue that could cause incorrect freebusy data to be displayed in
certain circumstances.
[mjr] Prompt to send updates when modifying an event with attendees (Request
[mjr] Add heatmap to year view (Request #10658).
[mjr] Implement proper editing and deleting of recurrence series and exceptions
in ajax view (Request #9926).
[jan] Remove print buttons.
[jan] Add work week view to dynamic interface (, Request
[jan] Support importing of iCalendar events with non-local timezones (Request
[jan] Include timezone information when exporting events to iCalendar (Request
[jan] Allow to set individual timezones for each event (Request #10727).
Tasks Changes
[jan] Fix export links for tasklists (Bug #11576).
[mjr] Fix various issues with importing CSV files.
[mjr] Format datetime fields when exporting a task as a hash (Bug #11537).
[jan] Fix retrieving tasks from Kolab backend by UID (Bug #11532).
[jan] Fix toggling tasklists (Bug #11511).
[jan] Fix listing tasks from Kolab backends.
[jan] Fix sending alarm e-mail messages.
[jan] Synchronize tags with Kolab categories.
[mjr] Fix deleting tasks from the task form.
[mjr] Implement Purge Completed Tasks LoginTask (Request #2520).
[gwr] Mark the initial default share as such with the Kolab backend.
[gwr] Always mark the initial share as default tasklist.
[jan] Move complete task list management into the sidebar.
[jan] Allow to edit task list color in traditional view.
[mjr] Tweak display of smartlist links in list view.
[mjr] Fix fatal recursion error when searching with smartlists were present.
[mjr] Add support for smart tasklists.
[mjr] Migrate categories to tags.
[jan] Fix fatal error if the task form doesn't validate.
[jan] Add recurring tasks (Request #2150).
Notes Changes
[jan] Fix client-side sorting by date.
[jan] Fix exporting (Bug #11507).
[gwr] Always mark the initial share as default notepad.
[gwr] Mark the initial default share as such with the Kolab backend.
[gwr] Fixed deletion of shares with the Kolab driver.
[jan] Fix display of note title (Bug #11275).
Library Changes
[mjr] Fix issue causing FOLDERSYNC to fail on postgres.
[mjr] Fix erroneous truncation of CC addresses (Bug #11446).
[mjr] SyncKey is no longer incremented when there are no imported or exported
changes after the initial SYNC.
[mjr] No longer send unnecessary SYNC_COMMANDS tag.
[mjr] Build a proper nested folder hierarchy when appropriate.
[mjr] Properly send 401 responses in certain circumstances.
[mjr] Improvements to autoconfigure support.
[mjr] Fix some issues that were causing infinite loops on iOS
[jan] Fix finding locale directory if installed with PEAR.
[mjr] Fix issue where FILTERTYPE parameter was not being honored on some
[mjr] Add support for ActiveSync native meeting requests and responses.
[mjr] Security policy support now allows for per user configuration.
[mjr] Add basic Autoconfigure support.
[mjr] Add EAS version 12.1 support.
[mjr] Add EAS version 12.0 support.
[mjr] Add email support.
[mjr] Fix a bug that broke Desktop Notifications.
[jan] Fix Desktop notifications (Bug #10810).
[jan] Fix setting IMAP ACLs in IMAP and Cyrsql drivers.
[mms] Fix user management in Passwd driver.
[mms] Fix setting soft expiration in SQL driver.
[rla] Use constant for permanent lock and provide more verbose feedback
(Request #11254).
[mms] Removed charset parameter for Imap and Cyrsql drivers.
[mms] Fix error message displaying the maximimum allowed file upload size.
[mms] Improved detection of mobile browsers (, Request
[mms] Correctly invalidate cache when write error occurs while using the stack
[mms] Add Horde_Cache#testReadWrite().
[jan] Include file and line when calling Horde_Cli#fatal() with an exception.
[jan] Use late static binding in init() for easier extension of Horde_Cli.
[mms] Fix parsing UTF-16 data in TNEF driver (Bug #11390)
[jan] Fix superglobals access (Bug #11277).
[jan] Fix dynamic updating of portal blocks.
[mms] Allow AJAX handler methods to be marked externally accessible (i.e. no
session token checking) (Bug #11538).
[mjr] Fix copying ActiveSync email to sent folder in certain cases (Bug
[jan] Catch exceptions from Horde_Crypt (Bug #11530).
[jan] Support non-padding operators in JavaScript date formatting (Bug #10435).
[mms] Add generic CSS class insertion to Help system.
[mms] Fix handling active error reporting codes in Horde_ErrorHandler.
[mms] Send spellcheck parameters using AJAX object, not in URL (Bug #11467).
[mms] Add View helpers to provide access to accesskey methods, Horde::img(),
Horde::label(), and Horde_Help::link().
[mjr] Fix adding Bcc recipients when sending mail from ActiveSync.
[mjr] Fix issue saving sent mail from ActiveSync (Bug #11410).
[mms] Added Horde_Core_Smartmobile_Url class.
[jan] Make Horde::widget() take a single hash parameter.
[mms] Allow application API interface to dynamically alter properties (Bug
[mms] Force IE <= 7 to minimal view (Bug #11327).
[mms] Add loading triggers to HordeCore JS framework.
[mjr] Send dummy INBOX, Sent, and Trash folders to client when email sync
support is not enabled.
[mjr] Fix broken ActiveSync behaviour when Email sync is not enabled.
[mjr] Only subscribed mailboxes are returned by the ActiveSync imap factory.
[jan] Set HTML 5 "multiple" attribute on email fields if necessary (Bug
[mms] Add a no authentication AJAX handler (Bug #11297).
[mms] Fix HordeCore javascript download action (Bug #11294).
[mms] Fix upgrade logintasks for pre-release major releases.
[mjr] Add Horde_Core_Tagger.
[mjr] Fix autocompletion of tags in ajax views.
[jan] Fix dependency on Horde_Routes.
[jan] Fix dependency on Horde_ElasticSearch.
[jan] Fix default values for LDAP and SQL configuration.
[jan] Fix hiding empty top menu entries in multi-level hierarchies.
[jan] Allow to override configuration details of meta-configuration tags like
<configsql> in custom configuration XML files.
[jan] Allow to configure encryption in global IMAP configuration (Request
[mms] Upgrade jQuery Mobile to v1.1.1 RC1.
[mms] Fix browser-based AJAX autocompletion (Bug #11233).
[jan] Update classes for the new user interface.
[mms] Move output compression code into Horde_PageOutput.
[mms] Removed Horde::ajaxAvailable().
[mms] Move Horde::getServiceLink() to Horde_Registry#getServiceLink().
[jan] Allow to use IMAP storage for shares and groupware data without a
complete Kolab server.
[mms] Moved smartmobile core javascript from the Horde application.
[mms] Added Horde_PageOutput.
[mms] Added Horde_Core_Ajax_Imple_ContactAutoCompleter.
[mjr] Use local member storage when no session is available (Bug #9733).
[mms] Added AJAX core features.
[mms] Added view determination to Horde_Registry.
[mms] Performance improvements when initializing Alarm system.
[mms] Performance improvements to Alarm checking.
[mms] Performance improvements when initializing Notification system.
[mjr] Allow restricting pretty autocompleter to available choices.
[mms] Add language detection to AJAX spellchecker if no language is selected by
the user (Request #7137).
[mms] Add Horde_Core_Block_Layout_View::getStylesheets().
[jan] Throw exception if parsing of S/MIME certificates fails (Bug #11530).
[mms] Improvements in obtaining GPG keys from a keyserver (Bug #11380)
[mms] Implement new 2.0 API. See UPGRADING for full details of changes.
[jan] Support non-padding operators in strftime() formatting (Bug #10435).
[mjr] Fix adding completed recurrence exceptions.
[jan] Include time when parsing recurrence end date from vCalendar/iCalendar.
[jan] Rename fromHash()/toHash() to fromKolab()/toKolab().
[mms] Fix resetting postgresql error reporting.
[mms] Fix Horde_Db_Adapter_Base_Table#offsetExists().
[mms] Fix addLock() command.
[jan] Allow for nested transactions.
[mms] Update CKEditor to v2.6.5.
[cjh] First release.
[mms] Added log level setting to Horde_Exception.
[mms] Added $logged property to Horde_Exception class.
[mjr] Fixed autoloading of some field actions.
[jan] Allow to pass button attribute hashes to setButtons().
[jan] Allow to set CSS class for 'link' form fields.
[jan] Add Horde_Form_Type_email#allowMultiple().
[mms] Remove Contactlists driver.
[jan] Add verifyPeer request option to disable verification of certification
peers during SSL request.
[jan] Fix error handling in Fopen driver if a custom error handler is
[jan] Fix parsing of VTIMEZONE components that use RDATE properties.
[mms] Fix CONDSTORE synchronization of deleted messages since last mailbox
[mms] Need to immediately synchronize mailbox on mailbox load with CONDSTORE or
else we may lose flag change information.
[mms] Fixes/improvements to CONDSTORE capability sniffing and enabling.
[mms] Remove statuscache configuration option.
[mms] Optimize generation of POP3 sequence string.
[mms] Abstract forced determination of UIDNEXT value from cache method to a
status() flag.
[mms] Remove Horde_Imap_Client_Base#fetchFromSectionString().
[mms] Horde_Imap_Client_Base#listMailboxes() now supports 'status' return even
if server does not server LIST-STATUS.
[mms] Remove Horde_Imap_Client_Base#fetchCacheIgnore().
[mms] Move IMAP/POP URL parsing to new Horde_Imap_Client_Url object.
[mms] Move base subject parsing to new Horde_Imap_Client_Data_BaseSubject
[mms] Move IMAP sequence string generation/parsing to the Horde_Imap_Client_Ids
[mms] Remove Horde_Imap_Client_Utils#escape().
[mms] Remove Horde_Imap_Client_Utils#removeBareNewlines().
[mms] Move IMAP mailboxes sorting into new Horde_Imap_Client_Mailbox_List
[mms] Correctly handle determination of highestmodseq in currently selected
mailbox if CONDSTORE, but not QRESYNC, is active.
[mms] Optimize APPEND so that we don't send large amounts of data to server if
the server is not going to accept the data.
[mms] Don't expunge mailbox when it is labeled as read-only.
[mms] Fix regression in FETCH/COPY with sequence numbers (Bug #11521).
[mms] Fix quoting empty astrings (Bug #11505).
[jan] Fix Horde_Stream dependency.
[jan] Add deleteACL().
[jan] Make setACL() work more similar to the SETACL IMAP command.
[mms] Fix determination of HIGHESTMODSEQ value from FETCH data.
[mms] Store command that caused NO/BAD error in Exception, if it can be
[mms] Limit FETCH ENVELOPE data sizes.
[mms] Improved parsing of incoming IMAP server stream.
[mms] Improved parsing of IMAP threading data.
[mms] Improved IMAP tokenizer of server response data using PHP temporary
[mms] Add standalone IMAP command tokenizer.
[mms] Rewritten handling for processing outgoing IMAP commands.
[mms] Improved debugging efficiency.
[mms] Added data objects for the various IMAP data types.
[mms] Added the Horde_Imap_Client_Data_Format objects.
[mms] Correctly handle any resource key supported by the QUOTA extension.
[mms] Allow auto-escaping of mailbox names in listMailboxes().
[mms] Add list_escape property to Horde_Imap_Client_Mailbox.
[mms] Remove public cache variable from IMAP driver.
[mms] Internally workaround IMAP servers that don't support text searches other
than US-ASCII.
[mms] Horde_Imap_Client_DateTime is now a wrapper around the native PHP
DateTime object (Request #11074).
[mms] Implement new 2.0 API. See UPGRADING for full details of changes.
[jan] Fix finding locale directory if installed with PEAR.
[jan] Write custom Horde attributes to task objects.
[jan] Categories attributes are returned and passed as an array now.
[jan] Reduce logging level of debug messages.
[jan] Reduce logging level of debug messages.
[gwr] Corrected fix for modifying Kolab objects.
[gwr] Allow setting the default folder.
[gwr] Reactivate folder list caching.
[gwr] Avoid overwriting unknown XML elements (Bug #11309)
[jan] Fix renaming of shares (Bug #11281).
[jan] Fix moving objects to a different folder (Bug #11280).
[jan] Fix listing and loading data from IMAP server (Bug #11273).
[rla] Add handling of permanent locks.
[mms] Add Horde_Mail_Rfc822_Address#matchDomain().
[mms] Add Horde_Mail_Rfc822_Address#matchInsensitive().
[mms] Fix parsing Return-Path header when using sendmail driver (Bug #11361).
[mms] Implement new 2.0 API. See UPGRADING for full details of changes.
[mjr] Add method for returning the message's base MIME part.
[mms] Update MIME mapping file.
[mms] Catch/fix malformed undisclosed-recipients address headers.
[mjr] Fix issue that could cause outputting of duplicate data from a parsed
mulitpart mime message.
[mms] Added Horde_Mime_Related class.
[mms] Implement new 2.0 API. See UPGRADING for full details of changes.
[mms] Don't log permission not exists errors.
[jan] Use new Horde_Tree API.
[jan] Use Horde's temporary directory for SyncML logs.
[mjr] Allow autodiscover requests sent as OPTIONS requests.
[mms] If secret key is changed, change the associated key or else key change
may not be recognized in the current page access (Bug #11570).
[mms] Limit decryption/encryption key to 56 bytes (Bug #11566).
[mms] Mark secret cookie data as HttpOnly.
[mms] Add Exception code constants.
[mms] Use Horde_Support_Randomid class to generate secret key.
[jan] Fix parsing JSON responses with PHP 5.4.
[mjr] Remove fields from FQL statement that are no longer available.
[mjr] Update API to use the Graph API wherever possible.
[mjr] Removed the deprecated OFFLINE permission.
[mjr] Catch XML parsing errors.
[jan] Fix track_lifetime setting for Memcache driver (Bug #11444).
[jan] Fix sorting of Kolab shares (Bug #11509).
[gwr] Propagate setting the default attribute to the Kolab backend.
[mms] First release for Horde 5.
[jan] Add htmlspecialchars() filter.
[jan] If creating Horde_Support_Backtrace from an Exception, include any
previous exceptions.
[jan] Make Horde_Support_Backtrace#backtrace a public property.
[mms] Add Horde_Support_ObjectStub.
[jan] Fix session handling (Bug #11242).
[jan] Fix finding locale directory if installed with PEAR.
[mms] Merge upstream changes to jsmin filter that caused broken compression of
jQuery Mobile file.
[mms] Fix cloning of csstidy objects.
[jan] First release for Horde 5.
[jan] Tweak CSS names.
[jan] Separate tree object from tree renderers.
[mms] Fix copying all parameters when cloning a Horde_Url object in the
[mms] Make parameter generation extendable.
[mms] Add Horde_Url::setScheme().
[jan] Make constructor parameters optional for empty URLs.
[mms] Remove Horde_Util::addParameter() and Horde_Util::removeParameter().
[mms] Remove Horde_Util::cloneObject().
[mms] Removed e-mail array manipulation methods (Horde_Mail package now
provides this feature).
[mms] Removed Horde_Util::getCsv() (moved to Horde_Data package).
[mms] Add iteration to Horde_Domhtml object.
[jan] Remove Horde_Util::getTempDir().
[jan] Remove Horde_Array::replaceRecursive().
[jan] Fix check whether quota limit is set (Bug #11455).
[jan] Fix sending and reading files in SSH2 driver if vfsroot is not set (Bug
[jan] Fix finding locale directory if installed with PEAR.
[jan] Add hasFeature().
[jan] Drop listFolders() method.
[jan] Remove Horde_Vfs_Browser, Horde_Vfs_ListItem, Horde_Vfs_Object classes.
[mms] Added Horde_View_Helper_FormTag#optionTag().
[jan] Update Swedish translation (Per Olof Ljungmark <>, Jakob
Alvermark <>).
[jan] Update Italian translation (Emilien <>, Massimo
Malabotta <>).
[jan] Update Slovak translation (Marika Schvarczova
[jan] Update Czech translation (Michal Foist <>).
[jan] Update Hungarian translation (Zoltán Németh <>).
Horde Changes
[jan] Update Lybian flag (Request #11169).
[jan] Fix horde-set-perms script (Arjen de Korte, Bug #11048).
Address Book Changes
[jan] Fix number of contacts in a list that cannot be displayed.
Calendar Changes
[jan] SECURITY: Fix XSS vulnerabilities in tasks view and search view (Bug
[jan] Improve print styles.
[jan] Catch if external client doesn't send LAST-MODIFIED attributes (Bug
[jan] Don't stop agenda script if there is an error with a single user (Bug
[jan] Show round corners only on the start and end of multi-day events
(Request #11067).
Library Changes
[jan] Fix class name (, Bug #11164).
[mms] Added the 'ajax' browser feature.
[mms] Check for damaged ZIP data.
[gwr] Fixed session based preferences.
[jan] Fix HTML rendering of S/MIME certificates with multi-value attributes.
[mms] Fix regression in caching code (Bug #11143).
[mms] Fixed PHP 5.2 incompatibility (Bug #11137).
[jan] Throw exception if LDAP extension is missing.
[mms] Increase lock timeout to 30 seconds.
[mms] Fix typo preventing unlock at exit from working correctly.
[mms] Automatically expire locks when the PHP process exits.
[jan] Update ISO list of countries (Bug #11169).
[jan] Support authentication via CGI.
[jan] Don't corrupt binary data like images if sent in several messages
(Jonathan Westerholt <>, Bug #10864).
[jan] Support definition lists in HTML-to-text filter (Nathan Barhorst).
[mms] Don't encode anchor string if raw mode is enabled.
[mms] Fix Horde_String::validUtf8() to workaround PHP/PCRE bug where segfault
will occur on input strings > ~5000 characters.
[rla] Add missing license files.
[jan] Update Hungarian translation (Zoltán Németh <>).
[jan] Update Brazilian Portuguese translation (Luis Felipe Marzagao
[jan] Update Finnish translation (Leena Heino <>).
[jan] Update German translation.
[jan] Update Spanish translation (Manuel P. Ayala <>).
Horde Changes
[mjr] Add more atomic control over ActiveSync security policies for better
device compatibility.
[mms] Add 'sendmail_eol' configuration parameter.
[jan] Fix horde-set-perms (, Bug #10923).
[jan] Sort user and group names in permission screen (Request #10896).
Address Book Changes
[jan] Fix decode_attribute hook when exporting to vCard (, Bug
[jan] Only connect to LDAP driver for read/write requests (Dominique Lalot
<>, Request #11082).
[mjr] Fix bug that caused time shifting of contact birthday and anniversary
values from ActiveSync devices for users in certain timezones.
[mjr] Ensure contact lists are always populated with their members (Bug
[jan] Fix SyncML compatibility with work/home phone numbers and newer Funambol
clients (Bug #10912).
[mjr] Implement more flexible ActiveSync synchronization of names and
[jan] Fix address book sorting in preferences (Bug #10897).
[mms] Improve navigation when editing group entries.
Calendar Changes
[jan] Use preferred date format in week and agenda views (Bug #11089).
[jan] Fix fatal error if no external calendars are available (Bug #11079).
[jan] Fix positioning of events on DST changing dates (Bug #11070).
[mjr] Fix bug that caused time shift of all day events when imported from
ActiveSync devices for users in certain timezones (Bug #10991).
[mjr] Correctly deal with deleted calendars in sync clients (Bug #10969).
[jan] Search complete names and addresses when auto-completing attendees.
[jan] Fix syntax error in migration script (Bug #10902).
Notes Changes
[mjr] Add missing getChanges API method.
Timeobject Changes
[mjr] Always provide the longest forecast length available for weather
forecast data.
[mjr] No longer attempt to create a Horde_Service_Weather provider if we do not
have one configured.
Library Changes
[mjr] Fix parsing incoming timezones under certain conditions (Bug #11068).
[mjr] Added WP7 devices to the list of devices with broken provisioning.
[mjr] Fix issue that could cause improper timezone handling in events passed
from device to server in the beginning of a calendar year (Bug #10960).
[mjr] More improvements to security policies and device compatibility.
[mjr] Tweak policy defaults. Minor compatibility improvements for
WAP-Provisioning-XML strings.
[mjr] Allow disabling of certain policies.
[mjr] Honor PROVISIONING_LOOSE if the device supports PROVISIONING, but not all
of our requested policies.
[mjr] Fix issue that could cause PING failure in certain server environments.
[jan] Add optimized exists() implementation to LDAP driver (Marco Ferrante
<>, Request #10944).
[jan] Fix horde-autoloader-cache-prune script.
[mms] Fix upload_tmp_dir checking (Bug #10976).
[mms] Update dataurl and cite capabilities for Internet Explorer.
[jan] Update utf capability for Firefox 10+.
[jan] Update capabilities for recent Blackberry devices.
[jan] Add parameters to specify field size of phone and email fields.
[jan] Log details too, if logging an exception.
[jan] Fix showing applications with 'admin' status in the sidebar.
[jan] Fix setting default values for HTML signatures.
[mjr] Throw exception if no weather service configured (Bug #11005).
[mms] Fix viewable prefs when toggling from Hide->Show Advanced.
[mms] Better error message when missing required parameters (Bug #10979).
[mms] Add Horde_Core_Alarm_Handler_Notify class.
[mjr] Fix issue with autocompletion that would cause it to fail in certain
circumstances (Bug #10904).
[mms] Remove trailing semicolon when replacing @import statements.
[mjr] Fix issue that could cause failure of ActiveSync due to incorrect packing
of binary data.
[jan] Use separate database connection for SQL session handler (Bug #10906).
[mms] Fix parsing DB config when using splitread database setup.
[mms] Improved parsing of S/MIME certificate information (Bug #10956).
[mms] Silently ignore unknown data when parsing S/MIME certificates.
[mms] Translate all user-directed exception messages.
[jan] Fix escaping of binary values in SQLite.
[jan] Inherit details from wrapped exception.
[jan] Add parameters to specify field size of phone and email fields.
[jan] Use configured filter when listing groups (Jesse Sandberg
<>, Bug #10975).
[cjh] Fix infinite loop on unknown parameters being set.
[cjh] Return real data for HTTP 4xx and 5xx responses when using fopen().
[cjh] Fix setting PUT data in the Peclhttp Horde_Http_Request class.
[mms] Fix CHANGEDSINCE search if no FETCH attributes were specified (Bug
[mms] Fix search charset detection for servers that do not send the BADCHARSET
response code (Bug #11117).
[mms] Workaround IMAP servers with broken CATENATE implementations (Bug #11111).
[jan] Fix sending ID requests.
[mms] Rewrite of caching system. Fixes a few bugs, and should be more efficient.
[mms] Clear imapproxy status when logging out.
[mms] Workaround PHP bug when using serialized Envelope data created by
Horde_Imap_Client < 1.5.0 (Bug #11026).
[mms] Fix accessing STATUS information for mailboxes with non 7-bit characters.
[mms] Fix 'vanished' return from fetch().
[mms] Add Horde_Imap_Client_Base#setParam() (Bug #10680).
[mms] Return correct authentication error if authentication fails after the
original login (Bug #11007).
[mms] Do case-insensitive check for NIL in IMAP data.
[mms] Correctly support RFC 822 groups in envelope data.
[mms] Envelope address data now returned as Horde_Mail_Rfc822_Address objects.
[mms] Other places where bodystructure may return literals.
[mms] Workaround non-ASCII data in bodystructure return from IMAP server.
[mms] Fix several faulty translation strings (Bug #10958).
[mms] Fix objects where the password is not being encrypted (Bug #10950).
[jan] Fix translations when installed through PEAR.
[mms] Implement more efficient serialization for Thread data objects.
[mms] Move server debug information from exception error message to 'details'
property of exception object.
[mms] Fix METADATA_TOOMANY and METADATA_NOPRIVATE exception codes.
[mms] All user-directed exception messages are now translated.
[mms] Added Horde_Imap_Client_Exception_NoSupportExtension.
[mms] Incorrect method calls now throw SPL errors instead of
[jan] Fix line breaks of iTip responses when using quoted-printable encoding
(Bug #10888).
[mms] Added Horde_Mail_Rfc822_Address#encoded property.
[mms] Better support for IDN hosts in non-validate address parsing mode (Bug
[mms] Added Horde_Mail_Rfc822#trimAddress().
[mms] Add optional arguments to the Horde_Mail_Rfc822_Group constructor.
[mms] Horde_Mail_Rfc822#parseAddressList() now accepts
Horde_Mail_Rfc822_Objects within the first argument.
[mms] The address and group objects now extend the base
Horde_Mail_Rfc822_Object class.
[mms] Add optional arguments to the Horde_Mail_Rfc822_Group constructor.
[mms] First argument to Horde_Mail_Rfc822#parseAddressList() can now be an
array of addresses.
[mms] Add Horde_Mail_Rfc822#encode().
[mms] Workaround unexpected return from PHP_EOL in Mail transport drivers.
[mms] Created Horde_Mail_Rfc822_Address and Horde_Mail_Rfc822_Group objects to
represent e-mail addresses.
[mms] Improved parser for e-mail addresses (Request #10949).
[mms] Bump lock retry from 0.005s -> 0.1s.
[jan] Work around broken messages with multiple address headers.
[mms] Add option to allow encoding options to be defined for
Horde_Mime_Part#send() (Bug #11058).
[mms] Add MIME headers to the list of single-value headers.
[mms] Don't add personal part to e-mail address if it is identical to the
address itself.
[mms] Support Horde_Mail_Rfc822_Address objects.
[mms] A false value for 'idn' in Horde_Mime_Address#writeAddress() now causes
the domain name to be converted TO punycode, if necessary.
[jan] Implement ArrayAccess in Horde_Rdo_Base.
[jan] Fix Horde_Rdo_Exception not extending Horde_Exception.
[rla] Fix issue with retrieving lazy fields (Bug #11012).
[jan] Fix WebDAV access to application resources.
[mjr] WeatherUnderground had done away with the 5 day forecast. Emulate it with
a 7 day forecast and limitLength call.
[mjr] Allow setting a limit to the number of forecast days that are returned,
regardless of the reqested forecast length.
[mjr] Fix requesting different forecast lengths for the same location in the
same request.
[mjr] Add 10 day forecast support for WeatherUnderground.
[jan] Fix SQL driver with PostgreSQL.
[jan] Fix reading sessions with the External driver.
[jan] Add test suite.
[jan] Don't start transaction more than once in SQL driver (Bug #10978).
[jan] Fix transaction error when reconnecting to database during session
writing (Bug #10906).
[jan] Add renameShare().
[mjr] Properly cache empty listShares results (Bug #11045).
[mms] Fix failing unit tests.
[mms] Fix preg backtrack issue in the Linkurls filter (Bug #11116).
[mms] Merge upstream updates to JsMin filter.
[mms] Don't do regex matching for data that can never match.
[jan] Implement ArrayAccess in Horde_Variables.
[jan] Fix inconsistent behavior of the different backend drivers.
[jan] Fix double unlink() of temporary files.
[jan] Fix ignored $dotfolder argument for listFolders() in SQL driver.
[jan] Fix several issues with quota calculation.
[jan] Fix recursive listFolder() on base directory.
[jan] Fix calculating folder sizes with similar folder names in SQL driver.
Address Book Changes
[jan] Set VOICE parameter when exporting phone numbers to vCard (Request
[jan] Fix importing vCards with empty X-ANNIVERSARY attributes (Bug #10557).
[jan] Update Japanese translation (Hiromi Kimura <>).
Calendar Changes
[mjr] Fix bug that could cause incorrect event exceptions to be created when
drag and dropping events in month view.
[jan] Fix page titles not always updating correctly.
[jan] Display event time in dynamic view if requested (Request #9866).
[jan] Only show end time if different from start time.
[jan] Fix day sorting in agenda view.
[jan] Sort user and group names in permission screen (Request #10896).
Library Changes
[mjr] Fix REMOTEWIPE functionality for a number of android and iOS devices.
[mjr] Fix sending meeting request emails when creating a meeting.
[mjr] Fix retrieving the body of SENDMAIL requests.
[mjr] Fix parsing birthday strings on certain android 2.2 clients.
[mjr] Improve support for Android device provisioning.
[mjr] Improve support for timezones in appointments originating on the client.
[mjr] Improve performance when working with timezones on PHP 5.3+
[mjr] Fix implementation of SENDMAIL ActiveSync command. Fixes sending of
meeting requests from device.
[mjr] Fix issue that caused ActiveSync failure when using device specific
logging in certain cases.
[mms] Fix merging config data (Bug #10381).
[mjr] Fix creating recurrence objects with a timezone other than the current
[mms] SECURITY: Fix XSS vulnerability in email validation.
[jan] Fix compatibility with Horde_SyncMl (Bug #10908).
[jan] Allow to pass multiple parameter values in setAttribute() (Bug #7248).
[mms] Allow multiple date searches to be specified in a single AND search query.
[mms] Fix deleting cached mailbox when mailbox name is given as an object.
[mms] Fix 'changedsince' and 'vanished' parameters' in the fetch() command (Bug
[mms] LIST-STATUS does not depend on LIST-EXTENDED.
[mms] Add dependency checking for capabilities.
[gwr] Fixed datatype for birthday and anniversary contact attributes.
[gwr] Completed missing data API v1 support.
[mms] Fix line-endings for transport drivers that send messages using local
[jan] Improve compatibility with some broken text MIME parts (Bug #10925).
[mjr] Add snow and rain totals to wunderground driver.
[mjr] Fix using IP addresses for determining forecast location (Bug #10857)
[jan] Fix undefined method while synchronizing events with Funambol (Bug
[jan] Catch exceptions when changing or retrieving objects from the
[mms] Need to cache gettext-enabled templates with language information in the
cache ID (Bug #10872).
[mms] Add Horde_Variables#filter().
[jan] Update Dutch translation (Arjen de Korte <>,
Pieterjan Heyse <>).
[jan] Update Japanese translation (Hiromi Kimura <>).
Horde Changes
[jan] Make the lifetime of cached weather information configurable (Arjen de
Korte, Request #10848).
[mjr] Improve layout of weather block.
Calendar Changes
[jan] Hide disabled calendar sections (Bug #9815).
[gwr] Fixed recurrence handling with the Kolab backend.
[gwr] Fixed naming of the default calendar for the Kolab backend.
[gwr] Fixed deleting events with the Kolab backend.
[gwr] Fixed migrations for SQLite as database backend.
[mjr] Fix keyboard navigation of time entry fields in dynamic view (Bug
[mjr] Fix parsing display_cal variables for internal calendar links on various
blocks and embedded imples (Bug #10767).
[mjr] Fix adding events directly to a resource's calendar (Bug #10827).
[mjr] Fix regression introduced in 3.0.12 that broke checking a Resource's
availability in certain cases (Bug #10806).
[jan] Don't fail on empty CalDAV calendars (, Bug
[jan] Check permissions when building application drop down
(, Bug #10811).
[gwr] Fix saving Kolab events.
Tasks Changes
[jan] Fix setting custom alarm methods (Bug #9543).
Notes Changes
[jan] Use locale based sorting.
[jan] Fix remembering the expansion state of the notepads panel (Bug #10797).
Library Changes
[mjr] Increase field length for sync_data to support syncing large collections
(Bug #10822).
[jan] Fix tests to work with PHPUnit 3.6.
[jan] Catch exceptions from Horde_Mime when sending alarm messages (Bug #10388).
[jan] Add Latvian translation (Jānis Eisaks <>).
[mjr] Allow separate ActiveSync logs per device.
[jan] Make the lifetime of cached weather information configurable (Arjen de
Korte, Request #10848).
[gwr] Fixed hiding menu entries that should not be displayed to admin.
[gwr] Fixed Kolab anonymous bind.
[mms] Provide signature information when decrypting a message, rather than just
a boolean result.
[mms] Fix displaying PGP key expiration information.
[mms] Allow expiration date to be given to Horde_Crypt_Pgp#generateKey()
(Request #5754).
[mjr] Allow applications to extend Horde_Data_Base objects.
[mjr] Fix issue with creating Horde_Date from DateTime object with explicit
timezone set.
[gwr] Fix the parsing of recurrence hash data.
[jan] Correctly parse "nacht" in German (Bug #10511).
[gwr] Alternative API to support modified dates with SQLite as well.
[mjr] Add support for mediumtext and longtext field types.
[mms] Work around broken headers in IMAP envelope data.
[mms] Remove Cclient drivers.
[mms] Allow Horde_Mime_Part::getRawPartText() to accept stream input.
[mms] Workaround incoming message data to Horde_Mime_Part::getRawPartText()
that contains varying EOL characters (Bug #10809).
[mms] Fix detection of MIME boundaries at beginning of string (Bug #10809).
[mms] Abstract charset detection code out into
[mms] Improved detection of charsets in broken (8-bit) MIME headers.
[mms] Fix for broken 8BITMIME/BINARYMIME SMTP capability detection
(, Bug #10820).
[jan] Catch exceptions from storage writing during shutdown.
[jan] Use binary column type for preference values (Bug #10803).
[mjr] Use longer cache lifetime for non-changing values (Request #10851).
[mjr] Export available detailed forecast fields for each driver (Bug #10813).
[mjr] Fix returning correct units when requesting the same location twice, but
with different units (Bug #10804).
[mjr] Fix returning localized text from Wwo driver (Bug #10804).
[mjr] Fix obtaining forecast periods individually..
[mjr] Fix obtaining certain properties from Google driver.
[mjr] Fix making requests when not using a cache.
[mjr] Fix path to locale directory.
[mjr] Fix setting units (Bug #10792).
[mms] Fix unnecessary use of POSIX collating element in Linkurls filter
(, Bug #10828).
[jan] Fix translation (Bug #10831).
[mms] Add Horde_String::validUtf8().
[mjr] Add support for Horde_Service_Weather.
[mjr] Remove support for the now non-existent weatherdotcom API.
[jan] Update Croatian translation (Valentin Vidic <>).
[jan] Update Latvian translation (Jānis Eisaks <>).
[jan] Update Estonian translation (Alar Sing <>).
[mjr] Fix removeUserData implementations.
[gwr] Avoid including the owner name into the default shares (Kolab backends).
Horde Changes
[jan] Add configuration option to disable password resets (Request #10640).
[cjh] Add Hordevetica theme.
[mjr] Fix issue with ajax uploader and file sizes over 1mb (Bug #10641).
[mjr] Do not show results in the tag cloud block owned by other users.
[mjr] Update javascript map library.
[mms] Allow in-page base64 image encoding to be disabled via configuration.
[jan] Add administration page to list and clear locks.
Address Book Changes
[mjr] Add the ability to specify the fields to return from contacts/search.
[jan] Fix importing contacts with composite fields.
[jan] Fix LDAP connection test (Bug #10554).
Calendar Changes
[jan] Show status of events in agenda messages (Request #10517).
[mjr] Fix selecting custom time from time selection drop down (Bug #10737).
[jan] Always use fresh Horde_Http_Client instances for remote calendars (Bug
[jan] Add confirmation screen when deleting events in dynamic view (Request
[jan] Fix holidays disappearing from month view if deleting another event.
[jan] Fix resetting attendee response status when saving events in dynamic
view (Bug #10620).
[jan] Support CalDAV servers that don't use DAV: as the default namespace
(, Bug #10716).
[jan] Allow to view and create copies of holiday events (Bug #10650).
[jan] Don't show import/export tabs in dynamic view if disabled (Bug #10705).
[jan] Don't show option to share with everyone in basic permissions if disabled
(, Bug #10706).
[mjr] Only set ORGANIZER field if the event is a group meeting (Bug #10697).
[mjr] Fix alarms for recurring events (Bug #10678).
[mjr] Allow filtering listTagInfo results by user.
[jan] Fix uncompleting tasks in dynamic view (Carlos Timóteo, Bug #10653).
[cjh/jan] Improve design.
[mjr] Fix displaying resources when no attendees are present (Bug #10507).
Tasks Changes
[jan] Don't display task details of private tasks via the API (Bug #10712).
[jan] Use correct locale when parsing quick tasks (, Bug
[cjh] Nicer date/time input with fewer input fields and helper javascript.
[mjr] Add ability to choose which tasklists to synchronize.
[mjr] Fix task export to ActiveSync for tasks with no due dates or reminders.
[jan] Add missing parameters when PUTing tasks (Bug #10545).
[gwr] Fix Kolab object attribute handling for tasks.
Library Changes
[jan] Fix tests to work with PHPUnit 3.6.
[jan] Make unit tests Windows compatible.
[jan] Skip Kolab tests if Horde_Kolab_Storage is not installed.
[jan] Allow to run unit tests from installed package.
[mjr] Fix issue with timezones caused by buggy PHP timezone data (Bug #10760).
[mjr] Fix duplicate entries being sent to client when client does not issue
GETCHANGES request (Bug #10731).
[mjr] Prevent duplicate incoming message additions (Bug #10644).
[jan] Catch exceptions from imap library (Bug #10272).
[jan] Fix detecting locale directory from PEAR installation (Bug #10589).
[jan] Add missing locale directory (Bug #10589).
[jan] Add checkPasswordPolicy() and checkPasswordSimilarity() methods.
[jan] Fix empty_file_input_value quirk for Chrome browsers (Bug #8438).
[jan] Don't overwrite $_SERVER superglobals unconditionally, to allow setting
them through environment variables (Bug #10758).
[mjr] Add Horde_Service_Weather factory.
[mms] Fix importing CSS data in cache files.
[mms] Detect @import tags in CSS and add to compressed data.
[mjr] Add ability to remove temporary files at session shutdown.
[jan] Fix resetting authentication credentials (Bug #10228).
[jan] Correctly render keyval_multienum form field contents.
[jan] Don't use Xcache in CLI scripts (Bug #10288).
[jan] Fix PostgreSQL DSN when using SQL authentication (Bug #10538).
[mjr] Add factory for Horde_Service_UrlShortener.
[mms] Fix minChars behavior in autocomplete javascript code.
[mms] Allow in-page base64 image encoding to be disabled via Horde
[jan] Allow both application and interface names in <configspecial>.
[mms] Upgrade signed S/MIME output to comply with S/MIME version 3.2.
[jan] Add missing dependency on PEAR's DB package.
[mjr] Fix timezone bug that could cause an incorrect timezone from being set
when creating Horde_Date objects from other Horde_Date or DateTime
[mjr] Fix timezone bug that caused some date strings to be parsed as an
incorrect timezone.
[mms] Greatly reduce memory usage when working with binary data in PostgreSQL
9.0+ (Bug #10774).
[mms] Cache postgresql version.
[jan] Improve API documentation.
[jan] More flexible conversion of charset names to native MySQL names.
[jan] Correctly escape binding characters in buildClause() (Bug #10610).
[jan] Fix transactions with MySQLi driver (Bug #10578).
[jan] Fix DISTINCT clause generation on PostgreSQL (Bug #10543).
[mms] Fix escaping binary data on Postgresql 9.1+ servers (Bug #10602).
[gwr] Support multiple mock responses with the mock request.
[gwr] Fixed setting response headers for the mock response.
[gwr] Added SOCKS proxy support where available.
[jan] Fix generating VTIMEZONE components.
[mjr] Add a version of the convert command for center cropping with ImageMagick
versions less than 6.3.8 (Bug #10687).
[mjr] Fix parsing GPS values for locales that do not use the decimal separator
(Bug #10643).
[mjr] Added support for Lens and LensID EXIF fields)
[mjr] Ensure string values are parsed as strings (Bug #10646).
[mjr] Add basic unit tests for EXIF data
[mms] Workaround missing search charset support in the Socket driver (Bug
[mms] Only add CHARSET data to SEARCH queries if necessary (Bug #10726).
[mms] Fix deletion of cached message entries.
[mms] Fixed setting data for several POP3 fetch results.
[mms] Parsing/generating sequence strings for POP3 servers has been fixed.
[mms] Removed unmaintained Mock driver.
[mms] API CHANGE: Added Horde_Imap_Client_Mailbox to provide way to accurately
switch between UTF7-IMAP and UTF-8 mailbox representations.
[mms] API CHANGE: Deprecate Horde_Imap_Client_Base::parseCommandArray() - use
Horde_Imap_Client_Utils::parseCommandArray() instead.
[mms] API CHANGE: Added a required parameter ('baseob') to
Horde_Imap_Client_Cache constructor.
[mms] API CHANGE: Added Horde_Imap_Client_Base::writeDebug().
[mms] API CHANGE: Added Horde_Imap_Client_Base::getIdsOb().
[mms] API CHANGE: Deprecate Horde_Imap_Client_Cache::singleton().
[mms] Fix client-side Cc/From/To sorting (Bug #10503).
[mms] Improved IMAP debug logging.
[mms] Fix search charset determination for servers that support SORT &amp;
ESORT (Bug #10479).
[mms] Improved phpdoc documentation.
[mms] API CHANGE: Add shortcuts to get MIME decoded envelope information.
[mms] Automatically authenticate to server when using a command that requires
an authenticated/selected state (Bug #10473).
[jan] Make unit tests locale independent.
[gwr] Move Horde specific functionality out of the events parser.
[gwr] Move Horde specific functionality out of the contacts parser.
[gwr] Improve data validation.
[gwr] KEP2 support.
[gwr] Allow adding XML attributes on the fly.
[gwr] Avoid overwriting data from other Kolab clients.
[gwr] Add improved root node handler (version checking, avoids overwriting
other data).
[gwr] Readd support for updating Horde_History.
[gwr] Fix support for multiple namespaces of the same type.
[jan] Update Latvian translation.
[gwr] Add support for retrieving objects by backend id.
[gwr] Add a handler for active sync settings.
[gwr] Add preference data query.
[gwr] Add support for storing data query results in the cache.
[gwr] Add support for deleting messages by backend UID.
[jan] Update Spanish translation.
[gwr] Add logging for data handlers.
[jan] Add missing test autoloader.
[jan] Expand width of lock_owner column (Bug #10608).
[gwr] Fix installation paths (Bug #10588)
[mms] Fix advancing tasks pointer if system tasks also exist for an application
(Bug #9767).
[mms] Prevent unnecessary URL redirection if no logintasks need to be confirmed.
[mms] Always use canonical line endings in sendmail driver (Bug #10696).
[mms] Work around broken number_format() in PHP < 5.4.0.
[jan] Make unit tests locale independent.
[mms] Added 'canonical' parameter to Horde_Mime_Headers#toArray() and
Horde_Mime_Headers#toString() (Bug #10696).
[mms] Horde_Mime_Part::getRawPartText() was incorrectly returning a trailing
EOL for body data.
[jan] Add Horde_Mime_Mail#clearParts().
[mms] Fix iteration through child HTML nodes in the HTML viewer so that
extended viewers can do things like remove nodes outright.
[jan] Fix configuration of syntaxhighlighter viewer.
[jan] Update German translation.
[jan] Update Brazilian Portuguese translation.
[mms] Added ISO 639 language code lookup.
[gwr] Add missing font files.
[jan] Don't allow to create sub permissions of non-existant parent permissions
(Bug #10688).
[jan] Add Horde_Rdo_Query#distinct() (Request #10535).
[jan] Make Horde_Routes_Utils::controllerScan() Windows compatible.
[gwr] Only remove the "_controller" suffix if it exists.
[gwr] Fixed posting tweets.
[mjr] Fix generating OAuth request when multiple URL parameters are passed.
[mjr] Fix oauth endpoints to reflect Twitter's new requirements for https
[mjr] Initial release.
[jan] Use portable queries in SQL session handler (Bug #10574).
[mms] Add Bin2hex filter.
[jan] Fix encoding of CDATA (, Bug #10692).
[jan] Require PHPUnit 3.5 due to BC breaking changes in 3.6.
[gwr] Added Horde_Test_Stub_Factory as a simple factory stub.
[gwr] Add Horde_Test_Setup for complex test suite setups.
[jan] Fix class names in Horde_Text_Diff_ThreeWay merger (Bug #10548).
[mms] Add some more questionable tags/attributes to strip in the XSS filter.
[jan] Fix skipping tests if PDO driver is not available.
[jan] Speed up Horde_String::substr() (Evert Pot, Request #8627).
[gwr] Make unit tests timezone independent.
[jan] Fix reading file sizes from Samba backends.
[jan] Catch output from smbclient during error conditions (Bug #10638).
[jan] Implement size() method in Samba driver.
[jan] Fix setting permissions with File driver (Bug #10630).
[mms] Fix using File driver if vfsroot directory already exists (Bug #10584).
[mms] Fix internal reference to QUOTA_METRIC_* constants (Bug #10585).
[jan] Fix parsing of directory listings on /dev file systems in the SSH driver.
[jan] Complete fix for incorrect syncml:metinf and syncml:devinf URNs (Bug
[jan] Fix German title of tasks portal block (Bug #10486).
Horde Changes
[rla] Add account locking similar to the former kolab-specific option.
[jan] Add missing configuration for LDAP groups write support.
[rla] Show a warning when resetting password and no security question is set
(Request #10430).
[mjr] Update jQuery Mobile to version 1.0 Beta 2.
[jan] Update hordeweb theme to match new website layout.
Address Book Changes
[rla] Turba LDAP Driver now only rewrites changed attributes (Bug #9343).
[mjr] Run attribute values through decode_attribute hook when exporting.
[mjr] Ensure encode_attribute hook is called on imported objects
[mjr] Improve handling of removeUserData.
[mjr] Honor auto_create configuration setting (Bug #10452,
[jan] Don't allow to search binary fields.
[jan] Fix attribute name for assistant phone (Bug #10449).
[jan] Add missing migration script (Bug #10436).
[mjr] Fix issue with synchronizing deleted contacts (Bug #10422).
[jan] Fix searching for duplicates on some databases (Bug #10383).
[mjr] Add and support more attributes by default.
Calendar Changes
[jan] Fix opening events from agenda view.
[mjr] Always included the current default calendar in the sync_calendars
[mjr] Ensure exception gets start and end times when created from month view
(Bug #10496)
[jan] Update group permission when changing group down list in basic
permissions (Bug #10482).
[jan] Fix race condition when editing group permission in basic permission
screen (Bug #10482).
[mjr] Fix removeUserData API (Bug #10241).
[jan] Fix deleting events with a WebDAV client (Bug #10478).
[jan] Fix fatal error while searching if hitting certain recurring events.
[jan] Fix exporting events with snoozed alarms (Bug #10438).
[jan] Fix deleting resources (Bug #10427)
[jan] Support snoozing alarms with Sundbird/Lightning (Request #7470).
[jan] Import VALARM components from iCalendar 2.0 data (Request #6665).
[jan] Fix exporting all-day events to Funambol clients (Thomas Ilsche
<>, Bug #10349).
[jan] Fix creating events from dynamic view on Windows (Bug #9916).
[mjr] Fix displaying of freebusy data in dynamic view (,
Bug #10347).
[mjr] Fix updating attendees (Bug #10411).
[jan] Fix error if Nag is not installed (Bug #10406).
Tagging Changes
[mjr] Fix broken tag cloud queries due to missing GROUP BY fields (Bug #10419)
[mjr] Prevent tagging with empty strings.
[mjr] Enforce that object and type names are always taken as a string (Bug
[mjr] Updated unit tests to new test structure.
[mjr] Prevent tagging with empty tags.
Library Changes
[mjr] Fix syncing daily recurrence types.
[mjr] Support additional GAL fields (Bug #10504).
[mjr] Prevent broken clients from sending incoming changes with initial SYNC
request (Bug #10461).
[mjr] Fix sending MONTHLY_NTH and YEARLY_NTH recurrence types (Bug# 10416).
[mjr] Fix synchronization loop due to messages being deleted on server then
attempting a change from the client.
[mjr] Fix bug with certain recurrence types due to erroneously outputting a
zero as an empty tag (Bug# 10416).
[mjr] Support POOMCONTACTS2 schema in AS 2.5 clients also.
[mjr] Fix sending unnecessary FOLDERSYNC changes.
[mjr] Fix issue with FOLDERSYNC requests that was causing Android clients to
PING and SYNC the same collection an unlimited number of times.
[jan] Dynamically disable capabilities of Customsql authentication driver if
queries are empty (Michael Gröne, Request #10510).
[jan] Fix updating users in LDAP while using preauthenticate hooks.
[jan] Add support for resetting passwords to LDAP driver.
[rla] Add bad login blocking and account locking to the base driver.
[rla] Fix SQL driver when using soft_expiration and hard_expiration features.
[rla] No longer enforce lowercase fieldnames.
[mms] Detect broken RAR data so it does not cause an infinite loop.
[jan] Fix generating of URLs if both the webroot and the original URL are full
[mjr] Support additional GAL fields (Bug #10504).
[jan] Allow to pass a configuration array to the LDAP factory.
[mms] Revamp and fix Horde_Registry#removeUserData(); this method should now be
the sole access point to delete user data for any/all apps (Bug #10241).
[mms] Correctly apply value of $conf['session']['timeout'] to PHP environment.
[mms] Fix cookie timeouts.
[rla] Add locking routines to Horde_Core_Auth_Application.
[rla] Add support for Horde_Auth's new locking feature.
[rla] Display permissions of hidden apps too
[gwr] Do not fail when no basedn is set for the Horde_Kolab_Server
[mms] When reopening sessions, ensure that we don't alter session information
if the authentication status changed (Bug #10403).
[jan] Use 'ident' option of Horde_Log handlers to prefix log messages (Gonçalo
Queirós <>, Request #9322).
[jan] Check applications' authValidate() method if present.
[mms] Add Horde_Session::isActive().
[mjr] Add remove button to image fields (Request #9870).
[mms] Encrypted data is already base64 encoded (Bug #10285).
[jan] Fix exporting recurrence end date to iCalendar.
[jan] Add methods to add and drop primary keys (Request #10469).
[gwr] Fix usage of Horde_Exception_Wrapped.
[jan] Fix setting unix socket in PostgreSQL DSN (, Bug
[jan] Fix determination of last insert id on PostgreSQL up to 8.1.
[jan] Fix migrations from primary keys that have not been created with Horde_Db
in PostgreSQL.
[jan] Fix autoincrementKey sequences not incrementing after manually inserting
key values in PostgreSQL.
[jan] Fix changeColumn() migration to autoincrementKey if no primary key exists
[gwr] Ensure correct message and code type.
[jan] Don't include backtrace in Horde_Exception_Pear messages.
[mjr] Add remove button to image fields (Request #9870).
[jan] Fix bind for modifying existing LDAP groups.
[mjr] Fix version access (Bug #10425).
[jan] Avoid infinite loop when importing certain vCalendar 1.0/vCard 2.1 data.
[mjr] Fix fetching the version from an Icalendar object (Bug #10411).
[mms] Remove dependency on Auth_SASL.
[mms] Add support for CRAM-SHA1 and CRAM-SHA256 authentication (available in
Courier SASL library).
[mms] Remove dependency on Auth_SASL for CRAM-MD5 authentication.
[mms] Ignore unknown authentication methods; otherwise, they give false
positive when authenticating (Bug #10453).
[mms] Fix rare race condition that may cause FETCH requests in the IMAP Socket
driver to return empty results (Bug #10434).
[mms] Fix typo that prevented deletion of messages on POP3 servers (Bug #10424).
[mms] Fix regression in POP3 Socket driver that caused incorrect parsing of
server data (Bug #10417).
[mms] Fix OR search if first search element contains more than one search
criteria (Bug #10404).
[mms] Fix invalid IMAP command being sent if a changedsince search was empty.
[jan] Fix file names for plaintext and imtest authentication drivers.
[gwr] Removed stray kolab-format script which was moved to Horde_Kolab_Cli.
[gwr] Fixed detecting parse errors in subsequent parse attempts.
[gwr] Fix reading the user name.
[gwr] Added a backend that avoids querying LDAP.
[jan] Speed up Horde_Ldap_Search#shiftEntry() on large result sets.
[jan] Add 'ident' option to all handlers (Gonçalo Queirós
<>, Request #9322).
[mms] Fix parseAddressList() for empty address strings (Bug #10534).
[mms] Fix SMTP error codes/messages (Bug #10498).
[mms] Silence undefined errors when a search key is not found on the server.
[mms] Provide method to return approximate size of parts if it contains base64
encoded data (Request #9783).
[mms] Support Content-Duration MIME header (RFC 3803).
[mms] MIME body part can not have disposition of 'attachment' (Bug #10458).
[mms] Fix quoted-printable encoding for message parts contained in a multipart
that do not share the same EOLs as the parent part (Bug #10324).
[jan] Fix setting Courier fonts with font style (PEAR Bug #18550).
[gwr] Accept either d or t IMAP ACL as deletion right.
[mms] Fix identities when default_identity is locked (Bug #10098).
[mjr] Added Horde_Routes_Matcher helper class.
[mjr] Use FQL to obtain event list and add rsvp_status
[mms] Call garbage collection before grabbing list of active sessions.
[mms] Fix obtaining session information from more than one session.
[gwr] Fix usage of Horde_Exception_Wrapped.
[gwr] Fixed support for share parents in the Kolab driver.
[gwr] Fixed support for multiple namespaces of the same type in the Kolab
[jan] Fix logging errors while retrieving server changes.
[jan] Fix renaming and catching errors while reading sizes in SQL driver.
[jan] Fix reading file contents from FTP.
[jan] Fix incorrect syncml:metinf and syncml:devinf URNs (Bug #10229).
[jan] Mark Xml_Wbxml:: methods as static.
[jan] Don't load all shares with requested permissions from the backend if
$conf['share']['hidden'] is enabled.
Horde Changes
[mjr] Add remove button to image fields (Request #9870).
[mjr] Fix sending unnecessary FOLDERSYNC changes.
[mjr] Fix issue with FOLDERSYNC requests that was causing Android clients to
PING and SYNC the same collection an unlimited number of times.
[mjr] Use FQL to obtain event list and add rsvp_status.
[cjh] Add mobile maintenance screens.
[jan] Fix exporting multiline attributes to vCard 2.1 and vCalendar 1.0.
[cjh] New log filter for exact level matching (Bryan Alves
[jan] Don't set optional integer fields to 0 when automatically updating
[mjr] ActiveSync policykey is now per user, not per device.
[mjr] Fix recurring event exception handling for ActiveSync.
[mjr] Use AS in column aliases to make PostgreSQL happy (Bug #10346).
[jan] Don't show mobile login page if users are forced to traditional or
dynamic views (Request #10358).
[mjr] Improve calendar PING for iOS devices.
[mjr] Prevent an ActiveSync sync loop in some fringe cases.
[jan] Update PGP key server list and add SKS pool.
Address Book Changes
[mjr] Fix obtaining default share via Turba's API (, Bug #10393).
[mjr] Force ActiveSync device reset after sync_books pref is changed
(Request #10342).
Calendar Changes
[jan] Display event time in dynamic agenda/search view.
[jan] Improve exporting all-day events to Funambol clients.
[mjr] Fix removing an exception from a recurrence series (Bug # 10365).
[jan] Close session while listing events to speed up parallel loading from
different calendars.
[jan] Share list of displayed task lists with Nag (requires Nag 3.0.3).
[jan] Don't show import/export link in preferences if using the dynamic view.
[mjr] Force ActiveSync device reset after sync_calendars pref is changed
(Request #10342).
[jan] Try to work with remote servers even if they don't support a recent
WebDAV protocol version.
[jan] Support updating attendees from vCalendar 1.0 iTip responses.
[jan] Fix sending invitations to attendees from traditional view.
[jan] Fix organizer attribute when exporting to vCalendar 1.0.
[mjr] Fix issue that prevented synching when no sync_calendar pref was set
(Bug #10329).
Horde Changes
[mjr] Fix returning shares in the proper order when fetching multiple shares
by id.
[mjr] Fix incorrect method name in Pop3 Socket driver.
[jan] Don't use CSS cache in mobile interfaces because it breaks jQuery Mobile
[mjr] Fix race conditions caused by broken clients sending an inappropriate
PING request.
[jan] Fix duplication of objects during synchronization (, Bug
[Jan] Don't allow to click disabled login button (Bug #10267).
[jan] Allow configuration of split read databases for PostgreSQL (Request
[mjr] Honor initial_application setting for mobile view (Bug #10264).
[mjr] Fix issue with initial Android ActiveSync pairing.
[gwr] Support restricting the HTML tidy post processing by the message size
(Request #10266).
[gwr] Disabled the timeout on the logout token.
[mjr] Fix integer overflow issue in Facebook code (Bug #9889).
[mms] Fix adding users with Cyrsql driver (, Bug #10239).
Address Book Changes
[jan] Pass contact object to decode_attribute hook (, Bug
[jan] Complete fix for importing LDIF files (Bug #10139).
Calendar Changes
[jan] Update task due date in interface after dragging a task (Bug #10001).
[jan] Correctly sort events in portal block or widget if only displaying a
single calendar (Bug #10099).
[mjr] Allow syncing of multiple owner-owned calendars (Request #8734).
[jan] Don't show calendar drop down in event form without delete permissions
(Bug #10201).
[jan] Don't change event creator when saving events.
[jan] Fetch events immediately after saving remote calendar.
Tasks Changes
[jan] Add Ukrainian translation (Andriy Kopystyansky <>).
Horde Changes
[jan] Fix extracting of translation strings in a release.
[rla] Add user-specific admin permissions (Request #9350).
[jan] Don't strip domain from user name in account block.
[jan] Fix account block with empty configuration parameters.
[gwr] Added a script for exporting/importing preferences from/to a backend.
[mms] Fix regression with UTF7-IMAP encoding of non-ascii folder names (Bug
[mms] Allow numbers to be zero in certain preferences (Bug #10120).
[mms] Fix running Horde login tasks (Bug #9767).
[mms] Fix authenticating as several users in the same request (Bug #10027).
[mms] Fix colorpicker on categories preferences screen (Bug #10118).
[jan] Update Spanish translation.
[jan] Update Slovak translation.
[mjr] Fix Metar portal block.
[gwr] Add support for the Kolab IMAP based preferences backend.
[mms] Complete fix for issue causing slow syncs only (Bug #10008).
[jan] Add button to update all configurations with default values at once.
[jan] Update DataTree conversion scripts for Horde 4.
[jan] Fix rendering of DataTree browse tree.
[mjr] Fix issue with deleting identities (Bug #9997).
[mjr] Fix issue causing credentials to be lost when accessing the API during
ActiveSync requests (Bug #9733).
[jan] Store preferences for guests in the session.
[jan] SECURITY: Fix permission checks of guest users on system shares.
[mms] SECURITY: Fix deletion of unwanted HTML nodes in XSS filter.
[mms] Fix authentication failure when TOS is not accepted.
[jan] Don't show IMP compose link if user doesn't have permissions to IMP (Bug
[mms] Fix issue causing slow syncs only in SyncML (Bug #10008).
[jan] Fix adding categories.
[jan] Fix listing users in Customsql driver (Bug #9963).
[jan] Fix calculation of last password change in LDAP account portal block (Bug
[jan] Don't check for outdated DB schemas if database support is disabled (Bug
[mjr] Fix editing settings of fixed portal blocks (Bug #9910).
[mjr] Fix the blockTitle and blockContent API methods.
[jan] Fix creating folders with SQL VFS driver (Bug #9894).
[jan] Fix LDAP parameters of account portal block (Klaus Steinberger, Bug
[jan] Fix migration detection on Windows.
[mjr] Correctly sanitize DSN when using custom cyrus auth driver (Bug #9879).
[mjr] Fix some display issues when geocoding with HordeMap (Bug #9883).
[mms] Don't load sidebar content if not expanded.
[jan] Fix deleting groups.
[jan] Fix adding new groups (Bug #9881).
[jan] Fix displaying the Facebook preference group.
[mms] Add appinitialized hook.
[cjh] Fix cyrsql configuration, rename cyrus host and port parameters to not
clash with Horde_Db parameters (Bug #9864).
[cjh] Fix signups, and update style on signup and reset password pages to
match the login page (Bug #9856, partially from Ian Roth
[cjh] Show an unknown app icon rather than a broken image if an application
doesn't have an icon (Bug #9867).
[jan] Fix setting incorrect database charset in PDO drivers.
[mms] Add pushapp_post hook.
[jan] Fix application-specific permission checks (Bug #9786).
[jan] Fix resetting passwords (Vilius Sumskas <>, Bug #9800).
[jan] Fix Cyrsql authentication driver (Vilius Sumskas <>, Bug
[mjr] Fix ActiveSync provisioning.
[mjr] Fix for broken Nokia MfE clients (Bug #9757).
[jan] Delete object mappings too when deleting SyncML anchors (Request #9377).
[jan] Delay sidebar creation if the sidebar is generated through JavaScript.
[jan] Fix incorrect lowercasing of objectClasses in LDAP groups driver.
[jan] Fix fatal error in desktop notifications (Bug #9727).
[jan] Rename all scripts in bin/ to be prefixed with horde- and installed in
PEAR's bin_dir (Request #9647).
[jan] Don't throw exception when setting port number while using localhost in
MySQL configuration (Bug #9738).
[jan] Fix building LDAP filter for groups from configuration (Bug #9739).
[jan] Fix loading of Horde's vhost conf.php file (Bug #9704).
[jan] Fix OpenOffice MIME viewer.
[jan] Fire access keys on hidden elements in Internet Explorer (Bug #8057).
[jan] Don't fire access keys twice in Chrome browsers.
[jan] Fix JavaScript date calculations across DST boundaries.
[jan] Sort applications in preference menu by name.
[jan] Add translations for file upload error messages.
[mms] Fix identities pref UI when default_identity is locked (Bug #9701).
[mms] Added Horde::debug().
[jan] Update installation and upgrade instructions.
[jan] Fix converting identities with non-ascii characters to new format.
[jan] Fix passing arguments to sendmail binary (Gonçalo Queirós, Bug #9693).
[mjr] Service_Facebook refactored for OAuth2 authentication (Bug #9122).
[mjr] IMSP drivers refactored for Horde 4.
[gwr] Allow disabling applications for administrators.
[jan] Don't show sub-permissions for adding that exist already.
[jan] Fix listing more than one sub-permission (Bug #9671).
[jan] Fix calendar synchronization with certain Nokia phones (Bug #9646).
[jan] Catch fatal errors about missing tables during initial configuration.
[mms] Fix client-side IMAP sorting using envelope data.
[mms] Workaround PHP < 5.2.6 (broken stream handling) (Bug #9644).
[mjr] Fix updating schema for individual libraries.
[mjr] Improved control over which application view to load.
[jan] Find translateable strings in configuration files.
[mms] Fix clearing expanded state for javascript trees (Bug #9659).
[jan] Only show advanced preferences link if there are some.
[mms] Fix updates for refreshing Blocks (Bug #9655).
[mjr] Fix viewing applications with no mobile view from mobile devices.
[jan] Fix error when not using a Group backend. (Bug #9642).
[jan] Provide default configuration files instead of .dist versions.
[jan] Add a new Share SQL driver with better performance.
[cjh] Drop Log SQL driver.
[mms] Update prototypejs to v1.7.
[mms] Add theme caching.
[mms] Add hook to allow browser capabilities to be modified.
[jan] Add a configuration switch for automatic creation of default shares.
[cjh] Move from Net_DNS to Net_DNS2.
[jan] Translations for the framework packages are now bundled with those
[bak] Remove LDAP driver from Horde_SessionHandler
[jan] Require mandatory UTF-8 support for both servers and clients.
[jan] Renamed Setup to Configuration and Options to Preferences.
[mms] Moved sidebar code out of block/portal code (Request #9160).
[cjh] Remove fckeditor, standardizing on ckeditor.
[jan] Move all translations from po/ to locale/ and use short locale
identifiers where possible.
[jan] Remove frameset.
[jan] Remove dhtmlHistory library.
[mms] Removed support for krb5 authentication driver.
[jan] Allow to specify the URL parameter name for the alternate login setting.
[mms] Remove reliance on PEAR Mail library.
[jan] Send alarm emails again if the alarm has changed (Bug #8717).
[mms] Add advanced preferences options screen.
[mms] Complete rewrite of preferences UI display.
[mjr] Horde_Image can now act as an Iterator for multi-page images.
[mms] Remove Horde_Cipher library.
[mms] Add 'cssfiles' hook to add custom CSS files to a page.
[jan] Add configuration to not automatically show all available shares.
[jan] Add configuration to disallow world permissions for user shares.
[jan] Store alarm dates in UTC (Bug #8381).
[mms] Add abstracted AJAX interface (Request #4561).
[mms] Update scriptaculous to v1.8.3.
[mjr] Add Horde_Image_Exif (ported from Ansel) and add a exiftool driver.
[mjr] Horde_Image now has a native Imagick driver (removed proxy code).
[mms] All Horde login/authentication handled by single login page.
[mms] Move imple processing to a Horde service.
[mms] Refactor Maintenance:: -> Horde_LoginTasks::.
[mms] In Postgres, horde_prefs table now stores data in BYTEA instead of
TEXT (Bug #8130).
[mms] Improved caching of Registry data significantly reduces session sizes
and total session storage requirements (Request #8024).
[mms] IMAP auth driver now uses Horde_Imap_Client library.
[mms] Use Gnumeric package to render MS Excel files.
[mms] Use AbiWord package to render MS Word files.
[cjh] Remove sapdb session handler backend.
[jan] Add share locking (Alfonso Marín Marín <>).
[cjh] Remove javascript popup alarms.
[cjh] Update the Auth_passwd driver's add/update/remove user
implementations (Bug #7810).
[cjh] Add a Horde_Routes dispatcher for Rampage applications.
[mjr] Fix a possible infinite loop with certain recurring events in Horde_Date.
[jan] Use DateTime internally in Horde_Date.
Address Book Changes
[rla] Support multiple address books in search portal block (Request #8786).
[mjr] Fix importing LDIF files (Bug #10139).
[mjr] Fix issue introduced in 3.0.1 that caused contact images to not display
(Bug #10050).
[jan] Fix editing of multiple contacts at once (Bug #10085).
[jan] Enable homeAdress and workAdress composite fields by default.
[jan] Fix exporting department attribute over ActiveSync.
[mjr] Fix adding contacts with a category selected.
[jan] Fix LDAP schema checking (Bug #9826).
[jan] Fix creating temporary files with open_basedir restrictions.
[mjr] Fix importing objects with categories (Bug #9841).
[mjr] Fix merging duplicate contacts (Bug #9828).
[mjr] Allow unsetting the GAL and Client Address Book settings (Bug #9843).
[mjr] Fix deletion of virtual address books (Bug #9779).
[jan] Fix saving searches to virtual address books (Bug #9776).
[mjr] Datatree share to SQL upgrade script refactored for Horde 4.
[jan] Move all executable scripts to bin/ and prefix with turba-.
[jan] Add fields to all addresses if multiple passed to addField() API method
(Request #3482).
[mjr] Fix issue that caused the inability to preview contact images while
uploading (Bug #9702).
[jan] Update installation and upgrade instructions.
[gwr] Adapted the Kolab driver to Horde 4.
[mjr] Fix issue that caused erroneous file listings for objects in sources
without a __uid value.
[cjh] Fix storing of binary fields.
[mjr] Fix/refactor IMSP driver.
[mjr] Fix the listTimeObjects API for shared sources (Bug #9649).
[jan] Fix importing contacts with SyncML (Simon Bühler, Bug #9641).
[jan] Provide default configuration files instead of .dist versions.
[jan] Create a default address book if the user doesn't own any yet.
[jan] Rename sources.php to backends.php.
[mjr] If default addressbook is not browsable, try one from the addressbook pref
(Request: 6536).
[jan] Add duplicate search and merging.
[mjr] The listTimeObjects API now returns categories for each source
individually instead of returning only the categories available
(Request #8504).
Calendar Changes
[jan] Fix holidays being off with certain system timezones (Bug #9989).
[jan] Only highlight days in the mini calendar that are currently displayed
(Bug #10048).
[jan] Fix advanced search with empty search criteria (Bug #10038).
[jan] Add header for timeobjects calendars.
[jan] Fix date picker in advanced search form (Bug #10039).
[mjr] Remove visible exceptions when deleting recurring events (Bug #10013).
[mjr] Fix issue causing listTimeObject calendars to not appear (Bug #10012).
[jan] Don't show event edit links if user doesn't have edit permissions on any
[jan] Fix parsing of recurrence end date in dynamic view (Bug #10025).
[jan] Fix displaying of new tasks in new task lists.
[jan] Fix displaying colors of task lists.
[jan] Delete tasks from tasks view when deleting tasks lists.
[jan] Don't export multi-day events as multiple events to iCalendar data (Bug
[jan] Fix dragging tasks in the dynamic view.
[mjr] Fix calendar embedding.
[jan] Don't store all task lists in the session.
[jan] Fix new task lists not showing up until next login (Bug #9814).
[mjr] Fix broken event alarm links in sidebar (Bug #9897).
[mjr] Fix drag/drop editing of recurring events (Bug #9880).
[jan] Fix undefined function on Windows (Bug #9916).
[jan] Support adding and editing of CalDAV events in dynamic view (Bug #9865).
[mjr] Allow migrations to complete despite of missing shares.
[jan] Remove debug code in Ajax library (Bug #9818).
[jan] Fix application-specific permission checks (Bug #9786).
[jan] Fix fatal error when using the max_events permission (Bug #9784).
[mjr] Datatree share to SQL upgrade script refactored for Horde 4.
[mjr] Add migration for mysql specific geospatial fields (Bug #9758).
[jan] Set default alarm in dynamic view (Bug #9752).
[jan] Move all executable scripts to bin/ and prefix with kronolith-.
[jan] Fix javascript error when viewing events with desktop notifications
(Bug #9727).
[jan] Update installation and upgrade instructions.
[jan] Fix custom event alarm settings in traditional view (Bug #9154).
[jan] Only load external events in IFRAME if configured.
[jan] Fix retrieving event UIDs without date limit (Simon Bühler, Bug #9651).
[jan] Fix saving display status of other applications' calendars (Bug #9636).
[mjr] Add migration for converting existing event categories to tags.
[jan] Add configuration whether to load other applications in an IFRAME.
[jan] Provide default configuration files instead of .dist versions.
[jan] Send a subscription link with the notification about shared
calendars if necessary.
[jan] Default calendars no longer have the user name as the ID.
[jan] Create a default calendar if the user doesn't own any yet.
[jan] Add CalDAV client support (Request #8525).
[jan] Send agenda emails with HTML part and convert to Horde_View.
[mjr] More complete handling of recurring event exceptions when dealing with the
iCalendar format (Request #9091).
[jan] Add remote calendars to the possible list of calendars for free/busy
[jan] Send alarm and iTip notifications with HTML part and convert to
[jan] Add option to notify users about calendar permission changes.
[mjr] listTimeObject calendars are now viewable independently in the calendar
portal blocks (Request #8530).
[mjr] Recurring event exceptions are now indicated as such in the UI.
[mjr] Deleting a recurring event now also deletes all exceptions to that event.
[mjr] Add support for inline maps to the Ajax interface.
[jan] Add preference to limit the events per day in the month view.
[jan] Add system calendars (Request #2059).
[jan] Add URL field to events.
[jan] Add task management capabilities to the Ajax interface.
[jan] Manage holidays like any other calendar driver.
[mjr] Add resource scheduling.
[jan] Integrate tasks into Ajax interface (Gonçalo Queirós
[mjr] Extend listTimeObjects API to include optional links and icons.
[jan] Allow searching of any type of calendar and improve searching of
recurring events.