diff options
Diffstat (limited to 'mod')
-rw-r--r-- | mod/poco.php | 66 | ||||
-rw-r--r-- | mod/settings.php | 9 |
2 files changed, 54 insertions, 21 deletions
diff --git a/mod/poco.php b/mod/poco.php index 21ee4df69..6331131fa 100644 --- a/mod/poco.php +++ b/mod/poco.php @@ -2,11 +2,21 @@ function poco_init(&$a) { + $system_mode = false; + + if(intval(get_config('system','block_public'))) + http_status_exit(401); + + if($a->argc > 1) { $user = notags(trim($a->argv[1])); } - if(! x($user) || get_config('system','block_public')) - http_status_exit(401); + if(! x($user)) { + $c = q("select * from pconfig where cat = 'system' and k = 'suggestme' and v = 1"); + if(! count($c)) + http_status_exit(401); + $system_mode = true; + } $format = (($_GET['format']) ? $_GET['format'] : 'json'); @@ -22,14 +32,16 @@ function poco_init(&$a) { $cid = intval($a->argv[4]); - $r = q("SELECT `user`.*,`profile`.`hide-friends` from user left join profile on `user`.`uid` = `profile`.`uid` - where `user`.`nickname` = '%s' and `profile`.`is-default` = 1 limit 1", - dbesc($user) - ); - if(! count($r) || $r[0]['hidewall'] || $r[0]['hide-friends']) - http_status_exit(404); + if(! $system_mode) { + $r = q("SELECT `user`.*,`profile`.`hide-friends` from user left join profile on `user`.`uid` = `profile`.`uid` + where `user`.`nickname` = '%s' and `profile`.`is-default` = 1 limit 1", + dbesc($user) + ); + if(! count($r) || $r[0]['hidewall'] || $r[0]['hide-friends']) + http_status_exit(404); - $user = $r[0]; + $user = $r[0]; + } if($justme) $sql_extra = " and `contact`.`self` = 1 "; @@ -37,10 +49,16 @@ function poco_init(&$a) { if($cid) $sql_extra = sprintf(" and `contact`.`id` = %d ",intval($cid)); - $r = q("SELECT count(*) as `total` from `contact` where `uid` = %d and blocked = 0 and pending = 0 - $sql_extra ", - intval($user['uid']) - ); + if($system_mode) { + $r = q("SELECT count(*) as `total` from `contact` where self = 1 + and uid in (select uid from pconfig where cat = 'system' and k = 'suggestme' and v = 1) "); + } + else { + $r = q("SELECT count(*) as `total` from `contact` where `uid` = %d and blocked = 0 and pending = 0 + $sql_extra ", + intval($user['uid']) + ); + } if(count($r)) $totalResults = intval($r[0]['total']); else @@ -51,13 +69,23 @@ function poco_init(&$a) { $startIndex = 0; $itemsPerPage = ((x($_GET,'count') && intval($_GET['count'])) ? intval($_GET['count']) : $totalResults); - $r = q("SELECT * from `contact` where `uid` = %d and blocked = 0 and pending = 0 - $sql_extra LIMIT %d, %d", - intval($user['uid']), - intval($startIndex), - intval($itemsPerPage) - ); + if($system_mode) { + $r = q("SELECT * from contact where self = 1 + and uid in (select uid from pconfig where cat = 'system' and k = 'suggestme' and v = 1) limit %d, %d ", + intval($startIndex), + intval($itemsPerPage) + ); + } + else { + + $r = q("SELECT * from `contact` where `uid` = %d and blocked = 0 and pending = 0 + $sql_extra LIMIT %d, %d", + intval($user['uid']), + intval($startIndex), + intval($itemsPerPage) + ); + } $ret = array(); if(x($_GET,'sorted')) $ret['sorted'] = 'false'; diff --git a/mod/settings.php b/mod/settings.php index 163588f4a..51db9b06e 100644 --- a/mod/settings.php +++ b/mod/settings.php @@ -6,6 +6,8 @@ function settings_init(&$a) { profile_load($a,$a->user['nickname']); } + // These lines provide the javascript needed by the acl selector + $a->page['htmlhead'] .= "<script> var ispublic = '" . t('everybody') . "';" ; $a->page['htmlhead'] .= <<< EOT @@ -231,8 +233,9 @@ function settings_post(&$a) { $blockwall = (((x($_POST,'blockwall')) && (intval($_POST['blockwall']) == 1)) ? 0: 1); // this setting is inverted! $blocktags = (((x($_POST,'blocktags')) && (intval($_POST['blocktags']) == 1)) ? 0: 1); // this setting is inverted! - $hide_friends = (($_POST['hide-friends'] == 1) ? 1: 0); - $hidewall = (($_POST['hidewall'] == 1) ? 1: 0); + $suggestme = ((x($_POST,'suggestme')) ? intval($_POST['suggestme']) : 0); + $hide_friends = (($_POST['hide-friends'] == 1) ? 1: 0); + $hidewall = (($_POST['hidewall'] == 1) ? 1: 0); $notify = 0; @@ -309,6 +312,8 @@ function settings_post(&$a) { set_pconfig(local_user(),'expire','starred', $expire_starred); set_pconfig(local_user(),'expire','photos', $expire_photos); + set_pconfig(local_user(),'system','suggestme', $suggestme); + $r = q("UPDATE `user` SET `username` = '%s', `email` = '%s', `openid` = '%s', `timezone` = '%s', `allow_cid` = '%s', `allow_gid` = '%s', `deny_cid` = '%s', `deny_gid` = '%s', `notify-flags` = %d, `page-flags` = %d, `default-location` = '%s', `allow_location` = %d, `theme` = '%s', `maxreq` = %d, `expire` = %d, `openidserver` = '%s', `blockwall` = %d, `hidewall` = %d, `blocktags` = %d WHERE `uid` = %d LIMIT 1", dbesc($username), dbesc($email), |