Thumb source: =h((string)$thumbMeta['source_file'])?>
No input directories yet.
Thumb source: =h((string)$thumbMeta['source_file'])?>
diff --git a/.gitignore b/.gitignore index f665e46..df5bc7e 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,5 @@ cache/ push.json node_modules/ bin/.personality_index +backups/ +*.bak.* diff --git a/admin.php b/admin.php index d3859a6..cd02240 100644 --- a/admin.php +++ b/admin.php @@ -260,6 +260,16 @@ function read_article_id($dir){ $id = trim((string)file_get_contents($idFile)); return article_id_is_valid($id) ? $id : ''; } +function mvlog_announcement_sent(string $mvlogRoot, string $articleId, string $job): bool { + $cacheFile = rtrim($mvlogRoot, '/') . '/cache/push_notifications.json'; + if (!is_file($cacheFile)) return false; + $cache = json_decode((string)@file_get_contents($cacheFile), true); + if (!is_array($cache) || !is_array($cache['shown'] ?? null)) return false; + $shown = $cache['shown']; + $job = basename(trim($job)); + if (article_id_is_valid($articleId) && isset($shown[$articleId])) return true; + return $job !== '' && isset($shown[$job]); +} function write_article_id($dir, $id){ if (!article_id_is_valid($id)) throw new RuntimeException('Invalid article id.'); $idFile = rtrim((string)$dir, '/').'/'.ARTICLE_ID_FILE; @@ -1142,6 +1152,8 @@ try { $articleId = ensure_state_article_id($dir); $visibleNow = !empty($_POST['visible']); $sendImmediately = !empty($_POST['send_immediately']); + $articleAlreadyAnnounced = mvlog_announcement_sent(__DIR__, $articleId, basename($dir)); + if ($articleAlreadyAnnounced) $sendImmediately = false; $state = input_dir_state($dir); $output = basename((string)($state['output'] ?? '')); $canShow = $output !== '' && is_file($config['videos_dir'].'/'.$output) && !input_dir_preview($dir); @@ -1170,6 +1182,7 @@ try { 'permalink' => input_dir_permalink($dir), 'can_show' => $canShow, 'can_permalink' => $canPermalink, + 'announced' => mvlog_announcement_sent(__DIR__, $articleId, basename($dir)), 'dir' => basename($dir), 'id' => $articleId, 'message' => $message, @@ -1461,7 +1474,7 @@ $runningJobs = active_worker_jobs($config);
No orphan videos.
=page_links('videos',$videoPage,$videoPages)?>No input directories yet.
Thumb source: =h((string)$thumbMeta['source_file'])?>
No input directories yet.
Thumb source: =h((string)$thumbMeta['source_file'])?>