From 1c93729c4624c7c8c27344f3c5139ff1c4e08d65 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Tue, 1 Dec 2015 08:12:05 +0100 Subject: [PATCH 1/6] Tab is added to "all friends" and "common friends" --- mod/allfriends.php | 16 +++--- mod/common.php | 30 ++++++----- mod/contacts.php | 68 +++++++++++++++---------- mod/crepair.php | 2 +- view/templates/viewcontact_template.tpl | 2 + 5 files changed, 69 insertions(+), 49 deletions(-) diff --git a/mod/allfriends.php b/mod/allfriends.php index 1be9550b1..3e825c006 100644 --- a/mod/allfriends.php +++ b/mod/allfriends.php @@ -3,6 +3,7 @@ require_once('include/socgraph.php'); require_once('include/Contact.php'); require_once('include/contact_selectors.php'); +require_once('mod/contacts.php'); function allfriends_content(&$a) { @@ -25,19 +26,11 @@ function allfriends_content(&$a) { intval(local_user()) ); - $vcard_widget .= replace_macros(get_markup_template("vcard-widget.tpl"),array( - '$name' => htmlentities($c[0]['name']), - '$photo' => $c[0]['photo'], - 'url' => z_root() . '/contacts/' . $cid - )); - - if(! x($a->page,'aside')) - $a->page['aside'] = ''; - $a->page['aside'] .= $vcard_widget; - if(! count($c)) return; + $a->page['aside'] = ""; + profile_load($a, "", 0, get_contact_details_by_url($c[0]["url"])); $r = all_friends(local_user(),$cid); @@ -86,10 +79,13 @@ function allfriends_content(&$a) { $entries[] = $entry; } + $tab_str = contacts_tab($a, $cid, 3); + $tpl = get_markup_template('viewcontact_template.tpl'); $o .= replace_macros($tpl,array( '$title' => sprintf( t('Friends of %s'), htmlentities($c[0]['name'])), + '$tab_str' => $tab_str, '$contacts' => $entries, )); diff --git a/mod/common.php b/mod/common.php index 086092229..66efaf62e 100644 --- a/mod/common.php +++ b/mod/common.php @@ -3,6 +3,7 @@ require_once('include/socgraph.php'); require_once('include/Contact.php'); require_once('include/contact_selectors.php'); +require_once('mod/contacts.php'); function common_content(&$a) { @@ -29,23 +30,24 @@ function common_content(&$a) { intval($cid), intval($uid) ); - } - else { + $a->page['aside'] = ""; + profile_load($a, "", 0, get_contact_details_by_url($c[0]["url"])); + } else { $c = q("SELECT `name`, `url`, `photo` FROM `contact` WHERE `self` = 1 AND `uid` = %d LIMIT 1", intval($uid) ); + + $vcard_widget .= replace_macros(get_markup_template("vcard-widget.tpl"),array( + '$name' => htmlentities($c[0]['name']), + '$photo' => $c[0]['photo'], + 'url' => z_root() . '/contacts/' . $cid + )); + + if(! x($a->page,'aside')) + $a->page['aside'] = ''; + $a->page['aside'] .= $vcard_widget; } - $vcard_widget .= replace_macros(get_markup_template("vcard-widget.tpl"),array( - '$name' => htmlentities($c[0]['name']), - '$photo' => $c[0]['photo'], - 'url' => z_root() . '/contacts/' . $cid - )); - - if(! x($a->page,'aside')) - $a->page['aside'] = ''; - $a->page['aside'] .= $vcard_widget; - if(! count($c)) return; @@ -127,10 +129,14 @@ function common_content(&$a) { $entries[] = $entry; } + if($cmd === 'loc' && $cid && $uid == local_user()) + $tab_str = contacts_tab($a, $cid, 4); + $tpl = get_markup_template('viewcontact_template.tpl'); $o .= replace_macros($tpl,array( '$title' => t('Common Friends'), + '$tab_str' => $tab_str, '$contacts' => $entries, )); diff --git a/mod/contacts.php b/mod/contacts.php index 992f8ed6b..8e1fb6f67 100644 --- a/mod/contacts.php +++ b/mod/contacts.php @@ -542,16 +542,16 @@ function contacts_content(&$a) { $nettype = sprintf( t('Network type: %s'),network_to_name($contact['network'], $contact["url"])); - $common = count_common_friends(local_user(),$contact['id']); - $common_text = (($common) ? sprintf( tt('%d contact in common','%d contacts in common', $common),$common) : ''); + //$common = count_common_friends(local_user(),$contact['id']); + //$common_text = (($common) ? sprintf( tt('%d contact in common','%d contacts in common', $common),$common) : ''); $polling = (($contact['network'] === NETWORK_MAIL | $contact['network'] === NETWORK_FEED) ? 'polling' : ''); - $x = count_all_friends(local_user(), $contact['id']); - $all_friends = (($x) ? t('View all contacts') : ''); + //$x = count_all_friends(local_user(), $contact['id']); + //$all_friends = (($x) ? t('View all contacts') : ''); // tabs - $tab_str = contact_tabs($a, $contact_id, 2); + $tab_str = contacts_tab($a, $contact_id, 2); $lost_contact = (($contact['archive'] && $contact['term-date'] != '0000-00-00 00:00:00' && $contact['term-date'] < datetime_convert('','','now')) ? t('Communications lost with this contact!') : ''); @@ -812,7 +812,7 @@ function contacts_content(&$a) { return $o; } -function contact_tabs($a, $contact_id, $active_tab) { +function contacts_tab($a, $contact_id, $active_tab) { // tabs $tabs = array( array( @@ -830,40 +830,56 @@ function contact_tabs($a, $contact_id, $active_tab) { 'title' => t('Profile Details'), 'id' => 'status-tab', 'accesskey' => 'r', - ), - array( - 'label' => t('Repair'), + ) + ); + + $x = count_all_friends(local_user(), $contact_id); + if ($x) + $tabs[] = array('label'=>t('All Contacts'), + 'url' => "allfriends/".$contact_id, + 'sel' => (($active_tab == 3)?'active':''), + 'title' => t('View all contacts'), + 'id' => 'allfriends-tab', + 'accesskey' => ''); + + $common = count_common_friends(local_user(),$contact_id); + if ($common) + $tabs[] = array('label'=>t('Common Friends'), + 'url' => "common/loc/".local_user()."/".$contact_id, + 'sel' => (($active_tab == 4)?'active':''), + 'title' => t('View all common friends'), + 'id' => 'common-loc-tab', + 'accesskey' => ''); + + $tabs[] = array('label' => t('Repair'), 'url' => $a->get_baseurl(true) . '/crepair/' . $contact_id, - 'sel' => (($active_tab == 3)?'active':''), + 'sel' => (($active_tab == 5)?'active':''), 'title' => t('Advanced Contact Settings'), 'id' => 'repair-tab', - 'accesskey' => 'r', - ), - array( - 'label' => (($contact['blocked']) ? t('Unblock') : t('Block') ), + 'accesskey' => 'r'); + + + $tabs[] = array('label' => (($contact['blocked']) ? t('Unblock') : t('Block') ), 'url' => $a->get_baseurl(true) . '/contacts/' . $contact_id . '/block', 'sel' => '', 'title' => t('Toggle Blocked status'), 'id' => 'toggle-block-tab', - 'accesskey' => 'b', - ), - array( - 'label' => (($contact['readonly']) ? t('Unignore') : t('Ignore') ), + 'accesskey' => 'b'); + + $tabs[] = array('label' => (($contact['readonly']) ? t('Unignore') : t('Ignore') ), 'url' => $a->get_baseurl(true) . '/contacts/' . $contact_id . '/ignore', 'sel' => '', 'title' => t('Toggle Ignored status'), 'id' => 'toggle-ignore-tab', - 'accesskey' => 'i', - ), - array( - 'label' => (($contact['archive']) ? t('Unarchive') : t('Archive') ), + 'accesskey' => 'i'); + + $tabs[] = array('label' => (($contact['archive']) ? t('Unarchive') : t('Archive') ), 'url' => $a->get_baseurl(true) . '/contacts/' . $contact_id . '/archive', 'sel' => '', 'title' => t('Toggle Archive status'), 'id' => 'toggle-archive-tab', - 'accesskey' => 'v', - ) - ); + 'accesskey' => 'v'); + $tab_tpl = get_markup_template('common_tabs.tpl'); $tab_str = replace_macros($tab_tpl, array('$tabs' => $tabs)); @@ -903,7 +919,7 @@ function contact_posts($a, $contact_id) { intval($a->pager['itemspage']) ); - $tab_str = contact_tabs($a, $contact_id, 1); + $tab_str = contacts_tab($a, $contact_id, 1); $header = $contact["name"]; diff --git a/mod/crepair.php b/mod/crepair.php index d16adf8c7..d927e3636 100644 --- a/mod/crepair.php +++ b/mod/crepair.php @@ -159,7 +159,7 @@ function crepair_content(&$a) { $update_profile = in_array($contact['network'], array(NETWORK_DFRN, NETWORK_DSPR, NETWORK_OSTATUS)); - $tab_str = contact_tabs($a, $contact['id'], 3); + $tab_str = contacts_tab($a, $contact['id'], 5); $header = $contact["name"]; diff --git a/view/templates/viewcontact_template.tpl b/view/templates/viewcontact_template.tpl index 205ad736d..c4e2e643e 100644 --- a/view/templates/viewcontact_template.tpl +++ b/view/templates/viewcontact_template.tpl @@ -1,6 +1,8 @@ {{include file="section_title.tpl"}} +{{$tab_str}} +
{{foreach $contacts as $contact}} {{include file="contact_template.tpl"}} From 06a4b0dc5e12bf8ecec18958d5a08c7c405d5aa5 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Tue, 1 Dec 2015 18:21:05 +0100 Subject: [PATCH 2/6] Header removed in the contact area --- mod/allfriends.php | 2 +- mod/common.php | 6 ++++-- mod/contacts.php | 10 +++++----- mod/crepair.php | 2 +- view/templates/contact_edit.tpl | 2 +- view/templates/section_title.tpl | 2 +- view/templates/viewcontact_template.tpl | 2 +- 7 files changed, 14 insertions(+), 12 deletions(-) diff --git a/mod/allfriends.php b/mod/allfriends.php index 3e825c006..49879c7a0 100644 --- a/mod/allfriends.php +++ b/mod/allfriends.php @@ -84,7 +84,7 @@ function allfriends_content(&$a) { $tpl = get_markup_template('viewcontact_template.tpl'); $o .= replace_macros($tpl,array( - '$title' => sprintf( t('Friends of %s'), htmlentities($c[0]['name'])), + //'$title' => sprintf( t('Friends of %s'), htmlentities($c[0]['name'])), '$tab_str' => $tab_str, '$contacts' => $entries, )); diff --git a/mod/common.php b/mod/common.php index 66efaf62e..7c12dd39b 100644 --- a/mod/common.php +++ b/mod/common.php @@ -129,13 +129,15 @@ function common_content(&$a) { $entries[] = $entry; } - if($cmd === 'loc' && $cid && $uid == local_user()) + if($cmd === 'loc' && $cid && $uid == local_user()) { $tab_str = contacts_tab($a, $cid, 4); + } else + $title = t('Common Friends'); $tpl = get_markup_template('viewcontact_template.tpl'); $o .= replace_macros($tpl,array( - '$title' => t('Common Friends'), + '$title' => $title, '$tab_str' => $tab_str, '$contacts' => $entries, )); diff --git a/mod/contacts.php b/mod/contacts.php index 8e1fb6f67..35ce75367 100644 --- a/mod/contacts.php +++ b/mod/contacts.php @@ -579,7 +579,7 @@ function contacts_content(&$a) { $o .= replace_macros($tpl, array( //'$header' => t('Contact Editor'), - '$header' => htmlentities($header), + //'$header' => htmlentities($header), '$tab_str' => $tab_str, '$submit' => t('Submit'), '$lbl_vis1' => t('Profile Visibility'), @@ -928,10 +928,10 @@ function contact_posts($a, $contact_id) { $header .= " (".network_to_name($contact['network'], $contact['url']).")"; - $tpl = get_markup_template("section_title.tpl"); - $o = replace_macros($tpl,array( - '$title' => htmlentities($header) - )); + //$tpl = get_markup_template("section_title.tpl"); + //$o = replace_macros($tpl,array( + // '$title' => htmlentities($header) + //)); $o .= $tab_str; diff --git a/mod/crepair.php b/mod/crepair.php index d927e3636..99a039b37 100644 --- a/mod/crepair.php +++ b/mod/crepair.php @@ -171,7 +171,7 @@ function crepair_content(&$a) { $tpl = get_markup_template('crepair.tpl'); $o .= replace_macros($tpl, array( //'$title' => t('Repair Contact Settings'), - '$title' => htmlentities($header), + //'$title' => htmlentities($header), '$tab_str' => $tab_str, '$warning' => $warning, '$info' => $info, diff --git a/view/templates/contact_edit.tpl b/view/templates/contact_edit.tpl index 0733c9e18..15863b6a2 100644 --- a/view/templates/contact_edit.tpl +++ b/view/templates/contact_edit.tpl @@ -1,4 +1,4 @@ -

{{$header}}

+{{if $header}}

{{$header}}

{{/if}}
diff --git a/view/templates/section_title.tpl b/view/templates/section_title.tpl index 8614fb883..f17dcf7ad 100644 --- a/view/templates/section_title.tpl +++ b/view/templates/section_title.tpl @@ -1,4 +1,4 @@
-

{{$title}}

+ {{if $title}}

{{$title}}

{{/if}}
diff --git a/view/templates/viewcontact_template.tpl b/view/templates/viewcontact_template.tpl index c4e2e643e..3ea277a42 100644 --- a/view/templates/viewcontact_template.tpl +++ b/view/templates/viewcontact_template.tpl @@ -8,7 +8,7 @@ {{include file="contact_template.tpl"}} {{/foreach}}
- +
{{$paginate}} From c45b16d2a13ae178baff45b23731a41aad182cf5 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Tue, 1 Dec 2015 19:02:03 +0100 Subject: [PATCH 3/6] Unifying the texts. --- mod/contacts.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod/contacts.php b/mod/contacts.php index 35ce75367..270541f4a 100644 --- a/mod/contacts.php +++ b/mod/contacts.php @@ -835,7 +835,7 @@ function contacts_tab($a, $contact_id, $active_tab) { $x = count_all_friends(local_user(), $contact_id); if ($x) - $tabs[] = array('label'=>t('All Contacts'), + $tabs[] = array('label'=>t('Contacts'), 'url' => "allfriends/".$contact_id, 'sel' => (($active_tab == 3)?'active':''), 'title' => t('View all contacts'), From 7ed73a06ab312361919a65f581076a298c9336df Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Tue, 1 Dec 2015 23:51:34 +0100 Subject: [PATCH 4/6] Solved a problem with author links that are different from what is provided in the contact --- mod/contacts.php | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/mod/contacts.php b/mod/contacts.php index 270541f4a..99b1c37c4 100644 --- a/mod/contacts.php +++ b/mod/contacts.php @@ -899,8 +899,10 @@ function contact_posts($a, $contact_id) { if(get_config('system', 'old_pager')) { $r = q("SELECT COUNT(*) AS `total` FROM `item` - WHERE `item`.`uid` = %d AND (`author-link` = '%s')", - intval(local_user()), dbesc($contact["url"])); + WHERE `item`.`uid` = %d AND `author-link` IN ('%s', '%s')", + intval(local_user()), + dbesc(normalise_link($contact["url"])), + dbesc(str_replace("http://", "https://", $contact["url"]))); $a->set_pager_total($r[0]['total']); } @@ -910,15 +912,19 @@ function contact_posts($a, $contact_id) { `owner-link` AS `url`, `owner-avatar` AS `thumb` FROM `item` FORCE INDEX (uid_contactid_created) WHERE `item`.`uid` = %d AND `contact-id` = %d - AND (`author-link` = '%s') + AND `author-link` IN ('%s', '%s') ORDER BY `item`.`created` DESC LIMIT %d, %d", intval(local_user()), intval($contact_id), - dbesc($contact["url"]), + dbesc(normalise_link($contact["url"])), + dbesc(str_replace("http://", "https://", $contact["url"])), intval($a->pager['start']), intval($a->pager['itemspage']) ); + if (!$r) + $o = $contact["url"]." - ".$contact_id; + $tab_str = contacts_tab($a, $contact_id, 1); $header = $contact["name"]; From 4286225f370c9c018e6d80349878072516ff3ef4 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Wed, 2 Dec 2015 07:56:10 +0100 Subject: [PATCH 5/6] Added/Changed accesskeys for the new tab actions --- doc/Accesskeys.md | 4 ++++ mod/contacts.php | 6 +++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/doc/Accesskeys.md b/doc/Accesskeys.md index 5e25e55c4..c49e79c0a 100644 --- a/doc/Accesskeys.md +++ b/doc/Accesskeys.md @@ -33,6 +33,10 @@ General /contacts (single contact view) ------------------------------- +* m: Status messages +* o: Profile +* t: Contacts +* d: Common friends * b: Toggle Blocked status * i: Toggle Ignored status * v: Toggle Archive status diff --git a/mod/contacts.php b/mod/contacts.php index 99b1c37c4..f1537d508 100644 --- a/mod/contacts.php +++ b/mod/contacts.php @@ -829,7 +829,7 @@ function contacts_tab($a, $contact_id, $active_tab) { 'sel' => (($active_tab == 2)?'active':''), 'title' => t('Profile Details'), 'id' => 'status-tab', - 'accesskey' => 'r', + 'accesskey' => 'o', ) ); @@ -840,7 +840,7 @@ function contacts_tab($a, $contact_id, $active_tab) { 'sel' => (($active_tab == 3)?'active':''), 'title' => t('View all contacts'), 'id' => 'allfriends-tab', - 'accesskey' => ''); + 'accesskey' => 't'); $common = count_common_friends(local_user(),$contact_id); if ($common) @@ -849,7 +849,7 @@ function contacts_tab($a, $contact_id, $active_tab) { 'sel' => (($active_tab == 4)?'active':''), 'title' => t('View all common friends'), 'id' => 'common-loc-tab', - 'accesskey' => ''); + 'accesskey' => 'd'); $tabs[] = array('label' => t('Repair'), 'url' => $a->get_baseurl(true) . '/crepair/' . $contact_id, From 24f1a24208ece3827f9d5d734e99ba5be3e202f8 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Thu, 3 Dec 2015 08:35:47 +0100 Subject: [PATCH 6/6] Support for a new Diaspora command for post retraction --- include/diaspora.php | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/include/diaspora.php b/include/diaspora.php index c5ba07586..e0eaf065d 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -2254,8 +2254,23 @@ function diaspora_retraction($importer,$xml) { if($type === 'Person') { require_once('include/Contact.php'); contact_remove($contact['id']); - } - elseif($type === 'Post') { + } elseif($type === 'StatusMessage') { + $guid = notags(unxmlify($xml->post_guid)); + + $r = q("SELECT * FROM `item` WHERE `guid` = '%s' AND `uid` = %d AND NOT `file` LIKE '%%[%%' LIMIT 1", + dbesc($guid), + intval($importer['uid']) + ); + if(count($r)) { + if(link_compare($r[0]['author-link'],$contact['url'])) { + q("UPDATE `item` SET `deleted` = 1, `changed` = '%s' WHERE `id` = %d", + dbesc(datetime_convert()), + intval($r[0]['id']) + ); + delete_thread($r[0]['id'], $r[0]['parent-uri']); + } + } + } elseif($type === 'Post') { $r = q("select * from item where guid = '%s' and uid = %d and not file like '%%[%%' limit 1", dbesc('guid'), intval($importer['uid'])