auto permissions (such as for forums or whatever) - untested but might just work
This commit is contained in:
parent
c1a5c88720
commit
6e6b268e25
@ -86,9 +86,10 @@ function get_all_perms($uid,$observer,$internal_use = true) {
|
||||
if($observer) {
|
||||
if(! $abook_checked) {
|
||||
$x = q("select abook_my_perms, abook_flags from abook
|
||||
where abook_channel = %d and abook_xchan = '%s' limit 1",
|
||||
where abook_channel = %d and abook_xchan = '%s' and not ( abook_flags & %d ) limit 1",
|
||||
intval($uid),
|
||||
dbesc($observer)
|
||||
dbesc($observer),
|
||||
intval(ABOOK_FLAG_SELF)
|
||||
);
|
||||
$abook_checked = true;
|
||||
}
|
||||
@ -210,9 +211,10 @@ function perm_is_allowed($uid,$observer,$permission) {
|
||||
return false;
|
||||
|
||||
if($observer) {
|
||||
$x = q("select abook_my_perms, abook_flags from abook where abook_channel = %d and abook_xchan = '%s' limit 1",
|
||||
$x = q("select abook_my_perms, abook_flags from abook where abook_channel = %d and abook_xchan = '%s' and not ( abook_flags & %d ) limit 1",
|
||||
intval($uid),
|
||||
dbesc($observer)
|
||||
dbesc($observer),
|
||||
intval(ABOOK_FLAG_SELF)
|
||||
);
|
||||
|
||||
// If they're blocked - they can't read or write
|
||||
|
@ -107,8 +107,8 @@ function connections_post(&$a) {
|
||||
notice( t('Failed to update connnection record.') . EOL);
|
||||
|
||||
|
||||
if((x($a->data,'abook')) && $a->data['abook']['abook_my_perms'] != $abook_my_perms) {
|
||||
// FIXME - this message type is not yet handled in the notifier
|
||||
if((x($a->data,'abook')) && $a->data['abook']['abook_my_perms'] != $abook_my_perms
|
||||
&& (! ($a->data['abook']['abook_flags'] & ABOOK_FLAG_SELF))) {
|
||||
proc_run('php', 'include/notifier.php', 'permission_update', $contact_id);
|
||||
}
|
||||
|
||||
@ -238,66 +238,69 @@ function connections_content(&$a) {
|
||||
$contact = $a->data['abook'];
|
||||
|
||||
|
||||
$tabs = array(
|
||||
$tabs = array(
|
||||
|
||||
array(
|
||||
'label' => t('View Profile'),
|
||||
'url' => $a->get_baseurl(true) . '/chanview/?f=&cid=' . $contact['abook_id'],
|
||||
'sel' => '',
|
||||
'title' => sprintf( t('View %s\'s profile'), $contact['xchan_name']),
|
||||
),
|
||||
array(
|
||||
'label' => t('View Profile'),
|
||||
'url' => $a->get_baseurl(true) . '/chanview/?f=&cid=' . $contact['abook_id'],
|
||||
'sel' => '',
|
||||
'title' => sprintf( t('View %s\'s profile'), $contact['xchan_name']),
|
||||
),
|
||||
|
||||
array(
|
||||
'label' => t('Refresh Permissions'),
|
||||
'url' => $a->get_baseurl(true) . '/connections/' . $contact['abook_id'] . '/refresh',
|
||||
'sel' => '',
|
||||
'title' => t('Fetch updated permissions'),
|
||||
),
|
||||
array(
|
||||
'label' => t('Refresh Permissions'),
|
||||
'url' => $a->get_baseurl(true) . '/connections/' . $contact['abook_id'] . '/refresh',
|
||||
'sel' => '',
|
||||
'title' => t('Fetch updated permissions'),
|
||||
),
|
||||
|
||||
array(
|
||||
'label' => (($contact['abook_flags'] & ABOOK_FLAG_BLOCKED) ? t('Unblock') : t('Block')),
|
||||
'url' => $a->get_baseurl(true) . '/connections/' . $contact['abook_id'] . '/block',
|
||||
'sel' => (($contact['abook_flags'] & ABOOK_FLAG_BLOCKED) ? 'active' : ''),
|
||||
'title' => t('Block or Unblock this connection'),
|
||||
),
|
||||
array(
|
||||
'label' => (($contact['abook_flags'] & ABOOK_FLAG_BLOCKED) ? t('Unblock') : t('Block')),
|
||||
'url' => $a->get_baseurl(true) . '/connections/' . $contact['abook_id'] . '/block',
|
||||
'sel' => (($contact['abook_flags'] & ABOOK_FLAG_BLOCKED) ? 'active' : ''),
|
||||
'title' => t('Block or Unblock this connection'),
|
||||
),
|
||||
|
||||
array(
|
||||
'label' => (($contact['abook_flags'] & ABOOK_FLAG_IGNORED) ? t('Unignore') : t('Ignore')),
|
||||
'url' => $a->get_baseurl(true) . '/connections/' . $contact['abook_id'] . '/ignore',
|
||||
'sel' => (($contact['abook_flags'] & ABOOK_FLAG_IGNORED) ? 'active' : ''),
|
||||
'title' => t('Ignore or Unignore this connection'),
|
||||
),
|
||||
array(
|
||||
'label' => (($contact['abook_flags'] & ABOOK_FLAG_ARCHIVED) ? t('Unarchive') : t('Archive')),
|
||||
'url' => $a->get_baseurl(true) . '/connections/' . $contact['abook_id'] . '/archive',
|
||||
'sel' => (($contact['abook_flags'] & ABOOK_FLAG_ARCHIVED) ? 'active' : ''),
|
||||
'title' => t('Archive or Unarchive this connection'),
|
||||
),
|
||||
array(
|
||||
'label' => (($contact['abook_flags'] & ABOOK_FLAG_HIDDEN) ? t('Unhide') : t('Hide')),
|
||||
'url' => $a->get_baseurl(true) . '/connections/' . $contact['abook_id'] . '/hide',
|
||||
'sel' => (($contact['abook_flags'] & ABOOK_FLAG_HIDDEN) ? 'active' : ''),
|
||||
'title' => t('Hide or Unhide this connection'),
|
||||
),
|
||||
array(
|
||||
'label' => (($contact['abook_flags'] & ABOOK_FLAG_IGNORED) ? t('Unignore') : t('Ignore')),
|
||||
'url' => $a->get_baseurl(true) . '/connections/' . $contact['abook_id'] . '/ignore',
|
||||
'sel' => (($contact['abook_flags'] & ABOOK_FLAG_IGNORED) ? 'active' : ''),
|
||||
'title' => t('Ignore or Unignore this connection'),
|
||||
),
|
||||
array(
|
||||
'label' => (($contact['abook_flags'] & ABOOK_FLAG_ARCHIVED) ? t('Unarchive') : t('Archive')),
|
||||
'url' => $a->get_baseurl(true) . '/connections/' . $contact['abook_id'] . '/archive',
|
||||
'sel' => (($contact['abook_flags'] & ABOOK_FLAG_ARCHIVED) ? 'active' : ''),
|
||||
'title' => t('Archive or Unarchive this connection'),
|
||||
),
|
||||
array(
|
||||
'label' => (($contact['abook_flags'] & ABOOK_FLAG_HIDDEN) ? t('Unhide') : t('Hide')),
|
||||
'url' => $a->get_baseurl(true) . '/connections/' . $contact['abook_id'] . '/hide',
|
||||
'sel' => (($contact['abook_flags'] & ABOOK_FLAG_HIDDEN) ? 'active' : ''),
|
||||
'title' => t('Hide or Unhide this connection'),
|
||||
),
|
||||
|
||||
array(
|
||||
'label' => t('Delete'),
|
||||
'url' => $a->get_baseurl(true) . '/connections/' . $contact['abook_id'] . '/drop',
|
||||
'sel' => '',
|
||||
'title' => t('Delete this connection'),
|
||||
),
|
||||
|
||||
);
|
||||
|
||||
$tab_tpl = get_markup_template('common_tabs.tpl');
|
||||
$t = replace_macros($tab_tpl, array('$tabs'=>$tabs));
|
||||
array(
|
||||
'label' => t('Delete'),
|
||||
'url' => $a->get_baseurl(true) . '/connections/' . $contact['abook_id'] . '/drop',
|
||||
'sel' => '',
|
||||
'title' => t('Delete this connection'),
|
||||
),
|
||||
|
||||
);
|
||||
|
||||
$self = false;
|
||||
|
||||
if(! ($contact['abook_flags'] & ABOOK_FLAG_SELF)) {
|
||||
$tab_tpl = get_markup_template('common_tabs.tpl');
|
||||
$t = replace_macros($tab_tpl, array('$tabs'=>$tabs));
|
||||
}
|
||||
else
|
||||
$self = true;
|
||||
|
||||
$a->page['htmlhead'] .= replace_macros(get_markup_template('contact_head.tpl'), array(
|
||||
'$baseurl' => $a->get_baseurl(true),
|
||||
'$editselect' => $editselect,
|
||||
'$editselect' => $editselect
|
||||
));
|
||||
|
||||
require_once('include/contact_selectors.php');
|
||||
@ -324,66 +327,70 @@ function connections_content(&$a) {
|
||||
$global_perms = get_perms();
|
||||
$existing = get_all_perms(local_user(),$contact);
|
||||
|
||||
|
||||
|
||||
foreach($global_perms as $k => $v) {
|
||||
$perms[] = array('perms_' . $k, $v[3], (($contact['abook_their_perms'] & $v[1]) ? "1" : ""),((($contact['abook_my_perms'] & $v[1]) || $existing[$k]) ? "1" : ""), $v[1], (($channel[$v[0]] == PERMS_SPECIFIC) ? '' : '1'), $v[4]);
|
||||
}
|
||||
|
||||
|
||||
$o .= replace_macros($tpl,array(
|
||||
|
||||
'$header' => sprintf( t('Connections: settings for %s'),$contact['xchan_name']),
|
||||
'$addr' => $contact['xchan_addr'],
|
||||
'$viewprof' => t('View Profile'),
|
||||
'$lbl_slider' => t('Slide to adjust your degree of friendship'),
|
||||
'$slide' => $slide,
|
||||
'$tabs' => $t,
|
||||
'$tab_str' => $tab_str,
|
||||
'$submit' => t('Submit'),
|
||||
'$lbl_vis1' => t('Profile Visibility'),
|
||||
'$lbl_vis2' => sprintf( t('Please choose the profile you would like to display to %s when viewing your profile securely.'), $contact['name']),
|
||||
'$lbl_info1' => t('Contact Information / Notes'),
|
||||
'$infedit' => t('Edit contact notes'),
|
||||
'$close' => $contact['abook_closeness'],
|
||||
'$them' => t('Their Settings'),
|
||||
'$me' => t('My Settings'),
|
||||
'$perms' => $perms,
|
||||
'$full' => t('Full Sharing'),
|
||||
'$cautious' => t('Cautious Sharing'),
|
||||
'$follow' => t('Follow Only'),
|
||||
'$advanced' => t('Advanced Permissions'),
|
||||
'$quick' => t('Quick Links'),
|
||||
'$common_link' => $a->get_baseurl(true) . '/common/loc/' . local_user() . '/' . $contact['id'],
|
||||
'$all_friends' => $all_friends,
|
||||
'$relation_text' => $relation_text,
|
||||
'$visit' => sprintf( t('Visit %s\'s profile [%s]'),$contact['xchan_name'],$contact['xchan_url']),
|
||||
'$blockunblock' => t('Block/Unblock contact'),
|
||||
'$ignorecont' => t('Ignore contact'),
|
||||
'$lblcrepair' => t("Repair URL settings"),
|
||||
'$lblrecent' => t('View conversations'),
|
||||
'$lblsuggest' => $lblsuggest,
|
||||
'$delete' => t('Delete contact'),
|
||||
'$poll_interval' => contact_poll_interval($contact['priority'],(! $poll_enabled)),
|
||||
'$poll_enabled' => $poll_enabled,
|
||||
'$lastupdtext' => t('Last update:'),
|
||||
'$lost_contact' => $lost_contact,
|
||||
'$updpub' => t('Update public posts'),
|
||||
'$last_update' => $last_update,
|
||||
'$udnow' => t('Update now'),
|
||||
'$header' => (($self) ? t('Automatic Permissions Settings') : sprintf( t('Connections: settings for %s'),$contact['xchan_name'])),
|
||||
'$addr' => $contact['xchan_addr'],
|
||||
'$notself' => (($self) ? '' : '1'),
|
||||
'$self' => (($self) ? '1' : ''),
|
||||
'$autolbl' => t('When receiving a channel introduction, any permissions provided here will be applied to the new connnection automatically and the introduction approved. Leave this page if you do not wish to use this feature.'),
|
||||
'$viewprof' => t('View Profile'),
|
||||
'$lbl_slider' => t('Slide to adjust your degree of friendship'),
|
||||
'$slide' => $slide,
|
||||
'$tabs' => $t,
|
||||
'$tab_str' => $tab_str,
|
||||
'$submit' => t('Submit'),
|
||||
'$lbl_vis1' => t('Profile Visibility'),
|
||||
'$lbl_vis2' => sprintf( t('Please choose the profile you would like to display to %s when viewing your profile securely.'), $contact['name']),
|
||||
'$lbl_info1' => t('Contact Information / Notes'),
|
||||
'$infedit' => t('Edit contact notes'),
|
||||
'$close' => $contact['abook_closeness'],
|
||||
'$them' => t('Their Settings'),
|
||||
'$me' => t('My Settings'),
|
||||
'$perms' => $perms,
|
||||
'$forum' => t('Forum Members'),
|
||||
'$full' => t('Full Sharing'),
|
||||
'$cautious' => t('Cautious Sharing'),
|
||||
'$follow' => t('Follow Only'),
|
||||
'$permlbl' => t('Permissions'),
|
||||
'$advanced' => t('Advanced Permissions'),
|
||||
'$quick' => t('Quick Links'),
|
||||
'$common_link' => $a->get_baseurl(true) . '/common/loc/' . local_user() . '/' . $contact['id'],
|
||||
'$all_friends' => $all_friends,
|
||||
'$relation_text' => $relation_text,
|
||||
'$visit' => sprintf( t('Visit %s\'s profile - %s'),$contact['xchan_name'],$contact['xchan_url']),
|
||||
'$blockunblock' => t('Block/Unblock contact'),
|
||||
'$ignorecont' => t('Ignore contact'),
|
||||
'$lblcrepair' => t("Repair URL settings"),
|
||||
'$lblrecent' => t('View conversations'),
|
||||
'$lblsuggest' => $lblsuggest,
|
||||
'$delete' => t('Delete contact'),
|
||||
'$poll_interval' => contact_poll_interval($contact['priority'],(! $poll_enabled)),
|
||||
'$poll_enabled' => $poll_enabled,
|
||||
'$lastupdtext' => t('Last update:'),
|
||||
'$lost_contact' => $lost_contact,
|
||||
'$updpub' => t('Update public posts'),
|
||||
'$last_update' => $last_update,
|
||||
'$udnow' => t('Update now'),
|
||||
// '$profile_select' => contact_profile_assign($contact['profile_id'],(($contact['network'] !== NETWORK_DFRN) ? true : false)),
|
||||
'$contact_id' => $contact['abook_id'],
|
||||
'$block_text' => (($contact['blocked']) ? t('Unblock') : t('Block') ),
|
||||
'$ignore_text' => (($contact['readonly']) ? t('Unignore') : t('Ignore') ),
|
||||
'$blocked' => (($contact['blocked']) ? t('Currently blocked') : ''),
|
||||
'$ignored' => (($contact['readonly']) ? t('Currently ignored') : ''),
|
||||
'$archived' => (($contact['archive']) ? t('Currently archived') : ''),
|
||||
'$hidden' => array('hidden', t('Hide this contact from others'), ($contact['hidden'] == 1), t('Replies/likes to your public posts <strong>may</strong> still be visible')),
|
||||
'$photo' => $contact['photo'],
|
||||
'$name' => $contact['name'],
|
||||
'$dir_icon' => $dir_icon,
|
||||
'$alt_text' => $alt_text,
|
||||
'$sparkle' => $sparkle,
|
||||
'$url' => $url
|
||||
'$contact_id' => $contact['abook_id'],
|
||||
'$block_text' => (($contact['blocked']) ? t('Unblock') : t('Block') ),
|
||||
'$ignore_text' => (($contact['readonly']) ? t('Unignore') : t('Ignore') ),
|
||||
'$blocked' => (($contact['blocked']) ? t('Currently blocked') : ''),
|
||||
'$ignored' => (($contact['readonly']) ? t('Currently ignored') : ''),
|
||||
'$archived' => (($contact['archive']) ? t('Currently archived') : ''),
|
||||
'$hidden' => array('hidden', t('Hide this contact from others'), ($contact['hidden'] == 1), t('Replies/likes to your public posts <strong>may</strong> still be visible')),
|
||||
'$photo' => $contact['photo'],
|
||||
'$name' => $contact['name'],
|
||||
'$dir_icon' => $dir_icon,
|
||||
'$alt_text' => $alt_text,
|
||||
'$sparkle' => $sparkle,
|
||||
'$url' => $url
|
||||
|
||||
));
|
||||
|
||||
@ -395,10 +402,10 @@ function connections_content(&$a) {
|
||||
|
||||
}
|
||||
|
||||
$blocked = false;
|
||||
$hidden = false;
|
||||
$ignored = false;
|
||||
$archived = false;
|
||||
$blocked = false;
|
||||
$hidden = false;
|
||||
$ignored = false;
|
||||
$archived = false;
|
||||
$unblocked = false;
|
||||
$all = false;
|
||||
|
||||
|
@ -14,16 +14,29 @@ function get_theme_config_file($theme){
|
||||
return null;
|
||||
}
|
||||
|
||||
function settings_init(&$a) {
|
||||
function settings_aside(&$a) {
|
||||
|
||||
|
||||
// default is channel settings in the absence of other arguments
|
||||
|
||||
if(argc() == 1) {
|
||||
// We are setting these values - don't use the argc(), argv() functions here
|
||||
$a->argc = 2;
|
||||
$a->argv[] = 'channel';
|
||||
}
|
||||
|
||||
$abook_self_id = 0;
|
||||
|
||||
// Retrieve the 'self' address book entry for use in the auto-permissions link
|
||||
if(local_user()) {
|
||||
$abk = q("select abook_id from abook where abook_channel = %d and ( abook_flags & %d ) limit 1",
|
||||
intval(local_user()),
|
||||
intval(ABOOK_FLAG_SELF)
|
||||
);
|
||||
if($abk)
|
||||
$abook_self_id = $abk[0]['abook_id'];
|
||||
}
|
||||
|
||||
|
||||
$tabs = array(
|
||||
array(
|
||||
@ -74,6 +87,12 @@ function settings_init(&$a) {
|
||||
// 'selected' => ''
|
||||
// ),
|
||||
|
||||
array(
|
||||
'label' => t('Automatic Permissions (Advanced)'),
|
||||
'url' => $a->get_baseurl(true) . '/connections/' . $abook_self_id,
|
||||
'selected' => ''
|
||||
),
|
||||
|
||||
|
||||
);
|
||||
|
||||
|
@ -26,6 +26,8 @@ function connectFullShare() {
|
||||
$('#me_id_perms_view_profile').attr('checked','checked');
|
||||
$('#me_id_perms_view_photos').attr('checked','checked');
|
||||
$('#me_id_perms_view_contacts').attr('checked','checked');
|
||||
$('#me_id_perms_view_storage').attr('checked','checked');
|
||||
$('#me_id_perms_view_pages').attr('checked','checked');
|
||||
$('#me_id_perms_send_stream').attr('checked','checked');
|
||||
$('#me_id_perms_post_wall').attr('checked','checked');
|
||||
$('#me_id_perms_post_comments').attr('checked','checked');
|
||||
@ -39,12 +41,28 @@ function connectCautiousShare() {
|
||||
$('#me_id_perms_view_stream').attr('checked','checked');
|
||||
$('#me_id_perms_view_profile').attr('checked','checked');
|
||||
$('#me_id_perms_view_photos').attr('checked','checked');
|
||||
$('#me_id_perms_view_storage').attr('checked','checked');
|
||||
$('#me_id_perms_view_pages').attr('checked','checked');
|
||||
$('#me_id_perms_send_stream').attr('checked','checked');
|
||||
$('#me_id_perms_post_comments').attr('checked','checked');
|
||||
$('#me_id_perms_post_mail').attr('checked','checked');
|
||||
|
||||
}
|
||||
|
||||
function connectForum() {
|
||||
$('#me_id_perms_view_stream').attr('checked','checked');
|
||||
$('#me_id_perms_view_profile').attr('checked','checked');
|
||||
$('#me_id_perms_view_photos').attr('checked','checked');
|
||||
$('#me_id_perms_view_contacts').attr('checked','checked');
|
||||
$('#me_id_perms_view_storage').attr('checked','checked');
|
||||
$('#me_id_perms_view_pages').attr('checked','checked');
|
||||
$('#me_id_perms_send_stream').attr('checked','checked');
|
||||
$('#me_id_perms_post_comments').attr('checked','checked');
|
||||
$('#me_id_perms_post_mail').attr('checked','checked');
|
||||
$('#me_id_perms_tag_deliver').attr('checked','checked');
|
||||
}
|
||||
|
||||
|
||||
function connectFollowOnly() {
|
||||
$('#me_id_perms_send_stream').attr('checked','checked');
|
||||
|
||||
|
@ -3,20 +3,28 @@
|
||||
|
||||
<h3>$addr</h3>
|
||||
|
||||
{{ if $notself }}
|
||||
<div id="connection-flag-tabs">
|
||||
$tabs
|
||||
</div>
|
||||
{{ endif }}
|
||||
|
||||
{{ if $self }}
|
||||
<div id="autoperm-desc" class="descriptive-paragraph">$autolbl</div>
|
||||
{{ endif }}
|
||||
|
||||
<div id="contact-edit-wrapper">
|
||||
|
||||
{{ if $notself }}
|
||||
{{ if $slide }}
|
||||
<h3>$lbl_slider</h3>
|
||||
|
||||
$slide
|
||||
|
||||
{{ endif }}
|
||||
{{ endif }}
|
||||
|
||||
<h3>Permissions</h3>
|
||||
<h3>$permlbl</h3>
|
||||
|
||||
<form action="connections/$contact_id" method="post" >
|
||||
<input type="hidden" name="contact_id" value="$contact_id">
|
||||
@ -25,6 +33,9 @@ $slide
|
||||
<br />
|
||||
<b>$quick</b>
|
||||
<ul>
|
||||
{{ if $self }}
|
||||
<li><a href="#" onclick="connectForum(); return false;">$forum</a></li>
|
||||
{{ endif }}
|
||||
<li><a href="#" onclick="connectFullShare(); return false;">$full</a></li>
|
||||
<li><a href="#" onclick="connectCautiousShare(); return false;">$cautious</a></li>
|
||||
<li><a href="#" onclick="connectFollowOnly(); return false;">$follow</a></li>
|
||||
|
@ -3,20 +3,28 @@
|
||||
|
||||
<h3>{{$addr}}</h3>
|
||||
|
||||
{{if $notself}}
|
||||
<div id="connection-flag-tabs">
|
||||
{{$tabs}}
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{if $self}}
|
||||
<div id="autoperm-desc" class="descriptive-paragraph">{{$autolbl}}</div>
|
||||
{{/if}}
|
||||
|
||||
<div id="contact-edit-wrapper">
|
||||
|
||||
{{if $notself}}
|
||||
{{if $slide}}
|
||||
<h3>{{$lbl_slider}}</h3>
|
||||
|
||||
{{$slide}}
|
||||
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
<h3>Permissions</h3>
|
||||
<h3>{{$permlbl}}</h3>
|
||||
|
||||
<form action="connections/{{$contact_id}}" method="post" >
|
||||
<input type="hidden" name="contact_id" value="{{$contact_id}}">
|
||||
@ -25,6 +33,9 @@
|
||||
<br />
|
||||
<b>{{$quick}}</b>
|
||||
<ul>
|
||||
{{if $self}}
|
||||
<li><a href="#" onclick="connectForum(); return false;">{{$forum}}</a></li>
|
||||
{{/if}}
|
||||
<li><a href="#" onclick="connectFullShare(); return false;">{{$full}}</a></li>
|
||||
<li><a href="#" onclick="connectCautiousShare(); return false;">{{$cautious}}</a></li>
|
||||
<li><a href="#" onclick="connectFollowOnly(); return false;">{{$follow}}</a></li>
|
||||
|
Reference in New Issue
Block a user