diff options
Diffstat (limited to 'mod/connections.php')
-rw-r--r-- | mod/connections.php | 116 |
1 files changed, 78 insertions, 38 deletions
diff --git a/mod/connections.php b/mod/connections.php index 8e002d870..2ad9342b8 100644 --- a/mod/connections.php +++ b/mod/connections.php @@ -23,6 +23,11 @@ function connections_init(&$a) { $a->data['abook'] = $r[0]; } } + + $channel = $a->get_channel(); + if($channel) + head_set_icon($channel['xchan_photo_s']); + } function connections_aside(&$a) { @@ -63,10 +68,10 @@ function connections_post(&$a) { call_hooks('contact_edit_post', $_POST); - $profile_id = intval($_POST['profile-assign']); + $profile_id = $_POST['profile-assign']; if($profile_id) { - $r = q("SELECT `id` FROM `profile` WHERE `id` = %d AND `uid` = %d LIMIT 1", - intval($profile_id), + $r = q("SELECT profile_guid FROM profile WHERE profile_guid = '%s' AND `uid` = %d LIMIT 1", + dbesc($profile_id), intval(local_user()) ); if(! count($r)) { @@ -99,9 +104,9 @@ function connections_post(&$a) { $abook_flags = ( $abook_flags ^ ABOOK_FLAG_PENDING ); } - $r = q("UPDATE abook SET abook_profile = %d, abook_my_perms = %d , abook_closeness = %d, abook_flags = %d + $r = q("UPDATE abook SET abook_profile = '%s', abook_my_perms = %d , abook_closeness = %d, abook_flags = %d where abook_id = %d AND abook_channel = %d LIMIT 1", - intval($profile_id), + dbesc($profile_id), intval($abook_my_perms), intval($closeness), intval($abook_flags), @@ -126,20 +131,34 @@ function connections_post(&$a) { intval(local_user()), intval($contact_id) ); - if($r) + if($r) { $a->data['abook'] = $r[0]; + } + + connections_clone($a); return; } +function connections_clone(&$a) { + + if(! array_key_exists('abook',$a->data)) + return; + $clone = $a->data['abook']; + + unset($clone['abook_id']); + unset($clone['abook_account']); + unset($clone['abook_channel']); + + build_sync_packet(0 /* use the current local_user */, array('abook' => array($clone))); +} function connections_content(&$a) { $sort_type = 0; $o = ''; - nav_set_selected('connections'); if(! local_user()) { @@ -183,40 +202,48 @@ function connections_content(&$a) { } if($cmd === 'block') { - if(abook_toggle_flag($orig_record[0],ABOOK_FLAG_BLOCKED)) + if(abook_toggle_flag($orig_record[0],ABOOK_FLAG_BLOCKED)) { info((($orig_record[0]['abook_flags'] & ABOOK_FLAG_BLOCKED) ? t('Channel has been unblocked') : t('Channel has been blocked')) . EOL ); + connections_clone($a); + } else notice(t('Unable to set address book parameters.') . EOL); goaway($a->get_baseurl(true) . '/connections/' . $contact_id); } if($cmd === 'ignore') { - if(abook_toggle_flag($orig_record[0],ABOOK_FLAG_IGNORED)) + if(abook_toggle_flag($orig_record[0],ABOOK_FLAG_IGNORED)) { info((($orig_record[0]['abook_flags'] & ABOOK_FLAG_IGNORED) ? t('Channel has been unignored') : t('Channel has been ignored')) . EOL ); + connections_clone($a); + } else notice(t('Unable to set address book parameters.') . EOL); goaway($a->get_baseurl(true) . '/connections/' . $contact_id); } if($cmd === 'archive') { - if(abook_toggle_flag($orig_record[0],ABOOK_FLAG_ARCHIVED)) + if(abook_toggle_flag($orig_record[0],ABOOK_FLAG_ARCHIVED)) { info((($orig_record[0]['abook_flags'] & ABOOK_FLAG_ARCHIVED) ? t('Channel has been unarchived') : t('Channel has been archived')) . EOL ); + connections_clone($a); + } else notice(t('Unable to set address book parameters.') . EOL); goaway($a->get_baseurl(true) . '/connections/' . $contact_id); } if($cmd === 'hide') { - if(abook_toggle_flag($orig_record[0],ABOOK_FLAG_HIDDEN)) + if(abook_toggle_flag($orig_record[0],ABOOK_FLAG_HIDDEN)) { info((($orig_record[0]['abook_flags'] & ABOOK_FLAG_HIDDEN) ? t('Channel has been unhidden') : t('Channel has been hidden')) . EOL ); + connections_clone($a); + } else notice(t('Unable to set address book parameters.') . EOL); goaway($a->get_baseurl(true) . '/connections/' . $contact_id); @@ -226,10 +253,12 @@ function connections_content(&$a) { if($cmd === 'approve') { if($orig_record[0]['abook_flags'] & ABOOK_FLAG_PENDING) { - if(abook_toggle_flag($orig_record[0],ABOOK_FLAG_PENDING)) + if(abook_toggle_flag($orig_record[0],ABOOK_FLAG_PENDING)) { info((($orig_record[0]['abook_flags'] & ABOOK_FLAG_PENDING) ? t('Channel has been approved') : t('Channel has been unapproved')) . EOL ); + connections_clone($a); + } else notice(t('Unable to set address book parameters.') . EOL); } @@ -244,6 +273,7 @@ function connections_content(&$a) { // terminate_friendship($a->get_channel(),$orig_record[0]); contact_remove(local_user(), $orig_record[0]['abook_id']); +// FIXME - send to clones info( t('Contact has been removed.') . EOL ); if(x($_SESSION,'return_url')) goaway($a->get_baseurl(true) . '/' . $_SESSION['return_url']); @@ -332,7 +362,7 @@ function connections_content(&$a) { $slider_tpl = get_markup_template('contact_slider.tpl'); $slide = replace_macros($slider_tpl,array( '$me' => t('Me'), - '$val' => $contact['abook_closeness'], + '$val' => (($contact['abook_closeness']) ? $contact['abook_closeness'] : 99), '$intimate' => t('Best Friends'), '$friends' => t('Friends'), '$oldfriends' => t('Former Friends'), @@ -345,12 +375,20 @@ function connections_content(&$a) { $channel = $a->get_channel(); $global_perms = get_perms(); - $existing = get_all_perms(local_user(),$contact); + $existing = get_all_perms(local_user(),$contact['abook_xchan']); $unapproved = array('pending', t('Approve this connection'), '', t('Accept connection to allow communication')); 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]); + $thisperm = (($contact['abook_my_perms'] & $v[1]) ? "1" : ''); + + // For auto permissions (when $self is true) we don't want to look at existing + // permissions because they are enabled for the channel owner + + if((! $self) && ($existing[$k])) + $thisperm = "1"; + + $perms[] = array('perms_' . $k, $v[3], (($contact['abook_their_perms'] & $v[1]) ? "1" : ""),$thisperm, $v[1], (($channel[$v[0]] == PERMS_SPECIFIC) ? '' : '1'), $v[4]); } $o .= replace_macros($tpl,array( @@ -368,10 +406,11 @@ function connections_content(&$a) { '$is_pending' => (($contact['abook_flags'] & ABOOK_FLAG_PENDING) ? 1 : ''), '$unapproved' => $unapproved, '$approve' => t('Approve this connection'), - '$noperms' => (((! $self) && (! $contact['abook_my_perms'])) ? t('Connection has no permissions!') : ''), + '$noperms' => (((! $self) && (! $contact['abook_my_perms'])) ? t('Connection has no individual permissions!') : ''), + '$noperm_desc' => (((! $self) && (! $contact['abook_my_perms'])) ? t('This may be appropriate based on your <a href="settings">privacy settings</a>, though you may wish to review the "Advanced Permissions"') : ''), '$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_vis2' => sprintf( t('Please choose the profile you would like to display to %s when viewing your profile securely.'), $contact['xchan_name']), '$lbl_info1' => t('Contact Information / Notes'), '$infedit' => t('Edit contact notes'), '$close' => $contact['abook_closeness'], @@ -383,7 +422,8 @@ function connections_content(&$a) { '$full' => t('Full Sharing'), '$cautious' => t('Cautious Sharing'), '$follow' => t('Follow Only'), - '$permlbl' => t('Permissions'), + '$permlbl' => t('Individual Permissions'), + '$permnote' => t('Individual permissions are only enabled for <a href="settings">privacy settings</a> which are set to "Only those you specifically allow". Otherwise they are controlled by your privacy settings.'), '$advanced' => t('Advanced Permissions'), '$quick' => t('Quick Links'), '$common_link' => $a->get_baseurl(true) . '/common/loc/' . local_user() . '/' . $contact['id'], @@ -403,7 +443,8 @@ function connections_content(&$a) { '$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)), + '$profile_select' => contact_profile_assign($contact['abook_profile']), + '$multiprofs' => feature_enabled(local_user(),'multi_profiles'), '$contact_id' => $contact['abook_id'], '$block_text' => (($contact['blocked']) ? t('Unblock') : t('Block') ), '$ignore_text' => (($contact['readonly']) ? t('Unignore') : t('Ignore') ), @@ -469,6 +510,7 @@ function connections_content(&$a) { $search_flags = ABOOK_FLAG_PENDING; $head = t('New'); $pending = true; + nav_set_selected('intros'); break; case 'all': @@ -582,26 +624,24 @@ function connections_content(&$a) { if(count($r)) { foreach($r as $rr) { - - $contacts[] = array( - 'img_hover' => sprintf( t('%1$s [%2$s]'),$rr['xchan_name'],$rr['xchan_url']), - 'edit_hover' => t('Edit contact'), - 'photo_menu' => contact_photo_menu($rr), - 'id' => $rr['abook_id'], - 'alt_text' => $alt_text, - 'dir_icon' => $dir_icon, - 'thumb' => $rr['xchan_photo_m'], - 'name' => $rr['xchan_name'], - 'username' => $rr['xchan_name'], - 'sparkle' => $sparkle, - 'edit' => z_root() . '/connections/' . $rr['abook_id'], - 'url' => $rr['xchan_url'], - 'network' => network_to_name($rr['network']), - ); + if($rr['xchan_url']) { + $contacts[] = array( + 'img_hover' => sprintf( t('%1$s [%2$s]'),$rr['xchan_name'],$rr['xchan_url']), + 'edit_hover' => t('Edit contact'), + 'photo_menu' => contact_photo_menu($rr), + 'id' => $rr['abook_id'], + 'alt_text' => $alt_text, + 'dir_icon' => $dir_icon, + 'thumb' => $rr['xchan_photo_m'], + 'name' => $rr['xchan_name'], + 'username' => $rr['xchan_name'], + 'sparkle' => $sparkle, + 'link' => z_root() . '/connections/' . $rr['abook_id'], + 'url' => $rr['xchan_url'], + 'network' => network_to_name($rr['network']), + ); + } } - - - } |