/**
  * Handle the filter.
  *
  * @param Builder               $query
  * @param SearchFilterInterface $filter
  */
 public function handle(Builder $query, TableBuilder $builder, SearchFilterInterface $filter)
 {
     $stream = $filter->getStream();
     $model = $builder->getTableModel();
     /**
      * If the model is translatable then
      * join it's translations so they
      * are filterable too.
      *
      * @var EloquentQueryBuilder $query
      */
     if ($model->getTranslationModelName() && !$query->hasJoin($model->getTranslationTableName())) {
         $query->leftJoin($model->getTranslationTableName(), $model->getTableName() . '.id', '=', $model->getTranslationTableName() . '.' . $model->getRelationKey());
     }
     $query->where(function (Builder $query) use($filter, $stream) {
         foreach ($filter->getColumns() as $column) {
             $query->orWhere($column, 'LIKE', "%{$filter->getValue()}%");
         }
         foreach ($filter->getFields() as $field) {
             $filter->setField($field);
             $fieldType = $stream->getFieldType($field);
             $fieldTypeQuery = $fieldType->getQuery();
             $fieldTypeQuery->setConstraint('or');
             $this->container->call([$fieldTypeQuery, 'filter'], compact('query', 'filter', 'builder'));
         }
     });
 }
 /**
  * Handle the command.
  *
  * @param Container $container
  */
 public function handle(Container $container)
 {
     /**
      * Set the default options handler based
      * on the builder class. Defaulting to
      * no handler.
      */
     if (!$this->builder->getRepository()) {
         $model = $this->builder->getTableModel();
         if (!$this->builder->getRepository() && $model instanceof EntryModel) {
             $this->builder->setRepository($container->make(EntryTableRepository::class, compact('model')));
         } elseif (!$this->builder->getRepository() && $model instanceof EloquentModel) {
             $this->builder->setRepository($container->make(EloquentTableRepository::class, compact('model')));
         }
     }
 }
示例#3
0
 /**
  * Save the order of the entries.
  *
  * @param TableBuilder $builder
  * @param Request      $request
  */
 public function handle(TableBuilder $builder, Request $request)
 {
     $count = 0;
     $model = $builder->getTableModel();
     /* @var EloquentModel $entry */
     foreach ($request->get($builder->getTableOption('prefix') . 'order', []) as $k => $id) {
         if ($entry = $model->find($id)) {
             $entry->sort_order = $k + 1;
             $entry->save();
             $count++;
         }
     }
     $builder->fire('reordered', compact('count', 'builder'));
     $this->messages->success(trans('streams::message.reorder_success', compact('count')));
 }
示例#4
0
 /**
  * ExportAll the selected entries.
  *
  * @param TableBuilder    $builder
  * @param ResponseFactory $response
  * @param array           $selected
  */
 public function handle(TableBuilder $builder, ResponseFactory $response, array $selected)
 {
     $model = $builder->getTableModel();
     $stream = $builder->getTableStream();
     $headers = ['Content-Disposition' => 'attachment; filename=' . $stream->getSlug() . '.csv', 'Cache-Control' => 'must-revalidate, post-check=0, pre-check=0', 'Content-type' => 'text/csv', 'Pragma' => 'public', 'Expires' => '0'];
     $callback = function () use($selected, $model) {
         $output = fopen('php://output', 'w');
         /* @var EloquentModel $entry */
         foreach ($model->all() as $k => $entry) {
             if ($k == 0) {
                 fputcsv($output, array_keys($entry->toArray()));
             }
             fputcsv($output, $entry->toArray());
         }
         fclose($output);
     };
     $builder->setTableResponse($response->stream($callback, 200, $headers));
 }
示例#5
0
 /**
  * Delete the selected entries.
  *
  * @param TableBuilder $builder
  * @param array        $selected
  */
 public function handle(TableBuilder $builder, array $selected)
 {
     $count = 0;
     $model = $builder->getTableModel();
     /* @var EloquentModel $entry */
     foreach ($selected as $id) {
         $entry = $model->find($id);
         if ($entry && $entry->isDeletable() && $entry->delete()) {
             $builder->fire('row_deleted', compact('builder', 'model', 'entry'));
             $count++;
         }
     }
     if ($count) {
         $builder->fire('rows_deleted', compact('count', 'builder', 'model'));
     }
     if ($selected) {
         $this->messages->success(trans('streams::message.delete_success', compact('count')));
     }
 }
 /**
  * ForceDelete the selected entries.
  *
  * @param TableBuilder $builder
  * @param array        $selected
  */
 public function handle(TableBuilder $builder, EloquentRepositoryInterface $repository, array $selected)
 {
     $count = 0;
     $repository->setModel($builder->getTableModel());
     /* @var EloquentModel $entry */
     foreach ($selected as $id) {
         if ($entry = $repository->findTrashed($id)) {
             if ($entry->trashed() && $repository->forceDelete($entry)) {
                 $builder->fire('row_deleted', compact('builder', 'model', 'entry'));
                 $count++;
             }
         }
     }
     if ($count) {
         $builder->fire('rows_deleted', compact('count', 'builder', 'model'));
     }
     if ($selected) {
         $this->messages->success(trans('streams::message.delete_success', compact('count')));
     }
 }