fix addMeta deadine

This commit is contained in:
xiaomlove
2022-10-10 01:36:35 +08:00
parent 3e03e78aa0
commit 0bdfc73528
3 changed files with 21 additions and 8 deletions
@@ -278,11 +278,6 @@ class UserProfile extends ViewRecord
->action(function ($data) { ->action(function ($data) {
$rep = $this->getRep(); $rep = $this->getRep();
try { try {
if (!empty($data['duration'])) {
$data['deadline'] = now()->addDays($data['duration']);
} else {
$data['deadline'] = null;
}
$rep->addMeta($this->record, $data, $data); $rep->addMeta($this->record, $data, $data);
$this->notify('success', 'Success!'); $this->notify('success', 'Success!');
$this->emitSelf(self::EVENT_RECORD_UPDATED, $this->record->id); $this->emitSelf(self::EVENT_RECORD_UPDATED, $this->record->id);
+20 -2
View File
@@ -467,23 +467,41 @@ class UserRepository extends BaseRepository
$user = $this->getUser($user); $user = $this->getUser($user);
$metaKey = $metaData['meta_key']; $metaKey = $metaData['meta_key'];
$allowMultiple = UserMeta::$metaKeys[$metaKey]['multiple']; $allowMultiple = UserMeta::$metaKeys[$metaKey]['multiple'];
$log = "user: {$user->id}, metaKey: $metaKey, allowMultiple: $allowMultiple";
if ($allowMultiple) { if ($allowMultiple) {
//Allow multiple, just insert //Allow multiple, just insert
$result = $user->metas()->create($metaData); $result = $user->metas()->create($metaData);
$log .= ", allowMultiple, just insert";
} else { } else {
$metaExists = $user->metas()->where('meta_key', $metaKey)->first(); $metaExists = $user->metas()->where('meta_key', $metaKey)->first();
$log .= ", metaExists: " . ($metaExists->id ?? '');
if (!$metaExists) { if (!$metaExists) {
$result = $user->metas()->create($metaData); $result = $user->metas()->create($metaData);
$log .= ", meta not exists, just create";
} else { } else {
if (empty($keyExistsUpdates)) { $log .= ", meta exists";
$keyExistsUpdates = ['updated_at' => now()]; $keyExistsUpdates['updated_at'] = now();
if (!empty($keyExistsUpdates['duration'])) {
$log .= ", has duration: {$keyExistsUpdates['duration']}";
if ($metaExists->deadline && $metaExists->deadline->gte(now())) {
$log .= ", not expire";
$keyExistsUpdates['deadline'] = $metaExists->deadline->addDays($keyExistsUpdates['duration']);
} else {
$log .= ", expired or not set";
$keyExistsUpdates['deadline'] = now()->addDays($keyExistsUpdates['duration']);
}
unset($keyExistsUpdates['duration']);
} else {
$keyExistsUpdates['deadline'] = null;
} }
$log .= ", update: " . json_encode($keyExistsUpdates);
$result = $metaExists->update($keyExistsUpdates); $result = $metaExists->update($keyExistsUpdates);
} }
} }
if ($result) { if ($result) {
clear_user_cache($user->id, $user->passkey); clear_user_cache($user->id, $user->passkey);
} }
do_log($log);
return $result; return $result;
} }
+1 -1
View File
@@ -1,6 +1,6 @@
<?php <?php
defined('VERSION_NUMBER') || define('VERSION_NUMBER', '1.7.29'); defined('VERSION_NUMBER') || define('VERSION_NUMBER', '1.7.29');
defined('RELEASE_DATE') || define('RELEASE_DATE', '2022-10-09'); defined('RELEASE_DATE') || define('RELEASE_DATE', '2022-10-10');
defined('IN_TRACKER') || define('IN_TRACKER', false); defined('IN_TRACKER') || define('IN_TRACKER', false);
defined('PROJECTNAME') || define("PROJECTNAME","NexusPHP"); defined('PROJECTNAME') || define("PROJECTNAME","NexusPHP");
defined('NEXUSPHPURL') || define("NEXUSPHPURL","https://nexusphp.org"); defined('NEXUSPHPURL') || define("NEXUSPHPURL","https://nexusphp.org");