]> git.mxchange.org Git - friendica.git/commitdiff
Reworked guid function.
authorMichael Vogel <icarus@dabo.de>
Mon, 9 Mar 2015 19:59:57 +0000 (20:59 +0100)
committerMichael Vogel <icarus@dabo.de>
Mon, 9 Mar 2015 19:59:57 +0000 (20:59 +0100)
boot.php
include/items.php

index ec9b70eb734f1aa1b790de2fdcab606f3384f6fe..05284dce4335314e21946b87a432ff2e85b04046 100644 (file)
--- 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'].
index 3ec476ad6bab9ea1aaa69609dcc3f42cbfbdc731..95ff40714f0e2d2809130ddcc3334909e85b21cd 100644 (file)
@@ -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 );