This information is valid for Horde 3 only.
Registry usage example:
require_once HORDE_BASE . 'Horde/Registry.php';
// The Registry has a singleton method that should be used to ensure
// that there is only ever one instance of the Registry during a request.
$registry = &Registry::singleton();
// All applications should put themselves on the application stack when they start running
// This also takes care of reading the application's configuration file.
$registry->pushApp('curapp');
// When an app is finished, pop it off the application stack
// This also returns the global $conf variable to that of the previous application.
$registry->popApp();
// Routines can determine the current app:
$curapp = $registry->getApp();
// Find out if an application allows access for the current user (may be a guest user)
if ($registry->hasPermission('app')) {
// access allowed
}
Creating the Registry object, one can control how and if a session is started. Note that this only works if calling Registry::singleton() for the first time.
// Let the registry start a regular session. $registry = &Registry::singleton(); // Let the registry start a readonly session. $registry = &Registry::singleton(HORDE_SESSION_READONLY); // Don't let the registry start a session. $registry = &Registry::singleton(HORDE_SESSION_NONE);
The Registry lets you generate links to other apps
require_once HORDE_BASE . 'Horde/Registry.php';
$registry = &Registry::singleton();
// Check to see if the functionality we want is there
if (!$registry->hasMethod('mail/compose')) {
echo 'no mail/compose method defined';
exit;
}
// Generate the link
echo $registry->link('mail/compose', array('to' => 'foo@example.com', 'subject' => 'bar'));
The Registry also lets you invoke methods in other applications
require_once HORDE_BASE . 'Horde/Registry.php';
$registry = &Registry::singleton();
// Check to see if the functionality we want is there
if (!$registry->hasMethod('contacts/search')) {
echo 'no contacts/search method defined';
exit;
}
// The contacts/search method takes two arrays; one of names, one of addressbooks
$args = array('sources' => array('myldap'),
'names' => array('Chuck'),
'fields' => array('name', 'email'));
$results = $registry->call('contacts/search', $args);
// Using Horde 3.1 and PHP 5, calling API methods is even more elegant:
$results = $registry->contacts->search($args);