Browse Source

more private forums, default privacy group for new contacts

pull/302/merge
friendica 9 years ago
parent
commit
7b0ded3f14
13 changed files with 131 additions and 34 deletions
  1. +1
    -1
      boot.php
  2. +1
    -0
      database.sql
  3. +8
    -0
      include/diaspora.php
  4. +26
    -2
      include/group.php
  5. +31
    -24
      include/items.php
  6. +4
    -4
      include/notifier.php
  7. +8
    -0
      mod/dfrn_request.php
  8. +10
    -0
      mod/follow.php
  9. +20
    -2
      mod/settings.php
  10. +8
    -1
      update.php
  11. +5
    -0
      view/group_selection.tpl
  12. +3
    -0
      view/pagetypes.tpl
  13. +6
    -0
      view/settings.tpl

+ 1
- 1
boot.php View File

@ -11,7 +11,7 @@ require_once('include/cache.php');
define ( 'FRIENDICA_PLATFORM', 'Friendica');
define ( 'FRIENDICA_VERSION', '3.0.1345' );
define ( 'DFRN_PROTOCOL_VERSION', '2.23' );
define ( 'DB_UPDATE_VERSION', 1143 );
define ( 'DB_UPDATE_VERSION', 1144 );
define ( 'EOL', "<br />\r\n" );
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );


+ 1
- 0
database.sql View File

