Merge branch 'search' into dev

This commit is contained in:
Michal Kváček
2016-04-01 20:52:26 +02:00
3 changed files with 28 additions and 12 deletions
@@ -5,14 +5,20 @@ use App\Enumerations\Exceptions\EnumerationExistsException;
use App\Handlers\Contracts\SearchHandler; use App\Handlers\Contracts\SearchHandler;
use App\Handlers\Contracts\SearchPresenterHandler; use App\Handlers\Contracts\SearchPresenterHandler;
use App\Handlers\Registrators\Items\SearchEngine; use App\Handlers\Registrators\Items\SearchEngine;
use Symfony\Component\Process\Exception\InvalidArgumentException;
class SearchEngineRegistrator class SearchEngineRegistrator
{ {
const ADMIN = 'admin';
const VISITOR = 'visitor';
protected $searchEngines; protected $searchEngines;
function __construct($app) function __construct($app)
{ {
$this->searchEngines = []; $this->searchEngines = [
self::ADMIN => [],
self::VISITOR => []
];
} }
/** /**
@@ -21,37 +27,46 @@ class SearchEngineRegistrator
* @param SearchHandler $search * @param SearchHandler $search
* @param SearchPresenterHandler $presenter * @param SearchPresenterHandler $presenter
* *
* @param $type
*
* @throws EnumerationExistsException * @throws EnumerationExistsException
*/ */
public function register(SearchHandler $search, SearchPresenterHandler $presenter) public function register(SearchHandler $search, SearchPresenterHandler $presenter, $type)
{ {
$this->checkIfRegistered($search->getId()); $this->checkIfRegistered($type, $search->getId());
// register new extension // register new extension
$this->searchEngines[$search->getId()] = [$search, $presenter]; $this->searchEngines[$type][$search->getId()] = [$search, $presenter];
} }
/** /**
* Getter for all registered extensions * Getter for all registered extensions
* *
* @param $type
*
* @return array * @return array
*/ */
public function get() public function get($type)
{ {
return $this->searchEngines; if (!isset($this->searchEngines[$type])) {
throw new InvalidArgumentException('Invalid type ' . $type);
}
return $this->searchEngines[$type];
} }
/** /**
* Checks if this section is not already defined * Checks if this section is not already defined
* *
* @param $type
* @param $id * @param $id
* *
* @throws EnumerationExistsException * @throws EnumerationExistsException
*/ */
private function checkIfRegistered($id) private function checkIfRegistered($type, $id)
{ {
if (isset($this->searchEngines[$id])) { if (isset($this->searchEngines[$type][$id])) {
throw new EnumerationExistsException('Already existing search engine ' . $id); throw new EnumerationExistsException('Already existing search engine ' . $id . ' in ' . $type);
} }
} }
} }
+2 -1
View File
@@ -4,6 +4,7 @@ namespace App\Http\Controllers\Admin;
use App\Handlers\Contracts\SearchHandler; use App\Handlers\Contracts\SearchHandler;
use App\Handlers\Contracts\SearchPresenterHandler; use App\Handlers\Contracts\SearchPresenterHandler;
use App\Handlers\Registrators\SearchEngineRegistrator;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Http\Requests; use App\Http\Requests;
use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\App;
@@ -48,7 +49,7 @@ class Search extends Controller
protected function performSearch($term) protected function performSearch($term)
{ {
$engines = App::make('registerSearchEngine') $engines = App::make('registerSearchEngine')
->get(); ->get(SearchEngineRegistrator::ADMIN);
$resultsParts = []; $resultsParts = [];
foreach ($engines as $engine) { foreach ($engines as $engine) {
+2 -2
View File
@@ -119,8 +119,8 @@ class AppServiceProvider extends ServiceProvider
{ {
$registrator = $this->app->make('registerSearchEngine'); $registrator = $this->app->make('registerSearchEngine');
$registrator->register(new Content(), new AdminContentPresenter()); $registrator->register(new Content(), new AdminContentPresenter(), SearchEngineRegistrator::ADMIN);
$registrator->register(new Files(), new AdminFiles()); $registrator->register(new Files(), new AdminFiles(), SearchEngineRegistrator::ADMIN);
} }
/** /**