Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

I5717 email composer #10

Draft
wants to merge 148 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
148 commits
Select commit Hold shift + click to select a range
c714fbb
pkp/pkp-lib#7125 Fix use of array key in SubmissionFile\DAO
NateWr Dec 8, 2021
b9a2553
pkp/pkp-lib#7125 Rename Repo facade's submissionFile accessor method
NateWr Dec 8, 2021
edec41b
Merge pull request #7536 from NateWr/i7125_submission_files
NateWr Dec 13, 2021
7a0ce42
pkp/pkp-lib#7125 Fix misnamed return variable
NateWr Dec 13, 2021
9723717
pkp/pkp-lib#7125 Fix array converted to object when encoded to JSON
NateWr Dec 13, 2021
258d499
pkp/pkp-lib#7534 Fix workflow URL for editors assigned as reviewers
NateWr Dec 13, 2021
5aa92c5
Remove old PHP4 shim
asmecher Dec 11, 2021
c0dee1b
Update ADODB to resolve warnings
asmecher Dec 13, 2021
2a0c73d
Update ADODB to resolve warnings
asmecher Dec 13, 2021
b3bcb3a
Suppress ADODB psql error on close
asmecher Dec 14, 2021
cddaa96
Remove duplicated use statement
asmecher Dec 14, 2021
4eda98e
Properly update composer ADODB hash
asmecher Dec 17, 2021
469ea6a
Move to patch files for ADODB modifications
asmecher Dec 17, 2021
e12acef
pkp/pkp-lib#6850 Add contributors API and replace grid with ListPanel
defstat Dec 20, 2021
0797d82
Merge pull request #7376 from defstat/i6850-api
NateWr Dec 20, 2021
4abde58
pkp/pkp-lib#6850 Remove incorrect description for author's country
NateWr Dec 20, 2021
b969a0d
pkp/pkp-lib#6850 Alphabetize property order in author schema
NateWr Dec 20, 2021
301968b
pkp/pkp-lib#6850 Remove properties not used in PKPContributorsListPanel
NateWr Dec 20, 2021
ea19d82
pkp/pkp-lib#6850 Remove unnecessary hook
NateWr Dec 20, 2021
45b63ee
pkp/pkp-lib#6850 Rename author schema map property
NateWr Dec 20, 2021
9589461
pkp/pkp-lib#6850 Remove unused component in PKPWorkflowHandler
NateWr Dec 20, 2021
5726086
pkp/pkp-lib#7213 Restore announcement notification email
NateWr Dec 20, 2021
1224d3f
Translated using Weblate (Czech)
Jirrka Dec 1, 2021
b8bf8b1
Translated using Weblate (Danish)
neffe Dec 2, 2021
e768652
Translated using Weblate (Portuguese (Portugal))
Dec 2, 2021
3826cca
Translated using Weblate (Arabic)
vormia Dec 4, 2021
3aac698
Translated using Weblate (Arabic)
vormia Dec 4, 2021
bd3242e
Translated using Weblate (Slovenian)
primoz-svetek Dec 3, 2021
22f563f
Translated using Weblate (Turkish)
Dec 6, 2021
681e3fb
Translated using Weblate (German)
mooselybased Dec 8, 2021
b0d15f6
Translated using Weblate (German)
mooselybased Dec 8, 2021
806c841
Translated using Weblate (Portuguese (Brazil))
diegojmacedo Dec 10, 2021
7d2b4ed
Translated using Weblate (Japanese)
imagire Dec 10, 2021
52e06f8
Translated using Weblate (Japanese)
imagire Dec 10, 2021
0321d3b
Translated using Weblate (Japanese)
imagire Dec 10, 2021
c15813e
Translated using Weblate (Japanese)
imagire Dec 10, 2021
1046f80
Translated using Weblate (Japanese)
imagire Dec 10, 2021
a22d6d7
Translated using Weblate (Bulgarian)
ckamburov Dec 9, 2021
f8a760c
Translated using Weblate (Japanese)
imagire Dec 10, 2021
03cce3e
Translated using Weblate (Japanese)
imagire Dec 10, 2021
b7f0634
Translated using Weblate (Japanese)
imagire Dec 10, 2021
d723783
Translated using Weblate (Japanese)
imagire Dec 11, 2021
194646d
Translated using Weblate (Japanese)
imagire Dec 11, 2021
ddc9890
Translated using Weblate (Japanese)
imagire Dec 11, 2021
5eb0a7d
Translated using Weblate (Japanese)
imagire Dec 12, 2021
03f196a
Translated using Weblate (Japanese)
imagire Dec 12, 2021
7accf93
Translated using Weblate (Japanese)
imagire Dec 11, 2021
96324a7
Translated using Weblate (Czech)
Jirrka Dec 20, 2021
4fbb800
Translated using Weblate (Czech)
Jirrka Dec 20, 2021
5955a50
Translated using Weblate (Czech)
Jirrka Dec 20, 2021
d110411
Merge remote-tracking branch 'translations/main' into main
asmecher Dec 20, 2021
12bccf9
Clean up query construction syntax
asmecher Dec 20, 2021
8434802
pkp/pkp-lib#7560 Turn leftJoin into subquery to resolve duplicates
asmecher Dec 20, 2021
ecf05ca
pkp/pkp-lib#7264 Rename variables
Vitaliy-1 Nov 19, 2021
38b0064
Merge pull request #7541 from Vitaliy-1/i7264_rename_variables
Vitaliy-1 Dec 22, 2021
0be8e2e
pkp/pkp-lib#7560 Fix isAssigned handling
asmecher Dec 29, 2021
fb991cc
Translated using Weblate (Danish)
alexandraFO Dec 21, 2021
90c3782
Translated using Weblate (Danish)
alexandraFO Dec 21, 2021
eb9e9d5
Translated using Weblate (Czech)
synetix-code Dec 22, 2021
07f921a
Translated using Weblate (Portuguese (Brazil))
diegojmacedo Dec 21, 2021
8291eb7
Translated using Weblate (Portuguese (Brazil))
diegojmacedo Dec 21, 2021
f748e34
Translated using Weblate (Portuguese (Brazil))
diegojmacedo Dec 21, 2021
53ed639
Translated using Weblate (Danish)
Dec 22, 2021
85ef370
Translated using Weblate (Portuguese (Portugal))
Dec 21, 2021
9cdeeb5
Translated using Weblate (Danish)
alexandraFO Dec 21, 2021
47c36a0
Translated using Weblate (Portuguese (Portugal))
Dec 21, 2021
31e4746
Translated using Weblate (Portuguese (Portugal))
Dec 21, 2021
796fb3c
Translated using Weblate (Japanese)
Dec 22, 2021
a9748ac
Translated using Weblate (Portuguese (Brazil))
diegojmacedo Dec 23, 2021
f3fd18a
Translated using Weblate (Czech)
Jirrka Dec 23, 2021
0f5b275
Translated using Weblate (Greek)
jonasraoni Dec 25, 2021
ed9eb6c
Translated using Weblate (Greek)
jonasraoni Dec 25, 2021
bbf5e60
Translated using Weblate (Russian)
ppv1979 Dec 25, 2021
8570969
Translated using Weblate (Russian)
ppv1979 Dec 25, 2021
25c3aa6
Translated using Weblate (Russian)
ppv1979 Dec 25, 2021
bb84f77
Translated using Weblate (Russian)
ppv1979 Dec 25, 2021
1d88161
pkp/pkp-lib#7451 Do not disclose existence of account during password…
asmecher Jan 4, 2022
750b761
Merge remote-tracking branch 'translations/main' into main
asmecher Jan 4, 2022
4c96e21
pkp/pkp-lib#7567 Gossip is not multilingual
asmecher Jan 4, 2022
84e4549
pkp/pkp-lib#7577 Fixed type hinting
jonasraoni Nov 7, 2021
3d17025
Merge pull request #7584 from jonasraoni/bugfix/main/7577-fix-phpdoc
jonasraoni Jan 7, 2022
6eef65d
pkp/pkp-lib#7594 Show/hide CI field depending on selection
asmecher Jan 8, 2022
867b850
Replaced App::make() by app()
jonasraoni Jan 3, 2022
1aadde8
Replaced stdClass by object
jonasraoni Jan 3, 2022
07efecb
Fixed warning in template
jonasraoni Jan 3, 2022
c8cddce
Added missing locale key
jonasraoni Jan 3, 2022
0d34521
Added static modifier to PKP\core\Core methods and fixed namespace ty…
jonasraoni Jan 3, 2022
3568513
Moved PKPString constants into the class
jonasraoni Jan 3, 2022
fa7fdd1
Removed PHP 5 compatibility code/comments, polyfills for missing func…
jonasraoni Jan 3, 2022
629e538
Moved MIN_PASSWORD_LENGTH into PKPInstall class
jonasraoni Jan 3, 2022
d02c871
Removed unused private method, improved unhelpful message in the buil…
jonasraoni Jan 4, 2022
bd687e0
Fixed exception on the vocab handler and standardized the IsoCodesFac…
jonasraoni Jan 4, 2022
e4dbf46
Replaced nested dirname by dirname(x, level)
jonasraoni Jan 6, 2022
652fb12
Removed unreachable code
jonasraoni Jan 4, 2022
bd46c14
Merge pull request #7586 from jonasraoni/feature/main/housekeeping-up…
jonasraoni Jan 10, 2022
94a1dba
Translated using Weblate (Danish)
alexandraFO Jan 5, 2022
0bf2178
Translated using Weblate (Portuguese (Portugal))
Jan 4, 2022
2d08e2f
Translated using Weblate (Turkish)
Jan 6, 2022
64e9a9a
Translated using Weblate (Turkish)
Jan 10, 2022
61d63e5
Translated using Weblate (Turkish)
Jan 10, 2022
5ebce70
Translated using Weblate (Turkish)
Jan 10, 2022
5090dcd
Translated using Weblate (Turkish)
Jan 10, 2022
7c5abdc
Translated using Weblate (Danish)
alexandraFO Jan 11, 2022
e0c6b72
Added translation using Weblate (Icelandic)
Jan 11, 2022
b3ec895
Added translation using Weblate (Icelandic)
Jan 11, 2022
857b124
Translated using Weblate (French)
mpbraendle Jan 11, 2022
2aef0e3
Translated using Weblate (Italian)
mpbraendle Jan 11, 2022
01ce281
Translated using Weblate (Portuguese (Brazil))
alexxxmendonca Jan 11, 2022
33ebc00
Translated using Weblate (Portuguese (Brazil))
alexxxmendonca Jan 11, 2022
e6c845a
Translated using Weblate (Czech)
Jirrka Jan 10, 2022
b47f4ca
Translated using Weblate (Polish)
Jan 10, 2022
9ccb617
Translated using Weblate (Portuguese (Portugal))
Jan 11, 2022
d1aeb86
Translated using Weblate (Polish)
Jan 10, 2022
006678a
Translated using Weblate (Polish)
Jan 10, 2022
eeec934
Translated using Weblate (Icelandic)
Jan 11, 2022
bd17dfd
Translated using Weblate (Icelandic)
Jan 11, 2022
3f62cd5
Merge remote-tracking branch 'translations/main' into main
asmecher Jan 11, 2022
4869346
Standardize locale codes
asmecher Jan 11, 2022
5a4b7a6
pkp/pkp-lib#7572 Fix subquery nesting
asmecher Jan 11, 2022
fc62b12
pkp/pkp-lib#7572 Standardize arrow function subquery syntax
asmecher Jan 11, 2022
d637e1a
pkp/pkp-lib#7605 Use correct languages in submission forms
NateWr Jan 12, 2022
4cf99d1
Bump smarty/smarty from 3.1.39 to 3.1.43
dependabot[bot] Jan 12, 2022
7d7d336
Merge pull request #7615 from pkp/dependabot/composer/smarty/smarty-3…
asmecher Jan 13, 2022
3cab40a
Bump tinymce/tinymce from 5.8.2 to 5.10.0
dependabot[bot] Jan 13, 2022
a8adb99
Bump laravel/framework from 7.30.4 to 7.30.6
dependabot[bot] Jan 13, 2022
df5c1b9
Merge pull request #7616 from pkp/dependabot/composer/tinymce/tinymce…
asmecher Jan 13, 2022
e7fdf1a
Merge pull request #7618 from pkp/dependabot/composer/laravel/framewo…
asmecher Jan 13, 2022
85be8de
pkp/pkp-lib#5717 Refactor editorial decisions and introduce email com…
NateWr Jan 13, 2022
aa84524
Fix call to Repo::submissionFile() after rebase
NateWr Jan 13, 2022
f5c3fc9
Fix template variable issue with public properties
NateWr Jan 13, 2022
ced55bb
Remove unused code
NateWr Jan 17, 2022
e7512ca
Make mailable properties protected and consistent
NateWr Jan 17, 2022
0d7db9a
Fix namespace for decision trait
NateWr Jan 18, 2022
bdb389a
Fix missing locale keys during install
NateWr Jan 18, 2022
be394ea
Fix unexpected null values in email variables
NateWr Jan 18, 2022
05661a7
Add backup signature to email variables
NateWr Jan 18, 2022
21d2598
Make editor decision columns nullable when database installed
NateWr Jan 18, 2022
cec2867
Add missing preferredPublicName to user schema
NateWr Jan 18, 2022
0861515
Fix status doesn't change after editorial decision
NateWr Jan 18, 2022
9d2280f
Fix namespace issue
NateWr Jan 18, 2022
fe27b88
Fix reviewer comments in email notifications
NateWr Jan 18, 2022
0e48176
Fix genreIsPrimary in submission file schema map
NateWr Jan 18, 2022
a3c5b88
Fix duplicate signature in assign stage participant emails
NateWr Jan 18, 2022
02f8ec7
Add authorSubmissionUrl email template variable
NateWr Jan 18, 2022
1351446
Fix author dashboard
NateWr Jan 18, 2022
9170b21
Add p tags to default sender signature
NateWr Jan 18, 2022
104581d
Remove unused locale file load
NateWr Jan 18, 2022
688a42c
Remove unused API endpoint
NateWr Jan 18, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion api/v1/_email/PKPEmailHandler.inc.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@

