<?php

//include "brain/data/Auth.inc.php";

class StringTools
{
  public static function createUUID()
  {
    if (function_exists("com_create_guid") === true) {
      return trim(com_create_guid(), "{}");
    }

    return sprintf(
      "%04X%04X-%04X-%04X-%04X-%04X%04X%04X",
      mt_rand(0, 65535),
      mt_rand(0, 65535),
      mt_rand(0, 65535),
      mt_rand(16384, 20479),
      mt_rand(32768, 49151),
      mt_rand(0, 65535),
      mt_rand(0, 65535),
      mt_rand(0, 65535)
    );
  }

  public static function safeString($string)
  {
    return strtolower(
      trim(
        preg_replace(
          "~[^0-9a-z]+~i",
          "_",
          html_entity_decode(
            preg_replace(
              "~&([a-z]{1,2})(?:acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i",
              '$1',
              htmlentities($string, ENT_QUOTES, "UTF-8")
            ),
            ENT_QUOTES,
            "UTF-8"
          )
        ),
        "-"
      )
    );
  }

  public static function randomString(int $length)
  {
    $alphanum =
      "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    $special = '*&!@%^#$';
    $alphabet = $alphanum . $special;
    $random = openssl_random_pseudo_bytes($length);
    $alphabet_length = strlen($alphabet);
    $string = "";
    for ($i = 0; $i < $length; ++$i) {
      $string .= $alphabet[ord($random[$i]) % $alphabet_length];
    }

    return $string;
  }
}