Skip to content

Commit 050c9d8

Browse files
Merge pull request #8 from st3iny/fix/7/php-8-compat
Improve compatibility with PHP v8
2 parents 44df90a + e4bf821 commit 050c9d8

File tree

2 files changed

+18
-15
lines changed

2 files changed

+18
-15
lines changed

src/getID3/Tags/getid3_id3v2.php

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1870,17 +1870,14 @@ public function ParseID3v2Frame(&$parsedFrame) {
18701870
$frame_offset = 0;
18711871
$parsedFrame['peakamplitude'] = getid3_lib::BigEndian2Float(substr($parsedFrame['data'], $frame_offset, 4));
18721872
$frame_offset += 4;
1873-
$rg_track_adjustment = getid3_lib::Dec2Bin(substr($parsedFrame['data'], $frame_offset, 2));
1874-
$frame_offset += 2;
1875-
$rg_album_adjustment = getid3_lib::Dec2Bin(substr($parsedFrame['data'], $frame_offset, 2));
1876-
$parsedFrame['raw']['track']['name'] = getid3_lib::Bin2Dec(substr($rg_track_adjustment, 0, 3));
1877-
$parsedFrame['raw']['track']['originator'] = getid3_lib::Bin2Dec(substr($rg_track_adjustment, 3, 3));
1878-
$parsedFrame['raw']['track']['signbit'] = getid3_lib::Bin2Dec(substr($rg_track_adjustment, 6, 1));
1879-
$parsedFrame['raw']['track']['adjustment'] = getid3_lib::Bin2Dec(substr($rg_track_adjustment, 7, 9));
1880-
$parsedFrame['raw']['album']['name'] = getid3_lib::Bin2Dec(substr($rg_album_adjustment, 0, 3));
1881-
$parsedFrame['raw']['album']['originator'] = getid3_lib::Bin2Dec(substr($rg_album_adjustment, 3, 3));
1882-
$parsedFrame['raw']['album']['signbit'] = getid3_lib::Bin2Dec(substr($rg_album_adjustment, 6, 1));
1883-
$parsedFrame['raw']['album']['adjustment'] = getid3_lib::Bin2Dec(substr($rg_album_adjustment, 7, 9));
1873+
foreach (array('track','album') as $rgad_entry_type) {
1874+
$rg_adjustment_word = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, 2));
1875+
$frame_offset += 2;
1876+
$parsedFrame['raw'][$rgad_entry_type]['name'] = ($rg_adjustment_word & 0xE000) >> 13;
1877+
$parsedFrame['raw'][$rgad_entry_type]['originator'] = ($rg_adjustment_word & 0x1C00) >> 10;
1878+
$parsedFrame['raw'][$rgad_entry_type]['signbit'] = ($rg_adjustment_word & 0x0200) >> 9;
1879+
$parsedFrame['raw'][$rgad_entry_type]['adjustment'] = ($rg_adjustment_word & 0x0100);
1880+
}
18841881
$parsedFrame['track']['name'] = getid3_lib::RGADnameLookup($parsedFrame['raw']['track']['name']);
18851882
$parsedFrame['track']['originator'] = getid3_lib::RGADoriginatorLookup($parsedFrame['raw']['track']['originator']);
18861883
$parsedFrame['track']['adjustment'] = getid3_lib::RGADadjustmentLookup($parsedFrame['raw']['track']['adjustment'], $parsedFrame['raw']['track']['signbit']);

src/getID3/getid3_lib.php

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -295,14 +295,20 @@ public static function BigEndian2String($number, $minbytes=1, $synchsafe=false,
295295

296296

297297
public static function Dec2Bin($number) {
298+
if (!is_numeric($number)) {
299+
// https://github.com/JamesHeinrich/getID3/issues/299
300+
trigger_error('TypeError: Dec2Bin(): Argument #1 ($number) must be numeric, '.gettype($number).' given', E_USER_WARNING);
301+
return '';
302+
}
303+
$bytes = array();
298304
while ($number >= 256) {
299-
$bytes[] = (($number / 256) - (floor($number / 256))) * 256;
305+
$bytes[] = (int) (($number / 256) - (floor($number / 256))) * 256;
300306
$number = floor($number / 256);
301307
}
302-
$bytes[] = $number;
308+
$bytes[] = (int) $number;
303309
$binstring = '';
304-
for ($i = 0; $i < count($bytes); $i++) {
305-
$binstring = (($i == count($bytes) - 1) ? decbin($bytes[$i]) : str_pad(decbin($bytes[$i]), 8, '0', STR_PAD_LEFT)).$binstring;
310+
foreach ($bytes as $i => $byte) {
311+
$binstring = (($i == count($bytes) - 1) ? decbin($byte) : str_pad(decbin($byte), 8, '0', STR_PAD_LEFT)).$binstring;
306312
}
307313
return $binstring;
308314
}

0 commit comments

Comments
 (0)