X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=inc%2Fpoche%2FDatabase.class.php;h=7be7a394ae8887ba9c6030ba6d0b89c49fcc4494;hb=105ef359b7e7f147f9684f1695f3d9d2b962b5e0;hp=6bac0f5d0e76d54b186d3b7fb33682ff150bd220;hpb=57068585c0a1164f1ae7ae399f3d5a68a4e9d46d;p=github%2Fwallabag%2Fwallabag.git diff --git a/inc/poche/Database.class.php b/inc/poche/Database.class.php index 6bac0f5d..7be7a394 100755 --- a/inc/poche/Database.class.php +++ b/inc/poche/Database.class.php @@ -31,10 +31,15 @@ class Database { $this->handle = new PDO($db_path); break; case 'mysql': - $db_path = 'mysql:host=' . STORAGE_SERVER . ';dbname=' . STORAGE_DB . ';charset=utf8mb4'; - $this->handle = new PDO($db_path, STORAGE_USER, STORAGE_PASSWORD, array( - PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4', - )); + if (MYSQL_USE_UTF8MB4) { + $db_path = 'mysql:host=' . STORAGE_SERVER . ';dbname=' . STORAGE_DB . ';charset=utf8mb4'; + $this->handle = new PDO($db_path, STORAGE_USER, STORAGE_PASSWORD, array( + PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4', + )); + } else { + $db_path = 'mysql:host=' . STORAGE_SERVER . ';dbname=' . STORAGE_DB; + $this->handle = new PDO($db_path, STORAGE_USER, STORAGE_PASSWORD); + } break; case 'postgres': $db_path = 'pgsql:host=' . STORAGE_SERVER . ';dbname=' . STORAGE_DB; @@ -318,6 +323,21 @@ class Database { return $entries; } + public function retrieveAllWithTags($user_id) + { + $entries = $this->retrieveAll($user_id); + $count = count($entries); + for ($i = 0; $i < $count; $i++) { + $tag_entries = $this->retrieveTagsByEntry($entries[$i]['id']); + $tags = []; + foreach ($tag_entries as $tag) { + $tags[] = $tag[1]; + } + $entries[$i]['tags'] = implode(',', $tags); + } + return $entries; + } + public function retrieveOneById($id, $user_id) { $entry = NULL; @@ -406,6 +426,48 @@ class Database { return $count; } + public function getRandomId($user_id, $view) { + $random = (STORAGE == 'mysql') ? 'RAND()' : 'RANDOM()'; + switch ($view) { + case 'archive': + $sql = "SELECT id FROM entries WHERE user_id=? AND is_read=? ORDER BY ". $random . " LIMIT 1"; + $params = array($user_id,1); + break; + case 'fav': + $sql = "SELECT id FROM entries WHERE user_id=? AND is_fav=? ORDER BY ". $random . " LIMIT 1"; + $params = array($user_id,1); + break; + default: + $sql = "SELECT id FROM entries WHERE user_id=? AND is_read=? ORDER BY ". $random . " LIMIT 1"; + $params = array($user_id,0); + break; + } + $query = $this->executeQuery($sql, $params); + $id = $query->fetchAll(); + + return $id; + } + + public function getPreviousArticle($id, $user_id) + { + $sql = "SELECT id FROM entries WHERE id = (SELECT max(id) FROM entries WHERE id < ? AND is_read=0) AND user_id=? AND is_read=0"; + $params = array($id, $user_id); + $query = $this->executeQuery($sql, $params); + $id_entry = $query->fetchAll(); + $id = $id_entry[0][0]; + return $id; + } + + public function getNextArticle($id, $user_id) + { + $sql = "SELECT id FROM entries WHERE id = (SELECT min(id) FROM entries WHERE id > ? AND is_read=0) AND user_id=? AND is_read=0"; + $params = array($id, $user_id); + $query = $this->executeQuery($sql, $params); + $id_entry = $query->fetchAll(); + $id = $id_entry[0][0]; + return $id; + } + public function updateContent($id, $content, $user_id) {