Skip to content

Commit

Permalink
pkp/pkp-lib#9674 Port StageAssignmentDAO and StageAssignment to Eloqu…
Browse files Browse the repository at this point in the history
…ent Model
  • Loading branch information
defstat committed Jan 31, 2024
1 parent e34c78a commit 0ae37c5
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 20 deletions.
21 changes: 5 additions & 16 deletions classes/install/Upgrade.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
use APP\file\PublicFileManager;
use APP\press\PressDAO;
use Exception;
use Illuminate\Database\PostgresConnection;
use Illuminate\Support\Facades\DB;
use PKP\config\Config;
use PKP\db\DAORegistry;
Expand All @@ -30,7 +31,6 @@
use PKP\install\Installer;
use PKP\navigationMenu\NavigationMenuItemDAO;
use PKP\site\SiteDAO;
use PKP\stageAssignment\StageAssignmentDAO;
use PKP\submissionFile\SubmissionFile;

class Upgrade extends Installer
Expand Down Expand Up @@ -202,28 +202,17 @@ public function migrateUserAndAuthorNames()
*/
public function changeUserRolesAndStageAssignmentsForStagePermitSubmissionEdit()
{
$stageAssignmentDao = DAORegistry::getDAO('StageAssignmentDAO'); /** @var StageAssignmentDAO $stageAssignmentDao */

$roles = Repo::userGroup()::NOT_CHANGE_METADATA_EDIT_PERMISSION_ROLES;
$roleString = '(' . implode(',', $roles) . ')';

DB::table('user_groups')
->whereIn('role_id', $roles)
->update(['permit_metadata_edit' => 1]);

switch (Config::getVar('database', 'driver')) {
case 'mysql':
case 'mysqli':
$stageAssignmentDao->update('UPDATE stage_assignments sa JOIN user_groups ug on sa.user_group_id = ug.user_group_id SET sa.can_change_metadata = 1 WHERE ug.role_id IN ' . $roleString);
break;
case 'postgres':
case 'postgres64':
case 'postgres7':
case 'postgres8':
case 'postgres9':
$stageAssignmentDao->update('UPDATE stage_assignments sa SET can_change_metadata=1 FROM user_groups ug WHERE sa.user_group_id = ug.user_group_id AND ug.role_id IN ' . $roleString);
break;
default: throw new Exception('Unknown database type!');
if (DB::connection() instanceof PostgresConnection) {
DB::statement('UPDATE stage_assignments sa SET can_change_metadata=1 FROM user_groups ug WHERE sa.user_group_id = ug.user_group_id AND ug.role_id IN ' . $roleString);
} else {
DB::statement('UPDATE stage_assignments sa JOIN user_groups ug on sa.user_group_id = ug.user_group_id SET sa.can_change_metadata = 1 WHERE ug.role_id IN ' . $roleString);
}

return true;
Expand Down
7 changes: 3 additions & 4 deletions plugins/reports/monographReport/Report.php
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@
use PKP\facades\Locale;
use PKP\security\Role;
use PKP\stageAssignment\StageAssignment;
use PKP\stageAssignment\StageAssignmentDAO;
use PKP\submission\SubmissionAgencyDAO;
use PKP\submission\SubmissionDisciplineDAO;
use PKP\submission\SubmissionKeywordDAO;
Expand Down Expand Up @@ -419,10 +418,10 @@ private function getCategories(): string
*/
private function getEditors(): array
{
/** @var StageAssignmentDAO */
$stageAssignmentDao = DAORegistry::getDAO('StageAssignmentDAO');
$stageAssignments = StageAssignment::withSubmissionId($this->submission->getId())
->get();

return collect($stageAssignmentDao->getBySubmissionAndStageId($this->submission->getId())->toIterator())
return $stageAssignments
->filter(fn (StageAssignment $stageAssignment) => $this->getEditorUserGroups()->get($stageAssignment->getUserGroupId()))
->map(fn (StageAssignment $stageAssignment) => $this->getUser($stageAssignment->getUserId()))
->unique(fn (User $user) => $user->getId())
Expand Down

0 comments on commit 0ae37c5

Please sign in to comment.