Development » Libraries
This is a list of PHP libraries developed by the horde team. Additional libraries not yet released are available in our source repository in the development section of the site.
All of the libraries are fully independent of the Horde applications. Utilities such as our date handling library, the iCalendar module, or the natural language parsing of dates can be used without installing Kronolith. The same holds true for the IMAP and MIME libraries powering our webmailer Imp and for all released modules on our PEAR server. This allows you to embed functionality based on such libraries seamlessly into your own PHP application context.
One of the strong advantages of the Horde PHP libraries is the fact that the code has been driven by the needs of the Horde applications. As these are being used by millions of users daily this means speedy code and maximal compatibility with system not always adhering to standards (e.g. Outlook).
You can download the libraries from our PEAR server directly but the default way of install the Horde PHP libraries is the installation on the command line via PEAR.
For this to work you will need to register the Horde PEAR channel by running
pear channel-discover pear.horde.org
After that you will be able to install the libraries with
pear install horde/HORDE_LIBRARY_NAME
The Horde_Date library could be installed like this for example:
pear install horde/horde_date
Libraries for implementing an ActiveSync server.
An interface to deal with reminders, alarms and notifications through a standardized API. The following notification methods are currently available: standard Horde notifications, popups, emails.
Classes for parsing command line arguments with various actions, providing help, grouping options, and more.
The Horde_Auth package provides a common interface into the various backends for the Horde authentication system.
Autoload implementation and class loading manager for Horde.
Extension of the Horde_Autoloader that implements caching of class-file-maps. The caching method is determined automatically from the list of supported cache backends: APC, XCache, eAccelerator, local file system.
The Horde_Browser class provides an API for getting information about the current user's browser and its capabilities.
A simple, functional caching API, with the option to store the cached data on the filesystem, in one of the PHP opcode cache systems (APC, eAcclerator, XCache, or Zend Performance Suite's content cache), memcached, or an SQL table.
Horde_Cli:: API for basic command-line functionality/checks
Command line interfaces can often be composed of different modules responsible for distinct actions. This package allows each such module to influence the overall command line interface. First and foremost each module can add its own option group with a specific title, description and a set of module specific options (see Horde_Argv_OptionGroup for further details). In addition Cli_Modular allows a module to modify the global usage string and add basic options valid for all modules.
An API for various compression techniques.
A programmatic way of building constraints that evaluate to true or false.
The controller part of an MVC system for Horde.
These classes provide the core functionality of the Horde Application Framework.
The Horde_Crypt package class provides an API for various cryptographic systems.
Provides blowfish encryption/decryption for PHP string data.
A data import and export API, with backends for: * CSV * TSV * iCalendar * vCard * vNote * vTodo
This is a transitional package to allow upgrading from Horde 4 to Horde 5. It can safely be uninstalled
Package for creating and manipulating dates.
Library for natural-language date parsing, with support for multiple languages and locales
Horde database/SQL abstraction layer
Lightweight API for ElasticSearch (http://www.elasticsearch.org/).
This class provides the default exception handlers for the Horde Application Framework.
Support for working with feed formats such as RSS and Atom.
The Horde_Form package provides form rendering, validation, and other functionality for the Horde Application Framework.
Package for managing and accessing the Horde groups system.
The Horde_History API provides a way to track changes on arbitrary pieces of data in Horde applications.
An API for making HTTP requests.
An API for dealing with iCalendar data.
An Image utility API, with backends for: * GD * GIF * PNG * SVG * SWF * ImageMagick convert command line tool * Imagick Extension
Interface to access IMAP4rev1 (RFC 3501) mail servers. Also supports connections to POP3 (STD 53/RFC 1939).
Provides an API into an IMSP server for address books and options.
A depedency injection container for Horde.
This package to generates MIME encapsuled responses to iCalendar invitations.
A set of utilities to deal with the various aspects of a Kolab server as backend. The primary focus is dealing with the data stored in IMAP.
This package allows to convert Kolab data objects from XML to data arrays.
This package reads/writes entries in the Kolab user database stored in LDAP.
This package stores Kolab specific user data in the session.
Storing user data in an IMAP account belonging to the user is one of the Kolab server core concepts. This package provides all the necessary means to deal with this type of data storage effectively.
A set of classes for connecting to LDAP servers and working with directory objects.
The Horde_ListHeaders library parses Mailing List Headers as defined in RFC 2369 & RFC 2919.
The Horde resource locking system.
Horde Logging package with configurable handlers, filters, and formatting.
An API for dealing with tasks run upon login to Horde applications.
Provides interfaces for sending e-mail messages and parsing e-mail addresses.
Provides an API to access a memcache installation.
Provides methods for dealing with Multipurpose Internet Mail Extensions (MIME) features (RFC 2045/2046/2047).
Provides rendering drivers for MIME data.
Common methods for handling language data, timezones, and hostname->country lookups.
A library implementing a subject-observer pattern for raising and showing messages of different types and to different listeners.
An OAuth consumer (http://oauth.net) and OAuth infrastructure, and in the future will provide an OAuth server.
PDF generation using only PHP, without requiring any external libraries.
The component provides various tools to deal with PEAR. Among other features it allows updating the package.xml file or accessing a remote PEAR server.
The Perms package provides an interface to the Horde permissions system.
The Horde_Prefs package provides a common abstracted interface into the various preferences storage mediums. It also includes all of the functions for retrieving, storing, and checking preference values.
Queue layer with various storage backends and runners
Lightweight ORM layer
Tools necessary to create the Horde distribution packages.
Allows PEAR to install Horde components into a base Horde installation.
Classes for mapping URLs into the controllers and actions of an MVC system. It is a port of a Python library, Routes, by Ben Bangert (http://routes.groovie.org).
A common abstracted interface to various remote methods of accessing Horde functionality.
Packaged version of the PHP Scribe client.
An API for encrypting and decrypting small pieces of data with the use of a shared key.
An interface to various methods of encapsulating data.
Client libraries for the Facebook REST API.
Client libraries for the Twitter REST API.
Interfaces to various URL shortening services.
Set of classes that provide an abstraction to various online weather service providers. Includes drivers for WeatherUnderground, WorldWeatherOnline, and Google Weather.
Horde_SessionHandler defines an API for implementing custom session handlers for PHP.
Horde_Share provides an interface to all shared resources a user owns or has access to.
Unified spellchecking API.
Horde_Sql:: contains some utility functions for dealing with SQL.
An object-oriented interface to assist in creating and storing PHP stream resources, and to provide utility methods to access and manipulate the stream contents.
A collection of various stream filters.
A collection of stream wrappers.
Support classes not tied to Horde but is used by it. These classes can be used outside of Horde as well.
Classes for implementing a SyncML server.
Horde Template system. Adapted from bTemplate, by Brian Lozier
Horde-specific PHPUnit base classes.
A text-based diff engine and renderers for multiple diff output formats.
Common methods for fitering and converting text.
The Horde_Text_Filter_Csstidy:: class provides the PHP-based library needed to perform optimization/compression on CSS code. It is provided in a separate package as the code is under the GPLv2 license instead of the LGPLv2 license used for the Text_Filter class.
The Horde_Text_Flowed:: class provides common methods for manipulating text using the encoding described in RFC 3676 ('flowed' text).
Packaged version of the PHP Thrift client
Library for parsing timezone databases and generating VTIMEZONE iCalendar components.
The Horde_Token:: class provides a common abstracted interface into the various token generation mediums. It also includes all of the functions for retrieving, storing, and checking tokens.
A tree view of hierarchical information. It allows for expanding/collapsing of branches and maintains their state.
This class represents a single URL and provides methods for manipulating URLs.
These classes provide functionality useful for all kind of applications.
A Virtual File System API, with backends for: * SQL * FTP * Local filesystems * Hybrid SQL and filesystem * Samba * SSH2/SFTP * IMAP (Kolab) Reading, writing and listing of files are all supported.
A simple View pattern implementation.
An element object that can be used to provide SimpleXML-like functionality over a DOM object. The main advantage over using SimpleXML is the ability to add multiple levels of new elements in a single call, without introducing "ghost" objects.
Encoding and decoding of WBXML (Wireless Binary XML) documents. WBXML is used in SyncML for transferring smaller amounts of data with wireless devices.
Classes for parsing YAML files into PHP arrays, and dumping PHP arrays into YAML encoding.