diff --git a/mod/fsuggest.php b/mod/fsuggest.php deleted file mode 100644 index 73b0f09e8..000000000 --- a/mod/fsuggest.php +++ /dev/null @@ -1,96 +0,0 @@ -argc != 2) { - return; - } - - $contact_id = intval($a->argv[1]); - if (empty($contact_id)) { - return; - } - - // We do query the "uid" as well to ensure that it is our contact - if (!DBA::exists('contact', ['id' => $contact_id, 'uid' => local_user()])) { - notice(DI::l10n()->t('Contact not found.') . EOL); - return; - } - - $suggest_contact_id = intval($_POST['suggest']); - if (empty($suggest_contact_id)) { - return; - } - - // We do query the "uid" as well to ensure that it is our contact - $contact = DBA::selectFirst('contact', ['name', 'url', 'request', 'avatar'], ['id' => $suggest_contact_id, 'uid' => local_user()]); - if (!DBA::isResult($contact)) { - notice(DI::l10n()->t('Suggested contact not found.') . EOL); - return; - } - - $note = Strings::escapeHtml(trim($_POST['note'] ?? '')); - - $fields = ['uid' => local_user(),'cid' => $contact_id, 'name' => $contact['name'], - 'url' => $contact['url'], 'request' => $contact['request'], - 'photo' => $contact['avatar'], 'note' => $note, 'created' => DateTimeFormat::utcNow()]; - DBA::insert('fsuggest', $fields); - - Worker::add(PRIORITY_HIGH, 'Notifier', Delivery::SUGGESTION, DBA::lastInsertId()); - - info(DI::l10n()->t('Friend suggestion sent.') . EOL); -} - -function fsuggest_content(App $a) -{ - if (! local_user()) { - notice(DI::l10n()->t('Permission denied.') . EOL); - return; - } - - if ($a->argc != 2) { - return; - } - - $contact_id = intval($a->argv[1]); - - $contact = DBA::selectFirst('contact', [], ['id' => $contact_id, 'uid' => local_user()]); - if (! DBA::isResult($contact)) { - notice(DI::l10n()->t('Contact not found.') . EOL); - return; - } - - $o = '

' . DI::l10n()->t('Suggest Friends') . '

