allow wildcard tag and category searches

This commit is contained in:
zotlabs 2017-07-20 18:11:47 -07:00
parent 8e5c56dcc2
commit a346399fe6
3 changed files with 15 additions and 6 deletions

View file

@ -325,8 +325,8 @@ class Channel extends \Zotlabs\Web\Controller {
'$order' => '',
'$list' => ((x($_REQUEST,'list')) ? intval($_REQUEST['list']) : 0),
'$file' => '',
'$cats' => (($category) ? $category : ''),
'$tags' => (($hashtags) ? $hashtags : ''),
'$cats' => (($category) ? urlencode($category) : ''),
'$tags' => (($hashtags) ? urlencode($hashtags) : ''),
'$mid' => $mid,
'$verb' => '',
'$dend' => $datequery,

View file

@ -325,8 +325,8 @@ class Network extends \Zotlabs\Web\Controller {
'$xchan' => $xchan,
'$order' => $order,
'$file' => $file,
'$cats' => $category,
'$tags' => $hashtags,
'$cats' => urlencode($category),
'$tags' => urlencode($hashtags),
'$dend' => $datequery,
'$mid' => '',
'$verb' => $verb,

View file

@ -46,8 +46,16 @@ function term_query($table,$s,$type = TERM_UNKNOWN, $type2 = '') {
function term_item_parent_query($uid,$table,$s,$type = TERM_UNKNOWN, $type2 = '') {
// Allow asterisks for wildcard search
// In theory this means '%' will also do a wildcard search, but there appear to be multiple escape
// issues with '%' in term names and trying to fix this with '\\%' here did not help.
// Ideally I think we want '*' to indicate wildcards and allow '%' literally in names, but that is being
// left for another developer on another day.
$s = str_replace('*','%',$s);
if($type2) {
$r = q("select parent from item left join term on term.oid = item.id where term.ttype in (%d, %d) and term.term = '%s' and term.uid = %d and term.otype = 1",
$r = q("select parent from item left join term on term.oid = item.id where term.ttype in (%d, %d) and term.term like '%s' and term.uid = %d and term.otype = 1",
intval($type),
intval($type2),
dbesc($s),
@ -55,12 +63,13 @@ function term_item_parent_query($uid,$table,$s,$type = TERM_UNKNOWN, $type2 = ''
);
}
else {
$r = q("select parent from item left join term on term.oid = item.id where term.ttype = %d and term.term = '%s' and term.uid = %d and term.otype = 1",
$r = q("select parent from item left join term on term.oid = item.id where term.ttype = %d and term.term like '%s' and term.uid = %d and term.otype = 1",
intval($type),
dbesc($s),
intval($uid)
);
}
if($r) {
$str = '';
foreach($r as $rv) {