]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Code to handle PEAR_Errors raised by DB_DataObject that are bubbling
authorZach Copley <zach@controlyourself.ca>
Thu, 12 Feb 2009 05:41:56 +0000 (21:41 -0800)
committerZach Copley <zach@controlyourself.ca>
Thu, 12 Feb 2009 05:41:56 +0000 (21:41 -0800)
up, but are actually expected and can safely be ignored.

actions/emailsettings.php
actions/register.php
lib/action.php

index b84acb214150902cc15e68b6bfe1794f64fa8ab1..c6c98345389a2de5ccd583a509bb1e31463ddd8e 100644 (file)
@@ -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);
+        }
+    }
+    
 }
index 5d7a8ce690d5fa88655f2a6c0f5fa2596c6c478e..853bd0cf662bd2187995f05d2e4330bcd2c5e403 100644 (file)
@@ -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?
index bd38bf79ccbf8dd6a55a08a9a753f49d0ec1dd1f..e3a8ef62c76f9a98e4d29b2cf4802fc80cde0b0c 100644 (file)
@@ -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
      *