mirror of
https://github.com/twisterarmy/cloud-server.git
synced 2025-09-13 14:22:13 +00:00
fix data obtain from the memory cache
This commit is contained in:
parent
5422104b46
commit
e9474b1214
@ -28,73 +28,76 @@ if (isset($_SESSION['userName'])) {
|
|||||||
'avatar' => $mcAvatar
|
'avatar' => $mcAvatar
|
||||||
];
|
];
|
||||||
|
|
||||||
/*
|
|
||||||
* Step 2: try to obtain avatar from DHT
|
|
||||||
*
|
|
||||||
* */
|
|
||||||
} else if ($dhtAvatarRevisions = $_twister->getDHTAvatarRevisions($userName)) {
|
|
||||||
|
|
||||||
// Add DHT version if not exists
|
|
||||||
foreach ((array) $dhtAvatarRevisions as $dhtAvatarRevision) {
|
|
||||||
|
|
||||||
if (!$_modelAvatar->versionExists($userId,
|
|
||||||
$dhtAvatarRevision['height'],
|
|
||||||
$dhtAvatarRevision['seq'])) {
|
|
||||||
|
|
||||||
$_modelAvatar->add($userId,
|
|
||||||
$dhtAvatarRevision['height'],
|
|
||||||
$dhtAvatarRevision['seq'],
|
|
||||||
$dhtAvatarRevision['time'],
|
|
||||||
$dhtAvatarRevision['data']);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Step 3: Select latest version available from DB revisions
|
|
||||||
*
|
|
||||||
* */
|
|
||||||
$dbAvatarRevision = $_modelAvatar->get($userId);
|
|
||||||
|
|
||||||
if ($dbAvatarRevision && Valid::base64image($dbAvatarRevision['data'])) {
|
|
||||||
|
|
||||||
// Response
|
|
||||||
$response = [
|
|
||||||
'success' => true,
|
|
||||||
'message' => _('Avatar successfully received from DHT/DB'),
|
|
||||||
'avatar' => $dbAvatarRevision['data'] // format
|
|
||||||
];
|
|
||||||
|
|
||||||
// Save request into the cache pool
|
|
||||||
$_memcache->set('api.user.avatar.' . $userName, $dbAvatarRevision['data'], MEMCACHE_COMPRESS, MEMCACHE_DHT_AVATAR_TIMEOUT);
|
|
||||||
|
|
||||||
// Cache, DHT, DB not contain any the avatar details about user requested,
|
|
||||||
// Generate and return identity icon
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
// Generate identity icon
|
/*
|
||||||
$fileName = md5($userName);
|
* Step 2: try to obtain avatar from DHT
|
||||||
$filePath = PROJECT_DIR . '/cache/image/' . $fileName . '.jpeg';
|
*
|
||||||
|
* */
|
||||||
|
if ($dhtAvatarRevisions = $_twister->getDHTAvatarRevisions($userName)) {
|
||||||
|
|
||||||
// Identity icons supports file cache
|
// Add DHT version if not exists
|
||||||
if (!file_exists($filePath)) {
|
foreach ((array) $dhtAvatarRevisions as $dhtAvatarRevision) {
|
||||||
|
|
||||||
$icon = new Icon();
|
if (!$_modelAvatar->versionExists($userId,
|
||||||
$image = $icon->generateImageResource($fileName, 42, 42, false);
|
$dhtAvatarRevision['height'],
|
||||||
|
$dhtAvatarRevision['seq'])) {
|
||||||
|
|
||||||
file_put_contents($filePath, $image);
|
$_modelAvatar->add($userId,
|
||||||
|
$dhtAvatarRevision['height'],
|
||||||
|
$dhtAvatarRevision['seq'],
|
||||||
|
$dhtAvatarRevision['time'],
|
||||||
|
$dhtAvatarRevision['data']);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$identityIcon = 'data:image/jpeg;base64,' . base64_encode(file_get_contents($filePath));
|
/*
|
||||||
|
* Step 3: Select latest version available from DB revisions
|
||||||
|
*
|
||||||
|
* */
|
||||||
|
$dbAvatarRevision = $_modelAvatar->get($userId);
|
||||||
|
|
||||||
$response = [
|
if ($dbAvatarRevision && Valid::base64image($dbAvatarRevision['data'])) {
|
||||||
'success' => true,
|
|
||||||
'message' => _('Could not receive any avatar details, generated identity icon'),
|
|
||||||
'avatar' => $identityIcon
|
|
||||||
];
|
|
||||||
|
|
||||||
// Save identity icon into the cache pool
|
// Response
|
||||||
$_memcache->set('api.user.avatar.' . $userName, $identityIcon, MEMCACHE_COMPRESS, MEMCACHE_DHT_AVATAR_TIMEOUT);
|
$response = [
|
||||||
|
'success' => true,
|
||||||
|
'message' => _('Avatar successfully received from DHT/DB'),
|
||||||
|
'avatar' => $dbAvatarRevision['data'] // format
|
||||||
|
];
|
||||||
|
|
||||||
|
// Save request into the cache pool
|
||||||
|
$_memcache->set('api.user.avatar.' . $userName, $dbAvatarRevision['data'], MEMCACHE_COMPRESS, MEMCACHE_DHT_AVATAR_TIMEOUT);
|
||||||
|
|
||||||
|
// Cache, DHT, DB not contain any the avatar details about user requested,
|
||||||
|
// Generate and return identity icon
|
||||||
|
} else {
|
||||||
|
|
||||||
|
// Generate identity icon
|
||||||
|
$fileName = md5($userName);
|
||||||
|
$filePath = PROJECT_DIR . '/cache/image/' . $fileName . '.jpeg';
|
||||||
|
|
||||||
|
// Identity icons supports file cache
|
||||||
|
if (!file_exists($filePath)) {
|
||||||
|
|
||||||
|
$icon = new Icon();
|
||||||
|
$image = $icon->generateImageResource($fileName, 42, 42, false);
|
||||||
|
|
||||||
|
file_put_contents($filePath, $image);
|
||||||
|
}
|
||||||
|
|
||||||
|
$identityIcon = 'data:image/jpeg;base64,' . base64_encode(file_get_contents($filePath));
|
||||||
|
|
||||||
|
$response = [
|
||||||
|
'success' => true,
|
||||||
|
'message' => _('Could not receive any avatar details, generated identity icon'),
|
||||||
|
'avatar' => $identityIcon
|
||||||
|
];
|
||||||
|
|
||||||
|
// Save identity icon into the cache pool
|
||||||
|
$_memcache->set('api.user.avatar.' . $userName, $identityIcon, MEMCACHE_COMPRESS, MEMCACHE_DHT_AVATAR_TIMEOUT);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// User not found in the local database registry
|
// User not found in the local database registry
|
||||||
|
@ -28,70 +28,73 @@ if (isset($_SESSION['userName'])) {
|
|||||||
'profile' => $mcProfile
|
'profile' => $mcProfile
|
||||||
];
|
];
|
||||||
|
|
||||||
/*
|
|
||||||
* Step 2: try to obtain profile from DHT
|
|
||||||
*
|
|
||||||
* */
|
|
||||||
} else if ($dhtProfileRevisions = $_twister->getDHTProfileRevisions($userName)) {
|
|
||||||
|
|
||||||
// Add DHT version if not exists
|
|
||||||
foreach ((array) $dhtProfileRevisions as $dhtProfileRevision) {
|
|
||||||
|
|
||||||
// Save revision into the database if not exists
|
|
||||||
if (!$_modelProfile->versionExists($userId,
|
|
||||||
$dhtProfileRevision['height'],
|
|
||||||
$dhtProfileRevision['seq'])) {
|
|
||||||
|
|
||||||
$_modelProfile->add($userId,
|
|
||||||
$dhtProfileRevision['height'],
|
|
||||||
$dhtProfileRevision['seq'],
|
|
||||||
$dhtProfileRevision['time'],
|
|
||||||
|
|
||||||
$dhtProfileRevision['fullName'],
|
|
||||||
$dhtProfileRevision['bio'],
|
|
||||||
$dhtProfileRevision['location'],
|
|
||||||
$dhtProfileRevision['url'],
|
|
||||||
$dhtProfileRevision['bitMessage'],
|
|
||||||
$dhtProfileRevision['tox']);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Step 3: Select latest version available from DB revisions
|
|
||||||
*
|
|
||||||
* */
|
|
||||||
if ($dbProfileRevision = $_modelProfile->get($userId)) {
|
|
||||||
|
|
||||||
// Format output
|
|
||||||
$profile = [
|
|
||||||
'userName' => $userName,
|
|
||||||
'fullName' => Format::text($dbProfileRevision['fullName']),
|
|
||||||
'location' => Format::text($dbProfileRevision['location']),
|
|
||||||
'url' => Format::text($dbProfileRevision['url']),
|
|
||||||
'bitMessage' => Format::text($dbProfileRevision['bitMessage']),
|
|
||||||
'tox' => Format::text($dbProfileRevision['tox']),
|
|
||||||
'bio' => Format::text($dbProfileRevision['bio']),
|
|
||||||
];
|
|
||||||
|
|
||||||
// Save request into the cache pool
|
|
||||||
$_memcache->set('api.user.profile.' . $userName, $profile, MEMCACHE_COMPRESS, MEMCACHE_DHT_PROFILE_TIMEOUT);
|
|
||||||
|
|
||||||
// Response
|
|
||||||
$response = [
|
|
||||||
'success' => true,
|
|
||||||
'message' => _('Profile successfully received from DHT/DB'),
|
|
||||||
'profile' => $profile
|
|
||||||
];
|
|
||||||
|
|
||||||
// Cache, DHT, DB not contain any the details about user requested
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
$response = [
|
/*
|
||||||
'success' => false,
|
* Step 2: try to obtain profile from DHT
|
||||||
'message' => _('Could not receive any profile details'),
|
*
|
||||||
'profile' => []
|
* */
|
||||||
];
|
if ($dhtProfileRevisions = $_twister->getDHTProfileRevisions($userName)) {
|
||||||
|
|
||||||
|
// Add DHT version if not exists
|
||||||
|
foreach ((array) $dhtProfileRevisions as $dhtProfileRevision) {
|
||||||
|
|
||||||
|
// Save revision into the database if not exists
|
||||||
|
if (!$_modelProfile->versionExists($userId,
|
||||||
|
$dhtProfileRevision['height'],
|
||||||
|
$dhtProfileRevision['seq'])) {
|
||||||
|
|
||||||
|
$_modelProfile->add($userId,
|
||||||
|
$dhtProfileRevision['height'],
|
||||||
|
$dhtProfileRevision['seq'],
|
||||||
|
$dhtProfileRevision['time'],
|
||||||
|
|
||||||
|
$dhtProfileRevision['fullName'],
|
||||||
|
$dhtProfileRevision['bio'],
|
||||||
|
$dhtProfileRevision['location'],
|
||||||
|
$dhtProfileRevision['url'],
|
||||||
|
$dhtProfileRevision['bitMessage'],
|
||||||
|
$dhtProfileRevision['tox']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Step 3: Select latest version available from DB revisions
|
||||||
|
*
|
||||||
|
* */
|
||||||
|
if ($dbProfileRevision = $_modelProfile->get($userId)) {
|
||||||
|
|
||||||
|
// Format output
|
||||||
|
$profile = [
|
||||||
|
'userName' => $userName,
|
||||||
|
'fullName' => Format::text($dbProfileRevision['fullName']),
|
||||||
|
'location' => Format::text($dbProfileRevision['location']),
|
||||||
|
'url' => Format::text($dbProfileRevision['url']),
|
||||||
|
'bitMessage' => Format::text($dbProfileRevision['bitMessage']),
|
||||||
|
'tox' => Format::text($dbProfileRevision['tox']),
|
||||||
|
'bio' => Format::text($dbProfileRevision['bio']),
|
||||||
|
];
|
||||||
|
|
||||||
|
// Save request into the cache pool
|
||||||
|
$_memcache->set('api.user.profile.' . $userName, $profile, MEMCACHE_COMPRESS, MEMCACHE_DHT_PROFILE_TIMEOUT);
|
||||||
|
|
||||||
|
// Response
|
||||||
|
$response = [
|
||||||
|
'success' => true,
|
||||||
|
'message' => _('Profile successfully received from DHT/DB'),
|
||||||
|
'profile' => $profile
|
||||||
|
];
|
||||||
|
|
||||||
|
// Cache, DHT, DB not contain any the details about user requested
|
||||||
|
} else {
|
||||||
|
|
||||||
|
$response = [
|
||||||
|
'success' => false,
|
||||||
|
'message' => _('Could not receive any profile details'),
|
||||||
|
'profile' => []
|
||||||
|
];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// User not found in the local database registry
|
// User not found in the local database registry
|
||||||
|
Loading…
x
Reference in New Issue
Block a user