Merge pull request #19455 from colemanw/afformMeta
[civicrm-core.git] / CRM / Utils / String.php
index 7c0897436508acb9f83c494f343981706c3b235c..f98d4ec6d5c7ca00a3802ec8808e115b699c9b70 100644 (file)
@@ -221,6 +221,31 @@ class CRM_Utils_String {
     }
   }
 
+  /**
+   * Encode string using URL-safe Base64.
+   *
+   * @param string $v
+   *
+   * @return string
+   * @see https://tools.ietf.org/html/rfc4648#section-5
+   */
+  public static function base64UrlEncode($v) {
+    return rtrim(str_replace(['+', '/'], ['-', '_'], base64_encode($v)), '=');
+  }
+
+  /**
+   * Decode string using URL-safe Base64.
+   *
+   * @param string $v
+   *
+   * @return false|string
+   * @see https://tools.ietf.org/html/rfc4648#section-5
+   */
+  public static function base64UrlDecode($v) {
+    // PHP base64_decode() is already forgiving about padding ("=").
+    return base64_decode(str_replace(['-', '_'], ['+', '/'], $v));
+  }
+
   /**
    * Determine the string replacements for redaction.
    * on the basis of the regular expressions
@@ -645,7 +670,7 @@ class CRM_Utils_String {
     $alphabetSize = strlen($alphabet);
     $result = '';
     for ($i = 0; $i < $len; $i++) {
-      $result .= $alphabet{rand(1, $alphabetSize) - 1};
+      $result .= $alphabet[rand(1, $alphabetSize) - 1];
     }
     return $result;
   }