Commit | Line | Data |
---|---|---|
cd757b9e JC |
1 | <?php |
2 | ||
3 | // sourced from symfony/uuid-polyfill | |
4 | /* | |
5 | Copyright (c) 2018-2019 Fabien Potencier | |
6 | ||
7 | Permission is hereby granted, free of charge, to any person obtaining a copy | |
8 | of this software and associated documentation files (the "Software"), to deal | |
9 | in the Software without restriction, including without limitation the rights | |
10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
11 | copies of the Software, and to permit persons to whom the Software is furnished | |
12 | to do so, subject to the following conditions: | |
13 | ||
14 | The above copyright notice and this permission notice shall be included in all | |
15 | copies or substantial portions of the Software. | |
16 | ||
17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | |
23 | THE SOFTWARE. | |
24 | */ | |
25 | ||
26 | function uuid_v4() { | |
27 | $uuid = bin2hex(random_bytes(16)); | |
28 | return sprintf('%08s-%04s-4%03s-%04x-%012s', | |
29 | substr($uuid, 0, 8), | |
30 | substr($uuid, 8, 4), | |
31 | substr($uuid, 13, 3), | |
32 | hexdec(substr($uuid, 16, 4)) & 0x3fff | 0x8000, | |
33 | substr($uuid, 20, 12) | |
34 | ); | |
35 | } |