[sork] Fatal error: Class passwd_driver_xams: Cannot inherit from undefined class passwd_driver_sql
Jan Johansson
j2 at mupp.net
Tue Jan 17 12:07:10 PST 2006
Oliver Siegman (lead developer of the now 'dead' XAMS) wrote a plugin for
passwd that would interface to XAMS, but I get
Fatal error: Class passwd_driver_xams: Cannot inherit from undefined class
passwd_driver_sql
And I have no clue what might be wrong?
<?php
/**
* The XAMS driver attempts to change a user's password stored in an
XAMS/SQL
* databse and implements the Passwd_Driver API.
*
* $Horde: passwd/lib/Driver/sql.php,v 1.24 2005/08/23 11:15:06 jan Exp $
*
* Copyright 2000-2005 Horde Project (http://www.horde.org/)
*
* See the enclosed file LICENSE for license information (ASL). If you
* did not receive this file, see http://www.horde.org/licenses/asl.php.
*
* @author Mike Cochrane <mike at graftonhall.co.nz>
* @author Ilya Krel <mail at krel.org>
* @author Tjeerd van der Zee <admin at xar.nl>
* @author Mattias Webjörn Eriksson <mattias at webjorn.org>
* @author Eric Jon Rostetter <eric.rostetter at physics.utexas.edu>
* @author Oliver Siegmar <oliver.siegmar at xams.org>
* @package Passwd
*/
class Passwd_Driver_xams extends Passwd_Driver_sql {
/**
* Constructs a new Passwd_Driver_sql object.
*
* @param array $params A hash containing connection parameters.
*/
function Passwd_Driver_xams($params = array())
{
if (isset($params['phptype'])) {
$this->_params['phptype'] = $params['phptype'];
} else {
return PEAR::raiseError(_("Required 'phptype' not specified in
Passwd SQL configuration."));
}
/* Use defaults from Horde, but allow overriding in backends.php. */
$this->_params = array_merge(Horde::getDriverConfig('', 'xams'),
$params);
/* These default to matching the Auth_sql defaults. */
$this->_params['encryption'] = isset($params['encryption']) ?
$params['encryption'] : 'md5';
$this->_params['show_encryption'] =
isset($params['show_encryption']) ? $params['show_encryption'] : false;
}
/**
* Find out if a username and password is valid.
*
* @param string $userID The userID to check.
* @param string $old_password An old password to check.
*
* @return boolean True on valid or PEAR_Error on invalid.
*/
function _lookup($user, $old_password)
{
/* Connect to the database */
$res = $this->_connect();
if (is_a($res, 'PEAR_Error')) {
return $res;
}
/* Build the SQL query. */
if (strpos($username, '@') === false)
{
$sql = 'SELECT pm_users.id,
pm_users.password
FROM pm_sites
INNER JOIN pm_domains
ON pm_sites.id = pm_domains.siteid
INNER JOIN pm_users
ON pm_sites.id = pm_users.siteid
WHERE pm_users.uniquename = ?';
$values = array($user);
}
else
{
$sql = 'SELECT pm_users.id,
pm_users.password
FROM pm_sites
INNER JOIN pm_domains
ON pm_sites.id = pm_domains.siteid
INNER JOIN pm_users
ON pm_sites.id = pm_users.siteid
WHERE pm_users.name = ?
AND pm_domains.name = ?';
$values = explode('@', $user);
}
Horde::logMessage('SQL Query by Passwd_Driver_sql::_lookup(): ' .
$sql, __FILE__, __LINE__, PEAR_LOG_DEBUG);
/* Execute the query. */
$result = $this->_db->query($sql, $values);
if (!is_a($result, 'PEAR_Error')) {
$row = $result->fetchRow(DB_FETCHMODE_ASSOC);
$result->free();
if (is_array($row)) {
/* Get the password from the database. */
$current_password = $row['password'];
/* Check the passwords match. */
$ret = $this->comparePasswords($current_password,
$old_password);
return ($ret === true) ? $row['id'] : $ret;
}
}
return PEAR::raiseError(_("User not found"));
}
/**
* Modify (update) a mysql password record for a user.
*
* @param string $user The user whose record we will udpate.
* @param string $new_password The new password value to set.
*
* @return boolean True or False based on success of the modify.
*/
function _modify($user, $new_password)
{
/* Connect to the database. */
$res = $this->_connect();
if (is_a($res, 'PEAR_Error')) {
return $res;
}
/* Encrypt the password. */
$new_password = $this->encryptPassword($new_password,
$this->_params['show_encryption']);
/* Build the SQL query. */
$sql = 'UPDATE pm_users
SET password = ?
WHERE id = ?';
$values = array($new_password, $user);
Horde::logMessage('SQL Query by Passwd_Driver_sql::_modify(): ' .
$sql, __FILE__, __LINE__, PEAR_LOG_DEBUG);
/* Execute the query. */
$result = $this->_db->query($sql, $values);
if (is_a($result, 'PEAR_Error')) {
return $result;
}
return true;
}
/**
* Change the user's password.
*
* @param string $username The user for which to change the
password.
* @param string $old_password The old (current) user password.
* @param string $new_password The new user password to set.
*
* @return boolean True or false based on success of the change.
*/
function changePassword($username, $old_password, $new_password)
{
/* Check the current password. */
$res = $this->_lookup($username, $old_password);
if (is_a($res, 'PEAR_Error')) {
return $res;
}
return $this->_modify($res, $new_password);
}
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3012 bytes
Desc: not available
Url : http://lists.horde.org/archives/sork/attachments/20060117/f46a1149/smime.bin
More information about the sork
mailing list