--- /dev/null
+<?php
+class Horde_Core_Binder_Token implements Horde_Injector_Binder
+{
+ public function create(Horde_Injector $injector)
+ {
+ $token = isset($GLOBALS['conf']['token'])
+ ? Horde_Token::singleton($conf['token']['driver'], Horde::getDriverConfig('token', $conf['token']['driver']))
+ : Horde_Token::singleton('file');
+ $token->setLogger($injector->getInstance('Horde_Log_Logger'));
+
+ return $token;
+ }
+
+ public function equals(Horde_Injector_Binder $binder)
+ {
+ return false;
+ }
+}
'Horde_Notification' => new Horde_Core_Binder_Notification(),
'Horde_Perms' => new Horde_Core_Binder_Perms(),
'Horde_Template' => new Horde_Core_Binder_Template(),
+ 'Horde_Token' => new Horde_Core_Binder_Token(),
'Horde_Vfs' => new Horde_Core_Binder_Vfs(),
'Net_DNS_Resolver' => new Horde_Core_Binder_Dns()
);
<file name="Notification.php" role="php" />
<file name="Perms.php" role="php" />
<file name="Template.php" role="php" />
+ <file name="Token.php" role="php" />
<file name="Vfs.php" role="php" />
</dir> <!-- /lib/Horde/Core/Binder -->
<dir name="Factory">
<install name="lib/Horde/Core/Binder/Notification.php" as="Horde/Core/Binder/Notification.php" />
<install name="lib/Horde/Core/Binder/Perms.php" as="Horde/Core/Binder/Perms.php" />
<install name="lib/Horde/Core/Binder/Template.php" as="Horde/Core/Binder/Template.php" />
+ <install name="lib/Horde/Core/Binder/Token.php" as="Horde/Core/Binder/Token.php" />
<install name="lib/Horde/Core/Binder/Vfs.php" as="Horde/Core/Binder/Vfs.php" />
<install name="lib/Horde/Core/Factory/KolabServer.php" as="Horde/Core/Factory/KolabServer.php" />
<install name="lib/Horde/Core/Factory/KolabSession.php" as="Horde/Core/Factory/KolabSession.php" />
}
if ($this->_useFormToken) {
- require_once 'Horde/Token.php';
$token = Horde_Token::generateId($this->_name);
$_SESSION['horde_form_secrets'][$token] = true;
$this->_preserveVarByPost($this->_name . '_formToken', $token);
}
if ($this->_useFormToken) {
- require_once 'Horde/Token.php';
$token = Horde_Token::generateId($this->_name);
$_SESSION['horde_form_secrets'][$token] = true;
$this->_preserveVarByPost($this->_name . '_formToken', $token);
function preserve($vars)
{
if ($this->_useFormToken) {
- require_once 'Horde/Token.php';
$token = Horde_Token::generateId($this->_name);
$_SESSION['horde_form_secrets'][$token] = true;
$this->_preserveVarByPost($this->_name . '_formToken', $token);
$this->_autofilled = true;
if ($this->_useFormToken) {
- global $conf;
- require_once 'Horde/Token.php';
- if (isset($conf['token'])) {
- /* If there is a configured token system, set it up. */
- $tokenSource = &Horde_Token::singleton($conf['token']['driver'], Horde::getDriverConfig('token', $conf['token']['driver']));
- } else {
- /* Default to the file system if no config. */
- $tokenSource = &Horde_Token::singleton('file');
- }
+ $tokenSource = $GLOBALS['injector']->getInstance('Horde_Token');
$passedToken = $vars->get($this->_name . '_formToken');
if (!empty($passedToken) && !$tokenSource->verify($passedToken)) {
$this->_errors['_formToken'] = _("This form has already been processed.");
$this->_autofilled = true;
if ($this->_useFormToken) {
- global $conf;
- if (isset($conf['token'])) {
- /* If there is a configured token system, set it up. */
- $tokenSource = Horde_Token::factory($conf['token']['driver'], Horde::getDriverConfig('token', $conf['token']['driver']));
- } else {
- /* Default to the file system if no config. */
- $tokenSource = Horde_Token::factory('file');
- }
+ $tokenSource = $GLOBALS['injector']->getInstance('Horde_Token');
if (!$tokenSource->verify($this->_vars->get($this->_name . '_formToken'))) {
$this->_errors['_formToken'] = _("This form has already been processed.");
}
static protected $_instances = array();
/**
+ * Logger.
+ *
+ * @var Horde_Log_Logger
+ */
+ protected $_logger;
+
+ /**
* Hash of parameters necessary to use the chosen backend.
*
* @var array
$driver = basename($driver);
$class = __CLASS__;
- if ($driver == 'none') {
+ if ($driver != 'none') {
$class .= '_' . ucfirst($driver);
}
/**
* Constructor.
+ *
+ * @param array $params Configuration parameters:
+ * <pre>
+ * 'logger' - (Horde_Log_Logger) A logger object.
+ * </pre>
*/
protected function __construct($params)
{
+ if (isset($params['logger'])) {
+ $this->_logger = $params['logger'];
+ unset($params['logger']);
+ }
+
$this->_params = $params;
}
}
/**
- * Generates a connection id and returns it.
- *
- * @param string $seed A unique ID to be included in the token.
- *
- * @return string The generated id string.
- */
- public function generateId($seed = '')
- {
- return Horde_Url::uriB64Encode(pack('H*', sha1(uniqid(mt_rand(), true) . $seed . (isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : ''))));
- }
-
- /**
* Checks if the given token has been previously used. First
* purges all expired tokens. Then retrieves current tokens for
* the given ip address. If the specified token was not found,
{
}
+ /**
+ * Generates a connection id and returns it.
+ *
+ * @param string $seed A unique ID to be included in the token.
+ *
+ * @return string The generated id string.
+ */
+ static public function generateId($seed = '')
+ {
+ return Horde_Url::uriB64Encode(pack('H*', sha1(uniqid(mt_rand(), true) . $seed . (isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : ''))));
+ }
+
}
/* Return an error if the update fails. */
$result = $this->_write_db->query($query, $values);
if ($result instanceof PEAR_Error) {
- Horde::logMessage($result, 'ERR');
+ if ($this->_logger) {
+ $this->_logger->log($result, 'ERR');
+ }
throw new Horde_Exception_Prior($result);
}
}
$result = $this->_db->getOne($query, $values);
if ($result instanceof PEAR_Error) {
- Horde::logMessage($result, 'ERR');
+ if ($this->_logger) {
+ $this->_logger->log($result, 'ERR');
+ }
return false;
} else {
return !empty($result);
$result = $this->_write_db->query($query, $values);
if ($result instanceof PEAR_Error) {
- Horde::logMessage($result, 'ERR');
+ if ($this->_logger) {
+ $this->_logger->log($result, 'ERR');
+ }
throw new Horde_Exception_Prior($result);
}
}
<channel>pear.horde.org</channel>
</package>
</required>
+ <optional>
+ <package>
+ <name>Log</name>
+ <channel>pear.horde.org</channel>
+ </package>
+ </optional>
</dependencies>
<phprelease>
<filelist>
/* Check for duplicate submits. */
if ($vars->compose_formToken) {
- $tokenSource = isset($conf['token'])
- ? Horde_Token::factory($conf['token']['driver'], Horde::getDriverConfig('token', $conf['token']['driver']))
- : Horde_Token::factory('file');
+ $tokenSource = $injector->getInstance('Horde_Token');
try {
if (!$tokenSource->verify($vars->compose_formToken)) {