Add control room automations and uploader overrides
This commit is contained in:
@@ -2921,6 +2921,12 @@ class EventPublicController extends BaseController
|
||||
$policy = $this->guestPolicy();
|
||||
$uploadVisibility = Arr::get($eventModel->settings ?? [], 'guest_upload_visibility', $policy->guest_upload_visibility);
|
||||
$autoApproveUploads = $uploadVisibility === 'immediate';
|
||||
$controlRoom = Arr::get($eventModel->settings ?? [], 'control_room', []);
|
||||
$controlRoom = is_array($controlRoom) ? $controlRoom : [];
|
||||
$autoAddApprovedToLiveSetting = (bool) Arr::get($controlRoom, 'auto_add_approved_to_live', false);
|
||||
$trustedUploaders = Arr::get($controlRoom, 'trusted_uploaders', []);
|
||||
$forceReviewUploaders = Arr::get($controlRoom, 'force_review_uploaders', []);
|
||||
$autoAddApprovedToLiveDefault = $autoAddApprovedToLiveSetting || $autoApproveUploads;
|
||||
|
||||
$tenantModel = $eventModel->tenant;
|
||||
|
||||
@@ -2953,6 +2959,34 @@ class EventPublicController extends BaseController
|
||||
->resolveEventPackageForPhotoUpload($tenantModel, $eventId, $eventModel);
|
||||
|
||||
$deviceId = $this->resolveDeviceIdentifier($request);
|
||||
$deviceHasRule = static function (array $entries, string $deviceId): bool {
|
||||
foreach ($entries as $entry) {
|
||||
if (! is_array($entry)) {
|
||||
continue;
|
||||
}
|
||||
$candidate = $entry['device_id'] ?? null;
|
||||
if (is_string($candidate) && $candidate === $deviceId) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
};
|
||||
$deviceHasRules = $deviceId !== 'anonymous';
|
||||
$isForceReviewUploader = $deviceHasRules && is_array($forceReviewUploaders)
|
||||
? $deviceHasRule($forceReviewUploaders, $deviceId)
|
||||
: false;
|
||||
$isTrustedUploader = $deviceHasRules && is_array($trustedUploaders)
|
||||
? $deviceHasRule($trustedUploaders, $deviceId)
|
||||
: false;
|
||||
|
||||
if ($isForceReviewUploader) {
|
||||
$autoApproveUploads = false;
|
||||
} elseif ($isTrustedUploader) {
|
||||
$autoApproveUploads = true;
|
||||
}
|
||||
|
||||
$autoAddApprovedToLive = $autoAddApprovedToLiveDefault && $autoApproveUploads;
|
||||
|
||||
$deviceLimit = max(0, (int) ($policy->per_device_upload_limit ?? 50));
|
||||
$deviceCount = DB::table('photos')->where('event_id', $eventId)->where('guest_name', $deviceId)->count();
|
||||
@@ -3037,10 +3071,21 @@ class EventPublicController extends BaseController
|
||||
$liveApprovedAt = null;
|
||||
$liveReviewedAt = null;
|
||||
$liveStatus = PhotoLiveStatus::NONE->value;
|
||||
$securityMeta = $isForceReviewUploader
|
||||
? [
|
||||
'manual_review' => true,
|
||||
'manual_review_reason' => 'force_review_device',
|
||||
]
|
||||
: null;
|
||||
$securityMetaValue = $securityMeta ? json_encode($securityMeta) : null;
|
||||
|
||||
if ($liveOptIn) {
|
||||
if ($liveOptIn || $autoAddApprovedToLive) {
|
||||
$liveSubmittedAt = now();
|
||||
if ($liveModerationMode === 'off') {
|
||||
if ($autoAddApprovedToLive) {
|
||||
$liveStatus = PhotoLiveStatus::APPROVED->value;
|
||||
$liveApprovedAt = $liveSubmittedAt;
|
||||
$liveReviewedAt = $liveSubmittedAt;
|
||||
} elseif ($liveModerationMode === 'off') {
|
||||
$liveStatus = PhotoLiveStatus::APPROVED->value;
|
||||
$liveApprovedAt = $liveSubmittedAt;
|
||||
$liveReviewedAt = $liveSubmittedAt;
|
||||
@@ -3048,6 +3093,12 @@ class EventPublicController extends BaseController
|
||||
$liveStatus = PhotoLiveStatus::PENDING->value;
|
||||
}
|
||||
}
|
||||
if ($isForceReviewUploader) {
|
||||
$liveStatus = PhotoLiveStatus::REJECTED->value;
|
||||
$liveSubmittedAt = null;
|
||||
$liveApprovedAt = null;
|
||||
$liveReviewedAt = now();
|
||||
}
|
||||
|
||||
$photoId = DB::table('photos')->insertGetId([
|
||||
'event_id' => $eventId,
|
||||
@@ -3071,6 +3122,7 @@ class EventPublicController extends BaseController
|
||||
'emotion_id' => $this->resolveEmotionId($validated, $eventId),
|
||||
'is_featured' => 0,
|
||||
'metadata' => null,
|
||||
'security_meta' => $securityMetaValue,
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
]);
|
||||
|
||||
Reference in New Issue
Block a user