Example #1
0
 /**
  * The function for the head of the HTML catalog
  * @dataProvider providerTemplate
  */
 public function testGenerateHeader($templateName)
 {
     $_SERVER["HTTP_USER_AGENT"] = "Firefox";
     global $config;
     $headcontent = file_get_contents(dirname(__FILE__) . '/../templates/' . $templateName . '/file.html');
     $template = new doT();
     $tpl = $template->template($headcontent, NULL);
     $data = array("title" => $config['cops_title_default'], "version" => VERSION, "opds_url" => $config['cops_full_url'] . "feed.php", "customHeader" => "", "template" => $templateName, "server_side_rendering" => useServerSideRendering(), "current_css" => getCurrentCss(), "favico" => $config['cops_icon'], "getjson_url" => "getJSON.php?" . addURLParameter(getQueryString(), "complete", 1));
     $head = $tpl($data);
     $this->assertContains("<head>", $head);
     $this->assertContains("</head>", $head);
 }
Example #2
0
 private function startXmlDocument($page)
 {
     global $config;
     self::getXmlStream()->startDocument('1.0', 'UTF-8');
     self::getXmlStream()->startElement("feed");
     self::getXmlStream()->writeAttribute("xmlns", "http://www.w3.org/2005/Atom");
     self::getXmlStream()->writeAttribute("xmlns:xhtml", "http://www.w3.org/1999/xhtml");
     self::getXmlStream()->writeAttribute("xmlns:opds", "http://opds-spec.org/2010/catalog");
     self::getXmlStream()->writeAttribute("xmlns:opensearch", "http://a9.com/-/spec/opensearch/1.1/");
     self::getXmlStream()->writeAttribute("xmlns:dcterms", "http://purl.org/dc/terms/");
     self::getXmlStream()->startElement("title");
     self::getXmlStream()->text($page->title);
     self::getXmlStream()->endElement();
     if ($page->subtitle != "") {
         self::getXmlStream()->startElement("subtitle");
         self::getXmlStream()->text($page->subtitle);
         self::getXmlStream()->endElement();
     }
     self::getXmlStream()->startElement("id");
     if ($page->idPage) {
         $idPage = $page->idPage;
         if (!is_null(GetUrlParam(DB))) {
             $idPage = str_replace("cops:", "cops:" . GetUrlParam(DB) . ":", $idPage);
         }
         self::getXmlStream()->text($idPage);
     } else {
         self::getXmlStream()->text($_SERVER['REQUEST_URI']);
     }
     self::getXmlStream()->endElement();
     self::getXmlStream()->startElement("updated");
     self::getXmlStream()->text(self::getUpdatedTime());
     self::getXmlStream()->endElement();
     self::getXmlStream()->startElement("icon");
     self::getXmlStream()->text($page->favicon);
     self::getXmlStream()->endElement();
     self::getXmlStream()->startElement("author");
     self::getXmlStream()->startElement("name");
     self::getXmlStream()->text($page->authorName);
     self::getXmlStream()->endElement();
     self::getXmlStream()->startElement("uri");
     self::getXmlStream()->text($page->authorUri);
     self::getXmlStream()->endElement();
     self::getXmlStream()->startElement("email");
     self::getXmlStream()->text($page->authorEmail);
     self::getXmlStream()->endElement();
     self::getXmlStream()->endElement();
     $link = new LinkNavigation("", "start", "Home");
     self::renderLink($link);
     $link = new LinkNavigation("?" . getQueryString(), "self");
     self::renderLink($link);
     $urlparam = "?";
     if (!is_null(GetUrlParam(DB))) {
         $urlparam = addURLParameter($urlparam, DB, GetUrlParam(DB));
     }
     if ($config['cops_generate_invalid_opds_stream'] == 0 || preg_match("/(MantanoReader|FBReader)/", $_SERVER['HTTP_USER_AGENT'])) {
         // Good and compliant way of handling search
         $urlparam = addURLParameter($urlparam, "page", Base::PAGE_OPENSEARCH);
         $link = new Link("feed.php" . $urlparam, "application/opensearchdescription+xml", "search", "Search here");
     } else {
         // Bad way, will be removed when OPDS client are fixed
         $urlparam = addURLParameter($urlparam, "query", "{searchTerms}");
         $urlparam = str_replace("%7B", "{", $urlparam);
         $urlparam = str_replace("%7D", "}", $urlparam);
         $link = new Link($config['cops_full_url'] . 'feed.php' . $urlparam, "application/atom+xml", "search", "Search here");
     }
     self::renderLink($link);
     if ($page->containsBook() && !is_null($config['cops_books_filter']) && count($config['cops_books_filter']) > 0) {
         $Urlfilter = getURLParam("tag", "");
         foreach ($config['cops_books_filter'] as $lib => $filter) {
             $link = new LinkFacet("?" . addURLParameter(getQueryString(), "tag", $filter), $lib, localize("tagword.title"), $filter == $Urlfilter);
             self::renderLink($link);
         }
     }
 }
