3 namespace Friendica\Module;
5 use Friendica\BaseModule;
6 use Friendica\Core\Protocol;
7 use Friendica\Core\Renderer;
8 use Friendica\Core\Worker;
10 use Friendica\Model\Contact as ContactModel;
11 use Friendica\Network\HTTPException\ForbiddenException;
12 use Friendica\Network\HTTPException\NotFoundException;
13 use Friendica\Util\DateTimeFormat;
14 use Friendica\Util\Strings;
15 use Friendica\Worker\Delivery;
18 * Suggest friends to a known contact
20 class FriendSuggest extends BaseModule
22 public static function init(array $parameters = [])
25 throw new ForbiddenException(DI::l10n()->t('Permission denied.'));
29 public static function post(array $parameters = [])
31 $cid = intval($parameters['contact']);
33 // We do query the "uid" as well to ensure that it is our contact
34 if (!DI::dba()->exists('contact', ['id' => $cid, 'uid' => local_user()])) {
35 throw new NotFoundException(DI::l10n()->t('Contact not found.'));
38 $suggest_contact_id = intval($_POST['suggest']);
39 if (empty($suggest_contact_id)) {
43 // We do query the "uid" as well to ensure that it is our contact
44 $contact = DI::dba()->selectFirst('contact', ['name', 'url', 'request', 'avatar'], ['id' => $suggest_contact_id, 'uid' => local_user()]);
45 if (empty($contact)) {
46 notice(DI::l10n()->t('Suggested contact not found.'));
50 $note = Strings::escapeHtml(trim($_POST['note'] ?? ''));
52 $suggest = DI::fsuggest()->insert([
53 'uid' => local_user(),
55 'name' => $contact['name'],
56 'url' => $contact['url'],
57 'request' => $contact['request'],
58 'photo' => $contact['avatar'],
60 'created' => DateTimeFormat::utcNow()
63 Worker::add(PRIORITY_HIGH, 'Notifier', Delivery::SUGGESTION, $suggest->id);
65 info(DI::l10n()->t('Friend suggestion sent.'));
68 public static function content(array $parameters = [])
70 $cid = intval($parameters['contact']);
72 $contact = DI::dba()->selectFirst('contact', [], ['id' => $cid, 'uid' => local_user()]);
73 if (empty($contact)) {
74 notice(DI::l10n()->t('Contact not found.'));
75 DI::baseUrl()->redirect();
78 $contacts = ContactModel::selectToArray(['id', 'name'], [
93 $formattedContacts = [];
95 foreach ($contacts as $contact) {
96 $formattedContacts[$contact['id']] = $contact['name'];
99 $tpl = Renderer::getMarkupTemplate('fsuggest.tpl');
100 return Renderer::replaceMacros($tpl, [
101 '$contact_id' => $cid,
102 '$fsuggest_title' => DI::l10n()->t('Suggest Friends'),
103 '$fsuggest_select' => [
105 DI::l10n()->t('Suggest a friend for %s', $contact['name']),
110 '$submit' => DI::l10n()->t('Submit'),