summaryrefslogtreecommitdiffstats
path: root/db
diff options
context:
space:
mode:
authorBernhard Posselt <dev@bernhard-posselt.com>2014-05-14 18:08:52 +0200
committerBernhard Posselt <dev@bernhard-posselt.com>2014-05-14 18:08:52 +0200
commitd9acb9ed876d9814e468081d799f06ffd631580f (patch)
tree887653ca34a9b67adeb60435b3dd37f7329619c3 /db
parentf52cdaa750f1efa8cb76f6d88c9b1dc291f7b328 (diff)
add serverside possibility to order by oldest first
Diffstat (limited to 'db')
-rw-r--r--db/itemmapper.php26
1 files changed, 16 insertions, 10 deletions
diff --git a/db/itemmapper.php b/db/itemmapper.php
index 201022735..ff17596c2 100644
--- a/db/itemmapper.php
+++ b/db/itemmapper.php
@@ -24,7 +24,13 @@ class ItemMapper extends Mapper implements IMapper {
}
- private function makeSelectQuery($prependTo){
+ private function makeSelectQuery($prependTo, $oldestFirst=false){
+ if($oldestFirst) {
+ $ordering = 'ASC';
+ } else {
+ $ordering = 'DESC';
+ }
+
return 'SELECT `items`.* FROM `*PREFIX*news_items` `items` '.
'JOIN `*PREFIX*news_feeds` `feeds` ' .
'ON `feeds`.`id` = `items`.`feed_id` '.
@@ -35,10 +41,10 @@ class ItemMapper extends Mapper implements IMapper {
'ON `folders`.`id` = `feeds`.`folder_id` ' .
'WHERE `feeds`.`folder_id` = 0 ' .
'OR `folders`.`deleted_at` = 0 ' .
- 'ORDER BY `items`.`id` DESC';
+ 'ORDER BY `items`.`id` ' . $ordering;
}
- private function makeSelectQueryStatus($prependTo, $status) {
+ private function makeSelectQueryStatus($prependTo, $status, $oldestFirst=false) {
// Hi this is Ray and you're watching Jack Ass
// Now look closely: this is how we adults handle weird bugs in our
// code: we take them variables and we cast the shit out of them
@@ -57,7 +63,7 @@ class ItemMapper extends Mapper implements IMapper {
// SQL INJECTION RISK WHEN MODIFIED WITHOUT THOUGHT.
// think twice when changing this
'AND ((`items`.`status` & ' . $status . ') = ' . $status . ') ' .
- $prependTo
+ $prependTo, $oldestFirst
);
}
@@ -161,38 +167,38 @@ class ItemMapper extends Mapper implements IMapper {
}
- public function findAllFeed($id, $limit, $offset, $status, $userId){
+ public function findAllFeed($id, $limit, $offset, $status, $userId, $oldestFirst=false){
$params = [$userId, $id];
$sql = 'AND `items`.`feed_id` = ? ';
if($offset !== 0){
$sql .= 'AND `items`.`id` < ? ';
$params[] = $offset;
}
- $sql = $this->makeSelectQueryStatus($sql, $status);
+ $sql = $this->makeSelectQueryStatus($sql, $status, $oldestFirst);
return $this->findEntities($sql, $params, $limit);
}
- public function findAllFolder($id, $limit, $offset, $status, $userId){
+ public function findAllFolder($id, $limit, $offset, $status, $userId, $oldestFirst=false){
$params = [$userId, $id];
$sql = 'AND `feeds`.`folder_id` = ? ';
if($offset !== 0){
$sql .= 'AND `items`.`id` < ? ';
$params[] = $offset;
}
- $sql = $this->makeSelectQueryStatus($sql, $status);
+ $sql = $this->makeSelectQueryStatus($sql, $status, $oldestFirst);
return $this->findEntities($sql, $params, $limit);
}
- public function findAll($limit, $offset, $status, $userId){
+ public function findAll($limit, $offset, $status, $userId, $oldestFirst=false){
$params = [$userId];
$sql = '';
if($offset !== 0){
$sql .= 'AND `items`.`id` < ? ';
$params[] = $offset;
}
- $sql = $this->makeSelectQueryStatus($sql, $status);
+ $sql = $this->makeSelectQueryStatus($sql, $status, $oldestFirst);
return $this->findEntities($sql, $params, $limit);
}