+ /**
+ * Handles a stash exception, giving a useful error to the user.
+ * @param Exception $e The exception we encountered.
+ */
+ protected function handleStashException( $e ) {
+ $exceptionType = get_class( $e );
+
+ switch ( $exceptionType ) {
+ case 'UploadStashFileNotFoundException':
+ $this->dieUsage( 'Could not find the file in the stash: ' . $e->getMessage(), 'stashedfilenotfound' );
+ break;
+ case 'UploadStashBadPathException':
+ $this->dieUsage( 'File key of improper format or otherwise invalid: ' . $e->getMessage(), 'stashpathinvalid' );
+ break;
+ case 'UploadStashFileException':
+ $this->dieUsage( 'Could not store upload in the stash: ' . $e->getMessage(), 'stashfilestorage' );
+ break;
+ case 'UploadStashZeroLengthFileException':
+ $this->dieUsage( 'File is of zero length, and could not be stored in the stash: ' . $e->getMessage(), 'stashzerolength' );
+ break;
+ case 'UploadStashNotLoggedInException':
+ $this->dieUsage( 'Not logged in: ' . $e->getMessage(), 'stashnotloggedin' );
+ break;
+ case 'UploadStashWrongOwnerException':
+ $this->dieUsage( 'Wrong owner: ' . $e->getMessage(), 'stashwrongowner' );
+ break;
+ case 'UploadStashNoSuchKeyException':
+ $this->dieUsage( 'No such filekey: ' . $e->getMessage(), 'stashnosuchfilekey' );
+ break;
+ default:
+ $this->dieUsage( $exceptionType . ": " . $e->getMessage(), 'stasherror' );
+ break;
+ }
+ }
+