Example #3
0
 public function __construct($phref, $ptitle = NULL, $pfacetGroup = NULL, $pactiveFacet = FALSE)
 {
     parent::__construct($phref, Link::OPDS_PAGING_TYPE, "http://opds-spec.org/facet", $ptitle, $pfacetGroup, $pactiveFacet);
     if (!is_null(GetUrlParam(DB))) {
         $this->href = addURLParameter($this->href, DB, GetUrlParam(DB));
     }
     $this->href = $_SERVER["SCRIPT_NAME"] . $this->href;
 }
Example #4
0
$page = getURLParam("page", Base::PAGE_INDEX);
$query = getURLParam("query");
$qid = getURLParam("id");
$n = getURLParam("n", "1");
$database = GetUrlParam(DB);
// Access the database ASAP to be sure it's readable, redirect if that's not the case.
// It has to be done before any header is sent.
Base::checkDatabaseAvailability();
if ($config['cops_fetch_protect'] == "1") {
    session_start();
    if (!isset($_SESSION['connected'])) {
        $_SESSION['connected'] = 0;
    }
}
header("Content-Type:text/html;charset=utf-8");
$data = array("title" => $config['cops_title_default'], "version" => VERSION, "opds_url" => $config['cops_full_url'] . "feed.php", "customHeader" => "", "template" => getCurrentTemplate(), "server_side_rendering" => useServerSideRendering(), "current_css" => getCurrentCss(), "favico" => $config['cops_icon'], "getjson_url" => "getJSON.php?" . addURLParameter(getQueryString(), "complete", 1));
if (preg_match("/Kindle/", $_SERVER['HTTP_USER_AGENT'])) {
    $data["customHeader"] = '<style media="screen" type="text/css"> html { font-size: 75%; -webkit-text-size-adjust: 75%; -ms-text-size-adjust: 75%; }</style>';
}
$headcontent = file_get_contents('templates/' . getCurrentTemplate() . '/file.html');
$template = new doT();
$dot = $template->template($headcontent, NULL);
echo $dot($data);
?>
<body>
<?php 
if (useServerSideRendering()) {
    // Get the data
    require_once "JSON_renderer.php";
    $data = JSONRenderer::getJson(true);
    echo serverSideRender($data);
Example #5
0
 public static function getJson($complete = false)
 {
     global $config;
     $page = getURLParam("page", Base::PAGE_INDEX);
     $query = getURLParam("query");
     $search = getURLParam("search");
     $qid = getURLParam("id");
     $n = getURLParam("n", "1");
     $database = GetUrlParam(DB);
     $currentPage = Page::getPage($page, $qid, $query, $n);
     $currentPage->InitializeContent();
     if ($search) {
         return self::getContentArrayTypeahead($currentPage);
     }
     $out = array("title" => $currentPage->title);
     $entries = array();
     foreach ($currentPage->entryArray as $entry) {
         array_push($entries, self::getContentArray($entry));
     }
     if (!is_null($currentPage->book)) {
         $out["book"] = self::getFullBookContentArray($currentPage->book);
     }
     $out["databaseId"] = GetUrlParam(DB, "");
     $out["databaseName"] = Base::getDbName();
     if ($out["databaseId"] == "") {
         $out["databaseName"] = "";
     }
     $out["fullTitle"] = $out["title"];
     if ($out["databaseId"] != "" && $out["databaseName"] != $out["fullTitle"]) {
         $out["fullTitle"] = $out["databaseName"] . " > " . $out["fullTitle"];
     }
     $out["page"] = $page;
     $out["multipleDatabase"] = Base::isMultipleDatabaseEnabled() ? 1 : 0;
     $out["entries"] = $entries;
     $out["isPaginated"] = 0;
     if ($currentPage->isPaginated()) {
         $prevLink = $currentPage->getPrevLink();
         $nextLink = $currentPage->getNextLink();
         $out["isPaginated"] = 1;
         $out["prevLink"] = "";
         if (!is_null($prevLink)) {
             $out["prevLink"] = $prevLink->hrefXhtml();
         }
         $out["nextLink"] = "";
         if (!is_null($nextLink)) {
             $out["nextLink"] = $nextLink->hrefXhtml();
         }
         $out["maxPage"] = $currentPage->getMaxPage();
         $out["currentPage"] = $currentPage->n;
     }
     if (!is_null(getURLParam("complete")) || $complete) {
         $out = self::addCompleteArray($out);
     }
     $out["containsBook"] = 0;
     if ($currentPage->containsBook()) {
         $out["containsBook"] = 1;
     }
     $out["abouturl"] = "index.php" . addURLParameter("?page=" . Base::PAGE_ABOUT, DB, $database);
     if ($page == Base::PAGE_ABOUT) {
         $temp = preg_replace("/\\<h1\\>About COPS\\<\\/h1\\>/", "<h1>About COPS " . VERSION . "</h1>", file_get_contents('about.html'));
         $out["fullhtml"] = $temp;
     }
     $out["homeurl"] = "index.php";
     if ($page != Base::PAGE_INDEX && !is_null($database)) {
         $out["homeurl"] = $out["homeurl"] . "?" . addURLParameter("", DB, $database);
     }
     return $out;
 }
Example #6
0
File: book.php Project: ha-y/cops
 public function getDetailUrl()
 {
     $urlParam = $this->getUri();
     if (!is_null(GetUrlParam(DB))) {
         $urlParam = addURLParameter($urlParam, DB, GetUrlParam(DB));
     }
     return 'index.php' . $urlParam;
 }
Example #7
0
 public static function getLink($book, $type, $mime, $rel, $filename, $idData, $title = NULL, $height = NULL)
 {
     global $config;
     $urlParam = addURLParameter("", "data", $idData);
     if (Base::useAbsolutePath() || $rel == Link::OPDS_THUMBNAIL_TYPE || $type == "epub" && $config['cops_update_epub-metadata']) {
         if ($type != "jpg") {
             $urlParam = addURLParameter($urlParam, "type", $type);
         }
         if ($rel == Link::OPDS_THUMBNAIL_TYPE) {
             $urlParam = self::handleThumbnailLink($urlParam, $height);
         }
         $urlParam = addURLParameter($urlParam, "id", $book->id);
         if (!is_null(GetUrlParam(DB))) {
             $urlParam = addURLParameter($urlParam, DB, GetUrlParam(DB));
         }
         if ($config['cops_thumbnail_handling'] != "1" && !empty($config['cops_thumbnail_handling']) && $rel == Link::OPDS_THUMBNAIL_TYPE) {
             return new Link($config['cops_thumbnail_handling'], $mime, $rel, $title);
         } else {
             return new Link("fetch.php?" . $urlParam, $mime, $rel, $title);
         }
     } else {
         return new Link(str_replace('%2F', '/', rawurlencode($book->path . "/" . $filename)), $mime, $rel, $title);
     }
 }