From 032e0ca13ab8ebf99b5169f6f733db4184cdde6c Mon Sep 17 00:00:00 2001 From: Maryana Rozhankivska Date: Thu, 20 Feb 2014 19:28:39 +0200 Subject: a lot of refactoring: tag action is now handled by home view and uses sorting and pagination. Some small view enhacenments. Fix of #476, #461 for baggy and other themes --- inc/poche/Database.class.php | 79 ++++++++++++++++++++++++++++++-------------- 1 file changed, 55 insertions(+), 24 deletions(-) mode change 100644 => 100755 inc/poche/Database.class.php (limited to 'inc/poche/Database.class.php') diff --git a/inc/poche/Database.class.php b/inc/poche/Database.class.php old mode 100644 new mode 100755 index a366e866..c998fe14 --- a/inc/poche/Database.class.php +++ b/inc/poche/Database.class.php @@ -10,8 +10,15 @@ class Database { var $handle; - - function __construct() + private $order = array( + 'ia' => 'ORDER BY entries.id', + 'id' => 'ORDER BY entries.id DESC', + 'ta' => 'ORDER BY lower(entries.title)', + 'td' => 'ORDER BY lower(entries.title) DESC', + 'default' => 'ORDER BY entries.id' + ); + + function __construct() { switch (STORAGE) { case 'sqlite': @@ -257,48 +264,62 @@ class Database { $query = $this->executeQuery($sql, $params); } - public function getEntriesByView($view, $user_id, $limit = '') { - switch ($_SESSION['sort']) - { - case 'ia': - $order = 'ORDER BY id'; - break; - case 'id': - $order = 'ORDER BY id DESC'; + public function getEntriesByView($view, $user_id, $limit = '', $tag_id = 0) { + switch ($view) { + case 'archive': + $sql = "SELECT * FROM entries WHERE user_id=? AND is_read=? "; + $params = array($user_id, 1); break; - case 'ta': - $order = 'ORDER BY lower(title)'; + case 'fav' : + $sql = "SELECT * FROM entries WHERE user_id=? AND is_fav=? "; + $params = array($user_id, 1); break; - case 'td': - $order = 'ORDER BY lower(title) DESC'; + case 'tag' : + $sql = "SELECT entries.* FROM entries + LEFT JOIN tags_entries ON tags_entries.entry_id=entries.id + WHERE entries.user_id=? AND tags_entries.tag_id = ? "; + $params = array($user_id, $tag_id); break; default: - $order = 'ORDER BY id'; + $sql = "SELECT * FROM entries WHERE user_id=? AND is_read=? "; + $params = array($user_id, 0); break; } - switch ($view) - { + $sql .= $this->getEntriesOrder().' ' . $limit; + + $query = $this->executeQuery($sql, $params); + $entries = $query->fetchAll(); + + return $entries; + } + + public function getEntriesByViewCount($view, $user_id, $tag_id = 0) { + switch ($view) { case 'archive': - $sql = "SELECT * FROM entries WHERE user_id=? AND is_read=? " . $order; + $sql = "SELECT count(*) FROM entries WHERE user_id=? AND is_read=? "; $params = array($user_id, 1); break; case 'fav' : - $sql = "SELECT * FROM entries WHERE user_id=? AND is_fav=? " . $order; + $sql = "SELECT count(*) FROM entries WHERE user_id=? AND is_fav=? "; $params = array($user_id, 1); break; + case 'tag' : + $sql = "SELECT count(*) FROM entries + LEFT JOIN tags_entries ON tags_entries.entry_id=entries.id + WHERE entries.user_id=? AND tags_entries.tag_id = ? "; + $params = array($user_id, $tag_id); + break; default: - $sql = "SELECT * FROM entries WHERE user_id=? AND is_read=? " . $order; + $sql = "SELECT count(*) FROM entries WHERE user_id=? AND is_read=? "; $params = array($user_id, 0); break; } - $sql .= ' ' . $limit; - $query = $this->executeQuery($sql, $params); - $entries = $query->fetchAll(); + list($count) = $query->fetch(); - return $entries; + return $count; } public function updateContent($id, $content, $user_id) { @@ -420,4 +441,14 @@ class Database { $query = $this->executeQuery($sql_action, $params_action); return $query; } + + private function getEntriesOrder() { + if (isset($_SESSION['sort']) and array_key_exists($_SESSION['sort'], $this->order)) { + return $this->order[$_SESSION['sort']]; + } + else { + return $this->order['default']; + } + } + } -- cgit v1.2.3