Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions .github/workflows/static-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,20 @@ on:
- '*.x'

pull_request:
paths:
- .github/workflows/static-analysis.yml
- composer.*
- phpstan.neon.dist
- src/**
- tests/**

schedule:
- cron: '0 0 * * *'

jobs:
static-analysis-phpstan:

name: Source Code
name: "Static Analysis with PHPStan"
runs-on: ubuntu-latest

steps:
Expand All @@ -36,4 +42,4 @@ jobs:
command: composer update --prefer-stable --prefer-dist --no-interaction --no-progress

- name: Run Static Analysis
run: vendor/bin/phpunit
run: "vendor/bin/phpstan --error-format=table"
4 changes: 3 additions & 1 deletion src/CollectionDataTable.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
use Illuminate\Support\Arr;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Str;

class CollectionDataTable extends DataTableAbstract
Expand Down Expand Up @@ -184,7 +185,8 @@ public function results(): Collection
private function revertIndexColumn($mDataSupport): void
{
if ($this->columnDef['index']) {
$indexColumn = config('datatables.index_column', 'DT_RowIndex');
$indexColumn = Config::string('datatables.index_column', 'DT_RowIndex');
/** @var int|string $index */
$index = $mDataSupport ? $indexColumn : 0;
$start = $this->request->start();

Expand Down
4 changes: 3 additions & 1 deletion src/DataTableAbstract.php
Original file line number Diff line number Diff line change
Expand Up @@ -433,7 +433,9 @@ public function with(mixed $key, mixed $value = ''): static
if (is_array($key)) {
$this->appends = $key;
} else {
$this->appends[$key] = value($value);
/** @var int|string $arrayKey */
$arrayKey = is_int($key) || is_string($key) ? $key : (string) $key;
$this->appends[$arrayKey] = value($value);
}

return $this;
Expand Down
24 changes: 12 additions & 12 deletions src/DataTables.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@

use Illuminate\Contracts\Database\Eloquent\Builder as EloquentBuilder;
use Illuminate\Contracts\Database\Query\Builder as QueryBuilder;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Traits\Macroable;
use Yajra\DataTables\Exceptions\Exception;
use Yajra\DataTables\Utilities\Config;
use Yajra\DataTables\Utilities\Config as DataTablesConfig;
use Yajra\DataTables\Utilities\Request;

class DataTables
Expand Down Expand Up @@ -40,15 +41,17 @@
*
* @throws \Yajra\DataTables\Exceptions\Exception
*/
public static function make($source)

Check failure on line 44 in src/DataTables.php

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Refactor this function to reduce its Cognitive Complexity from 18 to the 15 allowed.

