diff options
Diffstat (limited to 'plugins/password/password.php')
| -rw-r--r-- | plugins/password/password.php | 19 |
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']; |
