publish operations

This commit is contained in:
2026-01-09 19:08:00 +02:00
parent 84cd04c94f
commit 0ed0106103
14 changed files with 519 additions and 106 deletions
+23 -14
View File
@@ -3,22 +3,23 @@
use Carbon\Carbon;
use Lucent\Core\Data\Record;
use Lucent\Core\Data\RecordField;
use Lucent\Core\Data\RecordStatus;
use stdClass;
class RecordModule
{
public static function updateField(
Record $record,
RecordField $field,
): Record {
$recordFields = collect($record->draftData)->filter(
fn(RecordField $rf) => !(
$rf->id == $field->id && $rf->locale == $field->locale
),
);
$recordFields->push($field);
$record->draftData = $recordFields->values()->toArray();
return $record;
public static function getStatus(Record $record): RecordStatus
{
if ($record->trashedBy) {
return RecordStatus::TRASHED;
} elseif ($record->publishedBy && $record->scheduledAt) {
return RecordStatus::SCHEDULED_AND_PUBLISHED;
} elseif ($record->publishedBy) {
return RecordStatus::PUBLISHED;
} elseif ($record->scheduledAt) {
return RecordStatus::SCHEDULED;
}
return RecordStatus::DRAFT;
}
public static function toDb(Record $record): array
@@ -30,11 +31,15 @@ class RecordModule
"created_by" => $record->createdBy,
"published_at" => empty($record->publishedAt)
? null
: record->publishedAt->toJSON(),
: $record->publishedAt->toJSON(),
"published_by" => $record->publishedBy,
"scheduled_at" => empty($record->scheduledAt)
? null
: $record->scheduledAt->toJSON(),
"scheduled_by" => $record->scheduledBy,
"trashed_at" => empty($record->trashedAt)
? null
: record->trashedAt->toJSON(),
: $record->trashedAt->toJSON(),
"trashed_by" => $record->trashedBy,
];
}
@@ -50,6 +55,10 @@ class RecordModule
? null
: Carbon::parse(data_get($data, "published_at")),
publishedBy: data_get($data, "published_by"),
scheduledAt: empty(data_get($data, "scheduled_at"))
? null
: Carbon::parse(data_get($data, "scheduled_at")),
scheduledBy: data_get($data, "scheduled_by"),
trashedAt: empty(data_get($data, "trashed_at"))
? null
: Carbon::parse(data_get($data, "trashed_at")),