getFilename() == '.' && preg_match('|/src$|ius', $file->getPath())){ throw new SeeOtherEbookException(preg_replace(['|' . WEB_ROOT . '|ius', '|/src$|ius'], '', $file->getPath())); } } } // Do we have the ebook cached? try{ $ebook = apcu_fetch('ebook-' . $wwwFilesystemPath); } catch(Safe\Exceptions\ApcuException $ex){ $ebook = new Ebook($wwwFilesystemPath); } // Generate the bottom carousel. $carousel = []; $ebooks = Library::GetEbooks(); shuffle($ebooks); $targetCarouselSize = 5; if(sizeof($ebooks) < $targetCarouselSize){ $targetCarouselSize = sizeof($ebooks) - 1; } $i = 0; while(sizeof($carousel) < $targetCarouselSize){ if(isset($ebooks[$i]) && $ebooks[$i]->Url !== $ebook->Url){ $carousel[] = $ebooks[$i]; } $i++; } } catch(SeeOtherEbookException $ex){ http_response_code(301); header('Location: ' . $ex->Url); exit(); } catch(\Exception $ex){ http_response_code(404); include(WEB_ROOT . '/404.php'); exit(); } ?> strip_tags($ebook->TitleWithCreditsHtml), 'ogType' => 'book', 'coverUrl' => $ebook->DistCoverUrl, 'highlight' => 'ebooks', 'description' => 'The Standard Ebooks edition of ' . $ebook->Title . ': ' . $ebook->Description, 'jsonld' => htmlentities($ebook->GenerateJsonLd(), ENT_NOQUOTES)]) ?>

Title) ?>

Authors as $author){ ?> Name != 'Anonymous'){ ?>

Name) ?>

HeroImage2xAvifUrl !== null){ ?> The cover for the Standard Ebooks edition of <?= Formatter::ToPlainText(strip_tags($ebook->TitleWithCreditsHtml)) ?>

Description

LongDescription === null){ ?>

There’s no description for this ebook yet.

LongDescription ?>
HasDownloads){ ?>

Read free

This ebook is only thought to be free of copyright restrictions in the United States. It may still be under copyright in other countries. If you’re not located in the United States, you must check your local laws to verify that the contents of this ebook are free of copyright restrictions in the country you’re located in before downloading or using this ebook.

Download for ereaders

    EpubUrl !== null){ ?>
  • Compatible epub All devices and apps except Kindles and Kobos.

  • Azw3Url !== null){ ?>
  • azw3 Kindle devices and apps.KindleCoverUrl !== null){ ?> Also download the Kindle cover thumbnail to see the cover in your Kindle’s library.

  • KepubUrl !== null){ ?>
  • kepub Kobo devices and apps.

  • AdvancedEpubUrl !== null){ ?>
  • Advanced epub An advanced format not yet fully compatible with most ereaders.

TextUrl !== null || $ebook->TextSinglePageUrl !== null){ ?>

Read online

A brief history of this ebook

    GitCommits as $commit){ ?>
  1. Message) ?>

GitHubUrl !== null){ ?>

More details

Improve this ebook

Anyone can contribute to make a Standard Ebook better for everyone!

To report typos, typography errors, or other corrections, see how to report errors.

GitHubUrl !== null){ ?>

If you’re comfortable with technology and want to contribute directly, check out this ebook’s GitHub repository and our contributors section.

You can also donate to the Standard Ebooks project to help fund continuing improvement of this and other ebooks.

0){ ?>