Use new attribute casting
This commit is contained in:
parent
e49ba65709
commit
8a526539be
7 changed files with 88 additions and 80 deletions
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
namespace Pterodactyl\Models;
|
namespace Pterodactyl\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Casts\Attribute;
|
||||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -85,25 +86,22 @@ class Allocation extends Model
|
||||||
/**
|
/**
|
||||||
* Return a hashid encoded string to represent the ID of the allocation.
|
* Return a hashid encoded string to represent the ID of the allocation.
|
||||||
*/
|
*/
|
||||||
public function getHashidAttribute(): string
|
public function hashid(): Attribute
|
||||||
{
|
{
|
||||||
return app()->make('hashids')->encode($this->id);
|
return new Attribute(
|
||||||
|
get: fn () => app()->make('hashids')->encode($this->id),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Accessor to automatically provide the IP alias if defined.
|
* Accessor and mutator to automatically provide the IP alias if defined.
|
||||||
*/
|
*/
|
||||||
public function getAliasAttribute(?string $value): string
|
public function alias(): Attribute
|
||||||
{
|
{
|
||||||
return (is_null($this->ip_alias)) ? $this->ip : $this->ip_alias;
|
return new Attribute(
|
||||||
}
|
get: fn ($ip) => is_null($this->ip_alias) ? $this->ip : $this->ip_alias,
|
||||||
|
set: fn ($ip) => ['ip_alias' => $ip],
|
||||||
/**
|
);
|
||||||
* Accessor to quickly determine if this allocation has an alias.
|
|
||||||
*/
|
|
||||||
public function getHasAliasAttribute(?string $value): bool
|
|
||||||
{
|
|
||||||
return !is_null($this->ip_alias);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function toString(): string
|
public function toString(): string
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
namespace Pterodactyl\Models;
|
namespace Pterodactyl\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Casts\Attribute;
|
||||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||||
|
|
||||||
|
@ -148,113 +149,104 @@ class Egg extends Model
|
||||||
* Returns the install script for the egg; if egg is copying from another
|
* Returns the install script for the egg; if egg is copying from another
|
||||||
* it will return the copied script.
|
* it will return the copied script.
|
||||||
*/
|
*/
|
||||||
public function getCopyScriptInstallAttribute(): ?string
|
public function copyScriptInstall(): Attribute
|
||||||
{
|
{
|
||||||
if (!is_null($this->script_install) || is_null($this->copy_script_from)) {
|
return new Attribute(
|
||||||
return $this->script_install;
|
get: fn () => (!is_null($this->script_install) || is_null($this->copy_script_from))
|
||||||
}
|
? $this->script_install : $this->scriptFrom->script_install,
|
||||||
|
);
|
||||||
return $this->scriptFrom->script_install;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the entry command for the egg; if egg is copying from another
|
* Returns the entry command for the egg; if egg is copying from another
|
||||||
* it will return the copied entry command.
|
* it will return the copied entry command.
|
||||||
*/
|
*/
|
||||||
public function getCopyScriptEntryAttribute(): string
|
public function copyScriptEntry(): Attribute
|
||||||
{
|
{
|
||||||
if (!is_null($this->script_entry) || is_null($this->copy_script_from)) {
|
return new Attribute(
|
||||||
return $this->script_entry;
|
get: fn () => (!is_null($this->script_entry) || is_null($this->copy_script_from))
|
||||||
}
|
? $this->script_entry : $this->scriptFrom->script_entry,
|
||||||
|
);
|
||||||
return $this->scriptFrom->script_entry;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the install container for the egg; if egg is copying from another
|
* Returns the install container for the egg; if egg is copying from another
|
||||||
* it will return the copied install container.
|
* it will return the copied install container.
|
||||||
*/
|
*/
|
||||||
public function getCopyScriptContainerAttribute(): string
|
public function copyScriptContainer(): Attribute
|
||||||
{
|
{
|
||||||
if (!is_null($this->script_container) || is_null($this->copy_script_from)) {
|
return new Attribute(
|
||||||
return $this->script_container;
|
get: fn () => (!is_null($this->script_container) || is_null($this->copy_script_from))
|
||||||
}
|
? $this->script_container : $this->scriptFrom->script_container,
|
||||||
|
);
|
||||||
return $this->scriptFrom->script_container;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the file configuration for an egg.
|
* Return the file configuration for an egg.
|
||||||
*/
|
*/
|
||||||
public function getInheritConfigFilesAttribute(): ?string
|
public function inheritConfigFiles(): Attribute
|
||||||
{
|
{
|
||||||
if (!is_null($this->config_files) || is_null($this->config_from)) {
|
return new Attribute(
|
||||||
return $this->config_files;
|
get: fn () => (!is_null($this->config_files) || is_null($this->config_from))
|
||||||
}
|
? $this->config_files : $this->configFrom->config_files,
|
||||||
|
);
|
||||||
return $this->configFrom->config_files;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the startup configuration for an egg.
|
* Return the startup configuration for an egg.
|
||||||
*/
|
*/
|
||||||
public function getInheritConfigStartupAttribute(): ?string
|
public function inheritConfigStartup(): Attribute
|
||||||
{
|
{
|
||||||
if (!is_null($this->config_startup) || is_null($this->config_from)) {
|
return new Attribute(
|
||||||
return $this->config_startup;
|
get: fn () => (!is_null($this->config_startup) || is_null($this->config_from))
|
||||||
}
|
? $this->config_startup : $this->configFrom->config_startup,
|
||||||
|
);
|
||||||
return $this->configFrom->config_startup;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the log reading configuration for an egg.
|
* Return the log reading configuration for an egg.
|
||||||
*/
|
*/
|
||||||
public function getInheritConfigLogsAttribute(): ?string
|
public function inheritConfigLogs(): Attribute
|
||||||
{
|
{
|
||||||
if (!is_null($this->config_logs) || is_null($this->config_from)) {
|
return new Attribute(
|
||||||
return $this->config_logs;
|
get: fn () => (!is_null($this->config_logs) || is_null($this->config_from))
|
||||||
}
|
? $this->config_logs : $this->configFrom->config_logs,
|
||||||
|
);
|
||||||
return $this->configFrom->config_logs;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the stop command configuration for an egg.
|
* Return the stop command configuration for an egg.
|
||||||
*/
|
*/
|
||||||
public function getInheritConfigStopAttribute(): ?string
|
public function inheritConfigStop(): Attribute
|
||||||
{
|
{
|
||||||
if (!is_null($this->config_stop) || is_null($this->config_from)) {
|
return new Attribute(
|
||||||
return $this->config_stop;
|
get: fn () => (!is_null($this->config_stop) || is_null($this->config_from))
|
||||||
}
|
? $this->config_stop : $this->configFrom->config_stop,
|
||||||
|
);
|
||||||
return $this->configFrom->config_stop;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the features available to this egg from the parent configuration if there are
|
* Returns the features available to this egg from the parent configuration if there are
|
||||||
* no features defined for this egg specifically and there is a parent egg configured.
|
* no features defined for this egg specifically and there is a parent egg configured.
|
||||||
*/
|
*/
|
||||||
public function getInheritFeaturesAttribute(): ?array
|
public function inheritFeatures(): Attribute
|
||||||
{
|
{
|
||||||
if (!is_null($this->features) || is_null($this->config_from)) {
|
return new Attribute(
|
||||||
return $this->features;
|
get: fn () => (!is_null($this->features) || is_null($this->config_from))
|
||||||
}
|
? $this->features : $this->configFrom->features,
|
||||||
|
);
|
||||||
return $this->configFrom->features;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the features available to this egg from the parent configuration if there are
|
* Returns the features available to this egg from the parent configuration if there are
|
||||||
* no features defined for this egg specifically and there is a parent egg configured.
|
* no features defined for this egg specifically and there is a parent egg configured.
|
||||||
*/
|
*/
|
||||||
public function getInheritFileDenylistAttribute(): ?array
|
public function inheritFileDenylist(): Attribute
|
||||||
{
|
{
|
||||||
if (is_null($this->config_from)) {
|
return new Attribute(
|
||||||
return $this->file_denylist;
|
get: fn () => is_null($this->config_from)
|
||||||
}
|
? $this->file_denylist : $this->configFrom->file_denylist,
|
||||||
|
);
|
||||||
return $this->configFrom->file_denylist;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
namespace Pterodactyl\Models;
|
namespace Pterodactyl\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Casts\Attribute;
|
||||||
use Illuminate\Database\Eloquent\Relations\HasOne;
|
use Illuminate\Database\Eloquent\Relations\HasOne;
|
||||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||||
|
|
||||||
|
@ -75,9 +76,11 @@ class EggVariable extends Model
|
||||||
'user_viewable' => 0,
|
'user_viewable' => 0,
|
||||||
];
|
];
|
||||||
|
|
||||||
public function getRequiredAttribute(): bool
|
public function required(): Attribute
|
||||||
{
|
{
|
||||||
return in_array('required', explode('|', $this->rules));
|
return Attribute::make(
|
||||||
|
get: fn ($value, $attributes) => in_array('required', explode('|', $this->rules)),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function egg(): HasOne
|
public function egg(): HasOne
|
||||||
|
|
|
@ -5,6 +5,7 @@ namespace Pterodactyl\Models;
|
||||||
use Cron\CronExpression;
|
use Cron\CronExpression;
|
||||||
use Carbon\CarbonImmutable;
|
use Carbon\CarbonImmutable;
|
||||||
use Illuminate\Container\Container;
|
use Illuminate\Container\Container;
|
||||||
|
use Illuminate\Database\Eloquent\Casts\Attribute;
|
||||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||||
use Pterodactyl\Contracts\Extensions\HashidsInterface;
|
use Pterodactyl\Contracts\Extensions\HashidsInterface;
|
||||||
|
@ -133,9 +134,11 @@ class Schedule extends Model
|
||||||
/**
|
/**
|
||||||
* Return a hashid encoded string to represent the ID of the schedule.
|
* Return a hashid encoded string to represent the ID of the schedule.
|
||||||
*/
|
*/
|
||||||
public function getHashidAttribute(): string
|
public function hashid(): Attribute
|
||||||
{
|
{
|
||||||
return Container::getInstance()->make(HashidsInterface::class)->encode($this->id);
|
return Attribute::make(
|
||||||
|
get: fn () => Container::getInstance()->make(HashidsInterface::class)->encode($this->id),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
namespace Pterodactyl\Models;
|
namespace Pterodactyl\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Casts\Attribute;
|
||||||
use Illuminate\Notifications\Notifiable;
|
use Illuminate\Notifications\Notifiable;
|
||||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||||
|
@ -55,9 +56,11 @@ class Subuser extends Model
|
||||||
/**
|
/**
|
||||||
* Return a hashid encoded string to represent the ID of the subuser.
|
* Return a hashid encoded string to represent the ID of the subuser.
|
||||||
*/
|
*/
|
||||||
public function getHashidAttribute(): string
|
public function hashid(): Attribute
|
||||||
{
|
{
|
||||||
return app()->make('hashids')->encode($this->id);
|
return Attribute::make(
|
||||||
|
get: fn () => app()->make('hashids')->encode($this->id),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
namespace Pterodactyl\Models;
|
namespace Pterodactyl\Models;
|
||||||
|
|
||||||
use Illuminate\Container\Container;
|
use Illuminate\Container\Container;
|
||||||
|
use Illuminate\Database\Eloquent\Casts\Attribute;
|
||||||
use Znck\Eloquent\Traits\BelongsToThrough;
|
use Znck\Eloquent\Traits\BelongsToThrough;
|
||||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||||
use Pterodactyl\Contracts\Extensions\HashidsInterface;
|
use Pterodactyl\Contracts\Extensions\HashidsInterface;
|
||||||
|
@ -104,9 +105,11 @@ class Task extends Model
|
||||||
/**
|
/**
|
||||||
* Return a hashid encoded string to represent the ID of the task.
|
* Return a hashid encoded string to represent the ID of the task.
|
||||||
*/
|
*/
|
||||||
public function getHashidAttribute(): string
|
public function hashid(): Attribute
|
||||||
{
|
{
|
||||||
return Container::getInstance()->make(HashidsInterface::class)->encode($this->id);
|
return Attribute::make(
|
||||||
|
get: fn () => Container::getInstance()->make(HashidsInterface::class)->encode($this->id),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
namespace Pterodactyl\Models;
|
namespace Pterodactyl\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Casts\Attribute;
|
||||||
use Pterodactyl\Rules\Username;
|
use Pterodactyl\Rules\Username;
|
||||||
use Pterodactyl\Facades\Activity;
|
use Pterodactyl\Facades\Activity;
|
||||||
use Illuminate\Support\Collection;
|
use Illuminate\Support\Collection;
|
||||||
|
@ -209,19 +210,24 @@ class User extends Model implements
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Store the username as a lowercase string.
|
* Get and Set the username as a lowercase string.
|
||||||
*/
|
*/
|
||||||
public function setUsernameAttribute(string $value)
|
public function username(): Attribute
|
||||||
{
|
{
|
||||||
$this->attributes['username'] = mb_strtolower($value);
|
return new Attribute(
|
||||||
|
get: fn () => mb_strtolower($this->username),
|
||||||
|
set: fn ($username) => mb_strtolower($username),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return a concatenated result for the accounts full name.
|
* Return a concatenated result for the accounts full name.
|
||||||
*/
|
*/
|
||||||
public function getNameAttribute(): string
|
public function name(): Attribute
|
||||||
{
|
{
|
||||||
return trim($this->name_first . ' ' . $this->name_last);
|
return new Attribute(
|
||||||
|
get: fn () => trim($this->name_first . ' ' . $this->name_last),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in a new issue