From: Michael Vogel Date: Mon, 9 Mar 2015 19:59:57 +0000 (+0100) Subject: Reworked guid function. X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=94302a7924b8fd7dfc418b64df83ca71749838b5;p=friendica.git Reworked guid function. --- diff --git a/boot.php b/boot.php index ec9b70eb73..05284dce43 100644 --- a/boot.php +++ b/boot.php @@ -1196,35 +1196,24 @@ if(! function_exists('check_plugins')) { } } -function get_guid($size=16) { - $exists = true; // assume by default that we don't have a unique guid - do { - $prefix = ""; - while (strlen($prefix) < ($size - 13)) - $prefix .= mt_rand(); - - $s = substr(uniqid($prefix), -$size); - - $r = q("select id from guid where guid = '%s' limit 1", dbesc($s)); - if(! count($r)) - $exists = false; - } while($exists); - q("insert into guid (guid) values ('%s') ", dbesc($s)); - return $s; -} +function get_guid($size=16, $prefix = "") { -/*function get_guid($size=16) { - $exists = true; // assume by default that we don't have a unique guid - do { - $s = random_string($size); - $r = q("select id from guid where guid = '%s' limit 1", dbesc($s)); - if(! count($r)) - $exists = false; - } while($exists); - q("insert into guid ( guid ) values ( '%s' ) ", dbesc($s)); - return $s; -}*/ + if ($prefix == "") { + $a = get_app(); + $prefix = hash("crc32", $a->get_hostname()); + } + while (strlen($prefix) < ($size - 13)) + $prefix .= mt_rand(); + + if ($size >= 24) { + $prefix = substr($prefix, 0, $size - 22); + return(str_replace(".", "", uniqid($prefix, true))); + } else { + $prefix = substr($prefix, 0, $size - 13); + return(uniqid($prefix)); + } +} // wrapper for adding a login box. If $register == true provide a registration // link. This will most always depend on the value of $a->config['register_policy']. diff --git a/include/items.php b/include/items.php index 3ec476ad6b..95ff40714f 100644 --- a/include/items.php +++ b/include/items.php @@ -1210,8 +1210,8 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa $arr['attach'] = ((x($arr,'attach')) ? notags(trim($arr['attach'])) : ''); $arr['app'] = ((x($arr,'app')) ? notags(trim($arr['app'])) : ''); $arr['origin'] = ((x($arr,'origin')) ? intval($arr['origin']) : 0 ); - $arr['guid'] = ((x($arr,'guid')) ? notags(trim($arr['guid'])) : get_guid(30)); $arr['network'] = ((x($arr,'network')) ? trim($arr['network']) : ''); + $arr['guid'] = ((x($arr,'guid')) ? notags(trim($arr['guid'])) : get_guid(32, $arr['network'])); $arr['postopts'] = ((x($arr,'postopts')) ? trim($arr['postopts']) : ''); $arr['resource-id'] = ((x($arr,'resource-id')) ? trim($arr['resource-id']) : ''); $arr['event-id'] = ((x($arr,'event-id')) ? intval($arr['event-id']) : 0 );