class PKPEmailHandler extends APIHandler
{
/** Number of emails to send in each job */
/** @var int Number of emails to send in each job */
public const EMAILS_PER_JOB = 100;

/**
Expand Down
145 changes: 145 additions & 0 deletions api/v1/_library/PKPLibraryHandler.inc.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
<?php

/**
* @file api/v1/_library/PKPLibraryHandler.inc.php
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* @class PKPLibraryHandler
* @ingroup api_v1_announcement
*
* @brief Handle API requests for announcement operations.
*
*/

use APP\core\Application;
use APP\core\Services;
use APP\file\LibraryFileManager;
use PKP\context\LibraryFile;
use PKP\context\LibraryFileDAO;
use PKP\core\APIResponse;
use PKP\db\DAORegistry;
use PKP\db\DAOResultFactory;
use PKP\handler\APIHandler;
use PKP\security\authorization\PolicySet;
use PKP\security\authorization\RoleBasedHandlerOperationPolicy;
use PKP\security\authorization\SubmissionAccessPolicy;
use PKP\security\Role;

use Psr\Http\Message\ServerRequestInterface;

class PKPLibraryHandler extends APIHandler
{
public function __construct()
{
$this->_handlerPath = '_library';
$this->_endpoints = [
'GET' => [
[
'pattern' => $this->getEndpointPattern(),
'handler' => [$this, 'getLibrary'],
'roles' => [Role::ROLE_ID_SITE_ADMIN, Role::ROLE_ID_MANAGER, Role::ROLE_ID_SUB_EDITOR],
],
],
];
parent::__construct();

}

/**
* @copydoc PKPHandler::authorize
*/
public function authorize($request, &$args, $roleAssignments)
{
$rolePolicy = new PolicySet(PolicySet::COMBINING_PERMIT_OVERRIDES);

foreach ($roleAssignments as $role => $operations) {
$rolePolicy->addPolicy(new RoleBasedHandlerOperationPolicy($request, $role, $operations));
}
$this->addPolicy($rolePolicy);

if ($request->getUserVar('includeSubmissionId')) {
$this->addPolicy(new SubmissionAccessPolicy($request, $args, $roleAssignments, 'includeSubmissionId'));
}

return parent::authorize($request, $args, $roleAssignments);
}

/**
* Get a list of all files in the library
*
* @param array $args arguments
*
* @return APIResponse
*/
public function getLibrary(ServerRequestInterface $slimRequest, APIResponse $response, array $args)
{
/** @var LibraryFileDAO $libraryFileDao */
$libraryFileDao = DAORegistry::getDAO('LibraryFileDAO');
$submission = $this->getAuthorizedContextObject(Application::ASSOC_TYPE_SUBMISSION);
$context = $this->getRequest()->getContext();
$contextId = $context->getId();
$libraryFileManager = new LibraryFileManager($contextId);

$files = [];

$params = $slimRequest->getQueryParams();
if (isset($params['includeSubmissionId'])) {
/** @var DAOResultFactory $result */
$result = $libraryFileDao->getBySubmissionId($submission->getId());
/** @var LibraryFile $file */
while ($file = $result->next()) {
$files[] = $this->fileToResponse($file, $libraryFileManager);
}
}

/** @var DAOResultFactory $result */
$result = $libraryFileDao->getByContextId($contextId);
/** @var LibraryFile $file */
while ($file = $result->next()) {
$files[] = $this->fileToResponse($file, $libraryFileManager);
}

return $response->withJson([
'items' => $files,
'itemsMax' => count($files),
], 200);
}

/**
* Convert a file object to the JSON response object
*/
protected function fileToResponse(LibraryFile $file, LibraryFileManager $libraryFileManager): array
{
$request = Application::get()->getRequest();

$urlArgs = [
'libraryFileId' => $file->getId(),
];
if ($file->getSubmissionId()) {
$urlArgs['submissionId'] = $file->getSubmissionId();
}

return [
'id' => $file->getId(),
'filename' => $file->getServerFileName(),
'name' => $file->getName(null),
'mimetype' => $file->getFileType(),
'documentType' => Services::get('file')->getDocumentType($file->getFileType()),
'submissionId' => $file->getSubmissionId() ?? 0,
'type' => $file->getType(),
'typeName' => __($libraryFileManager->getTitleKeyFromType($file->getType())),
'url' => $request->getDispatcher()->url(
$request,
Application::ROUTE_COMPONENT,
null,
'api.file.FileApiHandler',
'downloadLibraryFile',
null,
$urlArgs
),
];
}
}
4 changes: 2 additions & 2 deletions api/v1/_payments/PKPBackendPaymentsSettingsHandler.inc.php
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,8 @@ public function authorize($request, &$args, $roleAssignments)
/**
* Receive requests to edit the payments form
*
* @param $slimRequest Request Slim request object
* @param $response Response object
* @param Request $slimRequest Slim request object
* @param Response $response object
*
* @return Response
*/
Expand Down
25 changes: 18 additions & 7 deletions api/v1/_submissions/PKPBackendSubmissionsHandler.inc.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,9 @@
use PKP\plugins\HookRegistry;

use PKP\security\authorization\ContextAccessPolicy;

use PKP\security\authorization\SubmissionAccessPolicy;
use PKP\security\Role;
use Slim\Http\Response;

abstract class PKPBackendSubmissionsHandler extends APIHandler
{
Expand Down Expand Up @@ -72,14 +73,20 @@ public function __construct()
public function authorize($request, &$args, $roleAssignments)
{
$this->addPolicy(new ContextAccessPolicy($request, $roleAssignments));

$routeName = $this->getSlimRequest()->getAttribute('route')->getName();
if (in_array($routeName, ['delete'])) {
$this->addPolicy(new SubmissionAccessPolicy($request, $args, $roleAssignments));
}

return parent::authorize($request, $args, $roleAssignments);
}

/**
* Get a collection of submissions
*
* @param $slimRequest Request Slim request object
* @param $response Response object
* @param Request $slimRequest Slim request object
* @param Response $response object
* @param array $args arguments
*
* @return Response
Expand Down Expand Up @@ -114,9 +121,13 @@ public function getMany($slimRequest, $response, $args)
$userGroupDao = DAORegistry::getDAO('UserGroupDAO'); /** @var UserGroupDAO $userGroupDao */
$userGroups = $userGroupDao->getByContextId($context->getId())->toArray();

/** @var GenreDAO $genreDao */
$genreDao = DAORegistry::getDAO('GenreDAO');
$genres = $genreDao->getByContextId($context->getId())->toArray();

return $response->withJson([
'itemsMax' => Repo::submission()->getCount($collector->limit(null)->offset(null)),
'items' => Repo::submission()->getSchemaMap()->mapManyToSubmissionsList($submissions, $userGroups),
'items' => Repo::submission()->getSchemaMap()->mapManyToSubmissionsList($submissions, $userGroups, $genres),
], 200);
}

Expand Down Expand Up @@ -165,7 +176,7 @@ protected function getSubmissionCollector(array $queryParams): Collector

case 'assignedTo':
$val = array_map('intval', $this->paramToArray($val));
if ($val == [-1]) {
if ($val == [\PKP\submission\Collector::UNASSIGNED]) {
$val = array_shift($val);
}
$collector->assignedTo($val);
Expand Down Expand Up @@ -203,8 +214,8 @@ protected function getSubmissionCollector(array $queryParams): Collector
/**
* Delete a submission
*
* @param $slimRequest Request Slim request object
* @param $response Response object
* @param Request $slimRequest Slim request object
* @param Response $response object
* @param array $args arguments
*
* @return Response
Expand Down
14 changes: 7 additions & 7 deletions api/v1/_uploadPublicFile/PKPUploadPublicFileHandler.inc.php
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ public function authorize($request, &$args, $roleAssignments)
* A helper method which adds the necessary response headers to allow
* file uploads
*
* @param $response Response object
* @param Response $response object
*
* @return Response
*/
Expand All @@ -78,9 +78,9 @@ private function getResponse($response)
/**
* Upload a requested file
*
* @param $slimRequest Request Slim request object
* @param $response Response object
* @param $args array arguments
* @param Request $slimRequest Slim request object
* @param Response $response object
* @param array $args arguments
*
* @return Response
*/
Expand Down Expand Up @@ -198,9 +198,9 @@ public function uploadFile($slimRequest, $response, $args)
* Respond affirmatively to a HTTP OPTIONS request with headers which allow
* file uploads
*
* @param $slimRequest Request Slim request object
* @param $response Response object
* @param $args array arguments
* @param Request $slimRequest Slim request object
* @param Response $response object
* @param array $args arguments
*
* @return Response
*/
Expand Down
40 changes: 30 additions & 10 deletions api/v1/announcements/PKPAnnouncementHandler.inc.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,10 @@

use APP\core\Application;
use APP\facades\Repo;
use APP\notification\Notification;
use PKP\db\DAORegistry;
use PKP\handler\APIHandler;
use PKP\notification\managerDelegate\AnnouncementNotificationManager;
use PKP\plugins\HookRegistry;
use PKP\security\authorization\PolicySet;
use PKP\security\authorization\RoleBasedHandlerOperationPolicy;
Expand Down Expand Up @@ -94,8 +97,8 @@ public function authorize($request, &$args, $roleAssignments)
/**
* Get a single submission
*
* @param $slimRequest Request Slim request object
* @param $response Response object
* @param Request $slimRequest Slim request object
* @param Response $response object
* @param array $args arguments
*
* @return Response
Expand All @@ -119,8 +122,8 @@ public function get($slimRequest, $response, $args)
/**
* Get a collection of announcements
*
* @param $slimRequest Request Slim request object
* @param $response Response object
* @param Request $slimRequest Slim request object
* @param Response $response object
* @param array $args arguments
*
* @return Response
Expand Down Expand Up @@ -165,8 +168,8 @@ public function getMany($slimRequest, $response, $args)
/**
* Add an announcement
*
* @param $slimRequest Request Slim request object
* @param $response Response object
* @param Request $slimRequest Slim request object
* @param Response $response object
* @param array $args arguments
*
* @return Response
Expand Down Expand Up @@ -195,14 +198,31 @@ public function add($slimRequest, $response, $args)
$id = Repo::announcement()->add($announcement);
$announcement = Repo::announcement()->get($id);

if(filter_var($params['sendEmail'], FILTER_VALIDATE_BOOLEAN)){
import('lib.pkp.classes.notification.managerDelegate.AnnouncementNotificationManager');
$announcementNotificationManager = new AnnouncementNotificationManager(Notification::NOTIFICATION_TYPE_NEW_ANNOUNCEMENT);
$announcementNotificationManager->initialize($announcement);

$notificationSubscriptionSettingsDao = DAORegistry::getDAO('NotificationSubscriptionSettingsDAO'); /** @var NotificationSubscriptionSettingsDAO $notificationSubscriptionSettingsDao */
$userGroupDao = DAORegistry::getDAO('UserGroupDAO'); /** @var UserGroupDAO $userGroupDao */
$allUsers = $userGroupDao->getUsersByContextId($request->getContext()->getId());
while ($user = $allUsers->next()) {
if ($user->getDisabled()) continue;
$blockedEmails = $notificationSubscriptionSettingsDao->getNotificationSubscriptionSettings('blocked_emailed_notification', $user->getId(), $request->getContext()->getId());
if (!in_array(Notification::NOTIFICATION_TYPE_NEW_ANNOUNCEMENT, $blockedEmails)) {
$announcementNotificationManager->notify($user);
}
}
}

return $response->withJson(Repo::announcement()->getSchemaMap()->map($announcement), 200);
}

/**
* Edit an announcement
*
* @param $slimRequest Request Slim request object
* @param $response Response object
* @param Request $slimRequest Slim request object
* @param Response $response object
* @param array $args arguments
*
* @return Response
Expand Down Expand Up @@ -249,8 +269,8 @@ public function edit($slimRequest, $response, $args)
/**
* Delete an announcement
*
* @param $slimRequest Request Slim request object
* @param $response Response object
* @param Request $slimRequest Slim request object
* @param Response $response object
* @param array $args arguments
*
* @return Response
Expand Down
Loading