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

index 3a49000cb60f7760ee246483c0a405f177513cb6..4f0a24be8a09e861762e7a8c4ab5c87162ab4af4 100755 (executable)
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,7 +3,8 @@ 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
+    + Sorting in category overview
+    + Sorting in tag overview
     + Fixed a bug in tag selection SQL query
 
 version 2.2 - Guardian of Ice - (2019-02-27)
index a91b3cccde80a6a14d0d12d635d6367efd690bc3..f5e0d269875d5c327665441ec89b495496cbd83b 100644 (file)
@@ -299,18 +299,22 @@ class Management {
                return $ret;
        }
 
-       /**
-        * find all links by given tag 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 linksByTag($id, $string, $limit=5, $offset=false) {
+    /**
+     * find all links by given tag string or id.
+     * Return array sorted by creation date DESC
+     * @param int $id Tag id
+     * @param string $string Tag as string
+     * @param array $options Array with limit|offset|sort|sortDirection
+     * @return array
+     */
+       public function linksByTag($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();
@@ -324,16 +328,32 @@ class Management {
                        return $ret;
                }
 
-               $queryOrder = "GROUP BY t.hash
-                       ORDER BY t.created DESC";
-               $queryLimit = '';
-               if(!empty($limit)) {
-                       $queryLimit .= " LIMIT $limit";
-                       if($offset !== false) {
-                               $queryLimit .= " OFFSET $offset";
-                       }
-               }
-               $query = $this->DB->query($querySelect.$queryFrom.$queryWhere.$queryOrder.$queryLimit);
+        $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 = '';
+        # 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.$queryGroup.$queryOrder.$queryLimit);
+        
                if(!empty($query) && $query->num_rows > 0) {
                        while($result = $query->fetch_assoc()) {
                                $linkObj = new Link($this->DB);
index eea682ba10d03811cac9281cfb6a134e9f053836..2e5c8223ad66a9ed7255f66a3891159383f20ced 100644 (file)
@@ -73,17 +73,20 @@ if(Summoner::simpleAuthCheck() === true) {
 $sortLink['active'] = 'default';
 $sortLink['activeDirection'] = false;
 
-$_saveSort = false;
+$_LinkColllectionQueryOptions = array(
+    'limit' => RESULTS_PER_PAGE,
+    'offset' =>(RESULTS_PER_PAGE * ($_curPage-1))
+);
+
 if(!empty($_sort) && $_sort === 'title') {
     $currentGetParameters['s'] = 'title';
     $sortLink['active'] = 'title';
-    $_saveSort = 'title';
+    $_LinkColllectionQueryOptions['sort'] = 'title';
 }
-$_saveSortDirection = false;
 if(!empty($_sortDirection) && $_sortDirection === 'asc') {
     $currentGetParameters['sd'] = 'asc';
     $sortLink['activeDirection'] = true;
-    $_saveSortDirection = 'asc';
+    $_LinkColllectionQueryOptions['sortDirection'] = 'asc';
 }
 
 switch($_requestMode) {
@@ -95,7 +98,7 @@ switch($_requestMode) {
             $tagname = $tagObj->getData('name');
             $subHeadline = $tagname.' <i class="ion-md-pricetag"></i>';
 
-                       $linkCollection = $Management->linksByTag($_id,false,RESULTS_PER_PAGE, (RESULTS_PER_PAGE * ($_curPage-1)));
+                       $linkCollection = $Management->linksByTag($_id,'', $_LinkColllectionQueryOptions);
 
             $currentGetParameters['id'] = $_id;
                }
@@ -113,14 +116,7 @@ switch($_requestMode) {
             $catname = $catObj->getData('name');
             $subHeadline = $catname.' <i class="ion-md-filing"></i>';
 
-            $_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);
+                       $linkCollection = $Management->linksByCategory($_id,'', $_LinkColllectionQueryOptions);
 
             $currentGetParameters['id'] = $_id;
                }
index 081bd3209bc727cf796b7ee9c9a8d409e14c3f9a..f0a29db7be012083cad956dbbc243df6872bc6d2 100644 (file)
@@ -93,6 +93,7 @@
         <?php } ?>
         </div>
         <div class="column is-half">
+            <?php if(!empty($linkCollection['results'])) { ?>
             <div class="is-pulled-right">
                 <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['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>
+            <?php } ?>
         </div>
     </div>
 </section>