From 6a9e4bfc901439d5b4791b229acc872d43461f8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Sun, 11 Aug 2013 21:04:04 +0200 Subject: version number --- inc/poche/config.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'inc') diff --git a/inc/poche/config.inc.php b/inc/poche/config.inc.php index 321784d7..ba8a9fa0 100644 --- a/inc/poche/config.inc.php +++ b/inc/poche/config.inc.php @@ -16,7 +16,7 @@ define ('STORAGE_SQLITE', './db/poche.sqlite'); define ('STORAGE_USER', 'postgres'); # leave blank for sqlite define ('STORAGE_PASSWORD', 'postgres'); # leave blank for sqlite -define ('POCHE_VERSION', '1.0-beta1'); +define ('POCHE_VERSION', '1.0-beta2'); define ('MODE_DEMO', FALSE); define ('DEBUG_POCHE', FALSE); define ('CONVERT_LINKS_FOOTNOTES', FALSE); -- cgit v1.2.3 From cd03b575df970f39f0fc2c15807f0d375d93bd4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Mon, 12 Aug 2013 14:27:51 +0200 Subject: error msg when install folder exists --- inc/poche/Poche.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'inc') diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php index 2af49acd..82f0228e 100644 --- a/inc/poche/Poche.class.php +++ b/inc/poche/Poche.class.php @@ -20,7 +20,7 @@ class Poche { if (file_exists('./install') && !DEBUG_POCHE) { Tools::logm('folder /install exists'); - die('To install your poche with sqlite, copy /install/poche.sqlite in /db and delete the folder /install. you have to delete the /install folder before using poche.'); + die('If you want to update your poche, you just have to delete /install folder.
To install your poche with sqlite, copy /install/poche.sqlite in /db and delete the folder /install. you have to delete the /install folder before using poche.'); } $this->store = new Database(); -- cgit v1.2.3 From 4a2912880f0914b456711d695f96ce2ace18c814 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Thu, 15 Aug 2013 10:54:14 +0200 Subject: more verif while installing --- inc/poche/Poche.class.php | 69 ++++++++++++++++++++++++++++++++++------------- inc/poche/config.inc.php | 4 +++ 2 files changed, 54 insertions(+), 19 deletions(-) (limited to 'inc') diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php index 82f0228e..1d8aaca2 100644 --- a/inc/poche/Poche.class.php +++ b/inc/poche/Poche.class.php @@ -18,11 +18,10 @@ class Poche function __construct() { - if (file_exists('./install') && !DEBUG_POCHE) { - Tools::logm('folder /install exists'); - die('If you want to update your poche, you just have to delete /install folder.
To install your poche with sqlite, copy /install/poche.sqlite in /db and delete the folder /install. you have to delete the /install folder before using poche.'); + $this->initTpl(); + if (!$this->checkBeforeInstall()) { + exit; } - $this->store = new Database(); $this->init(); $this->messages = new Messages(); @@ -34,27 +33,37 @@ class Poche } } - private function init() + /** + * all checks before installation. + * @return boolean + */ + private function checkBeforeInstall() { - Tools::initPhp(); - Session::init(); + $msg = ''; + $allIsGood = TRUE; + if (file_exists('./install') && !DEBUG_POCHE) { + Tools::logm('folder /install exists'); + $msg = 'If you want to update your poche, you just have to delete /install folder.
To install your poche with sqlite, copy /install/poche.sqlite in /db and delete the folder /install. you have to delete the /install folder before using poche.'; + $allIsGood = FALSE; + } - if (isset($_SESSION['poche_user']) && $_SESSION['poche_user'] != array()) { - $this->user = $_SESSION['poche_user']; + if (STORAGE == 'sqlite' && !is_writable(STORAGE_SQLITE)) { + Tools::logm('you don\'t have write access on db file'); + $msg = 'You don\'t have write access on ' . STORAGE_SQLITE . ' file.'; + $allIsGood = FALSE; } - else { - # fake user, just for install & login screens - $this->user = new User(); - $this->user->setConfig($this->getDefaultConfig()); + + if (!$allIsGood) { + echo $this->tpl->render('error.twig', array( + 'msg' => $msg + )); } - # l10n - $language = $this->user->getConfigValue('language'); - putenv('LC_ALL=' . $language); - setlocale(LC_ALL, $language); - bindtextdomain($language, LOCALE); - textdomain($language); + return $allIsGood; + } + private function initTpl() + { # template engine $loader = new Twig_Loader_Filesystem(TPL); if (DEBUG_POCHE) { @@ -72,6 +81,28 @@ class Poche # filter for reading time $filter = new Twig_SimpleFilter('getReadingTime', 'Tools::getReadingTime'); $this->tpl->addFilter($filter); + } + + private function init() + { + Tools::initPhp(); + Session::init(); + + if (isset($_SESSION['poche_user']) && $_SESSION['poche_user'] != array()) { + $this->user = $_SESSION['poche_user']; + } + else { + # fake user, just for install & login screens + $this->user = new User(); + $this->user->setConfig($this->getDefaultConfig()); + } + + # l10n + $language = $this->user->getConfigValue('language'); + putenv('LC_ALL=' . $language); + setlocale(LC_ALL, $language); + bindtextdomain($language, LOCALE); + textdomain($language); # Pagination $this->pagination = new Paginator($this->user->getConfigValue('pager'), 'p'); diff --git a/inc/poche/config.inc.php b/inc/poche/config.inc.php index ba8a9fa0..ecbf1ce6 100644 --- a/inc/poche/config.inc.php +++ b/inc/poche/config.inc.php @@ -34,6 +34,10 @@ define ('PAGINATION', '10'); define ('THEME', 'light'); # /!\ Be careful if you change the lines below /!\ +if (!file_exists('./vendor/autoload.php')) { + die('Twig does not seem installed. Have a look at the documentation.'); +} + require_once './inc/poche/User.class.php'; require_once './inc/poche/Tools.class.php'; require_once './inc/poche/Url.class.php'; -- cgit v1.2.3 From c0d321c1bfb08b75abf60bf90092aed8f6556283 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Thu, 15 Aug 2013 11:29:28 +0200 Subject: #136 error during readability import --- inc/poche/Poche.class.php | 35 ++++++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 11 deletions(-) (limited to 'inc') diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php index 1d8aaca2..4371c3d3 100644 --- a/inc/poche/Poche.class.php +++ b/inc/poche/Poche.class.php @@ -211,6 +211,7 @@ class Poche } break; default: + Tools::logm('action ' . $action . 'doesn\'t exist'); break; } } @@ -440,9 +441,11 @@ class Poche $str_data = file_get_contents("./readability"); $data = json_decode($str_data,true); Tools::logm('starting import from Readability'); - + $count = 0; foreach ($data as $key => $value) { - $url = ''; + $url = NULL; + $favorite = FALSE; + $archive = FALSE; foreach ($value as $attr => $attr_value) { if ($attr == 'article__url') { $url = new Url(base64_encode($attr_value)); @@ -451,20 +454,30 @@ class Poche if (STORAGE == 'postgres') { $sequence = 'entries_id_seq'; } - // if ($attr_value == 'favorite' && $attr_value == 'true') { - // $last_id = $this->store->getLastId($sequence); - // $this->store->favoriteById($last_id); - // $this->action('toogle_fav', $url, $last_id, TRUE); - // } - if ($attr_value == 'archive' && $attr_value == 'true') { + if ($attr_value == 'true') { + if ($attr == 'favorite') { + $favorite = TRUE; + } + if ($attr == 'archive') { + $archive = TRUE; + } + } + } + # we can add the url + if (!is_null($url) && $url->isCorrect()) { + $this->action('add', $url, 0, TRUE); + $count++; + if ($favorite) { + $last_id = $this->store->getLastId($sequence); + $this->action('toggle_fav', $url, $last_id, TRUE); + } + if ($archive) { $last_id = $this->store->getLastId($sequence); $this->action('toggle_archive', $url, $last_id, TRUE); } } - if ($url->isCorrect()) - $this->action('add', $url, 0, TRUE); } - $this->messages->add('s', _('import from Readability completed')); + $this->messages->add('s', _('import from Readability completed. ' . $count . ' new links.')); Tools::logm('import from Readability completed'); Tools::redirect(); } -- cgit v1.2.3 From 0b05568c9f5901d87ad2125e7997c38dad070461 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Thu, 15 Aug 2013 11:46:40 +0200 Subject: fix #138: change pattern to parse url with # --- inc/poche/Url.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'inc') diff --git a/inc/poche/Url.class.php b/inc/poche/Url.class.php index f4a8f99e..00b0b257 100644 --- a/inc/poche/Url.class.php +++ b/inc/poche/Url.class.php @@ -27,7 +27,7 @@ class Url public function isCorrect() { - $pattern = '|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i'; + $pattern = '|^(.*:)//([a-z\-.]+)(:[0-9]+)?(.*)$|i'; return preg_match($pattern, $this->url); } -- cgit v1.2.3 From bb5a7d9ede48558c6f096dc3c8e267f12513ec4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Fri, 16 Aug 2013 20:19:31 +0200 Subject: updating script --- inc/poche/Poche.class.php | 30 ++++++++++++++++--------- inc/poche/Tools.class.php | 26 +++++++++++++++++++++ inc/poche/config.inc.php | 57 +++++++++++++++-------------------------------- inc/poche/define.inc.php | 30 +++++++++++++++++++++++++ 4 files changed, 94 insertions(+), 49 deletions(-) mode change 100644 => 100755 inc/poche/config.inc.php create mode 100644 inc/poche/define.inc.php (limited to 'inc') diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php index 4371c3d3..cb865a2a 100644 --- a/inc/poche/Poche.class.php +++ b/inc/poche/Poche.class.php @@ -41,15 +41,23 @@ class Poche { $msg = ''; $allIsGood = TRUE; - if (file_exists('./install') && !DEBUG_POCHE) { - Tools::logm('folder /install exists'); + + if (file_exists('./install/update.php') && !DEBUG_POCHE) { + $msg = 'A poche update is needed. Please execute this update by clicking here. If you have already do the update, please delete /install folder.'; + $allIsGood = FALSE; + } + else if (file_exists('./install') && !DEBUG_POCHE) { $msg = 'If you want to update your poche, you just have to delete /install folder.
To install your poche with sqlite, copy /install/poche.sqlite in /db and delete the folder /install. you have to delete the /install folder before using poche.'; $allIsGood = FALSE; } - - if (STORAGE == 'sqlite' && !is_writable(STORAGE_SQLITE)) { - Tools::logm('you don\'t have write access on db file'); - $msg = 'You don\'t have write access on ' . STORAGE_SQLITE . ' file.'; + else if (STORAGE == 'sqlite' && !is_writable(STORAGE_SQLITE)) { + Tools::logm('you don\'t have write access on sqlite file'); + $msg = 'You don\'t have write access on sqlite file.'; + $allIsGood = FALSE; + } + else if (!is_writable(CACHE)) { + Tools::logm('you don\'t have write access on cache directory'); + $msg = 'You don\'t have write access on cache directory.'; $allIsGood = FALSE; } @@ -118,10 +126,12 @@ class Poche if (($_POST['password'] == $_POST['password_repeat']) && $_POST['password'] != "" && $_POST['login'] != "") { # let's rock, install poche baby ! - $this->store->install($_POST['login'], Tools::encodeString($_POST['password'] . $_POST['login'])); - Session::logout(); - Tools::logm('poche is now installed'); - Tools::redirect(); + if ($this->store->install($_POST['login'], Tools::encodeString($_POST['password'] . $_POST['login']))) + { + Session::logout(); + Tools::logm('poche is now installed'); + Tools::redirect(); + } } else { Tools::logm('error during installation'); diff --git a/inc/poche/Tools.class.php b/inc/poche/Tools.class.php index 0eb0d9ea..1baf745d 100644 --- a/inc/poche/Tools.class.php +++ b/inc/poche/Tools.class.php @@ -233,4 +233,30 @@ class Tools return $minutes; } + + + public static function createMyConfig() + { + $myconfig_file = './inc/poche/myconfig.inc.php'; + + if (version_compare(POCHE_VERSION, '1.0-beta3') == 1) { + # $myconfig_file is only created with poche > 1.0-beta3 + # in 1.0-beta3, the update script creates $myconfig_file + + if (!is_writable('./inc/poche/')) { + self::logm('you don\'t have write access to create ./inc/poche/myconfig.inc.php'); + die('You don\'t have write access to create ./inc/poche/myconfig.inc.php.'); + } + + if (!file_exists($myconfig_file)) + { + $fp = fopen($myconfig_file, 'w'); + fwrite($fp, 'the documentation.'); } - -require_once './inc/poche/User.class.php'; -require_once './inc/poche/Tools.class.php'; -require_once './inc/poche/Url.class.php'; -require_once './inc/3rdparty/class.messages.php'; -require_once './inc/poche/Poche.class.php'; -require_once './inc/3rdparty/Readability.php'; -require_once './inc/3rdparty/Encoding.php'; -require_once './inc/poche/Database.class.php'; -require_once './vendor/autoload.php'; -require_once './inc/3rdparty/simple_html_dom.php'; -require_once './inc/3rdparty/paginator.php'; -require_once './inc/3rdparty/Session.class.php'; + +if (file_exists(__DIR__ . '/../../inc/poche/myconfig.inc.php')) { + require_once __DIR__ . '/../../inc/poche/myconfig.inc.php'; +} +require_once __DIR__ . '/../../inc/poche/User.class.php'; +require_once __DIR__ . '/../../inc/poche/Url.class.php'; +require_once __DIR__ . '/../../inc/3rdparty/class.messages.php'; +require_once __DIR__ . '/../../inc/poche/Poche.class.php'; +require_once __DIR__ . '/../../inc/3rdparty/Readability.php'; +require_once __DIR__ . '/../../inc/3rdparty/Encoding.php'; +require_once __DIR__ . '/../../inc/poche/Database.class.php'; +require_once __DIR__ . '/../../vendor/autoload.php'; +require_once __DIR__ . '/../../inc/3rdparty/simple_html_dom.php'; +require_once __DIR__ . '/../../inc/3rdparty/paginator.php'; +require_once __DIR__ . '/../../inc/3rdparty/Session.class.php'; if (DOWNLOAD_PICTURES) { - require_once './inc/poche/pochePictures.php'; + require_once __DIR__ . '/../../inc/poche/pochePictures.php'; } $poche = new Poche(); diff --git a/inc/poche/define.inc.php b/inc/poche/define.inc.php new file mode 100644 index 00000000..c32ca098 --- /dev/null +++ b/inc/poche/define.inc.php @@ -0,0 +1,30 @@ + + * @copyright 2013 + * @license http://www.wtfpl.net/ see COPYING file + */ + +define ('STORAGE','sqlite'); # postgres, mysql, sqlite +define ('STORAGE_SERVER', 'localhost'); # leave blank for sqlite +define ('STORAGE_DB', 'poche'); # only for postgres & mysql +define ('STORAGE_SQLITE', __DIR__ . '/../../db/poche.sqlite'); +define ('STORAGE_USER', 'postgres'); # leave blank for sqlite +define ('STORAGE_PASSWORD', 'postgres'); # leave blank for sqlite + +define ('MODE_DEMO', FALSE); +define ('DEBUG_POCHE', FALSE); +define ('CONVERT_LINKS_FOOTNOTES', FALSE); +define ('REVERT_FORCED_PARAGRAPH_ELEMENTS', FALSE); +define ('DOWNLOAD_PICTURES', FALSE); +define ('SHARE_TWITTER', TRUE); +define ('SHARE_MAIL', TRUE); +define ('ABS_PATH', 'assets/'); +define ('TPL', __DIR__ . '/../../tpl'); +define ('LOCALE', __DIR__ . '/../../locale'); +define ('CACHE', __DIR__ . '/../../cache'); +define ('PAGINATION', '10'); +define ('THEME', 'light'); \ No newline at end of file -- cgit v1.2.3 From abed0f212266895f67add983a478cd0eb88487a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Fri, 16 Aug 2013 20:40:31 +0200 Subject: some precisons in updating poche --- inc/poche/Poche.class.php | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'inc') diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php index cb865a2a..e0dc0d20 100644 --- a/inc/poche/Poche.class.php +++ b/inc/poche/Poche.class.php @@ -42,7 +42,11 @@ class Poche $msg = ''; $allIsGood = TRUE; - if (file_exists('./install/update.php') && !DEBUG_POCHE) { + if (!is_writable(CACHE)) { + Tools::logm('you don\'t have write access on cache directory'); + die('You don\'t have write access on cache directory.'); + } + else if (file_exists('./install/update.php') && !DEBUG_POCHE) { $msg = 'A poche update is needed. Please execute this update by clicking here. If you have already do the update, please delete /install folder.'; $allIsGood = FALSE; } @@ -55,12 +59,7 @@ class Poche $msg = 'You don\'t have write access on sqlite file.'; $allIsGood = FALSE; } - else if (!is_writable(CACHE)) { - Tools::logm('you don\'t have write access on cache directory'); - $msg = 'You don\'t have write access on cache directory.'; - $allIsGood = FALSE; - } - + if (!$allIsGood) { echo $this->tpl->render('error.twig', array( 'msg' => $msg -- cgit v1.2.3