Пример #1
0
 /**
  * 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());
 }
Пример #2
0
 /**
  * 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();
             }
         }
     }
 }
Пример #3
0
 /**
  * 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;
 }
Пример #4
0
 /**
  * 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;
 }
Пример #5
0
 /**
  * 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');
 }