Drupal 8.0.0 beta 12. More info: https://www.drupal.org/node/2514176
This commit is contained in:
commit
9921556621
13277 changed files with 1459781 additions and 0 deletions
50
core/lib/Drupal/Component/Uuid/Php.php
Normal file
50
core/lib/Drupal/Component/Uuid/Php.php
Normal file
|
@ -0,0 +1,50 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Contains \Drupal\Component\Uuid\Php.
|
||||
*/
|
||||
|
||||
namespace Drupal\Component\Uuid;
|
||||
|
||||
use Drupal\Component\Utility\Crypt;
|
||||
|
||||
/**
|
||||
* Generates a UUID v4 using PHP code.
|
||||
*
|
||||
* Loosely based on Ruby's UUIDTools generate_random logic.
|
||||
*
|
||||
* @see http://uuidtools.rubyforge.org/api/classes/UUIDTools/UUID.html
|
||||
*/
|
||||
class Php implements UuidInterface {
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function generate() {
|
||||
$hex = substr(hash('sha256', Crypt::randomBytes(16)), 0, 32);
|
||||
|
||||
// The field names refer to RFC 4122 section 4.1.2.
|
||||
$time_low = substr($hex, 0, 8);
|
||||
$time_mid = substr($hex, 8, 4);
|
||||
|
||||
$time_hi_and_version = base_convert(substr($hex, 12, 4), 16, 10);
|
||||
$time_hi_and_version &= 0x0FFF;
|
||||
$time_hi_and_version |= (4 << 12);
|
||||
|
||||
$clock_seq_hi_and_reserved = base_convert(substr($hex, 16, 4), 16, 10);
|
||||
$clock_seq_hi_and_reserved &= 0x3F;
|
||||
$clock_seq_hi_and_reserved |= 0x80;
|
||||
|
||||
$clock_seq_low = substr($hex, 20, 2);
|
||||
$nodes = substr($hex, 20);
|
||||
|
||||
$uuid = sprintf('%s-%s-%04x-%02x%02x-%s',
|
||||
$time_low, $time_mid,
|
||||
$time_hi_and_version, $clock_seq_hi_and_reserved,
|
||||
$clock_seq_low, $nodes);
|
||||
|
||||
return $uuid;
|
||||
}
|
||||
|
||||
}
|
Reference in a new issue