diff --git a/boot.php b/boot.php index d283fa7781..875d4a69b4 100644 --- a/boot.php +++ b/boot.php @@ -9,9 +9,9 @@ require_once('include/nav.php'); require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); -define ( 'FRIENDICA_VERSION', '2.3.1185' ); +define ( 'FRIENDICA_VERSION', '2.3.1186' ); define ( 'DFRN_PROTOCOL_VERSION', '2.22' ); -define ( 'DB_UPDATE_VERSION', 1108 ); +define ( 'DB_UPDATE_VERSION', 1109 ); define ( 'EOL', "
\r\n" ); define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' ); diff --git a/database.sql b/database.sql index 26580d60dd..18fe5f8c33 100644 --- a/database.sql +++ b/database.sql @@ -92,6 +92,7 @@ CREATE TABLE IF NOT EXISTS `contact` ( `blocked` tinyint(1) NOT NULL DEFAULT '1', `readonly` tinyint(1) NOT NULL DEFAULT '0', `writable` tinyint(1) NOT NULL DEFAULT '0', + `hidden` tinyint(1) NOT NULL DEFAULT '0', `pending` tinyint(1) NOT NULL DEFAULT '1', `rating` tinyint(1) NOT NULL DEFAULT '0', `reason` text NOT NULL, @@ -114,6 +115,7 @@ CREATE TABLE IF NOT EXISTS `contact` ( KEY `dfrn-id` (`dfrn-id`), KEY `blocked` (`blocked`), KEY `readonly` (`readonly`), + KET `hidden` (`hidden`), KEY `pending` (`pending`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; diff --git a/include/api.php b/include/api.php index 1196e0aac7..9cf4551bde 100644 --- a/include/api.php +++ b/include/api.php @@ -296,7 +296,7 @@ // count friends $r = q("SELECT COUNT(`id`) as `count` FROM `contact` WHERE `uid` = %d AND `rel` IN ( %d, %d ) - AND `self`=0 AND `blocked`=0", + AND `self`=0 AND `blocked`=0 AND `pending`=0 AND `hidden`=0", intval($uinfo[0]['uid']), intval(CONTACT_IS_SHARING), intval(CONTACT_IS_FRIEND) @@ -305,7 +305,7 @@ $r = q("SELECT COUNT(`id`) as `count` FROM `contact` WHERE `uid` = %d AND `rel` IN ( %d, %d ) - AND `self`=0 AND `blocked`=0", + AND `self`=0 AND `blocked`=0 AND `pending`=0 AND `hidden`=0", intval($uinfo[0]['uid']), intval(CONTACT_IS_FOLLOWER), intval(CONTACT_IS_FRIEND) diff --git a/include/message.php b/include/message.php index 05157cc83a..baf1bb2d5c 100644 --- a/include/message.php +++ b/include/message.php @@ -27,9 +27,27 @@ function send_message($recipient=0, $body='', $subject='', $replyto=''){ $hash = random_string(); $uri = 'urn:X-dfrn:' . $a->get_baseurl() . ':' . local_user() . ':' . $hash ; - if(! strlen($replyto)) { + $convid = 0; + + // look for any existing conversation structure + + if(strlen($replyto)) { + $r = q("select convid from mail where uid = %d and uri = '%s' limit 1", + intval(local_user()), + dbesc($replyto) + ); + if(count($r)) + $convid = $r[0]['convid']; + } + + if(! strlen($replyto)) $replyto = $uri; + + if(! $convid) { + + // create a new conversation + $conv_guid = get_guid(); $recip_host = substr($contact[0]['url'],strpos($contact[0]['url'],'://')+3); @@ -52,14 +70,6 @@ function send_message($recipient=0, $body='', $subject='', $replyto=''){ if(count($r)) $convid = $r[0]['id']; } - else { - $r = q("select convid from mail where uid = %d and uri = '%s' limit 1", - intval(local_user()), - dbesc($replyto) - ); - if(count($r)) - $convid = $r[0]['convid']; - } if(! $convid) { logger('send message: conversation not found.'); diff --git a/include/text.php b/include/text.php index c4fd76e3e8..29e53c6635 100644 --- a/include/text.php +++ b/include/text.php @@ -539,7 +539,7 @@ function contact_block() { if((! is_array($a->profile)) || ($a->profile['hide-friends'])) return $o; - $r = q("SELECT COUNT(*) AS `total` FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 and `pending` = 0", + $r = q("SELECT COUNT(*) AS `total` FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 and `pending` = 0 AND `hidden` = 0", intval($a->profile['uid']) ); if(count($r)) { @@ -550,7 +550,7 @@ function contact_block() { $micropro = Null; } else { - $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 and `pending` = 0 ORDER BY RAND() LIMIT %d", + $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 and `pending` = 0 AND `hidden` = 0 ORDER BY RAND() LIMIT %d", intval($a->profile['uid']), intval($shown) ); diff --git a/mod/contacts.php b/mod/contacts.php index 59dafd51ce..51c6920d34 100644 --- a/mod/contacts.php +++ b/mod/contacts.php @@ -78,6 +78,7 @@ function contacts_post(&$a) { } } + $hidden = intval($_POST['hidden']); $priority = intval($_POST['poll']); if($priority > 5 || $priority < 0) @@ -85,11 +86,12 @@ function contacts_post(&$a) { $info = escape_tags(trim($_POST['info'])); - $r = q("UPDATE `contact` SET `profile-id` = %d, `priority` = %d , `info` = '%s' - WHERE `id` = %d AND `uid` = %d LIMIT 1", + $r = q("UPDATE `contact` SET `profile-id` = %d, `priority` = %d , `info` = '%s', + `hidden` = %d WHERE `id` = %d AND `uid` = %d LIMIT 1", intval($profile_id), intval($priority), dbesc($info), + intval($hidden), intval($contact_id), intval(local_user()) ); @@ -334,6 +336,7 @@ function contacts_content(&$a) { '$info' => $contact['info'], '$blocked' => (($contact['blocked']) ? t('Currently blocked') : ''), '$ignored' => (($contact['readonly']) ? t('Currently ignored') : ''), + '$hidden' => array('hidden', t('Hide this contact from others'), ($contact['hidden'] == 1), t('Replies/likes to your public posts may still be visible')), '$photo' => $contact['photo'], '$name' => $contact['name'], '$dir_icon' => $dir_icon, diff --git a/mod/follow.php b/mod/follow.php index 0329d1eee6..2d643400a7 100644 --- a/mod/follow.php +++ b/mod/follow.php @@ -67,6 +67,8 @@ function follow_post(&$a) { } $writeable = ((($ret['network'] === NETWORK_OSTATUS) && ($ret['notify'])) ? 1 : 0); + $hidden = (($ret['network'] === NETWORK_MAIL) ? 1 : 0); + if($ret['network'] === NETWORK_MAIL) { $writeable = 1; @@ -101,8 +103,8 @@ function follow_post(&$a) { // create contact record $r = q("INSERT INTO `contact` ( `uid`, `created`, `url`, `nurl`, `addr`, `alias`, `batch`, `notify`, `poll`, `poco`, `name`, `nick`, `photo`, `network`, `pubkey`, `rel`, `priority`, - `writable`, `blocked`, `readonly`, `pending` ) - VALUES ( %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, %d, 0, 0, 0 ) ", + `writable`, `hidden`, `blocked`, `readonly`, `pending` ) + VALUES ( %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, %d, %d, 0, 0, 0 ) ", intval(local_user()), dbesc(datetime_convert()), dbesc($ret['url']), @@ -120,7 +122,8 @@ function follow_post(&$a) { dbesc($ret['pubkey']), intval($new_relation), intval($ret['priority']), - intval($writeable) + intval($writeable), + intval($hidden) ); } diff --git a/mod/poco.php b/mod/poco.php index 6331131fad..dd8df60083 100644 --- a/mod/poco.php +++ b/mod/poco.php @@ -54,7 +54,7 @@ function poco_init(&$a) { and uid in (select uid from pconfig where cat = 'system' and k = 'suggestme' and v = 1) "); } else { - $r = q("SELECT count(*) as `total` from `contact` where `uid` = %d and blocked = 0 and pending = 0 + $r = q("SELECT count(*) as `total` from `contact` where `uid` = %d and blocked = 0 and pending = 0 and hidden = 0 $sql_extra ", intval($user['uid']) ); @@ -79,7 +79,7 @@ function poco_init(&$a) { } else { - $r = q("SELECT * from `contact` where `uid` = %d and blocked = 0 and pending = 0 + $r = q("SELECT * from `contact` where `uid` = %d and blocked = 0 and pending = 0 and hidden = 0 $sql_extra LIMIT %d, %d", intval($user['uid']), intval($startIndex), diff --git a/mod/viewcontacts.php b/mod/viewcontacts.php index f9510bd6b4..cd8d100ed1 100644 --- a/mod/viewcontacts.php +++ b/mod/viewcontacts.php @@ -25,13 +25,13 @@ function viewcontacts_content(&$a) { $o .= '

' . t('View Contacts') . '

'; - $r = q("SELECT COUNT(*) as `total` FROM `contact` WHERE `uid` = %d AND `blocked` = 0 AND `pending` = 0", + $r = q("SELECT COUNT(*) as `total` FROM `contact` WHERE `uid` = %d AND `blocked` = 0 AND `pending` = 0 AND `hidden` = 0 ", intval($a->profile['uid']) ); if(count($r)) $a->set_pager_total($r[0]['total']); - $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `blocked` = 0 AND `pending` = 0 ORDER BY `name` ASC LIMIT %d , %d ", + $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `blocked` = 0 AND `pending` = 0 AND `hidden` = 0 ORDER BY `name` ASC LIMIT %d , %d ", intval($a->profile['uid']), intval($a->pager['start']), intval($a->pager['itemspage']) diff --git a/update.php b/update.php index 6e7b5f2c1f..d94bf82d17 100644 --- a/update.php +++ b/update.php @@ -1,6 +1,6 @@ - + {{inc field_checkbox.tpl with $field=$hidden }}{{endinc}}

$lbl_info1

diff --git a/view/theme/duepuntozero/style.css b/view/theme/duepuntozero/style.css index 0150eb1760..1127f11451 100644 --- a/view/theme/duepuntozero/style.css +++ b/view/theme/duepuntozero/style.css @@ -1461,6 +1461,7 @@ input#dfrn-url { #contact-edit-end { clear: both; + margin-top: 15px; } #contact-profile-selector {