]> git.immae.eu Git - github/wallabag/wallabag.git/blobdiff - inc/store/sqlite.class.php
prepare to multi users
[github/wallabag/wallabag.git] / inc / store / sqlite.class.php
index d5208a295865e488118d307c2168143326a5d883..3cc5276d13c69a40b13f8052758004641113db58 100644 (file)
@@ -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) {