diff options
author | Mario Vavti <mario@mariovavti.com> | 2023-05-03 15:25:47 +0200 |
---|---|---|
committer | Mario Vavti <mario@mariovavti.com> | 2023-05-03 15:25:47 +0200 |
commit | ffbaa7e4dcda787897263c6cc4d13671f1fc6ed6 (patch) | |
tree | 619827ec7c88d41f9ffe1195c91cd8ddcaa8f5e7 | |
parent | df420361000a33f3e6f6982954c21a1c7a3168cf (diff) | |
download | volse-hubzilla-ffbaa7e4dcda787897263c6cc4d13671f1fc6ed6.tar.gz volse-hubzilla-ffbaa7e4dcda787897263c6cc4d13671f1fc6ed6.tar.bz2 volse-hubzilla-ffbaa7e4dcda787897263c6cc4d13671f1fc6ed6.zip |
when flagging an entry also flag its xtags and improved keywords query in dirsearch
-rw-r--r-- | Zotlabs/Lib/Libzotdir.php | 8 | ||||
-rw-r--r-- | Zotlabs/Module/Dircensor.php | 7 | ||||
-rw-r--r-- | Zotlabs/Module/Dirsearch.php | 17 |
3 files changed, 25 insertions, 7 deletions
diff --git a/Zotlabs/Lib/Libzotdir.php b/Zotlabs/Lib/Libzotdir.php index e30ccc43c..8e729f7e6 100644 --- a/Zotlabs/Lib/Libzotdir.php +++ b/Zotlabs/Lib/Libzotdir.php @@ -522,6 +522,10 @@ class Libzotdir { if (array_key_exists('keywords', $profile) and is_array($profile['keywords'])) { self::import_directory_keywords($hash,$profile['keywords']); foreach ($profile['keywords'] as $kw) { + if (in_array($kw, $clean)) { + continue; + } + $kw = trim(htmlspecialchars($kw,ENT_COMPAT, 'UTF-8', false)); $kw = trim($kw, ','); $clean[] = $kw; @@ -652,6 +656,10 @@ class Libzotdir { $clean = array(); foreach($keywords as $kw) { + if (in_array($kw, $clean)) { + continue; + } + $kw = trim(htmlspecialchars($kw,ENT_COMPAT, 'UTF-8', false)); $kw = trim($kw, ','); $clean[] = $kw; diff --git a/Zotlabs/Module/Dircensor.php b/Zotlabs/Module/Dircensor.php index 44c9148e8..3f03f7f87 100644 --- a/Zotlabs/Module/Dircensor.php +++ b/Zotlabs/Module/Dircensor.php @@ -47,7 +47,12 @@ class Dircensor extends Controller { Libzotdir::update($xchan, $r[0]['xchan_url'], true, $flag); - q("update xchan set xchan_censored = %d where xchan_hash = '%s'", + q("UPDATE xchan SET xchan_censored = %d WHERE xchan_hash = '%s'", + intval($flag), + dbesc($xchan) + ); + + q("UPDATE xtag SET xtag_flags = %d WHERE xtag_hash = '%s'", intval($flag), dbesc($xchan) ); diff --git a/Zotlabs/Module/Dirsearch.php b/Zotlabs/Module/Dirsearch.php index acf1b64e4..7380a551e 100644 --- a/Zotlabs/Module/Dirsearch.php +++ b/Zotlabs/Module/Dirsearch.php @@ -40,6 +40,8 @@ class Dirsearch extends Controller { } $sql_extra = ''; + $keywords_query = ''; + $hub_query = ''; $tables = array('name','address','locale','region','postcode','country','gender','marital','sexual','keywords'); @@ -98,10 +100,10 @@ class Dirsearch extends Controller { $hub = \App::get_hostname(); } - if($hub) + if($hub) { $hub_query = " and xchan_hash in (select hubloc_hash from hubloc where hubloc_host = '" . protect_sprintf(dbesc($hub)) . "') "; - else - $hub_query = ''; + } + $sort_order = ((x($_REQUEST,'order')) ? $_REQUEST['order'] : ''); @@ -127,9 +129,12 @@ class Dirsearch extends Controller { $sql_extra .= $this->dir_query_build($joiner,'xprof_marital',$marital); if($sexual) $sql_extra .= $this->dir_query_build($joiner,'xprof_sexual',$sexual); - if($keywords) - $sql_extra .= $this->dir_query_build($joiner,'xprof_keywords',$keywords); + if($keywords) { + $keywords_arr = explode(',', $keywords); + stringify_array_elms($keywords_arr, true); + $keywords_query = " AND xchan_hash IN (SELECT xtag_hash FROM xtag WHERE xtag_term IN (" . protect_sprintf(implode(',', $keywords_arr)) . ")) "; + } // we only support an age range currently. You must set both agege // (greater than or equal) and agele (less than or equal) @@ -265,7 +270,7 @@ class Dirsearch extends Controller { xprof.xprof_hometown as hometown, xprof.xprof_keywords as keywords from xchan left join xprof on xchan_hash = xprof_hash left join hubloc on (hubloc_id_url = xchan_url and hubloc_hash = xchan_hash) - where hubloc_primary = 1 and hubloc_updated > %s - INTERVAL %s and ( $logic $sql_extra ) $hub_query and xchan_network = 'zot6' and xchan_system = 0 and xchan_hidden = 0 and xchan_orphan = 0 and xchan_deleted = 0 + where hubloc_primary = 1 and hubloc_updated > %s - INTERVAL %s and ( $logic $sql_extra ) $hub_query $keywords_query and xchan_network = 'zot6' and xchan_system = 0 and xchan_hidden = 0 and xchan_orphan = 0 and xchan_deleted = 0 $safesql $order $qlimit", db_utcnow(), db_quoteinterval('30 DAY') |