Completed
Push — master ( 0ea243...da58d4 )
by Henry
10:25 queued 33s
created

modules/TableSorter/TableSorter.php (1 issue)

mismatching argument types.

Documentation Minor

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
namespace Redaxscript\Modules\TableSorter;
3
4
use Redaxscript\Db;
5
use Redaxscript\Filter;
6
use Redaxscript\Head;
7
use Redaxscript\Header;
8
use Redaxscript\Module;
9
use function array_search;
10
use function file_get_contents;
11
use function json_decode;
12
use function json_encode;
13
14
/**
15
 * javaScript powered table sorter
16
 *
17
 * @since 4.0.0
18
 *
19
 * @package Redaxscript
20
 * @category Modules
21
 * @author Henry Ruhs
22
 */
23
24
class TableSorter extends Module\Module
25
{
26
	/**
27
	 * array of the module
28
	 *
29
	 * @var array
30
	 */
31
32
	protected static $_moduleArray =
33
	[
34
		'name' => 'Table Sorter',
35
		'alias' => 'TableSorter',
36
		'author' => 'Redaxmedia',
37
		'description' => 'JavaScript powered table sorter',
38
		'version' => '4.0.0'
39
	];
40
41
	/**
42
	 * renderStart
43
	 *
44
	 * @since 4.0.0
45
	 */
46
47
	public function renderStart() : void
48
	{
49
		if ($this->_registry->get('loggedIn') === $this->_registry->get('token'))
50
		{
51
			/* link */
52
53
			$link = Head\Link::getInstance();
54
			$link
55
				->init()
56
				->appendFile('modules/TableSorter/dist/styles/table-sorter.min.css');
57
58
			/* script */
59
60
			$script = Head\Script::getInstance();
61
			$script
62
				->init('foot')
63
				->appendFile(
64
				[
65
					'https://cdnjs.cloudflare.com/ajax/libs/dragula/3.7.2/dragula.min.js',
66
					'modules/TableSorter/assets/scripts/init.js',
67
					'modules/TableSorter/dist/scripts/table-sorter.min.js'
68
				]);
69
70
			/* router */
71
72
			if ($this->_registry->get('firstParameter') === 'module' && $this->_registry->get('secondParameter') === 'table-sorter' && $this->_registry->get('thirdParameter') === 'sort' && $this->_registry->get('tokenParameter'))
73
			{
74
				$this->_registry->set('renderBreak', true);
0 ignored issues
show
true is of type boolean, but the function expects a string|array|null.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
75
				echo $this->_sort();
76
			}
77
		}
78
	}
79
80
	/**
81
	 * sort
82
	 *
83
	 * @since 4.0.0
84
	 *
85
	 * @return string|null
86
	 */
87
88
	protected function _sort() : ?string
89
	{
90
		if ($this->_request->getServer('HTTP_X_REQUESTED_WITH') === 'XMLHttpRequest')
91
		{
92
			$postArray = $this->_sanitizePost();
93
			$contents = Db::forTablePrefix($postArray['table'])->whereIn('id', $postArray['rankArray'])->findMany();
94
95
			/* process contents */
96
97
			foreach ($contents as $value)
98
			{
99
				$value->set('rank', array_search($value->id, $postArray['rankArray']));
100
			}
101
102
			/* handle response */
103
104
			if ($contents->save())
105
			{
106
				Header::contentType('application/json');
107
				return json_encode($postArray['rankArray']);
108
			}
109
		}
110
		Header::responseCode(404);
111
		exit;
112
	}
113
114
	/**
115
	 * sanitize the post
116
	 *
117
	 * @since 4.0.0
118
	 *
119
	 * @return array
120
	 */
121
122
	protected function _sanitizePost() : array
123
	{
124
		$specialFilter = new Filter\Special();
125
		$content = file_get_contents('php://input');
126
		$postArray = (array)json_decode($content);
127
128
		/* sanitize post */
129
130
		return
131
		[
132
			'table' => $specialFilter->sanitize($postArray['table']),
133
			'rankArray' => $postArray['rankArray']
134
		];
135
	}
136
}
137