]> git.mxchange.org Git - friendica.git/blobdiff - src/Util/Strings.php
Merge pull request #11966 from annando/date-correction
[friendica.git] / src / Util / Strings.php
index 9d4a8212f6221faefaf460fb968db1d8dbddffd4..84a8b6727a3d4d4383bf22a1c06d5b58d2682f24 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2020, Friendica
+ * @copyright Copyright (C) 2010-2022, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
@@ -32,11 +32,12 @@ class Strings
        /**
         * Generates a pseudo-random string of hexadecimal characters
         *
-        * @param int $size
-        * @return string
+        * @param int $size Size of string (default: 64)
+        *
+        * @return string Pseudo-random string
         * @throws \Exception
         */
-       public static function getRandomHex($size = 64)
+       public static function getRandomHex(int $size = 64): string
        {
                $byte_size = ceil($size / 2);
 
@@ -51,30 +52,13 @@ class Strings
         * Checks, if the given string is a valid hexadecimal code
         *
         * @param string $hexCode
-        *
         * @return bool
         */
-       public static function isHex($hexCode)
+       public static function isHex(string $hexCode): bool
        {
                return !empty($hexCode) ? @preg_match("/^[a-f0-9]{2,}$/i", $hexCode) && !(strlen($hexCode) & 1) : false;
        }
 
-       /**
-        * This is our primary input filter.
-        *
-        * Use this on any text input where angle chars are not valid or permitted
-        * They will be replaced with safer brackets. This may be filtered further
-        * if these are not allowed either.
-        *
-        * @param string $string Input string
-        * @return string Filtered string
-        * @deprecated since 2020.09 Please use Smarty default HTML escaping for templates or htmlspecialchars() otherwise
-        */
-       public static function escapeTags($string)
-       {
-               return str_replace(["<", ">"], ['[', ']'], $string);
-       }
-
        /**
         * Use this on "body" or "content" input where angle chars shouldn't be removed,
         * and allow them to be safely displayed.
@@ -91,10 +75,9 @@ class Strings
         * Generate a string that's random, but usually pronounceable. Used to generate initial passwords
         *
         * @param int $len      length
-        *
         * @return string
         */
-       public static function getRandomName($len)
+       public static function getRandomName(int $len): string
        {
                if ($len <= 0) {
                        return '';
@@ -181,7 +164,7 @@ class Strings
         * @return string Formatted network name
         * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
-       public static function formatNetworkName($network, $url = '')
+       public static function formatNetworkName(string $network, string $url = ''): string
        {
                if ($network != '') {
                        if ($url != '') {
@@ -192,6 +175,8 @@ class Strings
 
                        return $network_name;
                }
+
+               return '';
        }
 
        /**
@@ -203,7 +188,7 @@ class Strings
         *
         * @return string               Transformed string.
         */
-       public static function deindent($text, $chr = "[\t ]", $count = NULL)
+       public static function deindent(string $text, string $chr = "[\t ]", int $count = null): string
        {
                $lines = explode("\n", $text);
 
@@ -232,7 +217,7 @@ class Strings
         *
         * @return string       Size with measured units.
         */
-       public static function formatBytes($bytes, $precision = 2)
+       public static function formatBytes(int $bytes, int $precision = 2): string
        {
                $units = ['B', 'KB', 'MB', 'GB', 'TB'];
                $bytes = max($bytes, 0);
@@ -247,10 +232,9 @@ class Strings
         * Protect percent characters in sprintf calls
         *
         * @param string $s String to transform.
-        *
         * @return string       Transformed string.
         */
-       public static function protectSprintf($s)
+       public static function protectSprintf(string $s): string
        {
                return str_replace('%', '%%', $s);
        }
@@ -260,10 +244,9 @@ class Strings
         *
         * @param string $s                                     URL to encode
         * @param boolean $strip_padding        Optional. Default false
-        *
         * @return string       Encoded URL
         */
-       public static function base64UrlEncode($s, $strip_padding = false)
+       public static function base64UrlEncode(string $s, bool $strip_padding = false): string
        {
                $s = strtr(base64_encode($s), '+/', '-_');
 
@@ -276,18 +259,13 @@ class Strings
 
        /**
         * Decode Base64 Encoded URL and translate -_ to +/
-        * @param string $s URL to decode
         *
+        * @param string $s URL to decode
         * @return string       Decoded URL
         * @throws \Exception
         */
-       public static function base64UrlDecode($s)
+       public static function base64UrlDecode(string $s): string
        {
-               if (is_array($s)) {
-                       Logger::log('base64url_decode: illegal input: ' . print_r(debug_backtrace(), true));
-                       return $s;
-               }
-
                /*
                *  // Placeholder for new rev of salmon which strips base64 padding.
                *  // PHP base64_decode handles the un-padded input without requiring this step
@@ -311,10 +289,9 @@ class Strings
         * Normalize url
         *
         * @param string $url   URL to be normalized.
-        *
         * @return string       Normalized URL.
         */
-       public static function normaliseLink($url)
+       public static function normaliseLink(string $url): string
        {
                $ret = str_replace(['https:', '//www.'], ['http:', '//'], $url);
                return rtrim($ret, '/');
@@ -324,10 +301,9 @@ class Strings
         * Normalize OpenID identity
         *
         * @param string $s OpenID Identity
-        *
         * @return string       normalized OpenId Identity
         */
-       public static function normaliseOpenID($s)
+       public static function normaliseOpenID(string $s): string
        {
                return trim(str_replace(['http://', 'https://'], ['', ''], $s), '/');
        }
@@ -343,7 +319,7 @@ class Strings
         * @return boolean True if the URLs match, otherwise False
         *
         */
-       public static function compareLink($a, $b)
+       public static function compareLink(string $a, string $b): bool
        {
                return (strcasecmp(self::normaliseLink($a), self::normaliseLink($b)) === 0);
        }
@@ -354,7 +330,7 @@ class Strings
         * @param string $uri
         * @return string
         */
-       public static function ensureQueryParameter($uri)
+       public static function ensureQueryParameter(string $uri): string
        {
                if (strpos($uri, '?') === false && ($pos = strpos($uri, '&')) !== false) {
                        $uri = substr($uri, 0, $pos) . '?' . substr($uri, $pos + 1);
@@ -367,10 +343,11 @@ class Strings
         * Check if the trimmed provided string is starting with one of the provided characters
         *
         * @param string $string
-        * @param array  $chars
+        * @param array $chars
+        *
         * @return bool
         */
-       public static function startsWithChars($string, array $chars)
+       public static function startsWithChars(string $string, array $chars): bool
        {
                $return = in_array(substr(trim($string), 0, 1), $chars);
 
@@ -385,7 +362,7 @@ class Strings
         * @param string $start
         * @return bool
         */
-       public static function startsWith(string $string, string $start)
+       public static function startsWith(string $string, string $start): bool
        {
                $return = substr_compare($string, $start, 0, strlen($start)) === 0;
 
@@ -398,13 +375,12 @@ class Strings
         * @see http://maettig.com/code/php/php-performance-benchmarks.php#endswith
         * @param string $string
         * @param string $end
+        *
         * @return bool
         */
-       public static function endsWith(string $string, string $end)
+       public static function endsWith(string $string, string $end): bool
        {
-               $return = substr_compare($string, $end, -strlen($end)) === 0;
-
-               return $return;
+               return (substr_compare($string, $end, -strlen($end)) === 0);
        }
 
        /**
@@ -413,7 +389,7 @@ class Strings
         * @return string
         * @see https://daringfireball.net/2010/07/improved_regex_for_matching_urls
         */
-       public static function autoLinkRegEx()
+       public static function autoLinkRegEx(): string
        {
                return '@
 (?<![=\'\]"/])                 # Not preceded by [, =, \', ], ", /
@@ -439,11 +415,12 @@ class Strings
        /**
         * Ensures a single path item doesn't contain any path-traversing characters
         *
-        * @see https://stackoverflow.com/a/46097713
         * @param string $pathItem
+        *
+        * @see https://stackoverflow.com/a/46097713
         * @return string
         */
-       public static function sanitizeFilePathItem($pathItem)
+       public static function sanitizeFilePathItem(string $pathItem): string
        {
                $pathItem = str_replace('/', '_', $pathItem);
                $pathItem = str_replace('\\', '_', $pathItem);
@@ -462,10 +439,11 @@ class Strings
         * @param string   $replacement
         * @param int      $start
         * @param int|null $length
+        *
         * @return string
         * @see substr_replace()
         */
-       public static function substringReplace(string $string, string $replacement, int $start, int $length = null)
+       public static function substringReplace(string $string, string $replacement, int $start, int $length = null): string
        {
                $string_length = mb_strlen($string);
 
@@ -500,10 +478,10 @@ class Strings
         * @param string   $text
         * @param string   $regex
         * @param callable $callback
+        *
         * @return string
-        * @throws \Exception
         */
-       public static function performWithEscapedBlocks(string $text, string $regex, callable $callback)
+       public static function performWithEscapedBlocks(string $text, string $regex, callable $callback): string
        {
                // Enables nested use
                $executionId = random_int(PHP_INT_MAX / 10, PHP_INT_MAX);