summaryrefslogtreecommitdiff
path: root/vendor/chillerlan/php-qrcode/src/Data/Number.php
diff options
context:
space:
mode:
authorChih-Hsuan Yen <[email protected]>2022-07-02 22:01:51 +0800
committerAndrew Dolgov <[email protected]>2022-07-12 22:23:48 +0300
commit4b6161892000cb2b8392dce92a9cf2cabdf2d20e (patch)
tree5cad602010e4d13e1a48d6b922d4768c0893ac8b /vendor/chillerlan/php-qrcode/src/Data/Number.php
parentd9861038bcc3cb2f38c7153bdca7d5ab89597afa (diff)
Update php-qrcode and php-settings-container for PHP 8.1
By running the following command after updating composer.json ``` composer update chillerlan/php-qrcode chillerlan/php-settings-container ``` This change fixes a deprecation warning from Preferences -> Personal data / Authentication -> Authenticator (OTP). ``` Return type of chillerlan\Settings\SettingsContainerAbstract::jsonSerialize() should either be compatible with JsonSerializable::jsonSerialize(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice 1. vendor/chillerlan/php-settings-container/src/SettingsContainerAbstract.php(19): ttrss_error_handler(Return type of chillerlan\Settings\SettingsContainerAbstract::jsonSerialize() should either be compatible with JsonSerializable::jsonSerialize(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice, vendor/chillerlan/php-settings-container/src/SettingsContainerAbstract.php) 2. vendor/composer/ClassLoader.php(571): include(/usr/share/webapps/tt-rss/vendor/chillerlan/php-settings-container/src/SettingsContainerAbstract.php) 3. vendor/composer/ClassLoader.php(428): Composer\Autoload\includeFile(/usr/share/webapps/tt-rss/vendor/composer/../chillerlan/php-settings-container/src/SettingsContainerAbstract.php) 4. vendor/chillerlan/php-qrcode/src/QROptions.php(59): loadClass(chillerlan\Settings\SettingsContainerAbstract) 5. vendor/composer/ClassLoader.php(571): include(/usr/share/webapps/tt-rss/vendor/chillerlan/php-qrcode/src/QROptions.php) 6. vendor/composer/ClassLoader.php(428): Composer\Autoload\includeFile(/usr/share/webapps/tt-rss/vendor/composer/../chillerlan/php-qrcode/src/QROptions.php) 7. vendor/chillerlan/php-qrcode/src/QRCode.php(113): loadClass(chillerlan\QRCode\QROptions) 8. classes/pref/prefs.php(958): __construct() 9. classes/pref/prefs.php(469): _get_otp_qrcode_img() 10. classes/pref/prefs.php(541): index_auth_2fa() 11. backend.php(136): index_auth() ``` The issue is fixed in php-settings-container 2.1.1 [1] Here I use the latest php-qrcode version for another PHP 8.1 fix [2]. [1] https://github.com/chillerlan/php-settings-container/commit/68bc5019c8b38956c83906431ef879668366b036#diff-359c7f7a6d32d9935951e1b0742eb116fb654f4a932c8d40328bb5dcab2fa111L162 [2] https://github.com/chillerlan/php-qrcode/issues/97
Diffstat (limited to 'vendor/chillerlan/php-qrcode/src/Data/Number.php')
-rw-r--r--vendor/chillerlan/php-qrcode/src/Data/Number.php35
1 files changed, 15 insertions, 20 deletions
diff --git a/vendor/chillerlan/php-qrcode/src/Data/Number.php b/vendor/chillerlan/php-qrcode/src/Data/Number.php
index 3936d12c3..0a905b13e 100644
--- a/vendor/chillerlan/php-qrcode/src/Data/Number.php
+++ b/vendor/chillerlan/php-qrcode/src/Data/Number.php
@@ -4,7 +4,7 @@
*
* @filesource Number.php
* @created 26.11.2015
- * @package QRCode
+ * @package chillerlan\QRCode\Data
* @author Smiley <[email protected]>
* @copyright 2015 Smiley
* @license MIT
@@ -14,22 +14,19 @@ namespace chillerlan\QRCode\Data;
use chillerlan\QRCode\QRCode;
-use function ord, sprintf, substr;
+use function ord, sprintf, str_split, substr;
/**
- * Numeric mode: decimal digits 0 through 9
+ * Numeric mode: decimal digits 0 to 9
+ *
+ * ISO/IEC 18004:2000 Section 8.3.2
+ * ISO/IEC 18004:2000 Section 8.4.2
*/
-class Number extends QRDataAbstract{
+final class Number extends QRDataAbstract{
- /**
- * @inheritdoc
- */
- protected $datamode = QRCode::DATA_NUMBER;
+ protected int $datamode = QRCode::DATA_NUMBER;
- /**
- * @inheritdoc
- */
- protected $lengthBits = [10, 12, 14];
+ protected array $lengthBits = [10, 12, 14];
/**
* @inheritdoc
@@ -56,20 +53,18 @@ class Number extends QRDataAbstract{
}
/**
- * @param string $string
+ * get the code for the given numeric string
*
- * @return int
- * @throws \chillerlan\QRCode\Data\QRCodeDataException
+ * @throws \chillerlan\QRCode\Data\QRCodeDataException on an illegal character occurence
*/
protected function parseInt(string $string):int{
$num = 0;
- $len = strlen($string);
- for($i = 0; $i < $len; $i++){
- $c = ord($string[$i]);
+ foreach(str_split($string) as $chr){
+ $c = ord($chr);
- if(!in_array($string[$i], $this::NUMBER_CHAR_MAP, true)){
- throw new QRCodeDataException(sprintf('illegal char: "%s" [%d]', $string[$i], $c));
+ if(!isset($this::CHAR_MAP_NUMBER[$chr])){
+ throw new QRCodeDataException(sprintf('illegal char: "%s" [%d]', $chr, $c));
}
$c = $c - 48; // ord('0')