X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=inc%2Fstore%2Fsqlite.class.php;h=3cc5276d13c69a40b13f8052758004641113db58;hb=7ce7ec4c942e0a3567858ad0ec8e654000b49a3f;hp=d5208a295865e488118d307c2168143326a5d883;hpb=37c6ed4e7a75238504a28d6be5fbaad475689526;p=github%2Fwallabag%2Fwallabag.git diff --git a/inc/store/sqlite.class.php b/inc/store/sqlite.class.php index d5208a29..3cc5276d 100644 --- a/inc/store/sqlite.class.php +++ b/inc/store/sqlite.class.php @@ -17,7 +17,6 @@ class Sqlite extends Store { parent::__construct(); $this->handle = new PDO(self::$db_path); - $this->handle->exec('CREATE TABLE IF NOT EXISTS "entries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE , "title" VARCHAR, "url" VARCHAR UNIQUE , "is_read" INTEGER DEFAULT 0, "is_fav" INTEGER DEFAULT 0, "content" BLOB)'); $this->handle->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } @@ -25,6 +24,63 @@ class Sqlite extends Store { return $this->handle; } + public function isInstalled() { + $sql = "SELECT username FROM users WHERE id=?"; + $query = $this->executeQuery($sql, array('1')); + $hasAdmin = $query->fetchAll(); + + if (count($hasAdmin) == 0) + return FALSE; + + return TRUE; + } + + public function install($login, $password) { + $sql = 'INSERT INTO users ( username, password ) VALUES (?, ?)'; + $params = array($login, $password); + $query = $this->executeQuery($sql, $params); + + return TRUE; + } + + private function getConfigUser($id) { + $sql = "SELECT * FROM users_config WHERE user_id = ?"; + $query = $this->executeQuery($sql, array($id)); + $result = $query->fetchAll(); + $user_config = array(); + + foreach ($result as $key => $value) { + $user_config[$value['name']] = $value['value']; + } + + return $user_config; + } + + public function login($username, $password) { + $sql = "SELECT * FROM users WHERE username=? AND password=?"; + $query = $this->executeQuery($sql, array($username, $password)); + $login = $query->fetchAll(); + + $user = array(); + if (isset($login[0])) { + $user['id'] = $login[0]['id']; + $user['username'] = $login[0]['username']; + $user['password'] = $login[0]['password']; + $user['name'] = $login[0]['name']; + $user['email'] = $login[0]['email']; + $user['config'] = $this->getConfigUser($login[0]['id']); + } + + return $user; + } + + public function updatePassword($id, $password) + { + $sql_update = "UPDATE users SET password=? WHERE id=?"; + $params_update = array($password, $id); + $query = $this->executeQuery($sql_update, $params_update); + } + private function executeQuery($sql, $params) { try { @@ -34,7 +90,7 @@ class Sqlite extends Store { } catch (Exception $e) { - logm('execute query error : '.$e->getMessage()); + Tools::logm('execute query error : '.$e->getMessage()); } } @@ -58,7 +114,7 @@ class Sqlite extends Store { return $entry[0]; } - public function getEntriesByView($view) { + public function getEntriesByView($view, $limit = '') { parent::__construct(); switch ($_SESSION['sort']) @@ -96,6 +152,8 @@ class Sqlite extends Store { break; } + $sql .= ' ' . $limit; + $query = $this->executeQuery($sql, $params); $entries = $query->fetchAll(); @@ -107,6 +165,7 @@ class Sqlite extends Store { $sql_action = 'INSERT INTO entries ( url, title, content ) VALUES (?, ?, ?)'; $params_action = array($url, $title, $content); $query = $this->executeQuery($sql_action, $params_action); + return $query; } public function deleteById($id) { @@ -114,6 +173,7 @@ class Sqlite extends Store { $sql_action = "DELETE FROM entries WHERE id=?"; $params_action = array($id); $query = $this->executeQuery($sql_action, $params_action); + return $query; } public function favoriteById($id) {