diff options
Diffstat (limited to 'inc/poche')
-rwxr-xr-x | inc/poche/Database.class.php | 8 | ||||
-rwxr-xr-x | inc/poche/Poche.class.php | 86 | ||||
-rwxr-xr-x | inc/poche/Routing.class.php | 2 | ||||
-rwxr-xr-x | inc/poche/Tools.class.php | 19 | ||||
-rw-r--r-- | inc/poche/WallabagEpub.class.php | 8 | ||||
-rwxr-xr-x | inc/poche/config.inc.default.php | 2 | ||||
-rw-r--r-- | inc/poche/pochePictures.php | 2 |
7 files changed, 62 insertions, 65 deletions
diff --git a/inc/poche/Database.class.php b/inc/poche/Database.class.php index 2c80b64b..b5dd2120 100755 --- a/inc/poche/Database.class.php +++ b/inc/poche/Database.class.php | |||
@@ -23,6 +23,10 @@ class Database { | |||
23 | { | 23 | { |
24 | switch (STORAGE) { | 24 | switch (STORAGE) { |
25 | case 'sqlite': | 25 | case 'sqlite': |
26 | // Check if /db is writeable | ||
27 | if ( !is_writable(STORAGE_SQLITE) || !is_writable(dirname(STORAGE_SQLITE))) { | ||
28 | die('An error occured: "db" directory must be writeable for your web server user!'); | ||
29 | } | ||
26 | $db_path = 'sqlite:' . STORAGE_SQLITE; | 30 | $db_path = 'sqlite:' . STORAGE_SQLITE; |
27 | $this->handle = new PDO($db_path); | 31 | $this->handle = new PDO($db_path); |
28 | break; | 32 | break; |
@@ -113,10 +117,10 @@ class Database { | |||
113 | $query = $this->executeQuery($sql, array()); | 117 | $query = $this->executeQuery($sql, array()); |
114 | } | 118 | } |
115 | 119 | ||
116 | public function install($login, $password) | 120 | public function install($login, $password, $email = '') |
117 | { | 121 | { |
118 | $sql = 'INSERT INTO users ( username, password, name, email) VALUES (?, ?, ?, ?)'; | 122 | $sql = 'INSERT INTO users ( username, password, name, email) VALUES (?, ?, ?, ?)'; |
119 | $params = array($login, $password, $login, ' '); | 123 | $params = array($login, $password, $login, $email); |
120 | $query = $this->executeQuery($sql, $params); | 124 | $query = $this->executeQuery($sql, $params); |
121 | 125 | ||
122 | $sequence = ''; | 126 | $sequence = ''; |
diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php index 098dd7c1..8cebafa3 100755 --- a/inc/poche/Poche.class.php +++ b/inc/poche/Poche.class.php | |||
@@ -74,12 +74,13 @@ class Poche | |||
74 | /** | 74 | /** |
75 | * Creates a new user | 75 | * Creates a new user |
76 | */ | 76 | */ |
77 | public function createNewUser($username, $password) | 77 | public function createNewUser($username, $password, $email = "") |
78 | { | 78 | { |
79 | if (!empty($username) && !empty($password)){ | 79 | if (!empty($username) && !empty($password)){ |
80 | $newUsername = filter_var($username, FILTER_SANITIZE_STRING); | 80 | $newUsername = filter_var($username, FILTER_SANITIZE_STRING); |
81 | $email = filter_var($email, FILTER_SANITIZE_STRING); | ||
81 | if (!$this->store->userExists($newUsername)){ | 82 | if (!$this->store->userExists($newUsername)){ |
82 | if ($this->store->install($newUsername, Tools::encodeString($password . $newUsername))) { | 83 | if ($this->store->install($newUsername, Tools::encodeString($password . $newUsername), $email)) { |
83 | Tools::logm('The new user ' . $newUsername . ' has been installed'); | 84 | Tools::logm('The new user ' . $newUsername . ' has been installed'); |
84 | $this->messages->add('s', sprintf(_('The new user %s has been installed. Do you want to <a href="?logout">logout ?</a>'), $newUsername)); | 85 | $this->messages->add('s', sprintf(_('The new user %s has been installed. Do you want to <a href="?logout">logout ?</a>'), $newUsername)); |
85 | Tools::redirect(); | 86 | Tools::redirect(); |
@@ -524,6 +525,14 @@ class Poche | |||
524 | $longlastingsession = isset($_POST['longlastingsession']); | 525 | $longlastingsession = isset($_POST['longlastingsession']); |
525 | $passwordTest = ($isauthenticated) ? $user['password'] : Tools::encodeString($password . $login); | 526 | $passwordTest = ($isauthenticated) ? $user['password'] : Tools::encodeString($password . $login); |
526 | Session::login($user['username'], $user['password'], $login, $passwordTest, $longlastingsession, array('poche_user' => new User($user))); | 527 | Session::login($user['username'], $user['password'], $login, $passwordTest, $longlastingsession, array('poche_user' => new User($user))); |
528 | |||
529 | # reload l10n | ||
530 | $language = $user['config']['language']; | ||
531 | @putenv('LC_ALL=' . $language); | ||
532 | setlocale(LC_ALL, $language); | ||
533 | bindtextdomain($language, LOCALE); | ||
534 | textdomain($language); | ||
535 | |||
527 | $this->messages->add('s', _('welcome to your wallabag')); | 536 | $this->messages->add('s', _('welcome to your wallabag')); |
528 | Tools::logm('login successful'); | 537 | Tools::logm('login successful'); |
529 | Tools::redirect($referer); | 538 | Tools::redirect($referer); |
@@ -551,42 +560,39 @@ class Poche | |||
551 | * import datas into your wallabag | 560 | * import datas into your wallabag |
552 | * @return boolean | 561 | * @return boolean |
553 | */ | 562 | */ |
554 | public function import() | ||
555 | { | ||
556 | if (isset($_FILES['file'])) { | ||
557 | Tools::logm('Import stated: parsing file'); | ||
558 | |||
559 | // assume, that file is in json format | ||
560 | |||
561 | $str_data = file_get_contents($_FILES['file']['tmp_name']); | ||
562 | $data = json_decode($str_data, true); | ||
563 | if ($data === null) { | ||
564 | |||
565 | // not json - assume html | ||
566 | |||
567 | $html = new simple_html_dom(); | ||
568 | $html->load_file($_FILES['file']['tmp_name']); | ||
569 | $data = array(); | ||
570 | $read = 0; | ||
571 | foreach(array('ol','ul') as $list) { | ||
572 | foreach($html->find($list) as $ul) { | ||
573 | foreach($ul->find('li') as $li) { | ||
574 | $tmpEntry = array(); | ||
575 | $a = $li->find('a'); | ||
576 | $tmpEntry['url'] = $a[0]->href; | ||
577 | $tmpEntry['tags'] = $a[0]->tags; | ||
578 | $tmpEntry['is_read'] = $read; | ||
579 | if ($tmpEntry['url']) { | ||
580 | $data[] = $tmpEntry; | ||
581 | } | ||
582 | } | ||
583 | |||
584 | // the second <ol/ul> is for read links | ||
585 | 563 | ||
586 | $read = ((sizeof($data) && $read) ? 0 : 1); | 564 | public function import() { |
587 | } | 565 | |
588 | } | 566 | if ( isset($_FILES['file']) && $_FILES['file']['tmp_name'] ) { |
567 | Tools::logm('Import stated: parsing file'); | ||
568 | |||
569 | // assume, that file is in json format | ||
570 | $str_data = file_get_contents($_FILES['file']['tmp_name']); | ||
571 | $data = json_decode($str_data, true); | ||
572 | |||
573 | if ( $data === null ) { | ||
574 | //not json - assume html | ||
575 | $html = new simple_html_dom(); | ||
576 | $html->load_file($_FILES['file']['tmp_name']); | ||
577 | $data = array(); | ||
578 | $read = 0; | ||
579 | foreach (array('ol','ul') as $list) { | ||
580 | foreach ($html->find($list) as $ul) { | ||
581 | foreach ($ul->find('li') as $li) { | ||
582 | $tmpEntry = array(); | ||
583 | $a = $li->find('a'); | ||
584 | $tmpEntry['url'] = $a[0]->href; | ||
585 | $tmpEntry['tags'] = $a[0]->tags; | ||
586 | $tmpEntry['is_read'] = $read; | ||
587 | if ($tmpEntry['url']) { | ||
588 | $data[] = $tmpEntry; | ||
589 | } | ||
590 | } | ||
591 | # the second <ol/ul> is for read links | ||
592 | $read = ((sizeof($data) && $read)?0:1); | ||
589 | } | 593 | } |
594 | } | ||
595 | } | ||
590 | 596 | ||
591 | // for readability structure | 597 | // for readability structure |
592 | 598 | ||
@@ -629,9 +635,11 @@ class Poche | |||
629 | $this->messages->add('s', _('Articles inserted: ') . $i . _('. Please note, that some may be marked as "read".')); | 635 | $this->messages->add('s', _('Articles inserted: ') . $i . _('. Please note, that some may be marked as "read".')); |
630 | } | 636 | } |
631 | 637 | ||
632 | Tools::logm('Import of articles finished: ' . $i . ' articles added (w/o content if not provided).'); | 638 | Tools::logm('Import of articles finished: '.$i.' articles added (w/o content if not provided).'); |
633 | } | 639 | } |
634 | 640 | else { | |
641 | $this->messages->add('s', _('Did you forget to select a file?')); | ||
642 | } | ||
635 | // file parsing finished here | 643 | // file parsing finished here |
636 | // now download article contents if any | 644 | // now download article contents if any |
637 | // check if we need to download any content | 645 | // check if we need to download any content |
diff --git a/inc/poche/Routing.class.php b/inc/poche/Routing.class.php index 004bd45a..0b373058 100755 --- a/inc/poche/Routing.class.php +++ b/inc/poche/Routing.class.php | |||
@@ -124,8 +124,6 @@ class Routing | |||
124 | } elseif (isset($_GET['import'])) { | 124 | } elseif (isset($_GET['import'])) { |
125 | $import = $this->wallabag->import(); | 125 | $import = $this->wallabag->import(); |
126 | $tplVars = array_merge($this->vars, $import); | 126 | $tplVars = array_merge($this->vars, $import); |
127 | } elseif (isset($_GET['download'])) { | ||
128 | Tools::downloadDb(); | ||
129 | } elseif (isset($_GET['empty-cache'])) { | 127 | } elseif (isset($_GET['empty-cache'])) { |
130 | Tools::emptyCache(); | 128 | Tools::emptyCache(); |
131 | } elseif (isset($_GET['export'])) { | 129 | } elseif (isset($_GET['export'])) { |
diff --git a/inc/poche/Tools.class.php b/inc/poche/Tools.class.php index 63137d76..93ec3fc6 100755 --- a/inc/poche/Tools.class.php +++ b/inc/poche/Tools.class.php | |||
@@ -54,6 +54,10 @@ final class Tools | |||
54 | || ($https && $_SERVER["SERVER_PORT"] == '443') | 54 | || ($https && $_SERVER["SERVER_PORT"] == '443') |
55 | || ($https && $_SERVER["SERVER_PORT"]==SSL_PORT) //Custom HTTPS port detection | 55 | || ($https && $_SERVER["SERVER_PORT"]==SSL_PORT) //Custom HTTPS port detection |
56 | ? '' : ':' . $_SERVER["SERVER_PORT"]); | 56 | ? '' : ':' . $_SERVER["SERVER_PORT"]); |
57 | |||
58 | if (isset($_SERVER["HTTP_X_FORWARDED_PORT"])) { | ||
59 | $serverport = ':' . $_SERVER["HTTP_X_FORWARDED_PORT"]; | ||
60 | } | ||
57 | 61 | ||
58 | $scriptname = str_replace('/index.php', '/', $_SERVER["SCRIPT_NAME"]); | 62 | $scriptname = str_replace('/index.php', '/', $_SERVER["SCRIPT_NAME"]); |
59 | 63 | ||
@@ -295,21 +299,6 @@ final class Tools | |||
295 | } | 299 | } |
296 | 300 | ||
297 | /** | 301 | /** |
298 | * Download the sqlite database | ||
299 | */ | ||
300 | public static function downloadDb() | ||
301 | { | ||
302 | header('Content-Disposition: attachment; filename="poche.sqlite.gz"'); | ||
303 | self::_status(200); | ||
304 | |||
305 | header('Content-Transfer-Encoding: binary'); | ||
306 | header('Content-Type: application/octet-stream'); | ||
307 | echo gzencode(file_get_contents(STORAGE_SQLITE)); | ||
308 | |||
309 | exit; | ||
310 | } | ||
311 | |||
312 | /** | ||
313 | * Get the content for a given URL (by a call to FullTextFeed) | 302 | * Get the content for a given URL (by a call to FullTextFeed) |
314 | * | 303 | * |
315 | * @param Url $url | 304 | * @param Url $url |
diff --git a/inc/poche/WallabagEpub.class.php b/inc/poche/WallabagEpub.class.php index b81d9bfd..9c4d3566 100644 --- a/inc/poche/WallabagEpub.class.php +++ b/inc/poche/WallabagEpub.class.php | |||
@@ -12,14 +12,12 @@ class WallabagEpub | |||
12 | { | 12 | { |
13 | protected $wallabag; | 13 | protected $wallabag; |
14 | protected $method; | 14 | protected $method; |
15 | protected $id; | ||
16 | protected $value; | 15 | protected $value; |
17 | 16 | ||
18 | public function __construct(Poche $wallabag, $method, $id, $value) | 17 | public function __construct(Poche $wallabag, $method, $value) |
19 | { | 18 | { |
20 | $this->wallabag = $wallabag; | 19 | $this->wallabag = $wallabag; |
21 | $this->method = $method; | 20 | $this->method = $method; |
22 | $this->id = $id; | ||
23 | $this->value = $value; | 21 | $this->value = $value; |
24 | } | 22 | } |
25 | 23 | ||
@@ -30,7 +28,7 @@ class WallabagEpub | |||
30 | { | 28 | { |
31 | switch ($this->method) { | 29 | switch ($this->method) { |
32 | case 'id': | 30 | case 'id': |
33 | $entryID = filter_var($this->id, FILTER_SANITIZE_NUMBER_INT); | 31 | $entryID = filter_var($this->value, FILTER_SANITIZE_NUMBER_INT); |
34 | $entry = $this->wallabag->store->retrieveOneById($entryID, $this->wallabag->user->getId()); | 32 | $entry = $this->wallabag->store->retrieveOneById($entryID, $this->wallabag->user->getId()); |
35 | $entries = array($entry); | 33 | $entries = array($entry); |
36 | $bookTitle = $entry['title']; | 34 | $bookTitle = $entry['title']; |
@@ -87,7 +85,7 @@ class WallabagEpub | |||
87 | $log->logLine("getCurrentServerURL: " . $book->getCurrentServerURL()); | 85 | $log->logLine("getCurrentServerURL: " . $book->getCurrentServerURL()); |
88 | $log->logLine("getCurrentPageURL..: " . $book->getCurrentPageURL()); | 86 | $log->logLine("getCurrentPageURL..: " . $book->getCurrentPageURL()); |
89 | 87 | ||
90 | $book->setTitle(_('wallabag\'s articles')); | 88 | $book->setTitle($bookTitle); |
91 | $book->setIdentifier("http://$_SERVER[HTTP_HOST]", EPub::IDENTIFIER_URI); // Could also be the ISBN number, prefered for published books, or a UUID. | 89 | $book->setIdentifier("http://$_SERVER[HTTP_HOST]", EPub::IDENTIFIER_URI); // Could also be the ISBN number, prefered for published books, or a UUID. |
92 | //$book->setLanguage("en"); // Not needed, but included for the example, Language is mandatory, but EPub defaults to "en". Use RFC3066 Language codes, such as "en", "da", "fr" etc. | 90 | //$book->setLanguage("en"); // Not needed, but included for the example, Language is mandatory, but EPub defaults to "en". Use RFC3066 Language codes, such as "en", "da", "fr" etc. |
93 | $book->setDescription(_("Some articles saved on my wallabag")); | 91 | $book->setDescription(_("Some articles saved on my wallabag")); |
diff --git a/inc/poche/config.inc.default.php b/inc/poche/config.inc.default.php index 6f03af18..2a458544 100755 --- a/inc/poche/config.inc.default.php +++ b/inc/poche/config.inc.default.php | |||
@@ -59,7 +59,7 @@ | |||
59 | @define ('LOCALE', ROOT . '/locale'); | 59 | @define ('LOCALE', ROOT . '/locale'); |
60 | @define ('CACHE', ROOT . '/cache'); | 60 | @define ('CACHE', ROOT . '/cache'); |
61 | 61 | ||
62 | @define ('PAGINATION', '10'); | 62 | @define ('PAGINATION', '12'); |
63 | 63 | ||
64 | //limit for download of articles during import | 64 | //limit for download of articles during import |
65 | @define ('IMPORT_LIMIT', 5); | 65 | @define ('IMPORT_LIMIT', 5); |
diff --git a/inc/poche/pochePictures.php b/inc/poche/pochePictures.php index 7a914f90..52394c70 100644 --- a/inc/poche/pochePictures.php +++ b/inc/poche/pochePictures.php | |||
@@ -33,7 +33,7 @@ final class Picture | |||
33 | } | 33 | } |
34 | 34 | ||
35 | if (self::_downloadPictures($absolute_path, $fullpath) === true) { | 35 | if (self::_downloadPictures($absolute_path, $fullpath) === true) { |
36 | $content = str_replace($matches[$i][2], $fullpath, $content); | 36 | $content = str_replace($matches[$i][2], Tools::getPocheUrl() . $fullpath, $content); |
37 | } | 37 | } |
38 | 38 | ||
39 | $processing_pictures[] = $absolute_path; | 39 | $processing_pictures[] = $absolute_path; |