X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FCore%2FACL.php;h=19015714e9c7b48148700c0f414153330aa9cc75;hb=4facd1dfdba93ede48ca40b5e146424e6701118b;hp=4e8bf6abde2e5eb85a786b08a632cbafd92fc304;hpb=f7190ce9714be3e2edbc0915c854fc707cfbbcc6;p=friendica.git diff --git a/src/Core/ACL.php b/src/Core/ACL.php index 4e8bf6abde..19015714e9 100644 --- a/src/Core/ACL.php +++ b/src/Core/ACL.php @@ -6,47 +6,33 @@ namespace Friendica\Core; -use dba; use Friendica\BaseObject; use Friendica\Content\Feature; -use Friendica\Database\DBM; +use Friendica\Database\DBA; use Friendica\Model\Contact; use Friendica\Model\GContact; use Friendica\Util\Network; -use const CONTACT_IS_FRIEND; -use const NETWORK_DFRN; -use const NETWORK_DIASPORA; -use const NETWORK_FACEBOOK; -use const NETWORK_MAIL; -use const NETWORK_OSTATUS; -use const PHP_EOL; -use function dbesc; -use function defaults; -use function get_markup_template; -use function get_server; -use function local_user; -use function remote_user; -use function replace_macros; /** * Handle ACL management and display * - * @author Hypolite Petovan + * @author Hypolite Petovan */ class ACL extends BaseObject { /** * 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 + * @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 = []) { @@ -61,36 +47,35 @@ class ACL extends BaseObject switch (defaults($options, 'networks', Protocol::PHANTOM)) { case 'DFRN_ONLY': - $networks = [NETWORK_DFRN]; + $networks = [Protocol::DFRN]; break; + case 'PRIVATE': - if (!empty($a->user['prvnets'])) { - $networks = [NETWORK_DFRN, NETWORK_MAIL, NETWORK_DIASPORA]; - } else { - $networks = [NETWORK_DFRN, NETWORK_FACEBOOK, NETWORK_MAIL, NETWORK_DIASPORA]; - } + $networks = [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::MAIL, Protocol::DIASPORA]; break; + case 'TWO_WAY': if (!empty($a->user['prvnets'])) { - $networks = [NETWORK_DFRN, NETWORK_MAIL, NETWORK_DIASPORA]; + $networks = [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::MAIL, Protocol::DIASPORA]; } else { - $networks = [NETWORK_DFRN, NETWORK_FACEBOOK, NETWORK_MAIL, NETWORK_DIASPORA, NETWORK_OSTATUS]; + $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]; - Addon::callHooks('contact_select_options', $x); + Hook::callAll('contact_select_options', $x); $o = ''; $sql_extra = ''; if (!empty($x['mutual'])) { - $sql_extra .= sprintf(" AND `rel` = %d ", intval(CONTACT_IS_FRIEND)); + $sql_extra .= sprintf(" AND `rel` = %d ", intval(Contact::FRIEND)); } if (!empty($x['exclude'])) { @@ -100,7 +85,7 @@ class ACL extends BaseObject if (!empty($x['networks'])) { /// @TODO rewrite to foreach() array_walk($x['networks'], function (&$value) { - $value = "'" . dbesc($value) . "'"; + $value = "'" . DBA::escape($value) . "'"; }); $str_nets = implode(',', $x['networks']); $sql_extra .= " AND `network` IN ( $str_nets ) "; @@ -114,20 +99,20 @@ class ACL extends BaseObject $o .= "' . PHP_EOL; - Addon::callHooks($a->module . '_post_' . $selname, $o); + Hook::callAll($a->module . '_post_' . $selname, $o); return $o; } @@ -157,6 +142,7 @@ class ACL extends BaseObject * @param int $size Length of the select box * @param int $tabindex Select input tag tabindex attribute * @return string + * @throws \Exception */ public static function getMessageContactSelectHTML($selname, $selclass, array $preselected = [], $size = 4, $tabindex = null) { @@ -166,8 +152,8 @@ class ACL extends BaseObject // 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_IS_FRIEND)); - $sql_extra .= sprintf(" AND `network` IN ('%s' , '%s') ", NETWORK_DFRN, NETWORK_DIASPORA); + $sql_extra = sprintf(" AND `rel` = %d ", intval(Contact::FRIEND)); + $sql_extra .= sprintf(" AND `network` IN ('%s' , '%s') ", Protocol::DFRN, Protocol::DIASPORA); $tabindex_attr = !empty($tabindex) ? ' tabindex="' . intval($tabindex) . '"' : ''; @@ -179,22 +165,22 @@ class ACL extends BaseObject $o .= " ' . L10n::t("Post to Email") . ''; } - Addon::callHooks('jot_networks', $jotnets); + Hook::callAll('jot_networks', $jotnets); } else { $jotnets .= L10n::t('Connectors disabled, since "%s" is enabled.', L10n::t('Hide your profile details from unknown viewers?')); } } - - $tpl = get_markup_template('acl_selector.tpl'); - $o = replace_macros($tpl, [ + + $tpl = Renderer::getMarkupTemplate('acl_selector.tpl'); + $o = Renderer::replaceMacros($tpl, [ '$showall' => L10n::t('Visible to everybody'), '$show' => L10n::t('show'), '$hide' => L10n::t('don\'t show'), - '$allowcid' => json_encode($perms['allow_cid']), - '$allowgid' => json_encode($perms['allow_gid']), - '$denycid' => json_encode($perms['deny_cid']), - '$denygid' => json_encode($perms['deny_gid']), + '$allowcid' => json_encode(defaults($default_permissions, 'allow_cid', [])), // we need arrays for Javascript since we call .remove() and .push() on this values + '$allowgid' => json_encode(defaults($default_permissions, 'allow_gid', [])), + '$denycid' => json_encode(defaults($default_permissions, 'deny_cid', [])), + '$denygid' => json_encode(defaults($default_permissions, 'deny_gid', [])), '$networks' => $show_jotnets, '$emailcc' => L10n::t('CC: email addresses'), '$emtitle' => L10n::t('Example: bob@example.com, mary@example.com'), @@ -332,10 +324,11 @@ class ACL extends BaseObject * @param string $search Name or part of a name or nick * @param string $mode Search mode (e.g. "community") * @return array with the search results + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function contactAutocomplete($search, $mode) { - if ((Config::get('system', 'block_public')) && (!local_user()) && (!remote_user())) { + if (Config::get('system', 'block_public') && !local_user() && !remote_user()) { return []; } @@ -352,12 +345,11 @@ class ACL extends BaseObject if (Config::get('system', 'poco_local_search')) { $return = GContact::searchByName($search, $mode); } else { - $a = self::getApp(); - $p = $a->pager['page'] != 1 ? '&p=' . $a->pager['page'] : ''; + $p = defaults($_GET, 'page', 1) != 1 ? '&p=' . defaults($_GET, 'page', 1) : ''; - $response = Network::curl(get_server() . '/lsearch?f=' . $p . '&search=' . urlencode($search)); - if ($response['success']) { - $lsearch = json_decode($response['body'], true); + $curlResult = Network::curl(get_server() . '/lsearch?f=' . $p . '&search=' . urlencode($search)); + if ($curlResult->isSuccess()) { + $lsearch = json_decode($curlResult->getBody(), true); if (!empty($lsearch['results'])) { $return = $lsearch['results']; }