$URL) { if ($user->hasAccess($permission)) { return Backend::url($URL); } } return Backend::url($urls[$default]); } /** * Check if Translator plugin is installed * * @return boolean */ public static function isTranslatePlugin() :bool { return class_exists('\RainLab\Translate\Classes\Translator') && class_exists('\RainLab\Translate\Models\Message') && class_exists('\RainLab\Translate\Models\Locale'); } /** * Render an array|object as HTML list (UL > LI) * * @param mixed $data List items * * @return string */ public static function array2ul($data) :string { $return = ''; foreach ($data as $index => $item) { if (!is_string($item)) { $return .= '
  • ' . htmlspecialchars($index, ENT_QUOTES) . '
  • "; } else { $return .= '
  • '; if (is_object($data)) { $return .= htmlspecialchars($index, ENT_QUOTES) . ' - '; } $return .= htmlspecialchars($item, ENT_QUOTES) .'
  • '; } } return $return; } /** * Anonymize an IPv4 address * (credits: https://github.com/geertw/php-ip-anonymizer) * * @param string $address IPv4 address * * @return string Anonymized address */ public static function anonymizeIPv4(string $address) :string { return inet_ntop(inet_pton($address) & inet_pton("255.255.255.0")); } /** * Extract string from curly braces * * @param string $pattern Pattern to replace * @param string $replacement Replacement string * @param string $subject Strings to replace * * @return string */ public static function replaceToken(string $pattern, string $replacement = null, string $subject) :string { $pattern = '/{{\s*('.$pattern.')\s*}}/'; return preg_replace($pattern, $replacement, $subject); } } ?>