]> 91.132.146.200 Git - insipid.git/commitdiff
sorting in category view
authorBanana <banana@mirage>
Sun, 29 Dec 2019 19:33:30 +0000 (20:33 +0100)
committerBanana <banana@mirage>
Sun, 29 Dec 2019 19:33:30 +0000 (20:33 +0100)
ChangeLog
webroot/lib/management.class.php
webroot/view/home.php
webroot/view/overview.inc.php
webroot/view/overview.php

index ab1cd4f7f0e16fd21e3750967860d9b621f3d504..3a49000cb60f7760ee246483c0a405f177513cb6 100755 (executable)
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,7 @@ version x.x - Guardian of Steel (tba)
     + Improved documentation
     + Delete single local storage of a link
     ++ Done by uncheck the store image locally option
+    + Sorting in category view
     + Fixed a bug in tag selection SQL query
 
 version 2.2 - Guardian of Ice - (2019-02-27)
index 696c3995e83993101c2c9a97420e6f672050cc3c..a91b3cccde80a6a14d0d12d635d6367efd690bc3 100644 (file)
@@ -229,18 +229,22 @@ class Management {
                return $ret;
        }
 
-       /**
-        * find all links by given category string or id.
-        * Return array sorted by creation date DESC
-        * @param int $id
-        * @param string $string
-        * @param int $limit
-        * @param bool $offset
-        * @return array
-        */
-       public function linksByCategory($id, $string, $limit=5, $offset=false) {
+    /**
+     * find all links by given category string or id.
+     * Return array sorted by creation date DESC
+     * @param int $id Category ID
+     * @param string $string Category as string
+     * @param array $options Array with limit|offset|sort|sortDirection
+     * @return array
+     */
+       public function linksByCategory($id, $string, $options=array()) {
                $ret = array();
 
+               if(!isset($options['limit'])) $options['limit'] = 5;
+        if(!isset($options['offset'])) $options['offset'] = false;
+        if(!isset($options['sort'])) $options['sort'] = false;
+        if(!isset($options['sortDirection'])) $options['sortDirection'] = false;
+
                $querySelect = "SELECT ".self::COMBINED_SELECT_VALUES;
                $queryFrom = " FROM `".DB_PREFIX."_combined` AS t";
                $queryWhere = " WHERE ".$this->_decideLinkTypeForQuery();
@@ -254,16 +258,32 @@ class Management {
                        return $ret;
                }
 
-               $queryOrder = "GROUP BY t.hash
-                       ORDER BY t.created DESC";
+        $queryGroup = " GROUP BY t.hash";
+               $queryOrder = " ORDER BY";
+               if(!empty($options['sort'])) {
+            $queryOrder .= ' t.'.$options['sort'];
+        }
+               else {
+            $queryOrder .= " t.created";
+        }
+        if(!empty($options['sortDirection'])) {
+            $queryOrder .= ' '.$options['sortDirection'];
+        }
+        else {
+            $queryOrder .= " DESC";
+        }
+
                $queryLimit = '';
-               if(!empty($limit)) {
-                       $queryLimit .= " LIMIT $limit";
-                       if($offset !== false) {
-                               $queryLimit .= " OFFSET $offset";
+               # this allows the set the limit to false
+               if(!empty($options['limit'])) {
+                       $queryLimit .= " LIMIT ".$options['limit'];
+                       # offset can be 0
+                       if($options['offset'] !== false) {
+                               $queryLimit .= " OFFSET ".$options['offset'];
                        }
                }
-               $query = $this->DB->query($querySelect.$queryFrom.$queryWhere.$queryOrder.$queryLimit);
+               $query = $this->DB->query($querySelect.$queryFrom.$queryWhere.$queryGroup.$queryOrder.$queryLimit);
+
                if(!empty($query) && $query->num_rows > 0) {
                        while($result = $query->fetch_assoc()) {
                                $linkObj = new Link($this->DB);
index cdf4a649471b4a28867da4a92d5512235be276a5..59c07d60a034d6c140ba770277db7606c484ecb3 100644 (file)
 <?php
        if(!empty($orderedCategories)) {
                foreach ($orderedCategories as $k=>$v) {
-                       $links = $Management->linksByCategory($v['id'],false);
+                       $links = $Management->linksByCategory($v['id'],'');
 ?>
                <div class="column is-one-quarter">
                        <div class="content">
index 5770d4016a90cedfa090230d550109872d99baee..eea682ba10d03811cac9281cfb6a134e9f053836 100644 (file)
@@ -73,13 +73,17 @@ if(Summoner::simpleAuthCheck() === true) {
 $sortLink['active'] = 'default';
 $sortLink['activeDirection'] = false;
 
-if(!empty($_sort) && $_sort === 'name') {
-    $currentGetParameters['s'] = 'name';
-    $sortLink['active'] = 'name';
+$_saveSort = false;
+if(!empty($_sort) && $_sort === 'title') {
+    $currentGetParameters['s'] = 'title';
+    $sortLink['active'] = 'title';
+    $_saveSort = 'title';
 }
+$_saveSortDirection = false;
 if(!empty($_sortDirection) && $_sortDirection === 'asc') {
     $currentGetParameters['sd'] = 'asc';
     $sortLink['activeDirection'] = true;
+    $_saveSortDirection = 'asc';
 }
 
 switch($_requestMode) {
@@ -109,7 +113,14 @@ switch($_requestMode) {
             $catname = $catObj->getData('name');
             $subHeadline = $catname.' <i class="ion-md-filing"></i>';
 
-                       $linkCollection = $Management->linksByCategory($_id,false,RESULTS_PER_PAGE, (RESULTS_PER_PAGE * ($_curPage-1)));
+            $_options = array(
+                'limit' => RESULTS_PER_PAGE,
+                'offset' =>(RESULTS_PER_PAGE * ($_curPage-1))
+            );
+            if(!empty($_saveSort)) $_options['sort'] = $_saveSort;
+            if(!empty($_saveSortDirection)) $_options['sortDirection'] = $_saveSortDirection;
+
+                       $linkCollection = $Management->linksByCategory($_id,'',$_options);
 
             $currentGetParameters['id'] = $_id;
                }
@@ -161,5 +172,5 @@ else {
 }
 
 $sortLink['default'] = Summoner::createFromParameterLinkQuery($currentGetParameters,array('s'=>false,'sd'=>false));
-$sortLink['name'] = Summoner::createFromParameterLinkQuery($currentGetParameters,array('s'=>'name','sd'=>false));
+$sortLink['name'] = Summoner::createFromParameterLinkQuery($currentGetParameters,array('s'=>'title','sd'=>false));
 $sortLink['direction'] = Summoner::createFromParameterLinkQuery($currentGetParameters,array('sd'=>'asc'));
\ No newline at end of file
index b0335c394688a3c3890c35a42b6067474b8d8495..081bd3209bc727cf796b7ee9c9a8d409e14c3f9a 100644 (file)
@@ -97,7 +97,7 @@
                 <a href="index.php?<?php echo $sortLink['default']; ?>"
                    class="button is-small <?php if($sortLink['active'] === 'default') { ?>is-link<?php } ?>">default</a>
                 <a href="index.php?<?php echo $sortLink['name']; ?>"
-                   class="button is-small <?php if($sortLink['active'] === 'name') { ?>is-link<?php } ?>">name</a>
+                   class="button is-small <?php if($sortLink['active'] === 'title') { ?>is-link<?php } ?>">title</a>
                 <a href="index.php?<?php echo $sortLink['direction']; ?>"
                    class="button is-small <?php if($sortLink['activeDirection'] === true) { ?>is-link<?php } ?>"><span class="icon"><i class="ion-md-arrow-dropup"></i></span></a>
             </div>