Skip to content

Commit

Permalink
Merge pull request #115 from Mattie112/endroidqr-v5
Browse files Browse the repository at this point in the history
Fix issue #114 (Support for EndroidQR v5)
  • Loading branch information
willpower232 committed Nov 14, 2023
2 parents 137df4d + ec35073 commit ab93dd4
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 6 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/test-endroid.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
strategy:
matrix:
php-version: ['8.1', '8.2']
endroid-version: ["^4"]
endroid-version: ["^3","^4","^5"]

steps:
- uses: actions/checkout@v3
Expand All @@ -25,7 +25,7 @@ jobs:

- uses: ramsey/composer-install@v2

- run: composer require endroid/qrcode:${{ matrix.endroid-version }}
- run: composer require endroid/qrcode:${{ matrix.endroid-version }} -W

- run: composer lint-ci
- run: composer test testsDependency/EndroidQRCodeTest.php
32 changes: 28 additions & 4 deletions lib/Providers/Qr/EndroidQrCodeProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,12 @@ class EndroidQrCodeProvider implements IQRCodeProvider

protected $endroid4 = false;

protected $endroid5 = false;

public function __construct($bgcolor = 'ffffff', $color = '000000', $margin = 0, $errorcorrectionlevel = 'H')
{
$this->endroid4 = method_exists(QrCode::class, 'create');
$this->endroid5 = enum_exists(ErrorCorrectionLevel::class);

$this->bgcolor = $this->handleColor($bgcolor);
$this->color = $this->handleColor($color);
Expand Down Expand Up @@ -76,11 +79,32 @@ private function handleColor(string $color): Color|array

private function handleErrorCorrectionLevel(string $level): ErrorCorrectionLevelInterface|ErrorCorrectionLevel
{
// First check for version 5 (using enums)
if ($this->endroid5) {
return match ($level) {
'L' => ErrorCorrectionLevel::Low,
'M' => ErrorCorrectionLevel::Medium,
'Q' => ErrorCorrectionLevel::Quartile,
default => ErrorCorrectionLevel::High,
};
}

// If not check for version 4 (using classes)
if ($this->endroid4) {
return match ($level) {
'L' => new ErrorCorrectionLevelLow(),
'M' => new ErrorCorrectionLevelMedium(),
'Q' => new ErrorCorrectionLevelQuartile(),
default => new ErrorCorrectionLevelHigh(),
};
}

// Any other version will be using strings
return match ($level) {
'L' => $this->endroid4 ? new ErrorCorrectionLevelLow() : ErrorCorrectionLevel::LOW(),
'M' => $this->endroid4 ? new ErrorCorrectionLevelMedium() : ErrorCorrectionLevel::MEDIUM(),
'Q' => $this->endroid4 ? new ErrorCorrectionLevelQuartile() : ErrorCorrectionLevel::QUARTILE(),
default => $this->endroid4 ? new ErrorCorrectionLevelHigh() : ErrorCorrectionLevel::HIGH(),
'L' => ErrorCorrectionLevel::LOW(),
'M' => ErrorCorrectionLevel::MEDIUM(),
'Q' => ErrorCorrectionLevel::QUARTILE(),
default => ErrorCorrectionLevel::HIGH(),
};
}
}

0 comments on commit ab93dd4

Please sign in to comment.