moved get_guid to System::createGUID

This commit is contained in:
Philipp Holzer 2018-07-09 21:38:16 +02:00
parent 3a179860e5
commit c829e43725
No known key found for this signature in database
GPG Key ID: 58160D7D6AF942B6
21 changed files with 105 additions and 88 deletions

View File

@ -835,28 +835,6 @@ function check_addons(App $a)
return; return;
} }
function get_guid($size = 16, $prefix = '')
{
if (is_bool($prefix) && !$prefix) {
$prefix = '';
} elseif ($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, max($size - 13, 0));
return uniqid($prefix);
}
}
/** /**
* @brief Used to end the current process, after saving session state. * @brief Used to end the current process, after saving session state.
* @deprecated * @deprecated

View File

@ -4534,7 +4534,7 @@ function post_photo_item($hash, $allow_cid, $deny_cid, $allow_gid, $deny_gid, $f
$owner_record = q("SELECT * FROM `contact` WHERE `uid`= %d AND `self` LIMIT 1", intval(api_user())); $owner_record = q("SELECT * FROM `contact` WHERE `uid`= %d AND `self` LIMIT 1", intval(api_user()));
$arr = []; $arr = [];
$arr['guid'] = get_guid(32); $arr['guid'] = System::createGUID(32);
$arr['uid'] = intval(api_user()); $arr['uid'] = intval(api_user());
$arr['uri'] = $uri; $arr['uri'] = $uri;
$arr['parent-uri'] = $uri; $arr['parent-uri'] = $uri;

View File

@ -1549,7 +1549,7 @@ function return_bytes($size_str) {
function generate_user_guid() { function generate_user_guid() {
$found = true; $found = true;
do { do {
$guid = get_guid(32); $guid = System::createGUID(32);
$x = q("SELECT `uid` FROM `user` WHERE `guid` = '%s' LIMIT 1", $x = q("SELECT `uid` FROM `user` WHERE `guid` = '%s' LIMIT 1",
dbesc($guid) dbesc($guid)
); );

View File

@ -232,7 +232,7 @@ function item_post(App $a) {
$emailcc = notags(trim(defaults($_REQUEST, 'emailcc' , ''))); $emailcc = notags(trim(defaults($_REQUEST, 'emailcc' , '')));
$body = escape_tags(trim(defaults($_REQUEST, 'body' , ''))); $body = escape_tags(trim(defaults($_REQUEST, 'body' , '')));
$network = notags(trim(defaults($_REQUEST, 'network' , NETWORK_DFRN))); $network = notags(trim(defaults($_REQUEST, 'network' , NETWORK_DFRN)));
$guid = get_guid(32); $guid = System::createGUID(32);
$postopts = defaults($_REQUEST, 'postopts', ''); $postopts = defaults($_REQUEST, 'postopts', '');

View File

@ -453,7 +453,7 @@ function photos_post(App $a)
$uri = Item::newURI($page_owner_uid); $uri = Item::newURI($page_owner_uid);
$arr = []; $arr = [];
$arr['guid'] = get_guid(32); $arr['guid'] = System::createGUID(32);
$arr['uid'] = $page_owner_uid; $arr['uid'] = $page_owner_uid;
$arr['uri'] = $uri; $arr['uri'] = $uri;
$arr['parent-uri'] = $uri; $arr['parent-uri'] = $uri;
@ -620,7 +620,7 @@ function photos_post(App $a)
$uri = Item::newURI($page_owner_uid); $uri = Item::newURI($page_owner_uid);
$arr = []; $arr = [];
$arr['guid'] = get_guid(32); $arr['guid'] = System::createGUID(32);
$arr['uid'] = $page_owner_uid; $arr['uid'] = $page_owner_uid;
$arr['uri'] = $uri; $arr['uri'] = $uri;
$arr['parent-uri'] = $uri; $arr['parent-uri'] = $uri;
@ -856,7 +856,7 @@ function photos_post(App $a)
$arr['coord'] = $lat . ' ' . $lon; $arr['coord'] = $lat . ' ' . $lon;
} }
$arr['guid'] = get_guid(32); $arr['guid'] = System::createGUID(32);
$arr['uid'] = $page_owner_uid; $arr['uid'] = $page_owner_uid;
$arr['uri'] = $uri; $arr['uri'] = $uri;
$arr['parent-uri'] = $uri; $arr['parent-uri'] = $uri;

View File

@ -96,7 +96,7 @@ function poke_init(App $a) {
$arr = []; $arr = [];
$arr['guid'] = get_guid(32); $arr['guid'] = System::createGUID(32);
$arr['uid'] = $uid; $arr['uid'] = $uid;
$arr['uri'] = $uri; $arr['uri'] = $uri;
$arr['parent-uri'] = ($parent_uri ? $parent_uri : $uri); $arr['parent-uri'] = ($parent_uri ? $parent_uri : $uri);

View File

@ -188,7 +188,7 @@ function proxy_init(App $a) {
die(); die();
} }
$fields = ['uid' => 0, 'contact-id' => 0, 'guid' => get_guid(), 'resource-id' => $urlhash, 'created' => DateTimeFormat::utcNow(), 'edited' => DateTimeFormat::utcNow(), $fields = ['uid' => 0, 'contact-id' => 0, 'guid' => System::createGUID(), 'resource-id' => $urlhash, 'created' => DateTimeFormat::utcNow(), 'edited' => DateTimeFormat::utcNow(),
'filename' => basename($_REQUEST['url']), 'type' => '', 'album' => '', 'height' => imagesy($image), 'width' => imagesx($image), 'filename' => basename($_REQUEST['url']), 'type' => '', 'album' => '', 'height' => imagesy($image), 'width' => imagesx($image),
'datasize' => 0, 'data' => $img_str, 'scale' => 100, 'profile' => 0, 'datasize' => 0, 'data' => $img_str, 'scale' => 100, 'profile' => 0,
'allow_cid' => '', 'allow_gid' => '', 'deny_cid' => '', 'deny_gid' => '', 'desc' => $mime]; 'allow_cid' => '', 'allow_gid' => '', 'deny_cid' => '', 'deny_gid' => '', 'desc' => $mime];

View File

@ -118,7 +118,7 @@ EOT;
$arr = []; $arr = [];
$arr['guid'] = get_guid(32); $arr['guid'] = System::createGUID(32);
$arr['uri'] = $uri; $arr['uri'] = $uri;
$arr['uid'] = $owner_uid; $arr['uid'] = $owner_uid;
$arr['contact-id'] = $contact['id']; $arr['contact-id'] = $contact['id'];

View File

@ -115,7 +115,7 @@ EOT;
$arr = []; $arr = [];
$arr['guid'] = get_guid(32); $arr['guid'] = System::createGUID(32);
$arr['uri'] = $uri; $arr['uri'] = $uri;
$arr['uid'] = $owner_uid; $arr['uid'] = $owner_uid;
$arr['contact-id'] = $contact['id']; $arr['contact-id'] = $contact['id'];

View File

@ -6,6 +6,7 @@
use Friendica\App; use Friendica\App;
use Friendica\Core\Config; use Friendica\Core\Config;
use Friendica\Core\L10n; use Friendica\Core\L10n;
use Friendica\Core\System;
use Friendica\Database\DBM; use Friendica\Database\DBM;
use Friendica\Util\DateTimeFormat; use Friendica\Util\DateTimeFormat;
use Friendica\Util\Mimetype; use Friendica\Util\Mimetype;
@ -121,7 +122,7 @@ function wall_attach_post(App $a) {
$filedata = @file_get_contents($src); $filedata = @file_get_contents($src);
$mimetype = Mimetype::getContentType($filename); $mimetype = Mimetype::getContentType($filename);
$hash = get_guid(64); $hash = System::createGUID(64);
$created = DateTimeFormat::utcNow(); $created = DateTimeFormat::utcNow();
$fields = ['uid' => $page_owner_uid, 'hash' => $hash, 'filename' => $filename, 'filetype' => $mimetype, $fields = ['uid' => $page_owner_uid, 'hash' => $hash, 'filename' => $filename, 'filetype' => $mimetype,

View File

@ -175,9 +175,36 @@ EOT;
killme(); killme();
} }
/**
* Generates a GUID with the given parameters
*
* @param int $size The size of the GUID (default is 16)
* @param bool|string $prefix A given prefix (default is empty)
* @return string a generated GUID
*/
public static function createGUID($size = 16, $prefix = '')
{
if (is_bool($prefix) && !$prefix) {
$prefix = '';
} elseif (!isset($prefix)) {
$prefix = hash('crc32', self::getApp()->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, max($size - 13, 0));
return uniqid($prefix);
}
}
/// @todo Move the following functions from boot.php /// @todo Move the following functions from boot.php
/* /*
function get_guid($size = 16, $prefix = "")
function killme() function killme()
function goaway($s) function goaway($s)
function local_user() function local_user()

View File

@ -305,7 +305,7 @@ class Event extends BaseObject
Addon::callHooks('event_updated', $event['id']); Addon::callHooks('event_updated', $event['id']);
} else { } else {
$event['guid'] = get_guid(32); $event['guid'] = System::createGUID(32);
// New event. Store it. // New event. Store it.
dba::insert('event', $event); dba::insert('event', $event);

View File

@ -1075,7 +1075,7 @@ class Item extends BaseObject
} elseif (!empty($item['uri'])) { } elseif (!empty($item['uri'])) {
$guid = self::guidFromUri($item['uri'], $prefix_host); $guid = self::guidFromUri($item['uri'], $prefix_host);
} else { } else {
$guid = get_guid(32, hash('crc32', $prefix_host)); $guid = System::createGUID(32, hash('crc32', $prefix_host));
} }
return $guid; return $guid;
@ -2172,7 +2172,7 @@ class Item extends BaseObject
public static function newURI($uid, $guid = "") public static function newURI($uid, $guid = "")
{ {
if ($guid == "") { if ($guid == "") {
$guid = get_guid(32); $guid = System::createGUID(32);
} }
$hostname = self::getApp()->get_hostname(); $hostname = self::getApp()->get_hostname();
@ -2496,7 +2496,7 @@ class Item extends BaseObject
} }
if ($contact['network'] != NETWORK_FEED) { if ($contact['network'] != NETWORK_FEED) {
$datarray["guid"] = get_guid(32); $datarray["guid"] = System::createGUID(32);
unset($datarray["plink"]); unset($datarray["plink"]);
$datarray["uri"] = self::newURI($contact['uid'], $datarray["guid"]); $datarray["uri"] = self::newURI($contact['uid'], $datarray["guid"]);
$datarray["parent-uri"] = $datarray["uri"]; $datarray["parent-uri"] = $datarray["uri"];
@ -2933,7 +2933,7 @@ class Item extends BaseObject
$objtype = $item['resource-id'] ? ACTIVITY_OBJ_IMAGE : ACTIVITY_OBJ_NOTE ; $objtype = $item['resource-id'] ? ACTIVITY_OBJ_IMAGE : ACTIVITY_OBJ_NOTE ;
$new_item = [ $new_item = [
'guid' => get_guid(32), 'guid' => System::createGUID(32),
'uri' => self::newURI($item['uid']), 'uri' => self::newURI($item['uid']),
'uid' => $item['uid'], 'uid' => $item['uid'],
'contact-id' => $item_contact_id, 'contact-id' => $item_contact_id,

View File

@ -47,7 +47,7 @@ class Mail
return -2; return -2;
} }
$guid = get_guid(32); $guid = System::createGUID(32);
$uri = 'urn:X-dfrn:' . System::baseUrl() . ':' . local_user() . ':' . $guid; $uri = 'urn:X-dfrn:' . System::baseUrl() . ':' . local_user() . ':' . $guid;
$convid = 0; $convid = 0;
@ -76,7 +76,7 @@ class Mail
$recip_handle = (($contact['addr']) ? $contact['addr'] : $contact['nick'] . '@' . $recip_host); $recip_handle = (($contact['addr']) ? $contact['addr'] : $contact['nick'] . '@' . $recip_host);
$sender_handle = $a->user['nickname'] . '@' . substr(System::baseUrl(), strpos(System::baseUrl(), '://') + 3); $sender_handle = $a->user['nickname'] . '@' . substr(System::baseUrl(), strpos(System::baseUrl(), '://') + 3);
$conv_guid = get_guid(32); $conv_guid = System::createGUID(32);
$convuri = $recip_handle . ':' . $conv_guid; $convuri = $recip_handle . ':' . $conv_guid;
$handles = $recip_handle . ';' . $sender_handle; $handles = $recip_handle . ';' . $sender_handle;
@ -174,7 +174,7 @@ class Mail
$subject = L10n::t('[no subject]'); $subject = L10n::t('[no subject]');
} }
$guid = get_guid(32); $guid = System::createGUID(32);
$uri = 'urn:X-dfrn:' . System::baseUrl() . ':' . local_user() . ':' . $guid; $uri = 'urn:X-dfrn:' . System::baseUrl() . ':' . local_user() . ':' . $guid;
$me = Probe::uri($replyto); $me = Probe::uri($replyto);
@ -183,7 +183,7 @@ class Mail
return -2; return -2;
} }
$conv_guid = get_guid(32); $conv_guid = System::createGUID(32);
$recip_handle = $recipient['nickname'] . '@' . substr(System::baseUrl(), strpos(System::baseUrl(), '://') + 3); $recip_handle = $recipient['nickname'] . '@' . substr(System::baseUrl(), strpos(System::baseUrl(), '://') + 3);

View File

@ -45,7 +45,7 @@ class Photo
if (DBM::is_result($photo)) { if (DBM::is_result($photo)) {
$guid = $photo['guid']; $guid = $photo['guid'];
} else { } else {
$guid = get_guid(); $guid = System::createGUID();
} }
$existing_photo = dba::selectFirst('photo', ['id'], ['resource-id' => $rid, 'uid' => $uid, 'contact-id' => $cid, 'scale' => $scale]); $existing_photo = dba::selectFirst('photo', ['id'], ['resource-id' => $rid, 'uid' => $uid, 'contact-id' => $cid, 'scale' => $scale]);
@ -275,6 +275,6 @@ class Photo
*/ */
public static function newResource() public static function newResource()
{ {
return get_guid(32, false); return system::createGUID(32, false);
} }
} }

