X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FCore%2FACL.php;h=0da636699e690d71116d823688cf0e6f2984e1ae;hb=e8929efbea071505aa583c4b8576f0bd13d06ea8;hp=1c32759cfd6c509c17c696b1e48177ba5292871c;hpb=e80d68ba53776bed047d897f52db7e25b35a479d;p=friendica.git diff --git a/src/Core/ACL.php b/src/Core/ACL.php index 1c32759cfd..0da636699e 100644 --- a/src/Core/ACL.php +++ b/src/Core/ACL.php @@ -33,75 +33,73 @@ use Friendica\Model\Group; class ACL { /** - * Returns a select input tag with all the contact of the local user + * Returns a select input tag for private message recipient * - * @param string $selname Name attribute of the select input tag - * @param string $selclass Class attribute of the select input tag - * @param array $preselected Contact IDs that should be already selected - * @param int $size Length of the select box - * @param int $tabindex Select input tag tabindex attribute + * @param int $selected Existing recipien contact ID * @return string * @throws \Exception */ - public static function getMessageContactSelectHTML($selname, $selclass, array $preselected = [], $size = 4, $tabindex = null) + public static function getMessageContactSelectHTML(int $selected = null) { - $a = DI::app(); - $o = ''; - // When used for private messages, we limit correspondence to mutual DFRN/Friendica friends and the selector - // to one recipient. By default our selector allows multiple selects amongst all contacts. - $sql_extra = sprintf(" AND `rel` = %d ", intval(Contact::FRIEND)); - $sql_extra .= sprintf(" AND `network` IN ('%s' , '%s') ", Protocol::DFRN, Protocol::DIASPORA); + $page = DI::page(); - $tabindex_attr = !empty($tabindex) ? ' tabindex="' . intval($tabindex) . '"' : ''; - - $hidepreselected = ''; - if ($preselected) { - $sql_extra .= " AND `id` IN (" . implode(",", $preselected) . ")"; - $hidepreselected = ' style="display: none;"'; - } + $page->registerFooterScript(Theme::getPathForFile('asset/typeahead.js/dist/typeahead.bundle.js')); + $page->registerFooterScript(Theme::getPathForFile('js/friendica-tagsinput/friendica-tagsinput.js')); + $page->registerStylesheet(Theme::getPathForFile('js/friendica-tagsinput/friendica-tagsinput.css')); + $page->registerStylesheet(Theme::getPathForFile('js/friendica-tagsinput/friendica-tagsinput-typeahead.css')); - $o .= "' . PHP_EOL; + return $o; + } - if ($preselected) { - $o .= implode(', ', $receiverlist); - } + /** + * Returns a minimal ACL block for self-only permissions + * + * @param int $localUserId + * @param string $explanation + * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + */ + public static function getSelfOnlyHTML(int $localUserId, string $explanation) + { + $selfPublicContactId = Contact::getPublicIdByUserId($localUserId); - Hook::callAll(DI::module()->getName() . '_post_' . $selname, $o); + $tpl = Renderer::getMarkupTemplate('acl/self_only.tpl'); + $o = Renderer::replaceMacros($tpl, [ + '$selfPublicContactId' => $selfPublicContactId, + '$explanation' => $explanation, + ]); return $o; } @@ -146,6 +144,7 @@ class ACL 'archive' => false, 'deleted' => false, 'pending' => false, + 'network' => Protocol::FEDERATED, 'rel' => [Contact::FOLLOWER, Contact::FRIEND] ], $condition), $params @@ -158,7 +157,7 @@ class ACL $acl_forums = Contact::selectToArray($fields, ['uid' => $user_id, 'self' => false, 'blocked' => false, 'archive' => false, 'deleted' => false, - 'pending' => false, 'contact-type' => Contact::TYPE_COMMUNITY], $params + 'network' => Protocol::FEDERATED, 'pending' => false, 'contact-type' => Contact::TYPE_COMMUNITY], $params ); $acl_contacts = array_merge($acl_forums, $acl_contacts); @@ -218,8 +217,7 @@ class ACL * 'allow_cid' => [], * 'allow_gid' => [], * 'deny_cid' => [], - * 'deny_gid' => [], - * 'hidewall' => true/false + * 'deny_gid' => [] * ] * @param array $condition * @param string $form_prefix @@ -257,7 +255,6 @@ class ACL 'allow_gid' => $default_permissions['allow_gid'] ?? [], 'deny_cid' => $default_permissions['deny_cid'] ?? [], 'deny_gid' => $default_permissions['deny_gid'] ?? [], - 'hidewall' => $default_permissions['hidewall'] ?? false, ]; if (count($default_permissions['allow_cid']) @@ -273,31 +270,21 @@ class ACL $jotnets_fields = []; if ($for_federation) { - $mail_enabled = false; - $pubmail_enabled = false; - if (function_exists('imap_open') && !DI::config()->get('system', 'imap_disabled')) { $mailacct = DBA::selectFirst('mailacct', ['pubmail'], ['`uid` = ? AND `server` != ""', $user['uid']]); if (DBA::isResult($mailacct)) { - $mail_enabled = true; - $pubmail_enabled = !empty($mailacct['pubmail']); - } - } - - if (!$default_permissions['hidewall']) { - if ($mail_enabled) { $jotnets_fields[] = [ 'type' => 'checkbox', 'field' => [ 'pubmail_enable', DI::l10n()->t('Post to Email'), - $pubmail_enabled + !empty($mailacct['pubmail']) ] ]; + } - - Hook::callAll('jot_networks', $jotnets_fields); } + Hook::callAll('jot_networks', $jotnets_fields); } $acl_contacts = self::getContactListByUserId($user['uid'], $condition); @@ -315,7 +302,7 @@ class ACL 'emailcc' => $form_prefix ? $form_prefix . '[emailcc]' : 'emailcc', ]; - $tpl = Renderer::getMarkupTemplate('acl_selector.tpl'); + $tpl = Renderer::getMarkupTemplate('acl/full_selector.tpl'); $o = Renderer::replaceMacros($tpl, [ '$public_title' => DI::l10n()->t('Public'), '$public_desc' => DI::l10n()->t('This content will be shown to all your followers and can be seen in the community pages and by anyone with its link.'), @@ -326,7 +313,6 @@ class ACL '$emailcc' => DI::l10n()->t('CC: email addresses'), '$emtitle' => DI::l10n()->t('Example: bob@example.com, mary@example.com'), '$jotnets_summary' => DI::l10n()->t('Connectors'), - '$jotnets_disabled_label' => DI::l10n()->t('Connectors disabled, since "%s" is enabled.', DI::l10n()->t('Hide your profile details from unknown viewers?')), '$visibility' => $visibility, '$acl_contacts' => $acl_contacts, '$acl_groups' => $acl_groups, @@ -337,7 +323,6 @@ class ACL '$group_deny' => implode(',', $default_permissions['deny_gid']), '$for_federation' => $for_federation, '$jotnets_fields' => $jotnets_fields, - '$user_hidewall' => $default_permissions['hidewall'], '$input_names' => $input_names, '$input_group_id' => $input_group_id, ]);