/** * Handle the command. * * @param ModuleCollection $modules * @param Decorator $decorator * @param Repository $config * @param Container $container * @param Request $request * @param Search $search * @return LengthAwarePaginator */ public function handle(ModuleCollection $modules, Decorator $decorator, Repository $config, Container $container, Request $request, Search $search) { /* @var Query $query */ $query = $search->index($this->criteria->option('index', 'default')); $constraint = $this->criteria->option('in'); if (!empty($constraint) && is_string($constraint)) { $query = $query->search('stream', $constraint, ['required' => true]); } if (!empty($constraint) && is_array($constraint)) { /* @var Module $module */ foreach ($modules->withConfig('search') as $module) { foreach ($config->get($module->getNamespace('search')) as $model => $definition) { /* @var EntryInterface $model */ $model = $container->make($model); $stream = $model->getStreamNamespace() . '.' . $model->getStreamSlug(); if (!in_array($stream, $constraint)) { $query = $query->search('stream', $stream, ['required' => false, 'prohibited' => true]); } } } } foreach ($this->criteria->getOperations() as $operation) { $query = call_user_func_array([$query, $operation['name']], $operation['arguments']); } $page = $request->get('page', 1); $perPage = $this->criteria->option('paginate', $this->criteria->option('limit', 15)); $query->limit($perPage, ($page - 1) * $perPage); $collection = new SearchCollection(array_map(function ($result) use($decorator) { return $decorator->decorate(new SearchItem($result)); }, $query->get())); return (new LengthAwarePaginator($collection, $query->count(), $perPage, $page))->setPath($request->path())->appends($request->all()); }
/** * Execute the console command. * * @param ModuleCollection $modules * @param Repository $config * @param Search $search * @param Kernel $console */ public function fire(ModuleCollection $modules, Repository $config, Search $search, Kernel $console) { $stream = $this->argument('stream'); if (!$stream) { $this->info('Destroying index'); $console->call('search:destroy'); } else { $this->info('Deleting ' . $stream); $search->search('stream', $stream)->delete(); } /* @var Module $module */ foreach ($modules->withConfig('search') as $module) { foreach ($config->get($module->getNamespace('search')) as $model => $search) { /* @var EntryModel $model */ $model = new $model(); if (!$stream || $stream == $model->getStreamNamespace() . '.' . $model->getStreamSlug()) { $this->info('Rebuilding ' . $stream); $this->output->progressStart($model->count()); foreach ($model->all() as $entry) { $entry->save(); $this->output->progressAdvance(); } $this->output->progressFinish(); } } } }
/** * Handle the command. * * @param ModuleCollection $modules * @param Repository $config * @return mixed|null */ public function handle(ModuleCollection $modules, Repository $config) { /* @var Module $module */ foreach ($modules->withConfig('search.' . get_class($this->entry)) as $module) { return $config->get($module->getNamespace('search.' . get_class($this->entry))); } return null; }
/** * Handle the command. * * @param ModuleCollection $modules * @param Repository $config * @return mixed|null */ public function handle(ModuleCollection $modules, Repository $config) { $default = $config->get('anomaly.module.search::' . ($key = 'search.' . get_class($this->entry))); /* @var Module $module */ foreach ($modules->withConfig($key) as $module) { return $default ?: $config->get($module->getNamespace($key)); } return $default; }
/** * Handle the command. * * @param ModuleCollection $modules * @param Repository $config * @return mixed|null */ public function handle(ModuleCollection $modules, Repository $config) { $items = []; /* @var Module $module */ foreach ($modules->withConfig('search') as $module) { foreach ($config->get($module->getNamespace('search')) as $model => $configuration) { $items[$model] = $configuration; } } return $items; }
/** * Create the event handler. * * @return void */ public function __construct(ModuleCollection $moduleCollection) { $this->modules = $moduleCollection->withConfig('builder'); }