143 lines
5.0 KiB
PHP
143 lines
5.0 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @file classes/migration/upgrade/OJSv3_3_0UpgradeMigration.php
|
|
*
|
|
* Copyright (c) 2014-2021 Simon Fraser University
|
|
* Copyright (c) 2000-2021 John Willinsky
|
|
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
|
|
*
|
|
* @class OJSv3_3_0UpgradeMigration
|
|
*
|
|
* @brief Describe database table structures.
|
|
*/
|
|
|
|
namespace APP\migration\upgrade;
|
|
|
|
use Illuminate\Database\Schema\Blueprint;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Facades\Schema;
|
|
|
|
class OJSv3_3_0UpgradeMigration extends \PKP\migration\upgrade\PKPv3_3_0UpgradeMigration
|
|
{
|
|
protected function getSubmissionPath(): string
|
|
{
|
|
return 'articles';
|
|
}
|
|
|
|
protected function getContextPath(): string
|
|
{
|
|
return 'journals';
|
|
}
|
|
|
|
protected function getContextTable(): string
|
|
{
|
|
return 'journals';
|
|
}
|
|
|
|
protected function getContextKeyField(): string
|
|
{
|
|
return 'journal_id';
|
|
}
|
|
|
|
protected function getContextSettingsTable(): string
|
|
{
|
|
return 'journal_settings';
|
|
}
|
|
|
|
protected function getSectionTable(): string
|
|
{
|
|
return 'sections';
|
|
}
|
|
|
|
protected function getSerializedSettings(): array
|
|
{
|
|
return [
|
|
'site_settings' => [
|
|
'enableBulkEmails',
|
|
'installedLocales',
|
|
'pageHeaderTitleImage',
|
|
'sidebar',
|
|
'styleSheet',
|
|
'supportedLocales',
|
|
],
|
|
'journal_settings' => [
|
|
'disableBulkEmailUserGroups',
|
|
'favicon',
|
|
'homepageImage',
|
|
'pageHeaderLogoImage',
|
|
'sidebar',
|
|
'styleSheet',
|
|
'submissionChecklist',
|
|
'supportedFormLocales',
|
|
'supportedLocales',
|
|
'supportedSubmissionLocales',
|
|
'enablePublisherId',
|
|
'journalThumbnail',
|
|
],
|
|
'publication_settings' => [
|
|
'categoryIds',
|
|
'coverImage',
|
|
'disciplines',
|
|
'keywords',
|
|
'languages',
|
|
'subjects',
|
|
'supportingAgencies',
|
|
]
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Run the migrations.
|
|
*/
|
|
public function up(): void
|
|
{
|
|
parent::up();
|
|
|
|
// pkp/pkp-lib#6807 Make sure all submission/issue last modification dates are set
|
|
DB::statement('UPDATE issues SET last_modified = date_published WHERE last_modified IS NULL');
|
|
|
|
// Delete the old MODS34 filters
|
|
DB::statement("DELETE FROM filters WHERE class_name='plugins.metadata.mods34.filter.Mods34SchemaArticleAdapter'");
|
|
DB::statement("DELETE FROM filter_groups WHERE symbolic IN ('article=>mods34', 'mods34=>article')");
|
|
// Delete mEDRA dependencies
|
|
DB::statement("DELETE FROM filters WHERE class_name IN ('plugins.importexport.medra.filter.IssueMedraXmlFilter', 'plugins.importexport.medra.filter.ArticleMedraXmlFilter', 'plugins.importexport.medra.filter.GalleyMedraXmlFilter')");
|
|
DB::statement("DELETE FROM filter_groups WHERE symbolic IN ('issue=>medra-xml', 'article=>medra-xml', 'galley=>medra-xml')");
|
|
DB::statement("DELETE FROM scheduled_tasks WHERE class_name='plugins.importexport.medra.MedraInfoSender'");
|
|
DB::statement("DELETE FROM versions WHERE product_type='plugins.importexport' AND product='medra'");
|
|
}
|
|
|
|
/**
|
|
* Complete specific submission file migrations
|
|
*
|
|
* The main submission file migration is done in
|
|
* PKPv3_3_0UpgradeMigration and that migration must
|
|
* be run before this one.
|
|
*/
|
|
protected function migrateSubmissionFiles()
|
|
{
|
|
parent::migrateSubmissionFiles();
|
|
|
|
Schema::table('publication_galleys', function (Blueprint $table) {
|
|
$table->renameColumn('file_id', 'submission_file_id');
|
|
});
|
|
DB::statement('UPDATE publication_galleys SET submission_file_id = NULL WHERE submission_file_id = 0');
|
|
|
|
// pkp/pkp-lib#6616 Delete publication_galleys entries that correspond to nonexistent submission_files
|
|
$orphanedIds = DB::table('publication_galleys AS pg')
|
|
->leftJoin('submission_files AS sf', 'pg.submission_file_id', '=', 'sf.submission_file_id')
|
|
->whereNull('sf.submission_file_id')
|
|
->whereNotNull('pg.submission_file_id')
|
|
->pluck('pg.submission_file_id', 'pg.galley_id');
|
|
foreach ($orphanedIds as $galleyId => $submissionFileId) {
|
|
error_log("Removing orphaned publication_galleys entry ID {$galleyId} with submission_file_id {$submissionFileId}");
|
|
DB::table('publication_galleys')->where('galley_id', '=', $galleyId)->delete();
|
|
}
|
|
|
|
Schema::table('publication_galleys', function (Blueprint $table) {
|
|
$table->bigInteger('submission_file_id')->nullable()->unsigned()->change();
|
|
$table->foreign('submission_file_id')->references('submission_file_id')->on('submission_files');
|
|
});
|
|
}
|
|
}
|