X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=mod%2Fcontacts.php;h=300331a9dcdf19be1f09e992691ca3b3aa98f7f9;hb=68c970722138132ba240aea8ea69f93f3b6a1ec1;hp=4baa2d2d7c7ec24bf552240857db2e00064a0e54;hpb=745d075397941e0a84d017342bb9c4c4a4c1ef5b;p=friendica.git diff --git a/mod/contacts.php b/mod/contacts.php index 4baa2d2d7c..300331a9dc 100644 --- a/mod/contacts.php +++ b/mod/contacts.php @@ -1,35 +1,131 @@ argc == 2) && intval($a->argv[1])) { + $contact_id = intval($a->argv[1]); + $r = q("SELECT * FROM `contact` WHERE `uid` = %d and `id` = %d LIMIT 1", + intval(local_user()), + intval($contact_id) + ); + if(! count($r)) { + $contact_id = 0; + } + } + require_once('include/group.php'); + require_once('include/contact_widgets.php'); + if(! x($a->page,'aside')) $a->page['aside'] = ''; - $a->page['aside'] .= group_side(); - if($a->config['register_policy'] != REGISTER_CLOSED) - $a->page['aside'] .= '
'; + if($contact_id) { + $a->data['contact'] = $r[0]; + $vcard_widget = replace_macros(get_markup_template("vcard-widget.tpl"),array( + '$name' => $a->data['contact']['name'], + '$photo' => $a->data['contact']['photo'] + )); + $follow_widget = ''; + } + else { + $vcard_widget = ''; + if (isset($_GET['add'])) + $follow_widget = follow_widget($_GET['add']); + else + $follow_widget = follow_widget(); + } - if(strlen(get_config('system','directory_submit_url'))) - $a->page['aside'] .= ''; + $groups_widget .= group_side('contacts','group',false,0,$contact_id); + $findpeople_widget .= findpeople_widget(); + $networks_widget .= networks_widget('contacts',$_GET['nets']); + $a->page['aside'] .= replace_macros(get_markup_template("contacts-widget-sidebar.tpl"),array( + '$vcard_widget' => $vcard_widget, + '$follow_widget' => $follow_widget, + '$groups_widget' => $groups_widget, + '$findpeople_widget' => $findpeople_widget, + '$networks_widget' => $networks_widget + )); - $tpl = get_markup_template('follow.tpl'); - $a->page['aside'] .= replace_macros($tpl,array( - '$label' => t('Connect/Follow'), - '$hint' => t('Example: bob@example.com, http://example.com/barbara'), - '$follow' => t('Follow') + $base = $a->get_baseurl(); + $tpl = get_markup_template("contacts-head.tpl"); + $a->page['htmlhead'] .= replace_macros($tpl,array( + '$baseurl' => $a->get_baseurl(true), + '$base' => $base )); + $tpl = get_markup_template("contacts-end.tpl"); + $a->page['end'] .= replace_macros($tpl,array( + '$baseurl' => $a->get_baseurl(true), + '$base' => $base + )); } +function contacts_batch_actions(&$a){ + $contacts_id = $_POST['contact_batch']; + if (!is_array($contacts_id)) return; + + $orig_records = q("SELECT * FROM `contact` WHERE `id` IN (%s) AND `uid` = %d AND `self` = 0", + implode(",", $contacts_id), + intval(local_user()) + ); + + $count_actions=0; + foreach($orig_records as $orig_record) { + $contact_id = $orig_record['id']; + if (x($_POST, 'contacts_batch_update')) { + _contact_update($contact_id); + $count_actions++; + } + if (x($_POST, 'contacts_batch_block')) { + $r = _contact_block($contact_id, $orig_record); + if ($r) $count_actions++; + } + if (x($_POST, 'contacts_batch_ignore')) { + $r = _contact_ignore($contact_id, $orig_record); + if ($r) $count_actions++; + } + if (x($_POST, 'contacts_batch_archive')) { + $r = _contact_archive($contact_id, $orig_record); + if ($r) $count_actions++; + } + if (x($_POST, 'contacts_batch_drop')) { + _contact_drop($contact_id, $orig_record); + $count_actions++; + } + } + if ($count_actions>0) { + info ( sprintf( tt("%d contact edited.", "%d contacts edited", $count_actions), $count_actions) ); + } + + if(x($_SESSION,'return_url')) + goaway($a->get_baseurl(true) . '/' . $_SESSION['return_url']); + else + goaway($a->get_baseurl(true) . '/contacts'); + +} + + function contacts_post(&$a) { - + if(! local_user()) return; + if ($a->argv[1]==="batch") { + contacts_batch_actions($a); + return; + } + $contact_id = intval($a->argv[1]); if(! $contact_id) return; @@ -41,7 +137,7 @@ function contacts_post(&$a) { if(! count($orig_record)) { notice( t('Could not access contact record.') . EOL); - goaway($a->get_baseurl() . '/contacts'); + goaway($a->get_baseurl(true) . '/contacts'); return; // NOTREACHED } @@ -59,28 +155,30 @@ function contacts_post(&$a) { } } + $hidden = intval($_POST['hidden']); + + $notify = intval($_POST['notify']); + + $fetch_further_information = intval($_POST['fetch_further_information']); + + $ffi_keyword_blacklist = fix_mce_lf(escape_tags(trim($_POST['ffi_keyword_blacklist']))); $priority = intval($_POST['poll']); - if($priority == (-1)) - if($priority > 5 || $priority < 0) $priority = 0; - $rating = intval($_POST['reputation']); - if($rating > 5 || $rating < 0) - $rating = 0; - - $reason = notags(trim($_POST['reason'])); - - $info = escape_tags(trim($_POST['info'])); + $info = fix_mce_lf(escape_tags(trim($_POST['info']))); - $r = q("UPDATE `contact` SET `profile-id` = %d, `priority` = %d , `rating` = %d, `reason` = '%s', `info` = '%s' - WHERE `id` = %d AND `uid` = %d LIMIT 1", + $r = q("UPDATE `contact` SET `profile-id` = %d, `priority` = %d , `info` = '%s', + `hidden` = %d, `notify_new_posts` = %d, `fetch_further_information` = %d, + `ffi_keyword_blacklist` = '%s' WHERE `id` = %d AND `uid` = %d", intval($profile_id), intval($priority), - intval($rating), - dbesc($reason), dbesc($info), + intval($hidden), + intval($notify), + intval($fetch_further_information), + dbesc($ffi_keyword_blacklist), intval($contact_id), intval(local_user()) ); @@ -88,19 +186,69 @@ function contacts_post(&$a) { info( t('Contact updated.') . EOL); else notice( t('Failed to update contact record.') . EOL); + + $r = q("select * from contact where id = %d and uid = %d limit 1", + intval($contact_id), + intval(local_user()) + ); + if($r && count($r)) + $a->data['contact'] = $r[0]; + return; } +/*contact actions*/ +function _contact_update($contact_id) { + // pull feed and consume it, which should subscribe to the hub. + proc_run('php',"include/poller.php","$contact_id"); +} +function _contact_block($contact_id, $orig_record) { + $blocked = (($orig_record['blocked']) ? 0 : 1); + $r = q("UPDATE `contact` SET `blocked` = %d WHERE `id` = %d AND `uid` = %d", + intval($blocked), + intval($contact_id), + intval(local_user()) + ); + return $r; + +} +function _contact_ignore($contact_id, $orig_record) { + $readonly = (($orig_record['readonly']) ? 0 : 1); + $r = q("UPDATE `contact` SET `readonly` = %d WHERE `id` = %d AND `uid` = %d", + intval($readonly), + intval($contact_id), + intval(local_user()) + ); + return $r; +} +function _contact_archive($contact_id, $orig_record) { + $archived = (($orig_record['archive']) ? 0 : 1); + $r = q("UPDATE `contact` SET `archive` = %d WHERE `id` = %d AND `uid` = %d", + intval($archived), + intval($contact_id), + intval(local_user()) + ); + if ($archived) { + q("UPDATE `item` SET `private` = 2 WHERE `contact-id` = %d AND `uid` = %d", intval($contact_id), intval(local_user())); + } + return $r; +} +function _contact_drop($contact_id, $orig_record) { + require_once('include/Contact.php'); + $a = get_app(); + + terminate_friendship($a->user,$a->contact,$orig_record); + contact_remove($orig_record['id']); +} function contacts_content(&$a) { $sort_type = 0; $o = ''; - $o .= ''; + nav_set_selected('contacts'); - $_SESSION['return_url'] = $a->get_baseurl() . '/' . $a->cmd; if(! local_user()) { notice( t('Permission denied.') . EOL); @@ -115,193 +263,264 @@ function contacts_content(&$a) { $cmd = $a->argv[2]; - $orig_record = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1", + $orig_record = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d AND `self` = 0 LIMIT 1", intval($contact_id), intval(local_user()) ); if(! count($orig_record)) { notice( t('Could not access contact record.') . EOL); - goaway($a->get_baseurl() . '/contacts'); + goaway($a->get_baseurl(true) . '/contacts'); return; // NOTREACHED } if($cmd === 'update') { - - // pull feed and consume it, which should subscribe to the hub. - proc_run('php',"include/poller.php","$contact_id"); - goaway($a->get_baseurl() . '/contacts/' . $contact_id); + _contact_update($contact_id); + goaway($a->get_baseurl(true) . '/contacts/' . $contact_id); // NOTREACHED } if($cmd === 'block') { - $blocked = (($orig_record[0]['blocked']) ? 0 : 1); - $r = q("UPDATE `contact` SET `blocked` = %d WHERE `id` = %d AND `uid` = %d LIMIT 1", - intval($blocked), - intval($contact_id), - intval(local_user()) - ); + $r = _contact_block($contact_id, $orig_record[0]); if($r) { - //notice( t('Contact has been ') . (($blocked) ? t('blocked') : t('unblocked')) . EOL ); - info( (($blocked) ? t('Contact has been blocked') : t('Contact has been unblocked')) . EOL ); + $blocked = (($orig_record[0]['blocked']) ? 0 : 1); + info((($blocked) ? t('Contact has been blocked') : t('Contact has been unblocked')).EOL); } - goaway($a->get_baseurl() . '/contacts/' . $contact_id); + + goaway($a->get_baseurl(true) . '/contacts/' . $contact_id); return; // NOTREACHED } if($cmd === 'ignore') { - $readonly = (($orig_record[0]['readonly']) ? 0 : 1); - $r = q("UPDATE `contact` SET `readonly` = %d WHERE `id` = %d AND `uid` = %d LIMIT 1", - intval($readonly), - intval($contact_id), - intval(local_user()) - ); + $r = _contact_ignore($contact_id, $orig_record[0]); if($r) { - info( (($readonly) ? t('Contact has been ignored') : t('Contact has been unignored')) . EOL ); + $readonly = (($orig_record[0]['readonly']) ? 0 : 1); + info((($readonly) ? t('Contact has been ignored') : t('Contact has been unignored')).EOL); } - goaway($a->get_baseurl() . '/contacts/' . $contact_id); + + goaway($a->get_baseurl(true) . '/contacts/' . $contact_id); return; // NOTREACHED } - if($cmd === 'drop') { - // create an unfollow slap - - if($orig_record[0]['network'] === 'stat') { - $tpl = get_markup_template('follow_slap.tpl'); - $slap = replace_macros($tpl, array( - '$name' => $a->user['username'], - '$profile_page' => $a->get_baseurl() . '/profile/' . $a->user['nickname'], - '$photo' => $a->contact['photo'], - '$thumb' => $a->contact['thumb'], - '$published' => datetime_convert('UTC','UTC', 'now', ATOM_TIME), - '$item_id' => 'urn:X-dfrn:' . $a->get_hostname() . ':unfollow:' . random_string(), - '$title' => '', - '$type' => 'text', - '$content' => t('stopped following'), - '$nick' => $a->user['nickname'], - '$verb' => 'http://ostatus.org/schema/1.0/unfollow', // ACTIVITY_UNFOLLOW, - '$ostat_follow' => '' // '