/home/mip/www/img/credit/datatables/Casts.tar
RawPhoneNumberCast.php 0000644 00000002077 15152100613 0010764 0 ustar 00 <?php
namespace Propaganistas\LaravelPhone\Casts;
use InvalidArgumentException;
use Propaganistas\LaravelPhone\PhoneNumber;
class RawPhoneNumberCast extends PhoneNumberCast
{
public function get($model, string $key, $value, array $attributes)
{
if (! $value) {
return null;
}
$phone = new PhoneNumber($value,
$this->getPossibleCountries($key, $attributes)
);
$country = $phone->getCountry();
if ($country === null) {
throw new InvalidArgumentException('Missing country specification for '.$key.' attribute cast');
}
return new PhoneNumber($value, $country);
}
public function set($model, string $key, $value, array $attributes)
{
if ($value instanceof PhoneNumber) {
return $value->getRawNumber();
}
return (string) $value;
}
public function serialize($model, string $key, $value, array $attributes)
{
if (! $value) {
return null;
}
return $value->getRawNumber();
}
}
PhoneNumberCast.php 0000644 00000001727 15152100613 0010313 0 ustar 00 <?php
namespace Propaganistas\LaravelPhone\Casts;
use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
use Illuminate\Contracts\Database\Eloquent\SerializesCastableAttributes;
use Illuminate\Support\Arr;
use Propaganistas\LaravelPhone\Aspects\PhoneNumberCountry;
abstract class PhoneNumberCast implements CastsAttributes, SerializesCastableAttributes
{
protected array $parameters;
public function __construct()
{
$this->parameters = func_get_args();
}
protected function getPossibleCountries($key, array $attributes): array
{
$parameters = array_map(function ($parameter) use ($attributes) {
if ($value = Arr::get($attributes, $parameter)) {
return $value;
}
return $parameter;
}, [...$this->parameters, $key.'_country']);
return array_filter($parameters, function ($parameter) {
return PhoneNumberCountry::isValid($parameter);
});
}
}
E164PhoneNumberCast.php 0000644 00000002123 15152100613 0010642 0 ustar 00 <?php
namespace Propaganistas\LaravelPhone\Casts;
use Propaganistas\LaravelPhone\PhoneNumber;
use UnexpectedValueException;
class E164PhoneNumberCast extends PhoneNumberCast
{
public function get($model, string $key, $value, array $attributes)
{
if (! $value) {
return null;
}
$phone = new PhoneNumber($value);
if ($phone->getCountry() === null) {
throw new UnexpectedValueException('Queried value for '.$key.' is not in international format');
}
return $phone;
}
public function set($model, string $key, $value, array $attributes)
{
if (! $value) {
return null;
}
if (! $value instanceof PhoneNumber) {
$value = new PhoneNumber($value,
$this->getPossibleCountries($key, $attributes)
);
}
return $value->formatE164();
}
public function serialize($model, string $key, $value, array $attributes)
{
if (! $value) {
return null;
}
return $value->formatE164();
}
}