]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/search_engines.php
NoAcctUriException->profile not $e directly
[quix0rs-gnu-social.git] / lib / search_engines.php
index 19703e03fd81aa983aa710cc7af20242aa32b7a7..6cb2ebcfd53929fa977fd64a7b866cef8be8d8c5 100644 (file)
@@ -41,8 +41,35 @@ class SearchEngine
 
     function set_sort_mode($mode)
     {
-        if ('chron' === $mode)
-            return $this->target->orderBy('created desc');
+        switch ($mode) {
+        case 'chron':
+            return $this->target->orderBy('created DESC');
+            break;
+        case 'reverse_chron':
+            return $this->target->orderBy('created ASC');
+            break;
+        case 'nickname_desc':
+            if ($this->table != 'profile') {
+                throw new Exception(
+                    'nickname_desc sort mode can only be use when searching profile.'
+                );
+            } else {
+                return $this->target->orderBy(sprintf('%1$s.nickname DESC', $this->table));
+            }
+            break;
+        case 'nickname_asc':
+            if ($this->table != 'profile') {
+                throw new Exception(
+                    'nickname_desc sort mode can only be use when searching profile.'
+                );
+            } else {
+                return $this->target->orderBy(sprintf('%1$s.nickname ASC', $this->table));
+            }
+            break;
+        default:
+            return $this->target->orderBy('created DESC');
+            break;
+        }
     }
 }
 
@@ -85,11 +112,13 @@ class MySQLLikeSearch extends SearchEngine
     function query($q)
     {
         if ('profile' === $this->table) {
-            $qry = sprintf('(nickname LIKE "%%%1$s%%" OR '.
-                           ' fullname LIKE "%%%1$s%%" OR '.
-                           ' location LIKE "%%%1$s%%" OR '.
-                           ' bio      LIKE "%%%1$s%%" OR '.
-                           ' homepage LIKE "%%%1$s%%")', $this->target->escape($q, true));
+            $qry = sprintf('(%2$s.nickname LIKE "%%%1$s%%" OR '.
+                            ' %2$s.fullname LIKE "%%%1$s%%" OR '.
+                            ' %2$s.location LIKE "%%%1$s%%" OR '.
+                            ' %2$s.bio      LIKE "%%%1$s%%" OR '.
+                            ' %2$s.homepage LIKE "%%%1$s%%")',
+                           $this->target->escape($q, true),
+                           $this->table);
         } else if ('notice' === $this->table) {
             $qry = sprintf('content LIKE "%%%1$s%%"', $this->target->escape($q, true));
         } else {