From 57569d7c51ac7834145eea936804ef5ddb1ddc05 Mon Sep 17 00:00:00 2001 From: xiaomlove Date: Tue, 8 Mar 2022 21:01:12 +0800 Subject: [PATCH] fix update from 1.5 error --- config/database.php | 2 +- include/functions.php | 11 ++++++++--- nexus/Install/Install.php | 14 ++++++++++---- nexus/Install/Update.php | 1 + nexus/Install/update/update.php | 17 ++++++++++++++--- 5 files changed, 34 insertions(+), 11 deletions(-) diff --git a/config/database.php b/config/database.php index b42d9b30..aeabec6f 100644 --- a/config/database.php +++ b/config/database.php @@ -56,7 +56,7 @@ return [ 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'prefix_indexes' => true, - 'strict' => true, + 'strict' => false, 'engine' => null, 'options' => extension_loaded('pdo_mysql') ? array_filter([ PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), diff --git a/include/functions.php b/include/functions.php index 3414f69e..46d7750d 100644 --- a/include/functions.php +++ b/include/functions.php @@ -3088,7 +3088,7 @@ function torrenttable($rows, $variant = "torrent") { $torrentSeedingLeechingStatus = $torrent->listLeechingSeedingStatus($CURUSER['id'], $torrentIdArr); $tagRep = new \App\Repositories\TagRepository(); $tagCollection = $tagRep->createBasicQuery()->get(); - $tagIdStr = $tagCollection->implode('id', ','); + $tagIdStr = $tagCollection->implode('id', ',') ?: '0'; $torrentTagCollection = \App\Models\TorrentTag::query()->whereIn('torrent_id', $torrentIdArr)->orderByRaw("field(tag_id,$tagIdStr)")->get(); $tagKeyById = $tagCollection->keyBy('id'); $torrentTagResult = $torrentTagCollection->groupBy('torrent_id'); @@ -3287,8 +3287,13 @@ foreach ($rows as $row) /** * render tags */ - $tagIdArr = $torrentTagResult->get($id)->pluck('tag_id')->toArray(); - $tags = $tagRep->renderSpan($tagKeyById, $tagIdArr); + $tagOwns = $torrentTagResult->get($id); + if ($tagOwns) { + $tags = $tagRep->renderSpan($tagKeyById, $tagOwns->pluck('tag_id')->toArray()); + } else { + $tags = ''; + } + if ($displaysmalldescr){ //small descr $dissmall_descr = trim($row["small_descr"]); diff --git a/nexus/Install/Install.php b/nexus/Install/Install.php index a542d7ef..95580b5d 100644 --- a/nexus/Install/Install.php +++ b/nexus/Install/Install.php @@ -106,7 +106,7 @@ class Install $filename = basename($path); $count = preg_match('/create_(.*)_table.php/', $filename, $matches); if ($count) { - $tables[$matches[1]] = $filename; + $tables[$matches[1]] = "database/migrations/$filename"; } } return $tables; @@ -202,7 +202,7 @@ class Install require $originalConfigFile; $settings = require $defaultSettingsFile; $settingsFromDb = []; - if (get_row_count('settings') > 0) { + if (NexusDB::schema()->hasTable('settings') && get_row_count('settings') > 0) { $settingsFromDb = get_setting(); } $this->doLog("settings form db: " . json_encode($settingsFromDb)); @@ -424,7 +424,7 @@ class Install $this->doLog("[CREATE ENV] key: $key, new value: $value from example."); $newData[$key] = $value; } - if ($scene == 'install') { + if ($scene == 'install' || !file_exists($envFile)) { if ($key == 'APP_ENV') { $newData[$key] = 'production'; } @@ -487,6 +487,9 @@ class Install public function saveSettings($settings) { + if (!NexusDB::schema()->hasTable('settings')) { + $this->runMigrate('database/migrations/2021_06_08_113437_create_settings_table.php'); + } foreach ($settings as $prefix => $group) { $this->doLog("[SAVE SETTING], prefix: $prefix, nameAndValues: " . json_encode($group)); saveSetting($prefix, $group); @@ -549,7 +552,9 @@ class Install } $command = "php " . ROOT_PATH . "artisan migrate"; if (!is_null($path)) { - $command .= " --path=$path"; + foreach ((array)$path as $key => $value) { + $command .= " --path=$value"; + } } $command .= " --force"; $this->executeCommand($command); @@ -582,4 +587,5 @@ class Install $this->doLog("[DATABASE_SEED] success."); } } + } diff --git a/nexus/Install/Update.php b/nexus/Install/Update.php index 5aa0b83e..f9b0bb13 100644 --- a/nexus/Install/Update.php +++ b/nexus/Install/Update.php @@ -194,6 +194,7 @@ class Update extends Install } else { $this->doLog("no need to run [MIGRATE_TORRENT_TAG]"); } + } private function migrateAttendance() diff --git a/nexus/Install/update/update.php b/nexus/Install/update/update.php index a6e6490e..36e20a2d 100644 --- a/nexus/Install/update/update.php +++ b/nexus/Install/update/update.php @@ -44,6 +44,13 @@ if ($currentStep == 2) { 'name' => 'Description', 'published_at' => 'Release at', ]; + + try { + $timezone = nexus_env('TIMEZONE'); + } catch (\Exception $exception) { + $update->doLog("no .env file, release time is github original"); + $timezone = null; + } $tableRows[] = [ 'checkbox' => sprintf(''), 'tag_name' => 'Manual', @@ -51,8 +58,10 @@ if ($currentStep == 2) { 'published_at' => '---', ]; $latestCommit = $update->getLatestCommit(); - $time = \Carbon\Carbon::parse($latestCommit['committer']['date']); - $time->tz = nexus_env('TIMEZONE'); + $time = \Carbon\Carbon::parse($latestCommit['commit']['committer']['date']); + if ($timezone) { + $time->tz = $timezone; + } $tableRows[] = [ 'checkbox' => sprintf('', $latestCommit['sha']), 'tag_name' => 'Latest development code', @@ -64,7 +73,9 @@ if ($currentStep == 2) { continue; } $time = \Carbon\Carbon::parse($version['published_at']); - $time->tz = nexus_env('TIMEZONE'); + if ($timezone) { + $time->tz = $timezone; + } $versionUrl = $version['tag_name'] . '|' . $version['tarball_url']; $checked = !empty($_REQUEST['version_url']) && $_REQUEST['version_url'] == $versionUrl ? ' checked' : ''; $tableRows[] = [