X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Fsearch_engines.php;h=6cb2ebcfd53929fa977fd64a7b866cef8be8d8c5;hb=c285f80b1830cffd20a28c693d74c59f8c3c39f6;hp=19703e03fd81aa983aa710cc7af20242aa32b7a7;hpb=37994e3ff124fa2456c7dcf59970ca97d8db83ff;p=quix0rs-gnu-social.git diff --git a/lib/search_engines.php b/lib/search_engines.php index 19703e03fd..6cb2ebcfd5 100644 --- a/lib/search_engines.php +++ b/lib/search_engines.php @@ -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 {