/**
* Finds out if the user has the specified rights to the given object,
* specific to a certain application.
*
* @param string $permission The permission to check.
* @param array $opts Additional options:
* <pre>
* 'app' - (string) The app to check.
* DEFAULT: The current pushed app.
* 'opts' - (array) Additional options to pass to the app function.
* DEFAULT: None
* </pre>
*
* @return mixed The specified permissions.
*/
public function hasAppPermission($permission, $opts = array())
{
$app = isset($opts['app']) ? $opts['app'] : $this->_registry->getApp();
if ($this->_perms->exists($app . ':' . $permission)) {
$perms = $this->_perms->getPermissions($app . ':' . $permission, $this->_registry->getAuth());
if ($perms === false) {
return false;
}
$args = array($permission, $perms, isset($opts['opts']) ? $opts['opts'] : array());
try {
return $this->_registry->callAppMethod($app, 'hasPermission', array('args' => $args));
} catch (Horde_Exception $e) {
}
}
return true;
}