Spaces:
No application file
No application file
File size: 1,695 Bytes
d2897cd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
<?php
declare(strict_types=1);
namespace Mautic\MarketplaceBundle\DTO;
final class PackageBase
{
public function __construct(
/**
* Original name in format "vendor/name".
*/
public string $name,
public string $url,
public string $repository,
public string $description,
public int $downloads,
public int $favers,
/**
* E.g. mautic-plugin.
*/
public ?string $type,
public ?string $displayName = null
) {
}
public static function fromArray(array $array): self
{
return new self(
$array['name'],
$array['url'],
$array['repository'],
$array['description'],
(int) $array['downloads'],
(int) $array['favers'],
$array['type'] ?? null,
$array['display_name'] ?? null
);
}
/**
* Just an alias to getName(). Used in Mautic helpers.
*/
public function getId(): string
{
return $this->name;
}
/**
* Used in Mautic helpers.
*/
public function getName(): string
{
return $this->name;
}
public function getPackageName(): string
{
[, $packageName] = explode('/', $this->name);
return $packageName;
}
public function getHumanPackageName(): string
{
if ($this->displayName) {
return $this->displayName;
}
return utf8_ucwords(str_replace('-', ' ', $this->getPackageName()));
}
public function getVendorName(): string
{
[$vendor] = explode('/', $this->name);
return $vendor;
}
}
|