summaryrefslogtreecommitdiff
path: root/plugins/password/password.php
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/password/password.php')
-rw-r--r--plugins/password/password.php19
1 files changed, 11 insertions, 8 deletions
diff --git a/plugins/password/password.php b/plugins/password/password.php
index db513fc0b..5ed08ed42 100644
--- a/plugins/password/password.php
+++ b/plugins/password/password.php
@@ -177,7 +177,7 @@ class password extends rcube_plugin
$field_id = 'curpasswd';
$input_curpasswd = new html_passwordfield(array('name' => '_curpasswd', 'id' => $field_id,
'size' => 20, 'autocomplete' => 'off'));
-
+
$table->add('title', html::label($field_id, Q($this->gettext('curpasswd'))));
$table->add(null, $input_curpasswd->show());
}
@@ -222,31 +222,34 @@ class password extends rcube_plugin
private function _save($curpass, $passwd)
{
$config = rcmail::get_instance()->config;
- $driver = $this->home.'/drivers/'.$config->get('password_driver', 'sql').'.php';
+ $driver = $config->get('password_driver', 'sql');
+ $class = "rcube_{$driver}_password";
+ $file = $this->home . "/drivers/$driver.php";
- if (!is_readable($driver)) {
+ if (!file_exists($file)) {
raise_error(array(
'code' => 600,
'type' => 'php',
'file' => __FILE__, 'line' => __LINE__,
- 'message' => "Password plugin: Unable to open driver file $driver"
+ 'message' => "Password plugin: Unable to open driver file ($file)"
), true, false);
return $this->gettext('internalerror');
}
- include($driver);
+ include_once $file;
- if (!function_exists('password_save')) {
+ if (!class_exists($class, false) || !method_exists($class, 'save')) {
raise_error(array(
'code' => 600,
'type' => 'php',
'file' => __FILE__, 'line' => __LINE__,
- 'message' => "Password plugin: Broken driver: $driver"
+ 'message' => "Password plugin: Broken driver $driver"
), true, false);
return $this->gettext('internalerror');
}
- $result = password_save($curpass, $passwd);
+ $object = new $class;
+ $result = $object->save($curpass, $passwd);
if (is_array($result)) {
$message = $result['message'];