aboutsummaryrefslogtreecommitdiffstats
path: root/mod
diff options
context:
space:
mode:
Diffstat (limited to 'mod')
-rw-r--r--mod/directory.php30
-rw-r--r--mod/dirsearch.php42
2 files changed, 27 insertions, 45 deletions
diff --git a/mod/directory.php b/mod/directory.php
index dfc60b190..17a1776fe 100644
--- a/mod/directory.php
+++ b/mod/directory.php
@@ -17,6 +17,7 @@ function directory_init(&$a) {
$observer = get_observer_hash();
$global_changed = false;
+ $safe_changed = false;
if(array_key_exists('global',$_REQUEST)) {
$globaldir = intval($_REQUEST['global']);
@@ -28,6 +29,16 @@ function directory_init(&$a) {
set_xconfig($observer,'directory','globaldir',$globaldir);
}
+ if(array_key_exists('safe',$_REQUEST)) {
+ $safemode = intval($_REQUEST['safe']);
+ $safe_changed = true;
+ }
+ if($safe_changed) {
+ $_SESSION['safemode'] = $safemode;
+ if($observer)
+ set_xconfig($observer,'directory','safe_mode',$safemode);
+ }
+
}
function directory_content(&$a) {
@@ -46,20 +57,18 @@ function directory_content(&$a) {
else
$globaldir = ((array_key_exists('globaldir',$_SESSION)) ? intval($_SESSION['globaldir']) : false);
- if($observer) {
+ if($observer)
$safe_mode = get_xconfig($observer,'directory','safe_mode');
- }
+ else
+ $safe_mode = ((array_key_exists('safemode',$_SESSION)) ? intval($_SESSION['safemode']) : false);
if($safe_mode === false)
$safe_mode = 1;
- else
- $safe_mode = intval($safe_mode);
-
- if(x($_REQUEST,'safe'))
- $safe_mode = (intval($_REQUEST['safe']));
$pubforums = null;
if(array_key_exists('pubforums',$_REQUEST))
$pubforums = intval($_REQUEST['pubforums']);
+ if(! $pubforums)
+ $pubforums = null;
$o = '';
nav_set_selected('directory');
@@ -153,15 +162,10 @@ function directory_content(&$a) {
if(! is_null($pubforums))
$query .= '&pubforums=' . intval($pubforums);
- if(! is_null($pubforums))
- $query .= '&pubforums=' . intval($pubforums);
-
- $sort_order = ((x($_REQUEST,'order')) ? $_REQUEST['order'] : 'normal');
+ $sort_order = ((x($_REQUEST,'order')) ? $_REQUEST['order'] : 'date');
if($sort_order)
$query .= '&order=' . urlencode($sort_order);
-
-
if($a->pager['page'] != 1)
$query .= '&p=' . $a->pager['page'];
diff --git a/mod/dirsearch.php b/mod/dirsearch.php
index 01cbccbed..e734423a6 100644
--- a/mod/dirsearch.php
+++ b/mod/dirsearch.php
@@ -119,7 +119,7 @@ function dirsearch_content(&$a) {
$sql_extra .= dir_query_build($joiner,'xprof_keywords',$keywords);
if($forums)
- $sql_extra .= dir_flag_build($joiner,'xprof_flags',XCHAN_FLAGS_PUBFORUM, $forums);
+ $sql_extra .= dir_flag_build(' AND ','xchan_flags',XCHAN_FLAGS_PUBFORUM, $forums);
// we only support an age range currently. You must set both agege
@@ -188,6 +188,11 @@ function dirsearch_content(&$a) {
if($sort_order == 'normal') {
$order = " order by xchan_name asc ";
+
+ // Start the alphabetic search at 'A'
+ // This will make a handful of channels whose names begin with
+ // punctuation un-searchable in this mode
+
$safesql .= " and ascii(substr(xchan_name FROM 1 FOR 1)) > 64 ";
}
elseif($sort_order == 'reverse')
@@ -241,49 +246,22 @@ function dirsearch_content(&$a) {
}
else {
- // The query mangling is designed to make alphabetic searches start with 'A' and not precede real names
- // with those containing a bunch of punctuation
-
- if($sort_order == 'normal') {
- $sql = $safesql .= " and ascii(substr(xchan_name FROM 1 FOR 1)) > 64 ";
- }
- else {
- $sql = $safesql;
- }
-
- $r = q("SELECT xchan.*, xprof.* from xchan left join xprof on xchan_hash = xprof_hash where ( $logic $sql_extra ) and xchan_network = 'zot' and not ( xchan_flags & %d )>0 and not ( xchan_flags & %d )>0 and not ( xchan_flags & %d )>0 $sql $order $qlimit ",
+ $r = q("SELECT xchan.*, xprof.* from xchan left join xprof on xchan_hash = xprof_hash where ( $logic $sql_extra ) and xchan_network = 'zot' and not ( xchan_flags & %d )>0 and not ( xchan_flags & %d )>0 and not ( xchan_flags & %d )>0 $safesql $order $qlimit ",
intval(XCHAN_FLAGS_HIDDEN),
intval(XCHAN_FLAGS_ORPHAN),
intval(XCHAN_FLAGS_DELETED)
);
+
$ret['page'] = $page + 1;
$ret['records'] = count($r);
-
-
- if(! $r) {
-
- if($sort_order == 'normal') {
- $sql = $safesql .= " and ascii(substr(xchan_name FROM 1 FOR 1)) <= 64 ";
-
- $r = q("SELECT xchan.*, xprof.* from xchan left join xprof on xchan_hash = xprof_hash where ( $logic $sql_extra ) and xchan_network = 'zot' and not ( xchan_flags & %d )>0 and not ( xchan_flags & %d )>0 and not ( xchan_flags & %d )>0 $sql $order $qlimit ",
- intval(XCHAN_FLAGS_HIDDEN),
- intval(XCHAN_FLAGS_ORPHAN),
- intval(XCHAN_FLAGS_DELETED)
- );
-
- $ret['page'] = $page + 1;
- $ret['records'] = count($r);
-
- }
- }
}
+
if($r) {
$entries = array();
-
foreach($r as $rr) {
$entry = array();
@@ -348,7 +326,7 @@ function dir_query_build($joiner,$field,$s) {
}
function dir_flag_build($joiner,$field,$bit,$s) {
- return dbesc($joiner) . " ( " . dbesc('xchan_flags') . " & " . intval($bit) . " ) " . ((intval($s)) ? '>' : '=' ) . " 0 ";
+ return dbesc($joiner) . " ( " . dbesc($field) . " & " . intval($bit) . " ) " . ((intval($s)) ? '>' : '=' ) . " 0 ";
}