'; - - $o .= '
' . DI::l10n()->t('Suggest a friend for %s', $contact['name']) . '
'; - - $o .= '
'; - - $o .= ACL::getSuggestContactSelectHTML( - 'suggest', - 'suggest-select', - ['size' => 4, 'exclude' => $contact_id, 'networks' => 'DFRN_ONLY', 'single' => true] - ); - - - $o .= '
'; - $o .= '
'; - - return $o; -} diff --git a/src/Core/ACL.php b/src/Core/ACL.php index cfe46e770..b60421877 100644 --- a/src/Core/ACL.php +++ b/src/Core/ACL.php @@ -19,119 +19,6 @@ use Friendica\Model\Group; */ class ACL { - /** - * Returns a select input tag with all the contact of the local user - * - * @param string $selname Name attribute of the select input tag - * @param string $selclass Class attribute of the select input tag - * @param array $options Available options: - * - size: length of the select box - * - mutual_friends: Only used for the hook - * - single: Only used for the hook - * - exclude: Only used for the hook - * @param array $preselected Contact ID that should be already selected - * @return string - * @throws \Exception - */ - public static function getSuggestContactSelectHTML($selname, $selclass, array $options = [], array $preselected = []) - { - $a = DI::app(); - - $networks = null; - - $size = ($options['size'] ?? 0) ?: 4; - $mutual = !empty($options['mutual_friends']); - $single = !empty($options['single']) && empty($options['multiple']); - $exclude = $options['exclude'] ?? false; - - switch (($options['networks'] ?? '') ?: Protocol::PHANTOM) { - case 'DFRN_ONLY': - $networks = [Protocol::DFRN]; - break; - - case 'PRIVATE': - $networks = [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::MAIL, Protocol::DIASPORA]; - break; - - case 'TWO_WAY': - if (!empty($a->user['prvnets'])) { - $networks = [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::MAIL, Protocol::DIASPORA]; - } else { - $networks = [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::MAIL, Protocol::DIASPORA, Protocol::OSTATUS]; - } - break; - - default: /// @TODO Maybe log this call? - break; - } - - $x = ['options' => $options, 'size' => $size, 'single' => $single, 'mutual' => $mutual, 'exclude' => $exclude, 'networks' => $networks]; - - Hook::callAll('contact_select_options', $x); - - $o = ''; - - $sql_extra = ''; - - if (!empty($x['mutual'])) { - $sql_extra .= sprintf(" AND `rel` = %d ", intval(Contact::FRIEND)); - } - - if (!empty($x['exclude'])) { - $sql_extra .= sprintf(" AND `id` != %d ", intval($x['exclude'])); - } - - if (!empty($x['networks'])) { - /// @TODO rewrite to foreach() - array_walk($x['networks'], function (&$value) { - $value = "'" . DBA::escape($value) . "'"; - }); - $str_nets = implode(',', $x['networks']); - $sql_extra .= " AND `network` IN ( $str_nets ) "; - } - - $tabindex = (!empty($options['tabindex']) ? 'tabindex="' . $options["tabindex"] . '"' : ''); - - if (!empty($x['single'])) { - $o .= "\r\n"; - } - - $stmt = DBA::p("SELECT `id`, `name`, `url`, `network` FROM `contact` - WHERE `uid` = ? AND NOT `self` AND NOT `blocked` AND NOT `pending` AND NOT `archive` AND NOT `deleted` AND `notify` != '' - $sql_extra - ORDER BY `name` ASC ", intval(local_user()) - ); - - $contacts = DBA::toArray($stmt); - - $arr = ['contact' => $contacts, 'entry' => $o]; - - // e.g. 'network_pre_contact_deny', 'profile_pre_contact_allow' - Hook::callAll(DI::module()->getName() . '_pre_' . $selname, $arr); - - if (DBA::isResult($contacts)) { - foreach ($contacts as $contact) { - if (in_array($contact['id'], $preselected)) { - $selected = ' selected="selected" '; - } else { - $selected = ''; - } - - $trimmed = mb_substr($contact['name'], 0, 20); - - $o .= "\r\n"; - } - } - - $o .= '' . PHP_EOL; - - Hook::callAll(DI::module()->getName() . '_post_' . $selname, $o); - - return $o; - } - /** * Returns a select input tag with all the contact of the local user * diff --git a/src/Module/FriendSuggest.php b/src/Module/FriendSuggest.php index 027a43b36..b2a76300a 100644 --- a/src/Module/FriendSuggest.php +++ b/src/Module/FriendSuggest.php @@ -21,7 +21,7 @@ class FriendSuggest extends BaseModule { public static function init(array $parameters = []) { - if (! local_user()) { + if (!local_user()) { throw new ForbiddenException(DI::l10n()->t('Permission denied.')); } } @@ -50,13 +50,13 @@ class FriendSuggest extends BaseModule $note = Strings::escapeHtml(trim($_POST['note'] ?? '')); $suggest = DI::fsuggest()->insert([ - 'uid' => local_user(), - 'cid' => $cid, - 'name' => $contact['name'], - 'url' => $contact['url'], + 'uid' => local_user(), + 'cid' => $cid, + 'name' => $contact['name'], + 'url' => $contact['url'], 'request' => $contact['request'], - 'photo' => $contact['avatar'], - 'note' => $note, + 'photo' => $contact['avatar'], + 'note' => $note, 'created' => DateTimeFormat::utcNow() ]); @@ -75,8 +75,8 @@ class FriendSuggest extends BaseModule DI::baseUrl()->redirect(); } - $stmtContacts = ContactModel::select(['id', 'name'], [ - '`uid` = ? AND NOT `self` AND NOT `blocked` AND NOT `pending` AND NOT `archive` AND NOT `deleted` AND `notify` != "" AND `id` != ? AND `networks` = ?', + $contacts = ContactModel::selectToArray(['id', 'name'], [ + '`uid` = ? AND NOT `self` AND NOT `blocked` AND NOT `pending` AND NOT `archive` AND NOT `deleted` AND `notify` != "" AND `id` != ? AND `network` = ?', local_user(), $cid, Protocol::DFRN, @@ -84,14 +84,14 @@ class FriendSuggest extends BaseModule $formattedContacts = []; - while ($contact = DI::dba()->fetch($stmtContacts)) { + foreach ($contacts as $contact) { $formattedContacts[$contact['id']] = $contact['name']; } $tpl = Renderer::getMarkupTemplate('fsuggest.tpl'); return Renderer::replaceMacros($tpl, [ - '$contact_id' => $cid, - '$fsuggest_title' => DI::l10n()->t('Suggest Friends'), + '$contact_id' => $cid, + '$fsuggest_title' => DI::l10n()->t('Suggest Friends'), '$fsuggest_select' => [ 'suggest', DI::l10n()->t('Suggest a friend for %s', $contact['name']), @@ -99,7 +99,7 @@ class FriendSuggest extends BaseModule '', $formattedContacts, ], - '$submit' => DI::l10n()->t('Submit'), + '$submit' => DI::l10n()->t('Submit'), ]); } }