mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-07 20:08:53 +00:00
[ticket/12683] Improve exception handling
PHPBB3-12683
This commit is contained in:
parent
1c191868de
commit
8cea785f36
11 changed files with 54 additions and 17 deletions
|
@ -259,7 +259,6 @@ services:
|
|||
console.command.searchindex.create:
|
||||
class: phpbb\console\command\searchindex\create
|
||||
arguments:
|
||||
- '@config'
|
||||
- '@language'
|
||||
- '@log'
|
||||
- '@post.helper'
|
||||
|
@ -272,7 +271,6 @@ services:
|
|||
console.command.searchindex.delete:
|
||||
class: phpbb\console\command\searchindex\delete
|
||||
arguments:
|
||||
- '@config'
|
||||
- '@language'
|
||||
- '@log'
|
||||
- '@post.helper'
|
||||
|
|
|
@ -91,6 +91,8 @@ $lang = array_merge($lang, array(
|
|||
'GENERAL_SEARCH_SETTINGS' => 'General search settings',
|
||||
'GO_TO_SEARCH_INDEX' => 'Go to search index page',
|
||||
|
||||
'INVALID_ACTION' => 'Invalid action',
|
||||
|
||||
'INDEX_STATS' => 'Index statistics',
|
||||
'INDEXING_IN_PROGRESS' => 'Indexing in progress',
|
||||
'INDEXING_IN_PROGRESS_EXPLAIN' => 'The search backend is currently indexing all posts on the board. This can take from a few minutes to a few hours depending on your board’s size.',
|
||||
|
|
|
@ -215,6 +215,9 @@ $lang = array_merge($lang, array(
|
|||
2 => 'Downloaded %d times',
|
||||
),
|
||||
|
||||
'DI_SERVICE_NOT_FOUND' => 'No service found for class "%s" in collection.',
|
||||
'DI_MULTIPLE_SERVICE_DEFINITIONS' => 'More than one service definitions found for class "%s" in collection.',
|
||||
|
||||
'EDIT_POST' => 'Edit post',
|
||||
'ELLIPSIS' => '…',
|
||||
'EMAIL' => 'Email', // Short form for EMAIL_ADDRESS
|
||||
|
@ -715,6 +718,7 @@ $lang = array_merge($lang, array(
|
|||
'SEARCH_UNANSWERED' => 'Unanswered topics',
|
||||
'SEARCH_UNREAD' => 'Unread posts',
|
||||
'SEARCH_USER_POSTS' => 'Search user’s posts',
|
||||
'SEARCH_BACKEND_NOT_FOUND' => 'No search backend could be found.',
|
||||
'SECONDS' => 'Seconds',
|
||||
'SEE_ALL' => 'See All',
|
||||
'SELECT' => 'Select',
|
||||
|
|
|
@ -82,7 +82,7 @@ class list_all extends command
|
|||
foreach ($this->search_backend_collection as $search_backend)
|
||||
{
|
||||
$name = $search_backend->get_type();
|
||||
$active = ($name === $this->config['search_type']) ? '(<comment>' . $this->language->lang('$') . '</comment>) ' : '';
|
||||
$active = ($name === $this->config['search_type']) ? '(<comment>' . $this->language->lang('ACTIVE') . '</comment>) ' : '';
|
||||
$search_backends[] = '<info>' . $name . '</info> ' . $active . $search_backend->get_name();
|
||||
|
||||
if ($name === $this->config['search_type'] && !$search_backend->index_created())
|
||||
|
|
|
@ -15,6 +15,7 @@ namespace phpbb\cron\task\core;
|
|||
|
||||
use phpbb\config\config;
|
||||
use phpbb\cron\task\base;
|
||||
use phpbb\di\exception\di_exception;
|
||||
use phpbb\search\backend\search_backend_interface;
|
||||
use phpbb\search\search_backend_factory;
|
||||
|
||||
|
@ -88,7 +89,7 @@ class tidy_search extends base
|
|||
$this->active_search = $this->search_backend_factory->get_active();
|
||||
}
|
||||
}
|
||||
catch (\RuntimeException $e)
|
||||
catch (di_exception $e)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
|
21
phpBB/phpbb/di/exception/di_exception.php
Normal file
21
phpBB/phpbb/di/exception/di_exception.php
Normal file
|
@ -0,0 +1,21 @@
|
|||
<?php
|
||||
/**
|
||||
*
|
||||
* This file is part of the phpBB Forum Software package.
|
||||
*
|
||||
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
||||
* @license GNU General Public License, version 2 (GPL-2.0)
|
||||
*
|
||||
* For full copyright and license information, please see
|
||||
* the docs/CREDITS.txt file.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace phpbb\di\exception;
|
||||
|
||||
use phpbb\exception\runtime_exception;
|
||||
|
||||
class di_exception extends runtime_exception
|
||||
{
|
||||
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace phpbb\di\exception;
|
||||
|
||||
class multiple_service_definitions_exception extends di_exception
|
||||
{
|
||||
|
||||
}
|
8
phpBB/phpbb/di/exception/service_not_found_exception.php
Normal file
8
phpBB/phpbb/di/exception/service_not_found_exception.php
Normal file
|
@ -0,0 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace phpbb\di\exception;
|
||||
|
||||
class service_not_found_exception extends di_exception
|
||||
{
|
||||
|
||||
}
|
|
@ -13,6 +13,8 @@
|
|||
|
||||
namespace phpbb\di;
|
||||
|
||||
use phpbb\di\exception\multiple_service_definitions_exception;
|
||||
use phpbb\di\exception\service_not_found_exception;
|
||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
||||
|
||||
/**
|
||||
|
@ -105,7 +107,7 @@ class service_collection extends \ArrayObject
|
|||
{
|
||||
if ($service_id !== null)
|
||||
{
|
||||
throw new \RuntimeException('More than one service definitions found for class "'.$class.'" in collection.');
|
||||
throw new multiple_service_definitions_exception('DI_MULTIPLE_SERVICE_DEFINITIONS', [$class]);
|
||||
}
|
||||
|
||||
$service_id = $id;
|
||||
|
@ -114,7 +116,7 @@ class service_collection extends \ArrayObject
|
|||
|
||||
if ($service_id === null)
|
||||
{
|
||||
throw new \RuntimeException('No service found for class "'.$class.'" in collection.');
|
||||
throw new service_not_found_exception('DI_SERVICE_NOT_FOUND', [$class]);
|
||||
}
|
||||
|
||||
return $this->offsetGet($service_id);
|
||||
|
|
|
@ -14,10 +14,10 @@
|
|||
namespace phpbb\search;
|
||||
|
||||
use phpbb\config\config;
|
||||
use phpbb\di\exception\service_not_found_exception;
|
||||
use phpbb\di\service_collection;
|
||||
use phpbb\search\backend\search_backend_interface;
|
||||
use phpbb\search\exception\no_search_backend_found_exception;
|
||||
use RuntimeException;
|
||||
|
||||
class search_backend_factory
|
||||
{
|
||||
|
@ -58,16 +58,9 @@ class search_backend_factory
|
|||
{
|
||||
$search = $this->search_backends->get_by_class($class);
|
||||
}
|
||||
catch (RuntimeException $e)
|
||||
catch (service_not_found_exception $e)
|
||||
{
|
||||
if (strpos($e->getMessage(), 'No service found') === 0)
|
||||
{
|
||||
throw new no_search_backend_found_exception();
|
||||
}
|
||||
else
|
||||
{
|
||||
throw $e;
|
||||
}
|
||||
throw new no_search_backend_found_exception('SEARCH_BACKEND_NOT_FOUND', [], $e);
|
||||
}
|
||||
|
||||
return $search;
|
||||
|
|
|
@ -113,7 +113,7 @@ class state_helper
|
|||
// Make sure the action is correct (just in case)
|
||||
if (!in_array($action, ['create', 'delete']))
|
||||
{
|
||||
throw new search_exception('Invalid action');
|
||||
throw new search_exception('INVALID_ACTION');
|
||||
}
|
||||
|
||||
$state = [
|
||||
|
|
Loading…
Add table
Reference in a new issue