����JFIF��x�x����'
Server IP : 78.140.185.180 / Your IP : 3.19.76.4 Web Server : LiteSpeed System : Linux cpanel13.v.fozzy.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64 User : builderbox ( 1072) PHP Version : 7.3.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/builderbox/www/common/Database/Datasource/ |
Upload File : |
<?php namespace Common\Database\Datasource; use Illuminate\Database\Eloquent\Model; class DatasourceFilters { /** * @var array */ private $filters; /** * @var Model */ private $model; public function __construct(?string $encodedFilters, Model $model) { $this->model = $model; $this->filters = $this->decodeFilters($encodedFilters); } public function getAll(): array { return $this->filters; } public function empty(): bool { return empty($this->filters); } public function where(string $key, string $operator, $value): self { $this->filters[] = [ 'key' => $key, 'operator' => $operator, 'value' => $value, ]; return $this; } public function getAndRemove( string $key, string $operator = null, $value = null ): ?array { // use func_get_args as "null" is a valid value, need // to check whether if it was actually passed by user $args = func_get_args(); foreach ($this->filters as $key => $filter) { if ( $filter['key'] === $args[0] && (!isset($args[1]) || $filter['operator'] === $args[1]) && (!isset($args[2]) || $filter['value'] === $args[2]) ) { unset($this->filters[$key]); return $filter; } } return null; } private function decodeFilters(?string $filterString): array { if ($filterString) { $filters = json_decode( base64_decode(urldecode($filterString)), true, ); return collect($filters) ->map(function ($filter) { return $this->normalizeFilter($filter); }) ->filter() ->toArray(); } else { return []; } } private function normalizeFilter(array $filter): ?array { $value = $filter['value']; $operator = $filter['operator'] ?? '='; if (is_array($value)) { // filtering by normalized model if (isset($value['id'])) { $value = $value['id']; // "value" contains both value and operator } elseif (array_key_exists('value', $value)) { $operator = $value['operator'] ?? $operator; $value = $value['value']; } } return [ 'key' => $filter['key'], 'operator' => $operator, 'value' => $value, ]; } }