See more on https://sonarcloud.io/project/issues?id=yajra_laravel-datatables&issues=AZrJXqSxw5m_26Scr63s&open=AZrJXqSxw5m_26Scr63s&pullRequest=3264
{
$engines = (array) config('datatables.engines');
$builders = (array) config('datatables.builders');
$engines = Config::array('datatables.engines', []);
$builders = Config::array('datatables.builders', []);

$args = func_get_args();
foreach ($builders as $class => $engine) {
if ($source instanceof $class) {
$callback = [$engines[$engine], 'create'];
if (is_string($class) && $source instanceof $class) {
/** @var int|string $engineKey */
$engineKey = is_int($engine) || is_string($engine) ? $engine : (string) $engine;
$callback = [$engines[$engineKey], 'create'];

if (is_callable($callback)) {
/** @var \Yajra\DataTables\DataTableAbstract $instance */
Expand Down Expand Up @@ -87,7 +90,7 @@
/**
* Get config instance.
*/
public function getConfig(): Config
public function getConfig(): DataTablesConfig
{
return app('datatables.config');
}
Expand All @@ -99,8 +102,7 @@
*/
public function query(QueryBuilder $builder): QueryDataTable
{
/** @var string $dataTable */
$dataTable = config('datatables.engines.query');
$dataTable = Config::string('datatables.engines.query');

$this->validateDataTable($dataTable, QueryDataTable::class);

Expand All @@ -114,8 +116,7 @@
*/
public function eloquent(EloquentBuilder $builder): EloquentDataTable
{
/** @var string $dataTable */
$dataTable = config('datatables.engines.eloquent');
$dataTable = Config::string('datatables.engines.eloquent');

$this->validateDataTable($dataTable, EloquentDataTable::class);

Expand All @@ -131,8 +132,7 @@
*/
public function collection($collection): CollectionDataTable
{
/** @var string $dataTable */
$dataTable = config('datatables.engines.collection');
$dataTable = Config::string('datatables.engines.collection');

$this->validateDataTable($dataTable, CollectionDataTable::class);

Expand Down
7 changes: 4 additions & 3 deletions src/DataTablesServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@

namespace Yajra\DataTables;

use Illuminate\Support\Facades\Config;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Str;
use Yajra\DataTables\Utilities\Config;
use Yajra\DataTables\Utilities\Config as DataTablesConfig;
use Yajra\DataTables\Utilities\Request;

class DataTablesServiceProvider extends ServiceProvider
Expand All @@ -27,7 +28,7 @@ public function register()

$this->app->singleton('datatables.request', fn () => new Request);

$this->app->singleton('datatables.config', Config::class);
$this->app->singleton('datatables.config', DataTablesConfig::class);
}

/**
Expand All @@ -37,7 +38,7 @@ public function register()
*/
public function boot()
{
$engines = (array) config('datatables.engines');
$engines = Config::array('datatables.engines', []);
foreach ($engines as $engine => $class) {
$engine = Str::camel($engine);

Expand Down
3 changes: 2 additions & 1 deletion src/Processors/DataProcessor.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

use Illuminate\Contracts\Support\Htmlable;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\Config;
use Yajra\DataTables\Contracts\Formatter;
use Yajra\DataTables\Utilities\Helper;

Expand Down Expand Up @@ -67,7 +68,7 @@ public function __construct(protected iterable $results, array $columnDef, prote
public function process($object = false): array
{
$this->output = [];
$indexColumn = config('datatables.index_column', 'DT_RowIndex');
$indexColumn = Config::string('datatables.index_column', 'DT_RowIndex');

foreach ($this->results as $row) {
$data = Helper::convertToArray($row, ['hidden' => $this->makeHidden, 'visible' => $this->makeVisible, 'ignore_getters' => $this->ignoreGetters]);
Expand Down
11 changes: 7 additions & 4 deletions src/Utilities/Helper.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
use Illuminate\Contracts\Support\Arrayable;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\Blade;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Str;
use ReflectionFunction;
use ReflectionMethod;
Expand All @@ -18,8 +19,11 @@ class Helper
*/
public static function includeInArray(array $item, array $array): array
{
/** @var int|string $itemName */
$itemName = is_int($item['name']) || is_string($item['name']) ? $item['name'] : (string) $item['name'];

if (self::isItemOrderInvalid($item, $array)) {
return array_merge($array, [$item['name'] => $item['content']]);
return array_merge($array, [$itemName => $item['content']]);
}

$count = 0;
Expand All @@ -36,7 +40,7 @@ public static function includeInArray(array $item, array $array): array
$count++;
}

return array_merge($first, [$item['name'] => $item['content']], $last);
return array_merge($first, [$itemName => $item['content']], $last);
}

/**
Expand Down Expand Up @@ -354,8 +358,7 @@ public static function isJavascript(string|array|object|null $value, string $key
return false;
}

/** @var array $callbacks */
$callbacks = config('datatables.callback', ['$', '$.', 'function']);
$callbacks = Config::array('datatables.callback', ['$', '$.', 'function']);

if (Str::startsWith($key, 'language.')) {
return false;
Expand Down