From b916bcfccc5a8b1c1852c0bf39bb6f9837296a4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Wed, 7 Aug 2013 19:14:28 +0200 Subject: [PATCH] fixes for 1.0-beta --- inc/poche/Database.class.php | 31 +++++--- inc/poche/Poche.class.php | 83 +++++++++++++++------- inc/poche/config.inc.php | 3 +- install/{poche.sqlite.in => poche.sqlite} | Bin install/update_sqlite_from_0_to_1.php | 2 +- tpl/_footer.twig | 2 +- 6 files changed, 83 insertions(+), 38 deletions(-) rename install/{poche.sqlite.in => poche.sqlite} (100%) diff --git a/inc/poche/Database.class.php b/inc/poche/Database.class.php index 8da7a99..cd5a9a3 100644 --- a/inc/poche/Database.class.php +++ b/inc/poche/Database.class.php @@ -37,19 +37,34 @@ class Database { } public function isInstalled() { - $sql = "SELECT username FROM users WHERE id=?"; - $query = $this->executeQuery($sql, array('1')); - $hasAdmin = $query->fetchAll(); + $sql = "SELECT username FROM users"; + $query = $this->executeQuery($sql, array()); + $hasAdmin = count($query->fetchAll()); - if (count($hasAdmin) == 0) + if ($hasAdmin == 0) return FALSE; return TRUE; } public function install($login, $password) { - $sql = 'INSERT INTO users ( username, password ) VALUES (?, ?)'; - $params = array($login, $password); + $sql = 'INSERT INTO users ( username, password, name, email) VALUES (?, ?, ?, ?)'; + $params = array($login, $password, $login, ' '); + $query = $this->executeQuery($sql, $params); + + $sequence = ''; + if (STORAGE == 'postgres') { + $sequence = 'users_id_seq'; + } + + $id_user = intval($this->getLastId($sequence)); + + $sql = 'INSERT INTO users_config ( user_id, name, value ) VALUES (?, ?, ?)'; + $params = array($id_user, 'pager', '10'); + $query = $this->executeQuery($sql, $params); + + $sql = 'INSERT INTO users_config ( user_id, name, value ) VALUES (?, ?, ?)'; + $params = array($id_user, 'language', 'en_EN.UTF8'); $query = $this->executeQuery($sql, $params); return TRUE; @@ -195,7 +210,7 @@ class Database { $query = $this->executeQuery($sql_action, $params_action); } - public function getLastId() { - return $this->getHandle()->lastInsertId(); + public function getLastId($column = '') { + return $this->getHandle()->lastInsertId($column); } } diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php index 0a43df7..38b4a98 100644 --- a/inc/poche/Poche.class.php +++ b/inc/poche/Poche.class.php @@ -34,7 +34,7 @@ class Poche Tools::initPhp(); Session::init(); - if (isset($_SESSION['poche_user'])) { + if (isset($_SESSION['poche_user']) && $_SESSION['poche_user'] != array()) { $this->user = $_SESSION['poche_user']; } else { @@ -102,7 +102,7 @@ class Poche /** * Call action (mark as fav, archive, delete, etc.) */ - public function action($action, Url $url, $id = 0) + public function action($action, Url $url, $id = 0, $import = FALSE) { switch ($action) { @@ -110,22 +110,34 @@ class Poche if($parametres_url = $url->fetchContent()) { if ($this->store->add($url->getUrl(), $parametres_url['title'], $parametres_url['content'], $this->user->getId())) { Tools::logm('add link ' . $url->getUrl()); - $last_id = $this->store->getLastId(); + $sequence = ''; + if (STORAGE == 'postgres') { + $sequence = 'entries_id_seq'; + } + $last_id = $this->store->getLastId($sequence); if (DOWNLOAD_PICTURES) { $content = filtre_picture($parametres_url['content'], $url->getUrl(), $last_id); } - $this->messages->add('s', _('the link has been added successfully')); + if (!$import) { + $this->messages->add('s', _('the link has been added successfully')); + } } else { - $this->messages->add('e', _('error during insertion : the link wasn\'t added')); - Tools::logm('error during insertion : the link wasn\'t added'); + if (!$import) { + $this->messages->add('e', _('error during insertion : the link wasn\'t added')); + Tools::logm('error during insertion : the link wasn\'t added ' . $url->getUrl()); + } } } else { - $this->messages->add('e', _('error during fetching content : the link wasn\'t added')); - Tools::logm('error during content fetch'); + if (!$import) { + $this->messages->add('e', _('error during fetching content : the link wasn\'t added')); + Tools::logm('error during content fetch ' . $url->getUrl()); + } + } + if (!$import) { + Tools::redirect(); } - Tools::redirect(); break; case 'delete': $msg = 'delete link #' . $id; @@ -145,12 +157,16 @@ class Poche case 'toggle_fav' : $this->store->favoriteById($id, $this->user->getId()); Tools::logm('mark as favorite link #' . $id); - Tools::redirect(); + if (!$import) { + Tools::redirect(); + } break; case 'toggle_archive' : $this->store->archiveById($id, $this->user->getId()); Tools::logm('archive link #' . $id); - Tools::redirect(); + if (!$import) { + Tools::redirect(); + } break; default: break; @@ -267,10 +283,10 @@ class Poche public function logout() { - $this->messages->add('s', _('see you soon!')); - Tools::logm('logout'); $this->user = array(); Session::logout(); + $this->messages->add('s', _('see you soon!')); + Tools::logm('logout'); Tools::redirect(); } @@ -279,6 +295,7 @@ class Poche # TODO gestion des articles favs $html = new simple_html_dom(); $html->load_file('./instapaper-export.html'); + Tools::logm('starting import from instapaper'); $read = 0; $errors = array(); @@ -288,10 +305,14 @@ class Poche { $a = $li->find('a'); $url = new Url(base64_encode($a[0]->href)); - $this->action('add', $url); + $this->action('add', $url, 0, TRUE); if ($read == '1') { - $last_id = $this->store->getLastId(); - $this->action('toggle_archive', $url, $last_id); + $sequence = ''; + if (STORAGE == 'postgres') { + $sequence = 'entries_id_seq'; + } + $last_id = $this->store->getLastId($sequence); + $this->action('toggle_archive', $url, $last_id, TRUE); } } @@ -308,6 +329,7 @@ class Poche # TODO gestion des articles favs $html = new simple_html_dom(); $html->load_file('./ril_export.html'); + Tools::logm('starting import from pocket'); $read = 0; $errors = array(); @@ -317,10 +339,14 @@ class Poche { $a = $li->find('a'); $url = new Url(base64_encode($a[0]->href)); - $this->action('add', $url); + $this->action('add', $url, 0, TRUE); if ($read == '1') { - $last_id = $this->store->getLastId(); - $this->action('toggle_archive', $url, $last_id); + $sequence = ''; + if (STORAGE == 'postgres') { + $sequence = 'entries_id_seq'; + } + $last_id = $this->store->getLastId($sequence); + $this->action('toggle_archive', $url, $last_id, TRUE); } } @@ -337,6 +363,7 @@ class Poche # TODO gestion des articles lus / favs $str_data = file_get_contents("./readability"); $data = json_decode($str_data,true); + Tools::logm('starting import from Readability'); foreach ($data as $key => $value) { $url = ''; @@ -344,18 +371,22 @@ class Poche if ($attr == 'article__url') { $url = new Url(base64_encode($attr_value)); } + $sequence = ''; + if (STORAGE == 'postgres') { + $sequence = 'entries_id_seq'; + } // if ($attr_value == 'favorite' && $attr_value == 'true') { - // $last_id = $this->store->getLastId(); + // $last_id = $this->store->getLastId($sequence); // $this->store->favoriteById($last_id); - // $this->action('toogle_fav', $url, $last_id); - // } - // if ($attr_value == 'archive' && $attr_value == 'true') { - // $last_id = $this->store->getLastId(); - // $this->action('toggle_archive', $url, $last_id); + // $this->action('toogle_fav', $url, $last_id, TRUE); // } + if ($attr_value == 'archive' && $attr_value == 'true') { + $last_id = $this->store->getLastId($sequence); + $this->action('toggle_archive', $url, $last_id, TRUE); + } } if ($url->isCorrect()) - $this->action('add', $url); + $this->action('add', $url, 0, TRUE); } $this->messages->add('s', _('import from Readability completed')); Tools::logm('import from Readability completed'); diff --git a/inc/poche/config.inc.php b/inc/poche/config.inc.php index ef2f699..322f69d 100644 --- a/inc/poche/config.inc.php +++ b/inc/poche/config.inc.php @@ -9,7 +9,7 @@ */ # storage -define ('STORAGE','postgres'); # postgres, mysql, sqlite +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', './db/poche.sqlite'); @@ -52,7 +52,6 @@ if (DOWNLOAD_PICTURES) { } $poche = new Poche(); - #XSRF protection with token // if (!empty($_POST)) { // if (!Session::isToken($_POST['token'])) { diff --git a/install/poche.sqlite.in b/install/poche.sqlite similarity index 100% rename from install/poche.sqlite.in rename to install/poche.sqlite diff --git a/install/update_sqlite_from_0_to_1.php b/install/update_sqlite_from_0_to_1.php index 2ee6552..f3801eb 100644 --- a/install/update_sqlite_from_0_to_1.php +++ b/install/update_sqlite_from_0_to_1.php @@ -11,7 +11,7 @@ $sql = 'ALTER TABLE entries RENAME TO tempEntries;'; $query = $handle->prepare($sql); $query->execute(); -$sql = 'CREATE TABLE entries (id INTEGER PRIMARY KEY, title TEXT, url TEXT, is_read NUMERIC, is_fav NUMERIC, content BLOB, user_id NUMERIC);'; +$sql = 'CREATE TABLE entries (id INTEGER PRIMARY KEY, title TEXT, url TEXT, is_read NUMERIC DEFAULT 0, is_fav NUMERIC DEFAULT 0, content BLOB, user_id NUMERIC);'; $query = $handle->prepare($sql); $query->execute(); diff --git a/tpl/_footer.twig b/tpl/_footer.twig index b74d907..6891756 100644 --- a/tpl/_footer.twig +++ b/tpl/_footer.twig @@ -1,4 +1,4 @@ \ No newline at end of file