So I just found this because of the results from Webform Submissions, which includes the view header to show ALL results.

Clicking ALL throws

TypeError: Unsupported operand types: int * string in views_plugin_pager_full->query() (line 265 of /var/www/clients/client1/web1/web/core/modules/views/plugins/views_plugin_pager_full.inc).

within PHP8-FPM.

Modifying the views-Plugin_pager_full.inc to have:

if($this->options['items_per_page']!='All'){

$limit = $this->options['items_per_page'];

$offset = $this->current_page * $this->options['items_per_page'] + $this->options['offset'];

}

Allows the system to work, as the PHP otherwise rightfully barfs on multiplication of a string.

 

Accepted answer

Hi @onyx

Thanks for finding this and identifying a solution.

I tested and could reproduce the issue.

I tested your solution and while it does fix the symptoms of the issue, it is probably best to fix where the cause is.

Line 251 has:

      if (!empty($_GET['items_per_page']) && $_GET['items_per_page'] > 0) {

If this was working as expected on PHP 8.1 then this wouldn't be true for 'All' and it would go to the next test on Line 254:

      elseif (!empty($_GET['items_per_page']) && $_GET['items_per_page'] == 'All' && $this->options['expose']['items_per_page_options_all']) {

which would set the right $this->options['items_per_page'] to 0

An alternative solution would be on line 251:

      if (!empty($_GET['items_per_page']) && is_numeric($_GET['items_per_page']) && $_GET['items_per_page'] > 0) {

I've added this to the issue queue and added a Pull Request so hopefully this will get fixed soon

Comments

Hi @onyx

Thanks for finding this and identifying a solution.

I tested and could reproduce the issue.

I tested your solution and while it does fix the symptoms of the issue, it is probably best to fix where the cause is.

Line 251 has:

      if (!empty($_GET['items_per_page']) && $_GET['items_per_page'] > 0) {

If this was working as expected on PHP 8.1 then this wouldn't be true for 'All' and it would go to the next test on Line 254:

      elseif (!empty($_GET['items_per_page']) && $_GET['items_per_page'] == 'All' && $this->options['expose']['items_per_page_options_all']) {

which would set the right $this->options['items_per_page'] to 0

An alternative solution would be on line 251:

      if (!empty($_GET['items_per_page']) && is_numeric($_GET['items_per_page']) && $_GET['items_per_page'] > 0) {

I've added this to the issue queue and added a Pull Request so hopefully this will get fixed soon