diff --git a/app/Console/Commands/ParseCachedWebMentions.php b/app/Console/Commands/ParseCachedWebMentions.php index d271dd15..f375f213 100644 --- a/app/Console/Commands/ParseCachedWebMentions.php +++ b/app/Console/Commands/ParseCachedWebMentions.php @@ -41,13 +41,15 @@ class ParseCachedWebMentions extends Command { $HTMLfiles = $filesystem->allFiles(storage_path() . '/HTML'); foreach ($HTMLfiles as $file) { - $filepath = $file->getPathname(); - $html = $filesystem->get($filepath); - $url = $this->URLFromFilename($filepath); - $microformats = \Mf2\parse($html, $url); - $webmention = WebMention::where('source', $url)->firstOrFail(); - $webmention->mf2 = json_encode($microformats); - $webmention->save(); + if ($file->getExtension() != 'backup') { //we don’t want to parse.backup files + $filepath = $file->getPathname(); + $html = $filesystem->get($filepath); + $url = $this->URLFromFilename($filepath); + $microformats = \Mf2\parse($html, $url); + $webmention = WebMention::where('source', $url)->firstOrFail(); + $webmention->mf2 = json_encode($microformats); + $webmention->save(); + } } } diff --git a/app/Jobs/DownloadWebMention.php b/app/Jobs/DownloadWebMention.php index 592b41d3..63d8d307 100644 --- a/app/Jobs/DownloadWebMention.php +++ b/app/Jobs/DownloadWebMention.php @@ -41,10 +41,21 @@ class DownloadWebMention implements ShouldQueue //Laravel should catch and retry these automatically. if ($response->getStatusCode() == '200') { $filesystem = \Illuminate\FileSystem\FileSystem(); + $filename = $this->createFilenameFromURL($source); + //backup file first + $filenameBackup = $filename . '.' . date('Y-m-d') . '.backup'; + if ($filesystem->exists($filename)) { + $filesystem->copy($filename, $filenameBackup); + } + //save new HTML $filesystem->put( - $this->createFilenameFromURL($source), + $filename, (string) $response->getBody() ); + //remove backup if the same + if ($filesystem->get($filename) == $filesystem->get($filenameBackup)) { + $filesystem->delete($filenameBackup); + } } }