We are no longer offering accounts on this server. Consider https://gitlab.freedesktop.org/ as a place to host projects.

Commit 9f035e28 authored by Zach Copley's avatar Zach Copley

Code to handle PEAR_Errors raised by DB_DataObject that are bubbling

up, but are actually expected and can safely be ignored.
parent 9d070323
......@@ -487,4 +487,26 @@ class EmailsettingsAction extends AccountSettingsAction
return $other->id != $user->id;
}
}
/**
* Check old fashioned PEAR_Error msgs coming from DB_DataObject
*
* In this case email don't exist in the DB yet, so DB_DataObject
* throws an error. Overrided from Action.
*
* @param PEAR_Error
*
* @return nothing
*/
function checkDB_DataObjectError($error) {
if ($error->getCode() == DB_DATAOBJECT_ERROR_NODATA) {
// Do nothing.
} else {
parent::checkDB_DataObjectError($error);
}
}
}
......@@ -223,10 +223,31 @@ class RegisterAction extends Action
*/
function nicknameExists($nickname)
{
{
$user = User::staticGet('nickname', $nickname);
return ($user !== false);
}
/**
* Check old fashioned PEAR_Error msgs coming from DB_DataObject
*
* In this case nickname and email don't exist in the DB yet,
* so DB_DataObject throws an error. Overrided from Action.
*
* @param PEAR_Error
*
* @return nothing
*/
function checkDB_DataObjectError($error) {
if ($error->getCode() == DB_DATAOBJECT_ERROR_NODATA) {
// Do nothing.
} else {
parent::checkDB_DataObjectError($error);
}
}
/**
* Does the given email address already exist?
......
......@@ -82,6 +82,17 @@ class Action extends HTMLOutputter // lawsuit
*/
function prepare($argarray)
{
// This is for checking PEAR_Errors raised by DB_DataObject.
// Setting this to PEAR_ERROR_CALLBACK because setting
// to PEAR_ERROR_EXCEPTION does't work to allow PEAR_Errors
// to be handled as PHP5 exceptions, and PEAR_ERROR_RETURN
// does not cause DB_DataObject to actually return PEAR_Errors
// that can be checked with PEAR::isError() -- instead
// they just disappear into the ether, and can only be checked for
// after the fact. -- Zach
PEAR::setErrorHandling(PEAR_ERROR_CALLBACK,
array($this, "checkDB_DataObjectError"));
$this->args =& common_copy_args($argarray);
return true;
}
......@@ -844,6 +855,21 @@ class Action extends HTMLOutputter // lawsuit
throw new ClientException($msg, $code);
}
/**
* Check old fashioned PEAR_Error msgs coming from DB_DataObject
*
* Logs the DB_DataObject error. Override to do something else.
*
* @param PEAR_Error
*
* @return nothing
*/
function checkDB_DataObjectError($error) {
common_log(LOG_ERR, $error->getMessage());
// XXX: throw an exception here? --Zach
}
/**
* Returns the current URL
*
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment