diff --git a/include/diaspora.php b/include/diaspora.php index 93fe2a472f..635c1aabc3 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -700,12 +700,10 @@ function diaspora_request($importer,$xml) { return; } - $g = q("select def_gid from user where uid = %d limit 1", - intval($importer['uid']) - ); - if($g && intval($g[0]['def_gid'])) { + $def_gid = get_default_group($importer['uid'], $ret["network"]); + if (intval($def_gid)) { require_once('include/group.php'); - group_add_member($importer['uid'],'',$contact_record['id'],$g[0]['def_gid']); + group_add_member($importer['uid'], '', $contact_record['id'], $def_gid); } if($importer['page-flags'] == PAGE_NORMAL) { diff --git a/include/follow.php b/include/follow.php index 410e0e58aa..3af629536d 100644 --- a/include/follow.php +++ b/include/follow.php @@ -258,12 +258,10 @@ function new_contact($uid,$url,$interactive = false) { $contact_id = $r[0]['id']; $result['cid'] = $contact_id; - $g = q("select def_gid from user where uid = %d limit 1", - intval($uid) - ); - if($g && intval($g[0]['def_gid'])) { + $def_gid = get_default_group($uid, $contact["network"]); + if (intval($def_gid)) { require_once('include/group.php'); - group_add_member($uid,'',$contact_id,$g[0]['def_gid']); + group_add_member($uid, '', $contact_id, $def_gid); } require_once("include/Photo.php"); diff --git a/include/group.php b/include/group.php index 2b872f16a7..00b66ad586 100644 --- a/include/group.php +++ b/include/group.php @@ -188,7 +188,7 @@ function group_public_members($gid) { } -function mini_group_select($uid,$gid = 0) { +function mini_group_select($uid,$gid = 0, $label = "") { $grps = array(); $o = ''; @@ -205,8 +205,11 @@ function mini_group_select($uid,$gid = 0) { } logger('groups: ' . print_r($grps,true)); + if ($label == "") + $label = t('Default privacy group for new contacts'); + $o = replace_macros(get_markup_template('group_selection.tpl'), array( - '$label' => t('Default privacy group for new contacts'), + '$label' => $label, '$groups' => $grps )); return $o; @@ -375,3 +378,28 @@ function groups_count_unseen() { return $r; } + +/** + * @brief Returns the default group for a given user and network + * + * @param int $uid User id + * @param string $network network name + * + * @return int group id + */ +function get_default_group($uid, $network = "") { + + $default_group = 0; + + if ($network == NETWORK_OSTATUS) + $default_group = get_pconfig($uid, "ostatus", "default_group"); + + if ($default_group != 0) + return $default_group; + + $g = q("SELECT `def_gid` FROM `user` WHERE `uid` = %d LIMIT 1", intval($uid)); + if($g && intval($g[0]["def_gid"])) + $default_group = $g[0]["def_gid"]; + + return $default_group; +} diff --git a/mod/dfrn_confirm.php b/mod/dfrn_confirm.php index 27c04a908d..68950ec285 100644 --- a/mod/dfrn_confirm.php +++ b/mod/dfrn_confirm.php @@ -489,13 +489,10 @@ function dfrn_confirm_post(&$a,$handsfree = null) { } } - - $g = q("select def_gid from user where uid = %d limit 1", - intval($uid) - ); - if($contact && $g && intval($g[0]['def_gid'])) { + $def_gid = get_default_group($uid, $contact["network"]); + if($contact && intval($def_gid)) { require_once('include/group.php'); - group_add_member($uid,'',$contact['id'],$g[0]['def_gid']); + group_add_member($uid, '', $contact['id'], $def_gid); } // Let's send our user to the contact editor in case they want to diff --git a/mod/dfrn_request.php b/mod/dfrn_request.php index 5455996069..837eec2dd2 100644 --- a/mod/dfrn_request.php +++ b/mod/dfrn_request.php @@ -174,18 +174,16 @@ function dfrn_request_post(&$a) { info( t("Introduction complete.") . EOL); } - $r = q("select id from contact where uid = %d and url = '%s' and `site-pubkey` = '%s' limit 1", + $r = q("SELECT `id`, `network` FROM `contact` WHERE `uid` = %d AND `url` = '%s' AND `site-pubkey` = '%s' LIMIT 1", intval(local_user()), dbesc($dfrn_url), $parms['key'] // this was already escaped ); if(count($r)) { - $g = q("select def_gid from user where uid = %d limit 1", - intval(local_user()) - ); - if($g && intval($g[0]['def_gid'])) { + $def_gid = get_default_group(local_user(), $r[0]["network"]); + if(intval($def_gid)) { require_once('include/group.php'); - group_add_member(local_user(),'',$r[0]['id'],$g[0]['def_gid']); + group_add_member(local_user(), '', $r[0]['id'], $def_gid); } $forwardurl = $a->get_baseurl()."/contacts/".$r[0]['id']; } else @@ -388,19 +386,17 @@ function dfrn_request_post(&$a) { intval($rel) ); - $r = q("select id from contact where poll = '%s' and uid = %d limit 1", + $r = q("SELECT `id`, `network` FROM `contact` WHERE `poll` = '%s' AND `uid` = %d LIMIT 1", dbesc($poll), intval($uid) ); if(count($r)) { $contact_id = $r[0]['id']; - $g = q("select def_gid from user where uid = %d limit 1", - intval($uid) - ); - if($g && intval($g[0]['def_gid'])) { + $def_gid = get_default_group($uid, $r[0]["network"]); + if (intval($def_gid)) { require_once('include/group.php'); - group_add_member($uid,'',$contact_id,$g[0]['def_gid']); + group_add_member($uid, '', $contact_id, $def_gid); } $photo = avatar_img($addr); diff --git a/mod/settings.php b/mod/settings.php index 905a5ed08d..67513e533e 100644 --- a/mod/settings.php +++ b/mod/settings.php @@ -199,6 +199,7 @@ function settings_post(&$a) { if(x($_POST, 'general-submit')) { set_pconfig(local_user(), 'system', 'no_intelligent_shortening', intval($_POST['no_intelligent_shortening'])); set_pconfig(local_user(), 'system', 'ostatus_autofriend', intval($_POST['snautofollow'])); + set_pconfig(local_user(), 'ostatus', 'default_group', $_POST['group-selection']); set_pconfig(local_user(), 'ostatus', 'legacy_contact', $_POST['legacy_contact']); } elseif(x($_POST, 'imap-submit')) { @@ -797,8 +798,11 @@ function settings_content(&$a) { $settings_connectors .= ''.t('If you receive a message from an unknown OStatus user, this option decides what to do. If it is checked, a new contact will be created for every unknown user.').''; $settings_connectors .= ''; + $default_group = get_pconfig(local_user(), 'ostatus', 'default_group'); $legacy_contact = get_pconfig(local_user(), 'ostatus', 'legacy_contact'); + $settings_connectors .= mini_group_select(local_user(), $default_group, t("Default group for OStatus followers")); + if ($legacy_contact != "") $a->page['htmlhead'] = '';