diff --git a/dist/files_reader-0.4.6.tar.gz b/dist/files_reader-0.4.6.tar.gz
new file mode 100644
index 0000000..ef7e0f1
Binary files /dev/null and b/dist/files_reader-0.4.6.tar.gz differ
diff --git a/files_opds/appinfo/app.php b/files_opds/appinfo/app.php
index a157b70..3692ff8 100644
--- a/files_opds/appinfo/app.php
+++ b/files_opds/appinfo/app.php
@@ -7,9 +7,5 @@ require 'files_opds/lib/epub-preview.php';
\OCP\App::registerPersonal('files_opds', 'personal');
\OCP\App::registerAdmin('files_opds', 'admin');
-/* enable preview providers... */
-// \OCA\Files_Opds\Config::setPreview('OC\Preview\Epub',true);
-
-/* ..and register preview provider */
+/* register preview provider */
\OC\Preview::registerProvider('OC\Preview\Epub');
-
diff --git a/files_opds/lib/meta.php b/files_opds/lib/meta.php
index a736459..76d460b 100644
--- a/files_opds/lib/meta.php
+++ b/files_opds/lib/meta.php
@@ -93,32 +93,76 @@ class Meta
* @return array of metadata
*/
public static function get($id) {
- if ($meta = self::load($id)) {
- return $meta;
- } else {
- $meta = self::create($id);
- $path = \OC\Files\Filesystem::getLocalFile(\OC\Files\Filesystem::getPath($id));
- switch (strtolower(substr(strrchr($path, "."), 1))) {
- case 'epub':
- $epub = new Epub($path);
- $meta['author'] = json_encode($epub->Authors());
- $meta['title'] = $epub->Title();
- $meta['date'] = $epub->Date();
- $meta['publisher'] = $epub->Publisher();
- $meta['copyright'] = $epub->Copyright();
- $meta['language'] = $epub->Language();
- $meta['description'] = strip_tags($epub->Description());
- $meta['isbn'] = $epub->ISBN();
- $meta['subjects'] = $epub->Subjects();
- break;
- default:
- // set title to filename minus extension
- $info = pathinfo($path);
- $meta['title'] = basename($path,'.'.$info['extension']);
- break;
- }
- self::save($meta);
- return $meta;
+ if (!($meta = self::load($id))) {
+ $meta = self::scan($id);
}
+ return $meta;
}
+
+ /**
+ * @brief scan files for metadata
+ * PLAN: use search_lucene to extract metadata? Does not seem to support PDF1.6?
+ * solution: first ask search_lucene, if no data then scan file?
+ *
+ * @param int $id fileid
+ * @return array $meta metadata
+ */
+ public static function scan($id) {
+ $meta = self::create($id);
+ $path = \OC\Files\Filesystem::getLocalFile(\OC\Files\Filesystem::getPath($id));
+
+ switch (strtolower(substr(strrchr($path, "."), 1))) {
+ case 'epub':
+ self::epub($path,$meta);
+ break;
+ case 'pdf':
+ self::pdf($path,$meta);
+ break;
+ }
+
+ /* if title is not set, assume metadata was invalid or not present
+ * use filename as title
+ */
+ if (!($meta['title'])) {
+ $info = pathinfo($path);
+ $meta['title'] = basename($path,'.'.$info['extension']);
+ }
+ // self::save($meta);
+ return $meta;
+ }
+
+
+ /**
+ * @brief check epub for metadata
+ *
+ * @param string $path path to epub
+ * @param arrayref $meta reference to array of metadata
+ * @return bool $success (true if metadata found)
+ */
+ public static function epub($path,&$meta) {
+ $epub = new Epub($path);
+ $meta['author'] = json_encode($epub->Authors());
+ $meta['title'] = $epub->Title();
+ $meta['date'] = $epub->Date();
+ $meta['publisher'] = $epub->Publisher();
+ $meta['copyright'] = $epub->Copyright();
+ $meta['language'] = $epub->Language();
+ $meta['description'] = strip_tags($epub->Description());
+ $meta['isbn'] = $epub->ISBN();
+ $meta['subjects'] = $epub->Subjects();
+
+ return true;
+ }
+
+ /**
+ * @brief check pdf for metadata
+ *
+ * @param string $path path to pdf
+ * @param arrayref $meta reference to array of metadata
+ * @return bool $success (true if metadata found)
+ */
+ public static function pdf($path,&$meta) {
+
+ return false;
+ }
}
diff --git a/files_reader/appinfo/info.xml b/files_reader/appinfo/info.xml
index 5140a27..7d720a8 100644
--- a/files_reader/appinfo/info.xml
+++ b/files_reader/appinfo/info.xml
@@ -3,7 +3,7 @@
files_reader
Reader (ebook reader)
Online ePub file reader
- 0.4.5
+ 0.4.6
LGPL
Frank de Lange, (taken clues from Thomas Müller/files_pdfviewer, using slightly modified Futurepress/epub.js)
7.0
diff --git a/files_reader/viewer.php b/files_reader/viewer.php
index 95d3e85..4bd2db2 100644
--- a/files_reader/viewer.php
+++ b/files_reader/viewer.php
@@ -11,7 +11,8 @@ $mime = "application/zip+epub";
// download link varies by sharing status, compose it here
$dllink = $share === ''
- ? OC_Helper::linkTo('files', 'ajax/download.php', array('dir' => urldecode($dir), 'files' => urldecode($file), 'share' => $share ))
+ // ? OC_Helper::linkTo('files', 'ajax/download.php', array('dir' => urldecode($dir), 'files' => urldecode($file), 'share' => $share ))
+ ? OC_Helper::linkTo('files', 'ajax/download.php', array('dir' => $dir, 'files' => $file, 'share' => $share ))
: OC_Helper::linkToPublic('files') . '&t=' . rawurlencode($share) . '&download';
// needed for css/script inclusion