@ -1028,6 +1028,7 @@ CREATE TABLE IF NOT EXISTS `user` (
`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',
`service_class` char(32) NOT NULL,
`def_gid` int(11) NOT NULL DEFAULT '0',
`allow_cid` mediumtext NOT NULL,
`allow_gid` mediumtext NOT NULL,
`deny_cid` mediumtext NOT NULL,


+ 8
- 0
include/diaspora.php View File

@ -569,6 +569,14 @@ 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'])) {
require_once('include/group.php');
group_add_member($importer['uid'],'',$contact_record['id'],$g[0]['def_gid']);
}
if($importer['page-flags'] == PAGE_NORMAL) {
$hash = random_string() . (string) time(); // Generate a confirm_key


+ 26
- 2
include/group.php View File

@ -97,8 +97,9 @@ function group_rmv_member($uid,$name,$member) {
}
function group_add_member($uid,$name,$member) {
$gid = group_byname($uid,$name);
function group_add_member($uid,$name,$member,$gid = 0) {
if(! $gid)
$gid = group_byname($uid,$name);
if((! $gid) || (! $uid) || (! $member))
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) {


+ 31
- 24
include/items.php View File

@ -988,33 +988,31 @@ function tag_deliver($uid,$item_id) {
}
}
if((! $mention) && (! $prvgroup))
if(! $mention)
return;
if($mention) {
// send a notification
require_once('include/enotify.php');
notification(array(
'type' => NOTIFY_TAGSELF,
'notify_flags' => $u[0]['notify-flags'],
'language' => $u[0]['language'],
'to_name' => $u[0]['username'],
'to_email' => $u[0]['email'],
'uid' => $u[0]['uid'],
'item' => $item,
'link' => $a->get_baseurl() . '/display/' . $u[0]['nickname'] . '/' . $item['id'],
'source_name' => $item['author-name'],
'source_link' => $item['author-link'],
'source_photo' => $item['author-avatar'],
'verb' => ACTIVITY_TAG,
'otype' => 'item'
));
// send a notification
if((! $community_page) && (! prvgroup))
return;
require_once('include/enotify.php');
notification(array(
'type' => NOTIFY_TAGSELF,
'notify_flags' => $u[0]['notify-flags'],
'language' => $u[0]['language'],
'to_name' => $u[0]['username'],
'to_email' => $u[0]['email'],
'uid' => $u[0]['uid'],
'item' => $item,
'link' => $a->get_baseurl() . '/display/' . $u[0]['nickname'] . '/' . $item['id'],
'source_name' => $item['author-name'],
'source_link' => $item['author-link'],
'source_photo' => $item['author-avatar'],
'verb' => ACTIVITY_TAG,
'otype' => 'item'
));
if(! $community_page)
return;
}
// tgroup delivery - setup a second delivery chain
// 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;
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",
intval($forum_mode),
dbesc($c[0]['name']),
dbesc($c[0]['url']),
dbesc($c[0]['thumb']),
@ -2716,6 +2717,12 @@ function new_follower($importer,$contact,$datarray,$item,$sharing = false) {
);
$a = get_app();
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)) {
$email_tpl = get_intltext_template('follow_notify_eml.tpl');
$email = replace_macros($email_tpl, array(


+ 4
- 4
include/notifier.php View File

@ -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;
}
@ -265,10 +265,10 @@ function notifier_run($argv, $argc){
$deny_people = expand_acl($parent['deny_cid']);
$deny_groups = expand_groups(expand_acl($parent['deny_gid']));
// if our parent is a forum, uplink to the origional author causing
// a delivery fork
// if our parent is a public forum (forum_mode == 1), uplink to the origional author causing
// 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);
}


+ 8
- 0
mod/dfrn_request.php View File

@ -370,6 +370,14 @@ function dfrn_request_post(&$a) {
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'])) {
require_once('include/group.php');
group_add_member($uid,'',$contact_id,$g[0]['def_gid']);
}
$photo = avatar_img($addr);
$r = q("UPDATE `contact` SET


+ 10
- 0
mod/follow.php View File

@ -109,6 +109,7 @@ function follow_init(&$a) {
dbesc($ret['poll'])
);
if(count($r)) {
// update contact
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_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");
$photos = import_profile_photo($ret['photo'],$uid,$contact_id);


+ 20
- 2
mod/settings.php View File

@ -330,6 +330,7 @@ function settings_post(&$a) {
$openid = ((x($_POST,'openid_url')) ? notags(trim($_POST['openid_url'])) : '');
$maxreq = ((x($_POST,'maxreq')) ? intval($_POST['maxreq']) : 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);
@ -355,6 +356,9 @@ function settings_post(&$a) {
$post_joingroup = (($_POST['post_joingroup'] == 1) ? 1: 0);
$post_profilechange = (($_POST['post_profilechange'] == 1) ? 1: 0);
if($page_flags == PAGE_PRVGROUP) {
$hidewall = 1;
}
$notify = 0;
@ -441,7 +445,7 @@ function settings_post(&$a) {
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($email),
dbesc($openid),
@ -457,6 +461,7 @@ function settings_post(&$a) {
intval($maxreq),
intval($expire),
dbesc($openidserver),
intval($def_gid),
intval($blockwall),
intval($hidewall),
intval($blocktags),
@ -833,6 +838,13 @@ function settings_content(&$a) {
'$page_freelove' => array('page-flags', t('Automatic Friend Account'), PAGE_FREELOVE,
t('Automatically approve all connection/friend requests as friends'),
($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');
@ -934,6 +946,9 @@ function settings_content(&$a) {
'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(
'$ptitle' => t('Account Settings'),
@ -941,7 +956,6 @@ function settings_content(&$a) {
'$baseurl' => $a->get_baseurl(true),
'$uid' => local_user(),
'$form_security_token' => get_form_security_token("settings"),
'$nickname_block' => $prof_addr,
'$h_pass' => t('Password Settings'),
@ -968,6 +982,10 @@ function settings_content(&$a) {
'$suggestme' => $suggestme,
'$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, ''),
'$group_lbl_select' => t('Default privacy group for new contacts'),
'$group_select' => $group_select,
'$expire' => $expire_arr,
'$profile_in_dir' => $profile_in_dir,


+ 8
- 1
update.php View File

@ -1,6 +1,6 @@
<?php
define( 'UPDATE_VERSION' , 1143 );
define( 'UPDATE_VERSION' , 1144 );
/**
*
@ -1246,5 +1246,12 @@ function update_1142() {
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
- 0
view/group_selection.tpl View 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>

+ 3
- 0
view/pagetypes.tpl View File

@ -2,3 +2,6 @@
{{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_freelove }}{{endinc}}
{{ if $experimental }}
{{inc field_radio.tpl with $field=$page_prvgroup }}{{endinc}}
{{ endif }}

+ 6
- 0
view/settings.tpl View File

@ -56,9 +56,12 @@ $suggestme
$unkmail
{{inc field_input.tpl with $field=$cntunkmail }}{{endinc}}
{{inc field_input.tpl with $field=$expire.days }}{{endinc}}
<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>
<div style="display: none;">
@ -90,6 +93,9 @@ $unkmail
<br/>
<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" >
<input type="submit" name="submit" class="settings-submit" value="Submit" />


Loading…
Cancel
Save