Files
nexusphp/app/Models/NexusModel.php

75 lines
2.2 KiB
PHP
Raw Normal View History

2021-04-02 19:48:41 +08:00
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Nexus\Database\NexusDB;
2021-04-02 19:48:41 +08:00
class NexusModel extends Model
{
use HasFactory;
public $timestamps = false;
2022-05-13 03:12:38 +08:00
protected $perPage = 50;
protected $connection = NexusDB::ELOQUENT_CONNECTION_NAME;
2021-04-17 19:01:33 +08:00
/**
*
* @param \DateTimeInterface $date
* @return string
*/
protected function serializeDate(\DateTimeInterface $date)
{
2022-08-10 17:38:05 +08:00
return $date->format($this->dateFormat ?: 'Y-m-d H:i:s');
2021-04-17 19:01:33 +08:00
}
2021-04-02 19:48:41 +08:00
2022-03-17 18:46:49 +08:00
/**
* Check is valid date string
*
* @see https://stackoverflow.com/questions/19271381/correctly-determine-if-date-string-is-a-valid-date-in-that-format
* @param $name
* @param string $format
* @return bool
*/
public function isValidDate($name, $format = 'Y-m-d H:i:s'): bool
{
$date = $this->getRawOriginal($name);
$d = \DateTime::createFromFormat($format, $date);
// The Y ( 4 digits year ) returns TRUE for any integer with any number of digits so changing the comparison from == to === fixes the issue.
return $d && $d->format($format) === $date;
}
2022-08-11 17:12:36 +08:00
public function getDeadlineText($field = 'deadline')
{
$raw = $this->getRawOriginal($field);
if (in_array($raw, [null, '0000-00-00 00:00:00', ''], true)) {
return nexus_trans("label.permanent");
}
return sprintf('%s: %s', nexus_trans('label.deadline'), $raw);
}
2022-10-02 21:14:11 +08:00
public static function listStaticProps($dataSource, $textTransPrefix, $onlyKeyValue = false, $valueField = 'text'): array
{
$result = $dataSource;
$keyValue = [];
foreach ($result as $key => &$info) {
if (str_contains($textTransPrefix, '%s')) {
$transKey = sprintf($textTransPrefix, $key);
} else {
$transKey = "$textTransPrefix.$key";
}
$text = $textTransPrefix ? nexus_trans($transKey) : $info['text'];
2022-10-02 21:14:11 +08:00
$info['text'] = $text;
$keyValue[$key] = $info[$valueField];
}
if ($onlyKeyValue) {
return $keyValue;
}
return $result;
}
2021-04-02 19:48:41 +08:00
}