From: Brion Vibber Date: Wed, 22 Dec 2010 19:13:57 +0000 (-0800) Subject: Error handling cleanup on backup/restore: X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=754bc1b6164b82109acd14d70b295291f40d07c7;p=quix0rs-gnu-social.git Error handling cleanup on backup/restore: * avoid PHP notice from using wrong variable * show a visible error instead of blank screen if no file submitted with restore form * avoid PHP strict warning from using calling "non-static" DOMDocument::loadXML statically * suppress PHP warning from XML parse errors --- diff --git a/actions/restoreaccount.php b/actions/restoreaccount.php index c33756d48f..5c8e4a12c1 100644 --- a/actions/restoreaccount.php +++ b/actions/restoreaccount.php @@ -95,7 +95,7 @@ class RestoreaccountAction extends Action function handle($argarray=null) { - parent::handle($args); + parent::handle($argarray); if ($this->isPost()) { $this->restoreAccount(); @@ -143,6 +143,7 @@ class RestoreaccountAction extends Action return; case UPLOAD_ERR_NO_FILE: // No file; probably just a non-AJAX submission. + throw new ClientException(_('No uploaded file.')); return; case UPLOAD_ERR_NO_TMP_DIR: // TRANS: Client exception thrown when a temporary folder is not present to store a file upload. @@ -185,12 +186,19 @@ class RestoreaccountAction extends Action // This check is costly but we should probably give // the user some info ahead of time. + $doc = new DOMDocument(); - $doc = DOMDocument::loadXML($xml); + // Disable PHP warnings so we don't spew low-level XML errors to output... + // would be nice if we can just get exceptions instead. + $old_err = error_reporting(); + error_reporting($old_err & ~E_WARNING); + $doc->loadXML($xml); + error_reporting($old_err); $feed = $doc->documentElement; - if ($feed->namespaceURI != Activity::ATOM || + if (!$feed || + $feed->namespaceURI != Activity::ATOM || $feed->localName != 'feed') { throw new ClientException(_("Not an atom feed.")); }