more private forums, default privacy group for new contacts
This commit is contained in:
parent
7cfa7a7671
commit
7b0ded3f14
13 changed files with 130 additions and 33 deletions
2
boot.php
2
boot.php
|
@ -11,7 +11,7 @@ require_once('include/cache.php');
|
||||||
define ( 'FRIENDICA_PLATFORM', 'Friendica');
|
define ( 'FRIENDICA_PLATFORM', 'Friendica');
|
||||||
define ( 'FRIENDICA_VERSION', '3.0.1345' );
|
define ( 'FRIENDICA_VERSION', '3.0.1345' );
|
||||||
define ( 'DFRN_PROTOCOL_VERSION', '2.23' );
|
define ( 'DFRN_PROTOCOL_VERSION', '2.23' );
|
||||||
define ( 'DB_UPDATE_VERSION', 1143 );
|
define ( 'DB_UPDATE_VERSION', 1144 );
|
||||||
|
|
||||||
define ( 'EOL', "<br />\r\n" );
|
define ( 'EOL', "<br />\r\n" );
|
||||||
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
|
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
|
||||||
|
|
|
@ -1028,6 +1028,7 @@ CREATE TABLE IF NOT EXISTS `user` (
|
||||||
`account_expires_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
|
`account_expires_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
|
||||||
`expire_notification_sent` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
|
`expire_notification_sent` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
|
||||||
`service_class` char(32) NOT NULL,
|
`service_class` char(32) NOT NULL,
|
||||||
|
`def_gid` int(11) NOT NULL DEFAULT '0',
|
||||||
`allow_cid` mediumtext NOT NULL,
|
`allow_cid` mediumtext NOT NULL,
|
||||||
`allow_gid` mediumtext NOT NULL,
|
`allow_gid` mediumtext NOT NULL,
|
||||||
`deny_cid` mediumtext NOT NULL,
|
`deny_cid` mediumtext NOT NULL,
|
||||||
|
|
|
@ -569,6 +569,14 @@ function diaspora_request($importer,$xml) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$g = q("select def_gid from user where uid = %d limit 1",
|
||||||
|
intval($importer['uid'])
|
||||||
|
);
|
||||||
|
if($g && intval($g[0]['def_gid'])) {
|
||||||
|
require_once('include/group.php');
|
||||||
|
group_add_member($importer['uid'],'',$contact_record['id'],$g[0]['def_gid']);
|
||||||
|
}
|
||||||
|
|
||||||
if($importer['page-flags'] == PAGE_NORMAL) {
|
if($importer['page-flags'] == PAGE_NORMAL) {
|
||||||
|
|
||||||
$hash = random_string() . (string) time(); // Generate a confirm_key
|
$hash = random_string() . (string) time(); // Generate a confirm_key
|
||||||
|
|
|
@ -97,7 +97,8 @@ function group_rmv_member($uid,$name,$member) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function group_add_member($uid,$name,$member) {
|
function group_add_member($uid,$name,$member,$gid = 0) {
|
||||||
|
if(! $gid)
|
||||||
$gid = group_byname($uid,$name);
|
$gid = group_byname($uid,$name);
|
||||||
if((! $gid) || (! $uid) || (! $member))
|
if((! $gid) || (! $uid) || (! $member))
|
||||||
return false;
|
return false;
|
||||||
|
@ -154,6 +155,29 @@ function group_public_members($gid) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function mini_group_select($uid,$gid = 0) {
|
||||||
|
|
||||||
|
$grps = array();
|
||||||
|
$o = '';
|
||||||
|
|
||||||
|
$r = q("SELECT * FROM `group` WHERE `deleted` = 0 AND `uid` = %d ORDER BY `name` ASC",
|
||||||
|
intval($uid)
|
||||||
|
);
|
||||||
|
$grps[] = array('name' => '', 'id' => '0', 'selected' => '');
|
||||||
|
if(count($r)) {
|
||||||
|
foreach($r as $rr) {
|
||||||
|
$grps[] = array('name' => $rr['name'], 'id' => $rr['id'], 'selected' => (($gid == $rr['id']) ? 'true' : ''));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
logger('groups: ' . print_r($grps,true));
|
||||||
|
|
||||||
|
$o = replace_macros(get_markup_template('group_selection.tpl'), array('$groups' => $grps ));
|
||||||
|
return $o;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function group_side($every="contacts",$each="group",$edit = false, $group_id = 0, $cid = 0) {
|
function group_side($every="contacts",$each="group",$edit = false, $group_id = 0, $cid = 0) {
|
||||||
|
|
||||||
|
|
|
@ -988,11 +988,9 @@ function tag_deliver($uid,$item_id) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if((! $mention) && (! $prvgroup))
|
if(! $mention)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if($mention) {
|
|
||||||
|
|
||||||
// send a notification
|
// send a notification
|
||||||
|
|
||||||
require_once('include/enotify.php');
|
require_once('include/enotify.php');
|
||||||
|
@ -1012,9 +1010,9 @@ function tag_deliver($uid,$item_id) {
|
||||||
'otype' => 'item'
|
'otype' => 'item'
|
||||||
));
|
));
|
||||||
|
|
||||||
if(! $community_page)
|
if((! $community_page) && (! prvgroup))
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
// tgroup delivery - setup a second delivery chain
|
// tgroup delivery - setup a second delivery chain
|
||||||
// prevent delivery looping - only proceed
|
// prevent delivery looping - only proceed
|
||||||
|
@ -1036,8 +1034,11 @@ function tag_deliver($uid,$item_id) {
|
||||||
|
|
||||||
$private = ($u[0]['allow_cid'] || $u[0]['allow_gid'] || $u[0]['deny_cid'] || $u[0]['deny_gid']) ? 1 : 0;
|
$private = ($u[0]['allow_cid'] || $u[0]['allow_gid'] || $u[0]['deny_cid'] || $u[0]['deny_gid']) ? 1 : 0;
|
||||||
|
|
||||||
q("update item set wall = 1, origin = 1, forum_mode = 1, `owner-name` = '%s', `owner-link` = '%s', `owner-avatar` = '%s',
|
$forum_mode = (($prvgroup) ? 2 : 1);
|
||||||
|
|
||||||
|
q("update item set wall = 1, origin = 1, forum_mode = %d, `owner-name` = '%s', `owner-link` = '%s', `owner-avatar` = '%s',
|
||||||
`private` = %d, `allow_cid` = '%s', `allow_gid` = '%s', `deny_cid` = '%s', `deny_gid` = '%s' where id = %d limit 1",
|
`private` = %d, `allow_cid` = '%s', `allow_gid` = '%s', `deny_cid` = '%s', `deny_gid` = '%s' where id = %d limit 1",
|
||||||
|
intval($forum_mode),
|
||||||
dbesc($c[0]['name']),
|
dbesc($c[0]['name']),
|
||||||
dbesc($c[0]['url']),
|
dbesc($c[0]['url']),
|
||||||
dbesc($c[0]['thumb']),
|
dbesc($c[0]['thumb']),
|
||||||
|
@ -2716,6 +2717,12 @@ function new_follower($importer,$contact,$datarray,$item,$sharing = false) {
|
||||||
);
|
);
|
||||||
$a = get_app();
|
$a = get_app();
|
||||||
if(count($r)) {
|
if(count($r)) {
|
||||||
|
|
||||||
|
if(intval($r[0]['def_gid'])) {
|
||||||
|
require_once('include/group.php');
|
||||||
|
group_add_member($r[0]['uid'],'',$contact_record['id'],$r[0]['def_gid']);
|
||||||
|
}
|
||||||
|
|
||||||
if(($r[0]['notify-flags'] & NOTIFY_INTRO) && ($r[0]['page-flags'] == PAGE_NORMAL)) {
|
if(($r[0]['notify-flags'] & NOTIFY_INTRO) && ($r[0]['page-flags'] == PAGE_NORMAL)) {
|
||||||
$email_tpl = get_intltext_template('follow_notify_eml.tpl');
|
$email_tpl = get_intltext_template('follow_notify_eml.tpl');
|
||||||
$email = replace_macros($email_tpl, array(
|
$email = replace_macros($email_tpl, array(
|
||||||
|
|
|
@ -220,7 +220,7 @@ function notifier_run($argv, $argc){
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if(($cmd === 'uplink') && (intval($parent['forum_mode'])) && (! $top_level)) {
|
if(($cmd === 'uplink') && (intval($parent['forum_mode']) == 1) && (! $top_level)) {
|
||||||
$relay_to_owner = true;
|
$relay_to_owner = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -265,10 +265,10 @@ function notifier_run($argv, $argc){
|
||||||
$deny_people = expand_acl($parent['deny_cid']);
|
$deny_people = expand_acl($parent['deny_cid']);
|
||||||
$deny_groups = expand_groups(expand_acl($parent['deny_gid']));
|
$deny_groups = expand_groups(expand_acl($parent['deny_gid']));
|
||||||
|
|
||||||
// if our parent is a forum, uplink to the origional author causing
|
// if our parent is a public forum (forum_mode == 1), uplink to the origional author causing
|
||||||
// a delivery fork
|
// a delivery fork. private groups (forum_mode == 2) do not uplink
|
||||||
|
|
||||||
if(intval($parent['forum_mode']) && (! $top_level) && ($cmd !== 'uplink')) {
|
if((intval($parent['forum_mode']) == 1) && (! $top_level) && ($cmd !== 'uplink')) {
|
||||||
proc_run('php','include/notifier','uplink',$item_id);
|
proc_run('php','include/notifier','uplink',$item_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -370,6 +370,14 @@ function dfrn_request_post(&$a) {
|
||||||
if(count($r)) {
|
if(count($r)) {
|
||||||
$contact_id = $r[0]['id'];
|
$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'])) {
|
||||||
|
require_once('include/group.php');
|
||||||
|
group_add_member($uid,'',$contact_id,$g[0]['def_gid']);
|
||||||
|
}
|
||||||
|
|
||||||
$photo = avatar_img($addr);
|
$photo = avatar_img($addr);
|
||||||
|
|
||||||
$r = q("UPDATE `contact` SET
|
$r = q("UPDATE `contact` SET
|
||||||
|
|
|
@ -109,6 +109,7 @@ function follow_init(&$a) {
|
||||||
dbesc($ret['poll'])
|
dbesc($ret['poll'])
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
if(count($r)) {
|
if(count($r)) {
|
||||||
// update contact
|
// update contact
|
||||||
if($r[0]['rel'] == CONTACT_IS_FOLLOWER || ($network === NETWORK_DIASPORA && $r[0]['rel'] == CONTACT_IS_SHARING)) {
|
if($r[0]['rel'] == CONTACT_IS_FOLLOWER || ($network === NETWORK_DIASPORA && $r[0]['rel'] == CONTACT_IS_SHARING)) {
|
||||||
|
@ -165,6 +166,15 @@ function follow_init(&$a) {
|
||||||
$contact = $r[0];
|
$contact = $r[0];
|
||||||
$contact_id = $r[0]['id'];
|
$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'])) {
|
||||||
|
require_once('include/group.php');
|
||||||
|
group_add_member($uid,'',$contact_id,$g[0]['def_gid']);
|
||||||
|
}
|
||||||
|
|
||||||
require_once("Photo.php");
|
require_once("Photo.php");
|
||||||
|
|
||||||
$photos = import_profile_photo($ret['photo'],$uid,$contact_id);
|
$photos = import_profile_photo($ret['photo'],$uid,$contact_id);
|
||||||
|
|
|
@ -330,6 +330,7 @@ function settings_post(&$a) {
|
||||||
$openid = ((x($_POST,'openid_url')) ? notags(trim($_POST['openid_url'])) : '');
|
$openid = ((x($_POST,'openid_url')) ? notags(trim($_POST['openid_url'])) : '');
|
||||||
$maxreq = ((x($_POST,'maxreq')) ? intval($_POST['maxreq']) : 0);
|
$maxreq = ((x($_POST,'maxreq')) ? intval($_POST['maxreq']) : 0);
|
||||||
$expire = ((x($_POST,'expire')) ? intval($_POST['expire']) : 0);
|
$expire = ((x($_POST,'expire')) ? intval($_POST['expire']) : 0);
|
||||||
|
$def_gid = ((x($_POST,'group-selection')) ? intval($_POST['group-selection']) : 0);
|
||||||
|
|
||||||
|
|
||||||
$expire_items = ((x($_POST,'expire_items')) ? intval($_POST['expire_items']) : 0);
|
$expire_items = ((x($_POST,'expire_items')) ? intval($_POST['expire_items']) : 0);
|
||||||
|
@ -355,6 +356,9 @@ function settings_post(&$a) {
|
||||||
$post_joingroup = (($_POST['post_joingroup'] == 1) ? 1: 0);
|
$post_joingroup = (($_POST['post_joingroup'] == 1) ? 1: 0);
|
||||||
$post_profilechange = (($_POST['post_profilechange'] == 1) ? 1: 0);
|
$post_profilechange = (($_POST['post_profilechange'] == 1) ? 1: 0);
|
||||||
|
|
||||||
|
if($page_flags == PAGE_PRVGROUP) {
|
||||||
|
$hidewall = 1;
|
||||||
|
}
|
||||||
|
|
||||||
$notify = 0;
|
$notify = 0;
|
||||||
|
|
||||||
|
@ -441,7 +445,7 @@ function settings_post(&$a) {
|
||||||
set_pconfig(local_user(),'system','post_profilechange', $post_profilechange);
|
set_pconfig(local_user(),'system','post_profilechange', $post_profilechange);
|
||||||
|
|
||||||
|
|
||||||
$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, `maxreq` = %d, `expire` = %d, `openidserver` = '%s', `blockwall` = %d, `hidewall` = %d, `blocktags` = %d, `unkmail` = %d, `cntunkmail` = %d WHERE `uid` = %d LIMIT 1",
|
$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, `maxreq` = %d, `expire` = %d, `openidserver` = '%s', `def_gid` = %d, `blockwall` = %d, `hidewall` = %d, `blocktags` = %d, `unkmail` = %d, `cntunkmail` = %d WHERE `uid` = %d LIMIT 1",
|
||||||
dbesc($username),
|
dbesc($username),
|
||||||
dbesc($email),
|
dbesc($email),
|
||||||
dbesc($openid),
|
dbesc($openid),
|
||||||
|
@ -457,6 +461,7 @@ function settings_post(&$a) {
|
||||||
intval($maxreq),
|
intval($maxreq),
|
||||||
intval($expire),
|
intval($expire),
|
||||||
dbesc($openidserver),
|
dbesc($openidserver),
|
||||||
|
intval($def_gid),
|
||||||
intval($blockwall),
|
intval($blockwall),
|
||||||
intval($hidewall),
|
intval($hidewall),
|
||||||
intval($blocktags),
|
intval($blocktags),
|
||||||
|
@ -833,6 +838,13 @@ function settings_content(&$a) {
|
||||||
'$page_freelove' => array('page-flags', t('Automatic Friend Account'), PAGE_FREELOVE,
|
'$page_freelove' => array('page-flags', t('Automatic Friend Account'), PAGE_FREELOVE,
|
||||||
t('Automatically approve all connection/friend requests as friends'),
|
t('Automatically approve all connection/friend requests as friends'),
|
||||||
($a->user['page-flags'] == PAGE_FREELOVE)),
|
($a->user['page-flags'] == PAGE_FREELOVE)),
|
||||||
|
|
||||||
|
'$page_prvgroup' => array('page-flags', t('Private Forum'), PAGE_PRVGROUP,
|
||||||
|
t('Private forum - approved members only [Experimental]'),
|
||||||
|
($a->user['page-flags'] == PAGE_PRVGROUP)),
|
||||||
|
|
||||||
|
'$experimental' => ( (intval(get_config('system','prvgroup_testing'))) ? 'true' : ''),
|
||||||
|
|
||||||
));
|
));
|
||||||
|
|
||||||
$noid = get_config('system','no_openid');
|
$noid = get_config('system','no_openid');
|
||||||
|
@ -934,6 +946,9 @@ function settings_content(&$a) {
|
||||||
'photos' => array('expire_photos', t("Expire photos:"), $expire_photos, '', array(t('No'),t('Yes'))),
|
'photos' => array('expire_photos', t("Expire photos:"), $expire_photos, '', array(t('No'),t('Yes'))),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
require_once('include/group.php');
|
||||||
|
$group_select = mini_group_select(local_user(),$a->user['def_gid']);
|
||||||
|
|
||||||
$o .= replace_macros($stpl,array(
|
$o .= replace_macros($stpl,array(
|
||||||
'$ptitle' => t('Account Settings'),
|
'$ptitle' => t('Account Settings'),
|
||||||
|
|
||||||
|
@ -941,7 +956,6 @@ function settings_content(&$a) {
|
||||||
'$baseurl' => $a->get_baseurl(true),
|
'$baseurl' => $a->get_baseurl(true),
|
||||||
'$uid' => local_user(),
|
'$uid' => local_user(),
|
||||||
'$form_security_token' => get_form_security_token("settings"),
|
'$form_security_token' => get_form_security_token("settings"),
|
||||||
|
|
||||||
'$nickname_block' => $prof_addr,
|
'$nickname_block' => $prof_addr,
|
||||||
|
|
||||||
'$h_pass' => t('Password Settings'),
|
'$h_pass' => t('Password Settings'),
|
||||||
|
@ -968,6 +982,10 @@ function settings_content(&$a) {
|
||||||
'$suggestme' => $suggestme,
|
'$suggestme' => $suggestme,
|
||||||
'$blockwall'=> $blockwall, // array('blockwall', t('Allow friends to post to your profile page:'), !$blockwall, ''),
|
'$blockwall'=> $blockwall, // array('blockwall', t('Allow friends to post to your profile page:'), !$blockwall, ''),
|
||||||
'$blocktags'=> $blocktags, // array('blocktags', t('Allow friends to tag your posts:'), !$blocktags, ''),
|
'$blocktags'=> $blocktags, // array('blocktags', t('Allow friends to tag your posts:'), !$blocktags, ''),
|
||||||
|
'$group_lbl_select' => t('Default privacy group for new contacts'),
|
||||||
|
'$group_select' => $group_select,
|
||||||
|
|
||||||
|
|
||||||
'$expire' => $expire_arr,
|
'$expire' => $expire_arr,
|
||||||
|
|
||||||
'$profile_in_dir' => $profile_in_dir,
|
'$profile_in_dir' => $profile_in_dir,
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
define( 'UPDATE_VERSION' , 1143 );
|
define( 'UPDATE_VERSION' , 1144 );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -1246,5 +1246,12 @@ function update_1142() {
|
||||||
return UPDATE_SUCCESS ;
|
return UPDATE_SUCCESS ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function update_1143() {
|
||||||
|
$r = q("alter table user add def_gid int(11) not null default '0' after service_class");
|
||||||
|
if(! $r)
|
||||||
|
return UPDATE_FAILED ;
|
||||||
|
return UPDATE_SUCCESS ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
5
view/group_selection.tpl
Normal file
5
view/group_selection.tpl
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
<select name="group-selection" id="group-selection">
|
||||||
|
{{ for $groups as $group }}
|
||||||
|
<option value="$group.id" {{ if $group.selected }}selected="selected"{{ endif }} >$group.name</option>
|
||||||
|
{{ endfor }}
|
||||||
|
</select>
|
|
@ -2,3 +2,6 @@
|
||||||
{{inc field_radio.tpl with $field=$page_soapbox }}{{endinc}}
|
{{inc field_radio.tpl with $field=$page_soapbox }}{{endinc}}
|
||||||
{{inc field_radio.tpl with $field=$page_community }}{{endinc}}
|
{{inc field_radio.tpl with $field=$page_community }}{{endinc}}
|
||||||
{{inc field_radio.tpl with $field=$page_freelove }}{{endinc}}
|
{{inc field_radio.tpl with $field=$page_freelove }}{{endinc}}
|
||||||
|
{{ if $experimental }}
|
||||||
|
{{inc field_radio.tpl with $field=$page_prvgroup }}{{endinc}}
|
||||||
|
{{ endif }}
|
|
@ -56,9 +56,12 @@ $suggestme
|
||||||
|
|
||||||
$unkmail
|
$unkmail
|
||||||
|
|
||||||
|
|
||||||
{{inc field_input.tpl with $field=$cntunkmail }}{{endinc}}
|
{{inc field_input.tpl with $field=$cntunkmail }}{{endinc}}
|
||||||
|
|
||||||
{{inc field_input.tpl with $field=$expire.days }}{{endinc}}
|
{{inc field_input.tpl with $field=$expire.days }}{{endinc}}
|
||||||
|
|
||||||
|
|
||||||
<div class="field input">
|
<div class="field input">
|
||||||
<span class="field_help"><a href="#advanced-expire-popup" id="advanced-expire" class='popupbox' title="$expire.advanced">$expire.label</a></span>
|
<span class="field_help"><a href="#advanced-expire-popup" id="advanced-expire" class='popupbox' title="$expire.advanced">$expire.label</a></span>
|
||||||
<div style="display: none;">
|
<div style="display: none;">
|
||||||
|
@ -90,6 +93,9 @@ $unkmail
|
||||||
<br/>
|
<br/>
|
||||||
<div id="settings-default-perms-end"></div>
|
<div id="settings-default-perms-end"></div>
|
||||||
|
|
||||||
|
<label name="group-selection-lbl" for="group-selection">$group_lbl_select</label>
|
||||||
|
$group_select
|
||||||
|
|
||||||
|
|
||||||
<div class="settings-submit-wrapper" >
|
<div class="settings-submit-wrapper" >
|
||||||
<input type="submit" name="submit" class="settings-submit" value="Submit" />
|
<input type="submit" name="submit" class="settings-submit" value="Submit" />
|
||||||
|
|
Loading…
Reference in a new issue