Opened 7 months ago

Closed 2 weeks ago

#13406 closed Patch - Bug Fix (fixed)

Patches to fix php count warnings with PHP 7.2

Reported by: daraden Owned by: Stuart Auchterlonie
Priority: minor Milestone: 30.1
Component: Plugin - MythWeb Version: Master Head
Severity: low Keywords:
Cc: Ticket locked: no

Description

These patches are to resolve count() warnings when using PHP 7.2. Changes just check if the object is not null before calling the count function, otherwise the count variable is set to 0.

link to PHP manual noting the count() behavior as an incompatible change in PHP 7.2https://secure.php.net/manual/en/migration72.incompatible.php

Attachments (2)

mythcount.patch (926 bytes) - added by daraden 7 months ago.
mythtv php bindings count patch
mythwebcount.patch (2.5 KB) - added by daraden 6 months ago.
fixed typo in mythwebcount.patch

Download all attachments as: .zip

Change History (11)

Changed 7 months ago by daraden

Attachment: mythcount.patch added

mythtv php bindings count patch

comment:1 Changed 7 months ago by Peter Bennett

See also #13324, #13290

comment:2 Changed 7 months ago by Stuart Auchterlonie

Milestone: needs_triage30.1
Status: newaccepted

Needs backporting to fixes/29 and fixes/30

comment:3 Changed 7 months ago by hobbes1069

Don't know if it's the right way but I "fixed" this on Fedora using the following:

iff --git a/modules/tv/tmpl/default/detail.php b/modules/tv/tmpl/default/detail.php
index f6d1faa9..4975f415 100644
--- a/modules/tv/tmpl/default/detail.php
+++ b/modules/tv/tmpl/default/detail.php
@@ -842,7 +842,7 @@
             }
             echo '            </ul>';
         }
-        if (count($program->jobs['queue'])) {
+        if (is_array($program->jobs['queue']) && count($program->jobs['queue'])) {
             echo t('Queued jobs'), ':',
                  '            <ul class="-queued">';
             foreach ($program->jobs['queue'] as $job) {
@@ -856,7 +856,7 @@
             }
             echo '            </ul>';
         }
-        if (count($program->jobs['done'])) {
+        if (is_array($program->jobs['done']) && count($program->jobs['done'])) {
             echo t('Recently completed jobs'), ':',
                  '            <ul class="-done">';
             foreach ($program->jobs['done'] as $job) {

comment:4 Changed 6 months ago by hobbes1069

Would it be safe to apply the two patches to v30? I would like to fix this for Fedora / RPM Fusion.

Changed 6 months ago by daraden

Attachment: mythwebcount.patch added

fixed typo in mythwebcount.patch

comment:5 Changed 6 months ago by daraden

Should work fine with v30(patches are working on my 29 backend). files the patches modify are listed as last modified 2 or more years ago.

comment:6 Changed 5 months ago by jr3us

Per the following thread in the forum ( https://forum.mythtv.org/viewtopic.php?p=13823#p13823 ) the count error also affects the file Mythbackend.php as follows:

Warning at /usr/share/mythtv/bindings/php/MythBackend.php, line 194: NoTrans: count(): Parameter must be an array or an object that implements Countable!!

Last edited 5 months ago by jr3us (previous) (diff)

comment:7 Changed 2 weeks ago by Richard Shaw <hobbes1069@…>

In c04a650ee/mythweb:

Fix php7.2 count warnings in mythweb.

This only fixes the mythweb portion of this bug. The MythBackend?.php
file still needs to be fixed in the mythtv repository.

Refs #13406.

Signed-off-by: David Hampton <mythtv@…>

comment:8 Changed 2 weeks ago by David Hampton <mythtv@…>

In 7e2e51d1d/mythweb:

Fix php7.2 count warnings in mythweb Schedule.php.

This only fixes the mythweb portion of this bug. The MythBackend?.php
file still needs to be fixed in the mythtv repository.

Adapted from a fix by daraden.

Refs #13406.

comment:9 Changed 2 weeks ago by David Hampton <mythtv@…>

Resolution: fixed
Status: acceptedclosed

In dc87fada5/mythtv:

Fix php7.2 count warnings in MythBackend? bindings.

The mythweb portion of this bug was fixed in a separate commit.

Adapted from a fix by daraden.

Fixes #13406.

Note: See TracTickets for help on using tickets.