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
This commit is contained in:
parent
5abd2b7d0c
commit
754bc1b616
|
@ -95,7 +95,7 @@ class RestoreaccountAction extends Action
|
||||||
|
|
||||||
function handle($argarray=null)
|
function handle($argarray=null)
|
||||||
{
|
{
|
||||||
parent::handle($args);
|
parent::handle($argarray);
|
||||||
|
|
||||||
if ($this->isPost()) {
|
if ($this->isPost()) {
|
||||||
$this->restoreAccount();
|
$this->restoreAccount();
|
||||||
|
@ -143,6 +143,7 @@ class RestoreaccountAction extends Action
|
||||||
return;
|
return;
|
||||||
case UPLOAD_ERR_NO_FILE:
|
case UPLOAD_ERR_NO_FILE:
|
||||||
// No file; probably just a non-AJAX submission.
|
// No file; probably just a non-AJAX submission.
|
||||||
|
throw new ClientException(_('No uploaded file.'));
|
||||||
return;
|
return;
|
||||||
case UPLOAD_ERR_NO_TMP_DIR:
|
case UPLOAD_ERR_NO_TMP_DIR:
|
||||||
// TRANS: Client exception thrown when a temporary folder is not present to store a file upload.
|
// 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
|
// This check is costly but we should probably give
|
||||||
// the user some info ahead of time.
|
// 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;
|
$feed = $doc->documentElement;
|
||||||
|
|
||||||
if ($feed->namespaceURI != Activity::ATOM ||
|
if (!$feed ||
|
||||||
|
$feed->namespaceURI != Activity::ATOM ||
|
||||||
$feed->localName != 'feed') {
|
$feed->localName != 'feed') {
|
||||||
throw new ClientException(_("Not an atom feed."));
|
throw new ClientException(_("Not an atom feed."));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user