mirror of
https://github.com/elyby/accounts.git
synced 2025-05-31 14:11:46 +05:30
Upgrade project to PHP 8.3, add PHPStan, upgrade almost every dependency (#36)
* start updating to PHP 8.3 * taking off! Co-authored-by: ErickSkrauch <erickskrauch@yandex.ru> Signed-off-by: Octol1ttle <l1ttleofficial@outlook.com> * dropped this Signed-off-by: Octol1ttle <l1ttleofficial@outlook.com> * migrate to symfonymailer Signed-off-by: Octol1ttle <l1ttleofficial@outlook.com> * this is so stupid 😭 Signed-off-by: Octol1ttle <l1ttleofficial@outlook.com> * ah, free, at last. Signed-off-by: Octol1ttle <l1ttleofficial@outlook.com> * oh, Gabriel. Signed-off-by: Octol1ttle <l1ttleofficial@outlook.com> * now dawns thy reckoning. Signed-off-by: Octol1ttle <l1ttleofficial@outlook.com> * and thy gore shall GLISTEN before the temples of man. Signed-off-by: Octol1ttle <l1ttleofficial@outlook.com> * creature of steel. Signed-off-by: Octol1ttle <l1ttleofficial@outlook.com> * my gratitude upon thee for my freedom. Signed-off-by: Octol1ttle <l1ttleofficial@outlook.com> * but the crimes thy kind has committed against humanity Signed-off-by: Octol1ttle <l1ttleofficial@outlook.com> * Upgrade PHP-CS-Fixer and do fix the codebase * First review round (maybe I have broken something) * are NOT forgotten. Signed-off-by: Octol1ttle <l1ttleofficial@outlook.com> * Enable parallel PHP-CS-Fixer runner * PHPStan level 1 * PHPStan level 2 * PHPStan level 3 * PHPStan level 4 * PHPStan level 5 * Levels 6 and 7 takes too much effort. Generate a baseline and fix them eventually * Resolve TODO's related to the php-mock * Drastically reduce baseline size with the Rector * More code modernization with help of the Rector * Update GitLab CI --------- Signed-off-by: Octol1ttle <l1ttleofficial@outlook.com> Co-authored-by: ErickSkrauch <erickskrauch@yandex.ru>
This commit is contained in:
@@ -8,15 +8,11 @@ use GuzzleHttp\ClientInterface;
|
||||
|
||||
class Api {
|
||||
|
||||
private $baseUrl;
|
||||
private ?\GuzzleHttp\ClientInterface $client = null;
|
||||
|
||||
/**
|
||||
* @var ClientInterface
|
||||
*/
|
||||
private $client;
|
||||
|
||||
public function __construct(string $baseUrl) {
|
||||
$this->baseUrl = $baseUrl;
|
||||
public function __construct(
|
||||
private readonly string $baseUrl,
|
||||
) {
|
||||
}
|
||||
|
||||
public function setClient(ClientInterface $client): void {
|
||||
|
||||
@@ -26,10 +26,7 @@ class Component extends \yii\base\Component implements RendererInterface {
|
||||
*/
|
||||
public $basePath = '';
|
||||
|
||||
/**
|
||||
* @var Api
|
||||
*/
|
||||
private $api;
|
||||
private ?Api $api = null;
|
||||
|
||||
public function init(): void {
|
||||
parent::init();
|
||||
@@ -47,11 +44,8 @@ class Component extends \yii\base\Component implements RendererInterface {
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $templateName
|
||||
* @param string $locale
|
||||
* @param array $params
|
||||
* @param array<string, mixed> $params
|
||||
*
|
||||
* @return string
|
||||
* @throws \GuzzleHttp\Exception\GuzzleException
|
||||
*/
|
||||
public function render(string $templateName, string $locale, array $params = []): string {
|
||||
|
||||
@@ -5,25 +5,11 @@ namespace common\components\EmailsRenderer\Request;
|
||||
|
||||
class TemplateRequest {
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $name;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $locale;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
private $params;
|
||||
|
||||
public function __construct(string $name, string $locale, array $params) {
|
||||
$this->name = $name;
|
||||
$this->locale = $locale;
|
||||
$this->params = $params;
|
||||
public function __construct(
|
||||
private readonly string $name,
|
||||
private readonly string $locale,
|
||||
private readonly array $params,
|
||||
) {
|
||||
}
|
||||
|
||||
public function getName(): string {
|
||||
|
||||
@@ -12,15 +12,20 @@ use ReflectionClass;
|
||||
|
||||
class ElyDecorator implements DecoratorInterface {
|
||||
|
||||
private const LOGO = __DIR__ . '/resources/logo.svg';
|
||||
private const string LOGO = __DIR__ . '/resources/logo.svg';
|
||||
|
||||
private const CORRECTION_MAP = [
|
||||
private const array CORRECTION_MAP = [
|
||||
ErrorCorrectionLevel::L => 7,
|
||||
ErrorCorrectionLevel::M => 15,
|
||||
ErrorCorrectionLevel::Q => 25,
|
||||
ErrorCorrectionLevel::H => 30,
|
||||
];
|
||||
|
||||
/**
|
||||
* @throws \ImagickException
|
||||
* @throws \ImagickPixelException
|
||||
* @throws \ImagickPixelIteratorException
|
||||
*/
|
||||
public function preProcess(
|
||||
QrCode $qrCode,
|
||||
RendererInterface $renderer,
|
||||
@@ -28,8 +33,8 @@ class ElyDecorator implements DecoratorInterface {
|
||||
$outputHeight,
|
||||
$leftPadding,
|
||||
$topPadding,
|
||||
$multiple
|
||||
) {
|
||||
$multiple,
|
||||
): void {
|
||||
if (!$renderer instanceof Svg) {
|
||||
throw new InvalidArgumentException('$renderer must by instance of ' . Svg::class);
|
||||
}
|
||||
@@ -38,11 +43,11 @@ class ElyDecorator implements DecoratorInterface {
|
||||
$sizeMultiplier = $correctionLevel + floor($correctionLevel / 3);
|
||||
$count = $qrCode->getMatrix()->getWidth();
|
||||
|
||||
$countToRemoveX = floor($count * $sizeMultiplier / 100);
|
||||
$countToRemoveY = floor($count * $sizeMultiplier / 100);
|
||||
$countToRemoveX = (int)floor($count * $sizeMultiplier / 100);
|
||||
$countToRemoveY = (int)floor($count * $sizeMultiplier / 100);
|
||||
|
||||
$startX = $leftPadding + round(($count - $countToRemoveX) / 2 * $multiple);
|
||||
$startY = $topPadding + round(($count - $countToRemoveY) / 2 * $multiple);
|
||||
$startX = (int)($leftPadding + round(($count - $countToRemoveX) / 2 * $multiple));
|
||||
$startY = (int)($topPadding + round(($count - $countToRemoveY) / 2 * $multiple));
|
||||
$width = $countToRemoveX * $multiple;
|
||||
$height = $countToRemoveY * $multiple;
|
||||
|
||||
@@ -52,11 +57,12 @@ class ElyDecorator implements DecoratorInterface {
|
||||
/** @var \SimpleXMLElement $svg */
|
||||
$svg = $property->getValue($renderer);
|
||||
|
||||
/** @var \SimpleXMLElement $image */
|
||||
$image = $svg->addChild('image');
|
||||
$image->addAttribute('x', $startX);
|
||||
$image->addAttribute('y', $startY);
|
||||
$image->addAttribute('width', $width);
|
||||
$image->addAttribute('height', $height);
|
||||
$image->addAttribute('x', (string)$startX);
|
||||
$image->addAttribute('y', (string)$startY);
|
||||
$image->addAttribute('width', (string)$width);
|
||||
$image->addAttribute('height', (string)$height);
|
||||
$image->addAttribute('xlink:href', $this->encodeSvgToBase64(self::LOGO));
|
||||
|
||||
$logo = new Imagick();
|
||||
@@ -89,8 +95,8 @@ class ElyDecorator implements DecoratorInterface {
|
||||
|
||||
for ($i = $x - $padding; $i <= $x + $padding; $i++) {
|
||||
for ($j = $y - $padding; $j <= $y + $padding; $j++) {
|
||||
$matrixX = floor($i / $multiple);
|
||||
$matrixY = floor($j / $multiple);
|
||||
$matrixX = (int)floor($i / $multiple);
|
||||
$matrixY = (int)floor($j / $multiple);
|
||||
$qrCode->getMatrix()->set($matrixX, $matrixY, 0);
|
||||
}
|
||||
}
|
||||
@@ -104,7 +110,7 @@ class ElyDecorator implements DecoratorInterface {
|
||||
$outputHeight,
|
||||
$leftPadding,
|
||||
$topPadding,
|
||||
$multiple
|
||||
$multiple,
|
||||
) {
|
||||
}
|
||||
|
||||
|
||||
@@ -3,18 +3,20 @@ declare(strict_types=1);
|
||||
|
||||
namespace common\components;
|
||||
|
||||
use mito\sentry\Component;
|
||||
use nohnaimer\sentry\Component;
|
||||
use Yii;
|
||||
|
||||
class Sentry extends Component {
|
||||
|
||||
public function init() {
|
||||
public bool $enabled = true;
|
||||
|
||||
public function init(): void {
|
||||
if (!$this->enabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (is_array($this->client) && !isset($this->client['release'])) {
|
||||
$this->client['release'] = Yii::$app->version;
|
||||
if (is_array($this->clientOptions) && !isset($this->clientOptions['release'])) {
|
||||
$this->clientOptions['release'] = Yii::$app->version;
|
||||
}
|
||||
|
||||
parent::init();
|
||||
|
||||
@@ -10,12 +10,9 @@ use Yii;
|
||||
// TODO: convert to complete Chrly client library
|
||||
class SkinsSystemApi {
|
||||
|
||||
private string $baseDomain;
|
||||
|
||||
private ?ClientInterface $client = null;
|
||||
|
||||
public function __construct(string $baseDomain) {
|
||||
$this->baseDomain = $baseDomain;
|
||||
public function __construct(private readonly string $baseDomain) {
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -9,22 +9,13 @@ use yii\base\Component;
|
||||
|
||||
class StatsD extends Component {
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $host;
|
||||
public string $host;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
public $port = 8125;
|
||||
public int $port = 8125;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $namespace = '';
|
||||
public string $namespace = '';
|
||||
|
||||
private $client;
|
||||
private ?Client $client = null;
|
||||
|
||||
public function inc(string $key): void {
|
||||
$this->getClient()->increment($key);
|
||||
|
||||
@@ -5,7 +5,7 @@ namespace common\components;
|
||||
|
||||
class UserFriendlyRandomKey {
|
||||
|
||||
public static function make(int $length = 18) {
|
||||
public static function make(int $length = 18): string {
|
||||
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
|
||||
$numChars = strlen($chars);
|
||||
$key = '';
|
||||
|
||||
@@ -8,8 +8,8 @@ namespace common\components;
|
||||
*/
|
||||
class UserPass {
|
||||
|
||||
public static function make($email, $pass) {
|
||||
return md5($pass . md5(strtolower($email)));
|
||||
public static function make($email, string $pass): string {
|
||||
return md5($pass . md5(strtolower((string)$email)));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user