diff --git a/resources/functions.php b/resources/functions.php index 46e7cf651f..eeec6f636c 100644 --- a/resources/functions.php +++ b/resources/functions.php @@ -103,28 +103,17 @@ if (!function_exists('uuid')) { function uuid() { - //uuid version 4 - return sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x', - // 32 bits for "time_low" - mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), - - // 16 bits for "time_mid" - mt_rand( 0, 0xffff ), - - // 16 bits for "time_hi_and_version", - // four most significant bits holds version number 4 - mt_rand( 0, 0x0fff ) | 0x4000, - - // 16 bits, 8 bits for "clk_seq_hi_res", - // 8 bits for "clk_seq_low", - // two most significant bits holds zero and one for variant DCE1.1 - mt_rand( 0, 0x3fff ) | 0x8000, - - // 48 bits for "node" - mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ) - ); + $sql .= 'select gen_random_uuid();'; + $database = new database; + $uuid = $database->select($sql, null, 'column'); + if (!is_uuid($uuid) && PHP_OS == 'FreeBSD') { + $uuid = shell_exec("uuidgen"); + } + if (!is_uuid($uuid) && PHP_OS == 'Linux') { + $uuid = file_get_contents('/proc/sys/kernel/random/uuid'); + } + return $uuid; } - //echo uuid(); } if (!function_exists('is_uuid')) {