Calibre OPDS (and HTML) PHP Server : web-based light alternative to Calibre content server / Calibre2OPDS to serve ebooks (epub, mobi, pdf, ...) http://blog.slucas.fr/en/oss/calibre-opds-php-server
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

87 lines
2.6KB

  1. <?php
  2. /**
  3. * COPS (Calibre OPDS PHP Server) main script
  4. *
  5. * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
  6. * @author Sébastien Lucas <sebastien@slucas.fr>
  7. *
  8. */
  9. require_once ("config.php");
  10. require_once ("base.php");
  11. require_once ("author.php");
  12. require_once ("serie.php");
  13. require_once ("book.php");
  14. header ("Content-Type:application/xml");
  15. $page = Base::PAGE_INDEX;
  16. global $config;
  17. if (!empty ($_GET) && isset($_GET["page"])) {
  18. $page = $_GET["page"];
  19. }
  20. switch ($page) {
  21. case Base::PAGE_ALL_AUTHORS :
  22. $title = "All authors";
  23. break;
  24. case Base::PAGE_AUTHOR_DETAIL :
  25. $title = Author::getAuthorName ($_GET["id"]);
  26. break;
  27. case Base::PAGE_ALL_SERIES :
  28. $title = "All series";
  29. break;
  30. case Base::PAGE_ALL_BOOKS :
  31. $title = "All books by starting letter";
  32. break;
  33. case Base::PAGE_ALL_BOOKS_LETTER:
  34. $title = "All books starting by " . $_GET["id"];
  35. break;
  36. case Base::PAGE_ALL_RECENT_BOOKS :
  37. $title = "Most recent books";
  38. break;
  39. case Base::PAGE_SERIE_DETAIL :
  40. $title = "Series : " . Serie::getSerieById ($_GET["id"])->name;
  41. break;
  42. case Base::PAGE_OPENSEARCH :
  43. echo Base::getOpenSearch ();
  44. return;
  45. case Base::PAGE_OPENSEARCH_QUERY :
  46. $title = "Search result for query <" . $_GET["query"] . ">";
  47. break;
  48. default:
  49. $title = $config['cops_title_default'];
  50. break;
  51. }
  52. Base::startXmlDocument ($title);
  53. switch ($page) {
  54. case Base::PAGE_ALL_AUTHORS :
  55. Author::getAllAuthors();
  56. break;
  57. case Base::PAGE_AUTHOR_DETAIL :
  58. Book::getBooksByAuthor ($_GET["id"]);
  59. break;
  60. case Base::PAGE_ALL_SERIES :
  61. Serie::getAllSeries();
  62. break;
  63. case Base::PAGE_ALL_BOOKS :
  64. Book::getAllBooks ();
  65. break;
  66. case Base::PAGE_ALL_BOOKS_LETTER:
  67. Book::getBooksByStartingLetter ($_GET["id"]);
  68. break;
  69. case Base::PAGE_ALL_RECENT_BOOKS :
  70. Book::getAllRecentBooks ();
  71. break;
  72. case Base::PAGE_SERIE_DETAIL :
  73. Book::getBooksBySeries ($_GET["id"]);
  74. break;
  75. case Base::PAGE_OPENSEARCH_QUERY :
  76. Book::getBooksByQuery ($_GET["query"]);
  77. break;
  78. default:
  79. Author::getCount();
  80. Serie::getCount();
  81. Book::getCount();
  82. break;
  83. }
  84. echo Base::endXmlDocument ();
  85. ?>