X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModule%2FContact.php;h=230ad4b57bd008938c0a273846609c734424a4c8;hb=f3da5b3a2f98883e4a06c345dfe2880394f7d21d;hp=db1675a7f83ec82ec92282611e453dc96034e640;hpb=74c5f1f684a8b8bd357329f0feb409fbc1aa6042;p=friendica.git diff --git a/src/Module/Contact.php b/src/Module/Contact.php index db1675a7f8..230ad4b57b 100644 --- a/src/Module/Contact.php +++ b/src/Module/Contact.php @@ -6,11 +6,14 @@ use Friendica\App; use Friendica\BaseModule; use Friendica\Content\ContactSelector; use Friendica\Content\Nav; +use Friendica\Content\Pager; use Friendica\Content\Text\BBCode; use Friendica\Content\Widget; -use Friendica\Core\Addon; +use Friendica\Core\ACL; +use Friendica\Core\Hook; use Friendica\Core\L10n; use Friendica\Core\Protocol; +use Friendica\Core\Renderer; use Friendica\Core\System; use Friendica\Core\Worker; use Friendica\Database\DBA; @@ -18,15 +21,14 @@ use Friendica\Model; use Friendica\Network\Probe; use Friendica\Util\DateTimeFormat; use Friendica\Util\Proxy as ProxyUtils; -use Friendica\Core\ACL; -use Friendica\Module\Login; +use Friendica\Util\Strings; /** * Manages and show Contacts and their content * * @brief manages contacts */ -class Contact extends BaseModule +class Contact extends BaseModule { public static function init() { @@ -37,22 +39,21 @@ class Contact extends BaseModule } $nets = defaults($_GET, 'nets', ''); - if ($nets == "all") { - $nets = ""; - } - if (!x($a->page, 'aside')) { + if (empty($a->page['aside'])) { $a->page['aside'] = ''; } $contact_id = null; $contact = null; - if ((($a->argc == 2) && intval($a->argv[1])) || (($a->argc == 3) && intval($a->argv[1]) && in_array($a->argv[2], ['posts', 'conversations']))) { + if ($a->argc == 2 && intval($a->argv[1]) + || $a->argc == 3 && intval($a->argv[1]) && in_array($a->argv[2], ['posts', 'conversations']) + ) { $contact_id = intval($a->argv[1]); - $contact = DBA::selectFirst('contact', [], ['id' => $contact_id, 'uid' => local_user()]); + $contact = DBA::selectFirst('contact', [], ['id' => $contact_id, 'uid' => local_user(), 'deleted' => false]); if (!DBA::isResult($contact)) { - $contact = DBA::selectFirst('contact', [], ['id' => $contact_id, 'uid' => 0]); + $contact = DBA::selectFirst('contact', [], ['id' => $contact_id, 'uid' => 0, 'deleted' => false]); } // Don't display contacts that are about to be deleted @@ -64,29 +65,28 @@ class Contact extends BaseModule if (DBA::isResult($contact)) { if ($contact['self']) { if (($a->argc == 3) && intval($a->argv[1]) && in_array($a->argv[2], ['posts', 'conversations'])) { - goaway('profile/' . $contact['nick']); + $a->internalRedirect('profile/' . $contact['nick']); } else { - goaway('profile/' . $contact['nick'] . '?tab=profile'); + $a->internalRedirect('profile/' . $contact['nick'] . '?tab=profile'); } } $a->data['contact'] = $contact; - if (($a->data['contact']['network'] != "") && ($a->data['contact']['network'] != Protocol::DFRN)) { - $networkname = format_network_name($a->data['contact']['network'], $a->data['contact']['url']); + if (($contact['network'] != '') && ($contact['network'] != Protocol::DFRN)) { + $network_link = Strings::formatNetworkName($contact['network'], $contact['url']); } else { - $networkname = ''; + $network_link = ''; } - /// @TODO Add nice spaces - $vcard_widget = replace_macros(get_markup_template("vcard-widget.tpl"), [ - '$name' => htmlentities($a->data['contact']['name']), - '$photo' => $a->data['contact']['photo'], - '$url' => Model\Contact::MagicLink($a->data['contact']['url']), - '$addr' => (($a->data['contact']['addr'] != "") ? ($a->data['contact']['addr']) : ""), - '$network_name' => $networkname, - '$network' => L10n::t('Network:'), - '$account_type' => Model\Contact::getAccountType($a->data['contact']) + $vcard_widget = Renderer::replaceMacros(Renderer::getMarkupTemplate('vcard-widget.tpl'), [ + '$name' => $contact['name'], + '$photo' => $contact['photo'], + '$url' => Model\Contact::MagicLink($contact['url']), + '$addr' => defaults($contact, 'addr', ''), + '$network_link' => $network_link, + '$network' => L10n::t('Network:'), + '$account_type' => Model\Contact::getAccountType($contact) ]); $findpeople_widget = ''; @@ -94,7 +94,7 @@ class Contact extends BaseModule $networks_widget = ''; } else { $vcard_widget = ''; - $networks_widget = Widget::networks('contacts', $nets); + $networks_widget = Widget::networks('contact', $nets); if (isset($_GET['add'])) { $follow_widget = Widget::follow($_GET['add']); } else { @@ -105,22 +105,22 @@ class Contact extends BaseModule } if ($contact['uid'] != 0) { - $groups_widget = Model\Group::sidebarWidget('contacts', 'group', 'full', 'everyone', $contact_id); + $groups_widget = Model\Group::sidebarWidget('contact', 'group', 'full', 'everyone', $contact_id); } else { $groups_widget = null; } - $a->page['aside'] .= replace_macros(get_markup_template("contacts-widget-sidebar.tpl"), [ - '$vcard_widget' => $vcard_widget, + $a->page['aside'] .= Renderer::replaceMacros(Renderer::getMarkupTemplate('contacts-widget-sidebar.tpl'), [ + '$vcard_widget' => $vcard_widget, '$findpeople_widget' => $findpeople_widget, - '$follow_widget' => $follow_widget, - '$groups_widget' => $groups_widget, - '$networks_widget' => $networks_widget + '$follow_widget' => $follow_widget, + '$groups_widget' => $groups_widget, + '$networks_widget' => $networks_widget ]); $base = $a->getBaseURL(); - $tpl = get_markup_template("contacts-head.tpl"); - $a->page['htmlhead'] .= replace_macros($tpl, [ + $tpl = Renderer::getMarkupTemplate('contacts-head.tpl'); + $a->page['htmlhead'] .= Renderer::replaceMacros($tpl, [ '$baseurl' => System::baseUrl(true), '$base' => $base ]); @@ -134,40 +134,39 @@ class Contact extends BaseModule $contacts_id = $_POST['contact_batch']; - $stmt = DBA::select('contact', ['id'], ['id' => $contacts_id, 'uid' => local_user(), 'self' => false]); + $stmt = DBA::select('contact', ['id', 'archive'], ['id' => $contacts_id, 'uid' => local_user(), 'self' => false, 'deleted' => false]); $orig_records = DBA::toArray($stmt); - + $count_actions = 0; foreach ($orig_records as $orig_record) { $contact_id = $orig_record['id']; - if (defaults($_POST, 'contacts_batch_update', '')) { + if (!empty($_POST['contacts_batch_update'])) { self::updateContactFromPoll($contact_id); $count_actions++; } - if (defaults($_POST, 'contacts_batch_block', '')) { + if (!empty($_POST['contacts_batch_block'])) { self::blockContact($contact_id); $count_actions++; } - if (defaults($_POST, 'contacts_batch_ignore', '')) { + if (!empty($_POST['contacts_batch_ignore'])) { self::ignoreContact($contact_id); $count_actions++; } - if (defaults($_POST, 'contacts_batch_archive', '')) { - $r = self::archiveContact($contact_id, $orig_record); - if ($r) { - $count_actions++; - } + if (!empty($_POST['contacts_batch_archive']) + && self::archiveContact($contact_id, $orig_record) + ) { + $count_actions++; } - if (defaults($_POST, 'contacts_batch_drop', '')) { + if (!empty($_POST['contacts_batch_drop'])) { self::dropContact($orig_record); $count_actions++; } } if ($count_actions > 0) { - info(L10n::tt("%d contact edited.", "%d contacts edited.", $count_actions)); + info(L10n::tt('%d contact edited.', '%d contacts edited.', $count_actions)); } - goaway('contact'); + $a->internalRedirect('contact'); } public static function post() @@ -178,7 +177,7 @@ class Contact extends BaseModule return; } - if ($a->argv[1] === "batch") { + if ($a->argv[1] === 'batch') { self::batchActions($a); return; } @@ -188,13 +187,13 @@ class Contact extends BaseModule return; } - if (!DBA::exists('contact', ['id' => $contact_id, 'uid' => local_user()])) { + if (!DBA::exists('contact', ['id' => $contact_id, 'uid' => local_user(), 'deleted' => false])) { notice(L10n::t('Could not access contact record.') . EOL); - goaway('contact'); + $a->internalRedirect('contact'); return; // NOTREACHED } - Addon::callHooks('contact_edit_post', $_POST); + Hook::callAll('contact_edit_post', $_POST); $profile_id = intval(defaults($_POST, 'profile-assign', 0)); if ($profile_id) { @@ -204,30 +203,31 @@ class Contact extends BaseModule } } - $hidden = defaults($_POST['hidden']); + $hidden = !empty($_POST['hidden']); - $notify = defaults($_POST['notify']); + $notify = !empty($_POST['notify']); $fetch_further_information = intval(defaults($_POST, 'fetch_further_information', 0)); - $ffi_keyword_blacklist = escape_tags(trim(defaults($_POST, 'ffi_keyword_blacklist', ''))); + $ffi_keyword_blacklist = Strings::escapeHtml(trim(defaults($_POST, 'ffi_keyword_blacklist', ''))); $priority = intval(defaults($_POST, 'poll', 0)); if ($priority > 5 || $priority < 0) { $priority = 0; } - $info = escape_tags(trim($_POST['info'])); - - $r = DBA::update('contact', - ['profile-id' => $profile_id, - 'priority' => $priority, - 'info' => $info, - 'hidden' => $hidden, - 'notify_new_posts' => $notify, - 'fetch_further_information' => $fetch_further_information, - 'ffi_keyword_blacklist' => $ffi_keyword_blacklist], - ['id' => $contact_id, 'uid' => local_user()]); + $info = Strings::escapeHtml(trim(defaults($_POST, 'info', ''))); + + $r = DBA::update('contact', [ + 'profile-id' => $profile_id, + 'priority' => $priority, + 'info' => $info, + 'hidden' => $hidden, + 'notify_new_posts' => $notify, + 'fetch_further_information' => $fetch_further_information, + 'ffi_keyword_blacklist' => $ffi_keyword_blacklist], + ['id' => $contact_id, 'uid' => local_user()] + ); if (DBA::isResult($r)) { info(L10n::t('Contact updated.') . EOL); @@ -235,7 +235,7 @@ class Contact extends BaseModule notice(L10n::t('Failed to update contact record.') . EOL); } - $contact = DBA::selectFirst('contact', [], ['id' => $contact_id, 'uid' => local_user()]); + $contact = DBA::selectFirst('contact', [], ['id' => $contact_id, 'uid' => local_user(), 'deleted' => false]); if (DBA::isResult($contact)) { $a->data['contact'] = $contact; } @@ -247,86 +247,75 @@ class Contact extends BaseModule private static function updateContactFromPoll($contact_id) { - $contact = DBA::selectFirst('contact', ['uid', 'url', 'network'], ['id' => $contact_id, 'uid' => local_user()]); + $contact = DBA::selectFirst('contact', ['uid', 'url', 'network'], ['id' => $contact_id, 'uid' => local_user(), 'deleted' => false]); if (!DBA::isResult($contact)) { return; } - $uid = $contact["uid"]; + $uid = $contact['uid']; - if ($contact["network"] == Protocol::OSTATUS) { - $result = Model\Contact::createFromProbe($uid, $contact["url"], false, $contact["network"]); + if ($contact['network'] == Protocol::OSTATUS) { + $result = Model\Contact::createFromProbe($uid, $contact['url'], false, $contact['network']); if ($result['success']) { DBA::update('contact', ['subhub' => 1], ['id' => $contact_id]); } } else { // pull feed and consume it, which should subscribe to the hub. - Worker::add(PRIORITY_HIGH, "OnePoll", $contact_id, "force"); + Worker::add(PRIORITY_HIGH, 'OnePoll', $contact_id, 'force'); } } private static function updateContactFromProbe($contact_id) { - $contact = DBA::selectFirst('contact', ['uid', 'url', 'network'], ['id' => $contact_id, 'uid' => local_user()]); + $contact = DBA::selectFirst('contact', ['uid', 'url', 'network'], ['id' => $contact_id, 'uid' => local_user(), 'deleted' => false]); if (!DBA::isResult($contact)) { return; } - $uid = $contact["uid"]; + $uid = $contact['uid']; - $data = Probe::uri($contact["url"], "", 0, false); + $data = Probe::uri($contact['url'], '', 0, false); - // "Feed" or "Unknown" is mostly a sign of communication problems - if ((in_array($data["network"], [Protocol::FEED, Protocol::PHANTOM])) && ($data["network"] != $contact["network"])) { + // 'Feed' or 'Unknown' is mostly a sign of communication problems + if ((in_array($data['network'], [Protocol::FEED, Protocol::PHANTOM])) && ($data['network'] != $contact['network'])) { return; } - $updatefields = ["name", "nick", "url", "addr", "batch", "notify", "poll", "request", "confirm", - "poco", "network", "alias"]; - $update = []; + $updatefields = ['name', 'nick', 'url', 'addr', 'batch', 'notify', 'poll', 'request', 'confirm', 'poco', 'network', 'alias']; + $fields = []; - if ($data["network"] == Protocol::OSTATUS) { - $result = Model\Contact::createFromProbe($uid, $data["url"], false); + if ($data['network'] == Protocol::OSTATUS) { + $result = Model\Contact::createFromProbe($uid, $data['url'], false); if ($result['success']) { - $update["subhub"] = true; + $fields['subhub'] = true; } } foreach ($updatefields AS $field) { - if (isset($data[$field]) && ($data[$field] != "")) { - $update[$field] = $data[$field]; + if (!empty($data[$field])) { + $fields[$field] = $data[$field]; } } - $update["nurl"] = normalise_link($data["url"]); - - $query = ""; - - if (isset($data["priority"]) && ($data["priority"] != 0)) { - $query = "'priority' => '" . intval($data["priority"]) . "'"; - } - - foreach ($update AS $key => $value) { - if ($query != "") { - $query .= ", "; - } + $fields['nurl'] = Strings::normaliseLink($data['url']); - $query .= "'" . $key . "' => '" . DBA::escape($value) . "'"; + if (!empty($data['priority'])) { + $fields['priority'] = intval($data['priority']); } - if ($query == "") { + if (empty($fields)) { return; } - $r = DBA::update('contact', $query, ['id' => $contact_id, 'uid' => local_user()]); + DBA::update('contact', $fields, ['id' => $contact_id, 'uid' => local_user()]); // Update the entry in the contact table Model\Contact::updateAvatar($data['photo'], local_user(), $contact_id, true); // Update the entry in the gcontact table - Model\GContact::updateFromProbe($data["url"]); + Model\GContact::updateFromProbe($data['url']); } private static function blockContact($contact_id) @@ -343,7 +332,7 @@ class Contact extends BaseModule private static function archiveContact($contact_id, $orig_record) { - $archived = (($orig_record['archive']) ? 0 : 1); + $archived = (defaults($orig_record, 'archive', '') ? 0 : 1); $r = DBA::update('contact', ['archive' => $archived], ['id' => $contact_id, 'uid' => local_user()]); return DBA::isResult($r); @@ -351,17 +340,12 @@ class Contact extends BaseModule private static function dropContact($orig_record) { - $a = get_app(); - - $r = q("SELECT `contact`.*, `user`.* FROM `contact` INNER JOIN `user` ON `contact`.`uid` = `user`.`uid` - WHERE `user`.`uid` = %d AND `contact`.`self` LIMIT 1", - intval($a->user['uid']) - ); - if (!DBA::isResult($r)) { + $owner = Model\User::getOwnerDataById(local_user()); + if (!DBA::isResult($owner)) { return; } - Model\Contact::terminateFriendship($r[0], $orig_record, true); + Model\Contact::terminateFriendship($owner, $orig_record, true); Model\Contact::remove($orig_record['id']); } @@ -385,22 +369,22 @@ class Contact extends BaseModule $cmd = $a->argv[2]; - $orig_record = DBA::selectFirst('contact', [], ['id' => $contact_id, 'uid' => [0, local_user()], 'self' => false]); + $orig_record = DBA::selectFirst('contact', [], ['id' => $contact_id, 'uid' => [0, local_user()], 'self' => false, 'deleted' => false]); if (!DBA::isResult($orig_record)) { notice(L10n::t('Could not access contact record.') . EOL); - goaway('contact'); + $a->internalRedirect('contact'); return; // NOTREACHED } if ($cmd === 'update' && ($orig_record['uid'] != 0)) { self::updateContactFromPoll($contact_id); - goaway('contact/' . $contact_id); + $a->internalRedirect('contact/' . $contact_id); // NOTREACHED } if ($cmd === 'updateprofile' && ($orig_record['uid'] != 0)) { self::updateContactFromProbe($contact_id); - goaway('crepair/' . $contact_id); + $a->internalRedirect('crepair/' . $contact_id); // NOTREACHED } @@ -410,7 +394,7 @@ class Contact extends BaseModule $blocked = Model\Contact::isBlockedByUser($contact_id, local_user()); info(($blocked ? L10n::t('Contact has been blocked') : L10n::t('Contact has been unblocked')) . EOL); - goaway('contact/' . $contact_id); + $a->internalRedirect('contact/' . $contact_id); return; // NOTREACHED } @@ -420,7 +404,7 @@ class Contact extends BaseModule $ignored = Model\Contact::isIgnoredByUser($contact_id, local_user()); info(($ignored ? L10n::t('Contact has been ignored') : L10n::t('Contact has been unignored')) . EOL); - goaway('contact/' . $contact_id); + $a->internalRedirect('contact/' . $contact_id); return; // NOTREACHED } @@ -431,14 +415,14 @@ class Contact extends BaseModule info((($archived) ? L10n::t('Contact has been archived') : L10n::t('Contact has been unarchived')) . EOL); } - goaway('contact/' . $contact_id); + $a->internalRedirect('contact/' . $contact_id); return; // NOTREACHED } if ($cmd === 'drop' && ($orig_record['uid'] != 0)) { // Check if we should do HTML-based delete confirmation - if (defaults($_REQUEST, 'confirm')) { - //