X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Fsearch_engines.php;h=6cb2ebcfd53929fa977fd64a7b866cef8be8d8c5;hb=543d968b81b97c9ebd46de063d8d70621c12015b;hp=19703e03fd81aa983aa710cc7af20242aa32b7a7;hpb=cff14c7e10b5125874438215fb799bccaa9337ea;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 {