#!/usr/bin/php Created->format('Y-m'); $updatedTimestamp = $ebook->Updated->getTimestamp(); if(!isset($ebooksByMonth[$timestamp])){ $ebooksByMonth[$timestamp] = []; $lastUpdatedTimestamps[$timestamp] = $updatedTimestamp; } $ebooksByMonth[$timestamp][] = $ebook; if($updatedTimestamp > $lastUpdatedTimestamps[$timestamp]){ $lastUpdatedTimestamps[$timestamp] = $updatedTimestamp; } } foreach($ebooksByMonth as $month => $ebooks){ $filename = 'se-ebooks-' . $month . '.zip'; $filePath = $webRoot . '/patrons-circle/downloads/' . $filename; // If the file doesn't exist, or if the content.opf last updated time is newer than the file modification time if(!file_exists($filePath) || filemtime($filePath) < $lastUpdatedTimestamps[$month]){ print('Creating ' . $filePath . "\n"); $tempFilename = tempnam(sys_get_temp_dir(), "se-ebooks"); $zip = new ZipArchive(); if($zip->open($tempFilename, ZipArchive::CREATE) !== true){ print('Can\'t open file: ' . $tempFilename . "\n"); continue; } foreach($ebooks as $ebook){ if($ebook->EpubUrl !== null){ $ebookFilePath = $webRoot . '/' . $ebook->EpubUrl; $zip->addFile($ebookFilePath, $ebook->UrlSafeIdentifier . '/' . basename($ebookFilePath)); } if($ebook->Azw3Url !== null){ $ebookFilePath = $webRoot . '/' . $ebook->Azw3Url; $zip->addFile($ebookFilePath, $ebook->UrlSafeIdentifier . '/' . basename($ebookFilePath)); } if($ebook->KepubUrl !== null){ $ebookFilePath = $webRoot . '/' . $ebook->KepubUrl; $zip->addFile($ebookFilePath, $ebook->UrlSafeIdentifier . '/' . basename($ebookFilePath)); } if($ebook->AdvancedEpubUrl !== null){ $ebookFilePath = $webRoot . '/' . $ebook->AdvancedEpubUrl; $zip->addFile($ebookFilePath, $ebook->UrlSafeIdentifier . '/' . basename($ebookFilePath)); } if($ebook->TextSinglePageUrl !== null){ $ebookFilePath = $webRoot . '/' . $ebook->TextSinglePageUrl . '.xhtml'; // Strip the navigation header that was added as part of the deploy process $xhtml = file_get_contents($ebookFilePath); $xhtml = preg_replace('|
|ius', '', $xhtml); $zip->addFromString($ebook->UrlSafeIdentifier . '/' . str_replace('single-page', $ebook->UrlSafeIdentifier, basename($ebookFilePath)), $xhtml); } } $zip->close(); rename($tempFilename, $filePath); // Set a filesystem attribute for the number of ebooks in the file. This will be used // to display that number on the downloads page. exec('attr -q -s ebook-count -V ' . escapeshellarg(sizeof($ebooks)) . ' ' . escapeshellarg($filePath)); } }