This is a brief synopsis of the steps required to add arbitrary per-application permissions to the Horde permission system.
In this example we'll add the permission "arbitrary_permission" to module foo.
in foo/lib/api.php:
$_services['perms'] = array( 'args' => array(), 'type' => '{urn:horde}stringArray' );
and
function _foo_perms() { static $perms = array(); if (!empty($perms)) { return $perms; } $perms['tree']['foo']['arbitrary_permission'] = false; $perms['title']['foo:arbitrary_permission'] = _("Textual description"); $perms['type']['foo:arbitrary_permission'] = 'boolean'; $perms['param']['foo:arbitrary_permission'] = array(); return $perms; }
Then, once you have created an object that you wish to apply those permissions to,
global $perms; $p = $perms->newPermission('foo:arbitrary_permission'); $perms->addPermission($p);
After that, you should see the permission that you created on the permissions administration page.