View File

@ -3220,7 +3220,7 @@ class Diaspora
$author = self::myHandle($owner); $author = self::myHandle($owner);
$message = ["author" => $author, $message = ["author" => $author,
"guid" => get_guid(32), "guid" => System::createGUID(32),
"parent_type" => "Post", "parent_type" => "Post",
"parent_guid" => $item["guid"]]; "parent_guid" => $item["guid"]];

View File

@ -5,7 +5,6 @@
namespace Friendica\Test; namespace Friendica\Test;
use Friendica\App;
use Friendica\Core\Config; use Friendica\Core\Config;
use Friendica\Core\PConfig; use Friendica\Core\PConfig;
use Friendica\Network\BadRequestException; use Friendica\Network\BadRequestException;
@ -26,13 +25,8 @@ class ApiTest extends DatabaseTest
*/ */
protected function setUp() protected function setUp()
{ {
global $a;
parent::setUp(); parent::setUp();
// Reusable App object
$this->app = new App(__DIR__.'/../');
$a = $this->app;
// User data that the test database is populated with // User data that the test database is populated with
$this->selfUser = [ $this->selfUser = [
'id' => 42, 'id' => 42,
@ -62,13 +56,6 @@ class ApiTest extends DatabaseTest
'authenticated' => true, 'authenticated' => true,
'uid' => $this->selfUser['id'] 'uid' => $this->selfUser['id']
]; ];
// Default config
Config::set('config', 'hostname', 'localhost');
Config::set('system', 'throttle_limit_day', 100);
Config::set('system', 'throttle_limit_week', 100);
Config::set('system', 'throttle_limit_month', 100);
Config::set('system', 'theme', 'system_theme');
} }
/** /**

View File

@ -6,6 +6,8 @@
namespace Friendica\Test; namespace Friendica\Test;
use dba; use dba;
use Friendica\App;
use Friendica\Core\Config;
use Friendica\Database\DBStructure; use Friendica\Database\DBStructure;
use PHPUnit_Extensions_Database_DB_IDatabaseConnection; use PHPUnit_Extensions_Database_DB_IDatabaseConnection;
use PHPUnit\DbUnit\DataSet\YamlDataSet; use PHPUnit\DbUnit\DataSet\YamlDataSet;
@ -17,9 +19,35 @@ use PHPUnit\Framework\TestCase;
*/ */
abstract class DatabaseTest extends TestCase abstract class DatabaseTest extends TestCase
{ {
/**
* @var \Friendica\App
*/
protected $app;
use TestCaseTrait; use TestCaseTrait;
/**
* Creates basic instances for testing with databases
*
* @throws \Exception
*/
protected function setUp()
{
global $a;
parent::setUp();
// Reusable App object
$this->app = new App(__DIR__.'/../');
$a = $this->app;
// Default config
Config::set('config', 'hostname', 'localhost');
Config::set('system', 'throttle_limit_day', 100);
Config::set('system', 'throttle_limit_week', 100);
Config::set('system', 'throttle_limit_month', 100);
Config::set('system', 'theme', 'system_theme');
}
/** /**
* Renames an eventually existing .htconfig.php to .htconfig.php.tmp * Renames an eventually existing .htconfig.php to .htconfig.php.tmp
* Creates a new .htconfig.php for bin/worker.php execution * Creates a new .htconfig.php for bin/worker.php execution

View File

@ -2,8 +2,6 @@
namespace Friendica\Test\src\Core\Cache; namespace Friendica\Test\src\Core\Cache;
use Friendica\App;
use Friendica\Core\Config;
use Friendica\Test\DatabaseTest; use Friendica\Test\DatabaseTest;
use Friendica\Util\DateTimeFormat; use Friendica\Util\DateTimeFormat;
@ -18,20 +16,8 @@ abstract class CacheTest extends DatabaseTest
protected function setUp() protected function setUp()
{ {
global $a;
parent::setUp(); parent::setUp();
$this->instance = $this->getInstance(); $this->instance = $this->getInstance();
// Reusable App object
$this->app = new App(__DIR__.'/../');
$a = $this->app;
// Default config
Config::set('config', 'hostname', 'localhost');
Config::set('system', 'throttle_limit_day', 100);
Config::set('system', 'throttle_limit_week', 100);
Config::set('system', 'throttle_limit_month', 100);
Config::set('system', 'theme', 'system_theme');
} }
function testSimple() { function testSimple() {

View File

@ -2,10 +2,7 @@
namespace Friendica\Test\src\Core\Lock; namespace Friendica\Test\src\Core\Lock;
use Friendica\App;
use Friendica\Core\Config;
use Friendica\Test\DatabaseTest; use Friendica\Test\DatabaseTest;
use PHPUnit\Framework\TestCase;
abstract class LockTest extends DatabaseTest abstract class LockTest extends DatabaseTest
{ {
@ -18,20 +15,8 @@ abstract class LockTest extends DatabaseTest
protected function setUp() protected function setUp()
{ {
global $a;
parent::setUp(); parent::setUp();
$this->instance = $this->getInstance(); $this->instance = $this->getInstance();
// Reusable App object
$this->app = new App(__DIR__.'/../');
$a = $this->app;
// Default config
Config::set('config', 'hostname', 'localhost');
Config::set('system', 'throttle_limit_day', 100);
Config::set('system', 'throttle_limit_week', 100);
Config::set('system', 'throttle_limit_month', 100);
Config::set('system', 'theme', 'system_theme');
} }
public function testLock() { public function testLock() {

View File

@ -0,0 +1,25 @@
<?php
namespace Friendica\Test\src\Core;
use Friendica\Core\System;
use PHPUnit\Framework\TestCase;
class SystemTest extends TestCase
{
private function assertGuid($guid, $length)
{
$this->assertRegExp("/^[a-z0-9]{" . $length . "}?$/", $guid);
}
function testGuidWithoutParameter()
{
$guid = System::createGUID();
$this->assertGuid($guid, 16);
}
function testGuidWithSize() {
$guid = System::createGUID(20);
$this->assertGuid($guid, 20);
}
}