diff --git a/mod/events.php b/mod/events.php index d6701ce44..d1d3d758b 100644 --- a/mod/events.php +++ b/mod/events.php @@ -18,6 +18,7 @@ use Friendica\DI; use Friendica\Model\Event; use Friendica\Model\Item; use Friendica\Model\Profile; +use Friendica\Model\User; use Friendica\Module\Security\Login; use Friendica\Util\DateTimeFormat; use Friendica\Util\Strings; @@ -427,7 +428,7 @@ function events_content(App $a) // Passed parameters overrides anything found in the DB if (in_array($mode, ['edit', 'new', 'copy'])) { if (empty($orig_event)) { - $orig_event = []; + $orig_event = User::getById(local_user(), ['allow_cid', 'allow_gid', 'deny_cid', 'deny_gid']);; } // In case of an error the browser is redirected back here, with these parameters filled in with the previous values diff --git a/src/Core/ACL.php b/src/Core/ACL.php index a4b4a9919..d4148d6ba 100644 --- a/src/Core/ACL.php +++ b/src/Core/ACL.php @@ -206,11 +206,6 @@ class ACL return $o; } - private static function fixACL(&$item) - { - $item = intval(str_replace(['<', '>'], ['', ''], $item)); - } - /** * Return the default permission of the provided user array * @@ -220,32 +215,13 @@ class ACL */ public static function getDefaultUserPermissions(array $user = null) { - $matches = []; - - $acl_regex = '/<([0-9]+)>/i'; - - preg_match_all($acl_regex, $user['allow_cid'] ?? '', $matches); - $allow_cid = $matches[1]; - preg_match_all($acl_regex, $user['allow_gid'] ?? '', $matches); - $allow_gid = $matches[1]; - preg_match_all($acl_regex, $user['deny_cid'] ?? '', $matches); - $deny_cid = $matches[1]; - preg_match_all($acl_regex, $user['deny_gid'] ?? '', $matches); - $deny_gid = $matches[1]; - - // Reformats the ACL data so that it is accepted by the JS frontend - array_walk($allow_cid, 'self::fixACL'); - array_walk($allow_gid, 'self::fixACL'); - array_walk($deny_cid, 'self::fixACL'); - array_walk($deny_gid, 'self::fixACL'); - - Contact::pruneUnavailable($allow_cid); + $aclFormatter = DI::aclFormatter(); return [ - 'allow_cid' => $allow_cid, - 'allow_gid' => $allow_gid, - 'deny_cid' => $deny_cid, - 'deny_gid' => $deny_gid, + 'allow_cid' => Contact::pruneUnavailable($aclFormatter->expand($user['allow_cid'] ?? '')), + 'allow_gid' => $aclFormatter->expand($user['allow_gid'] ?? ''), + 'deny_cid' => $aclFormatter->expand($user['deny_cid'] ?? ''), + 'deny_gid' => $aclFormatter->expand($user['deny_gid'] ?? ''), ]; } diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 10cf4bf34..0540bf7be 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -2682,26 +2682,23 @@ class Contact * Remove the unavailable contact ids from the provided list * * @param array $contact_ids Contact id list + * @return array * @throws \Exception */ - public static function pruneUnavailable(array &$contact_ids) + public static function pruneUnavailable(array $contact_ids) { if (empty($contact_ids)) { - return; + return []; } - $str = DBA::escape(implode(',', $contact_ids)); + $contacts = Contact::selectToArray(['id'], [ + 'id' => $contact_ids, + 'blocked' => false, + 'pending' => false, + 'archive' => false, + ]); - $stmt = DBA::p("SELECT `id` FROM `contact` WHERE `id` IN ( " . $str . ") AND `blocked` = 0 AND `pending` = 0 AND `archive` = 0"); - - $return = []; - while($contact = DBA::fetch($stmt)) { - $return[] = $contact['id']; - } - - DBA::close($stmt); - - $contact_ids = $return; + return array_column($contacts, 'id'); } /** diff --git a/src/Model/Group.php b/src/Model/Group.php index c984f0032..b87458756 100644 --- a/src/Model/Group.php +++ b/src/Model/Group.php @@ -384,7 +384,7 @@ class Group DBA::close($stmt); if ($check_dead) { - Contact::pruneUnavailable($return); + $return = Contact::pruneUnavailable($return); } return $return; diff --git a/src/Module/Item/Compose.php b/src/Module/Item/Compose.php index 2364d6483..d30b0d86f 100644 --- a/src/Module/Item/Compose.php +++ b/src/Module/Item/Compose.php @@ -5,22 +5,15 @@ namespace Friendica\Module\Item; use Friendica\BaseModule; use Friendica\Content\Feature; use Friendica\Core\ACL; -use Friendica\Core\Config; use Friendica\Core\Hook; use Friendica\Core\L10n; use Friendica\Core\Renderer; -use Friendica\Core\System; use Friendica\Core\Theme; -use Friendica\Database\DBA; use Friendica\DI; -use Friendica\Model\Contact; -use Friendica\Model\FileTag; -use Friendica\Model\Group; use Friendica\Model\Item; use Friendica\Model\User; use Friendica\Module\Security\Login; use Friendica\Network\HTTPException\NotImplementedException; -use Friendica\Util\ACLFormatter; use Friendica\Util\Crypto; class Compose extends BaseModule