16 import(
'lib.pkp.classes.handler.APIHandler');
17 import(
'classes.core.Services');
25 $rootPattern =
'/{contextPath}/api/{version}/_payments';
26 $this->_endpoints = array_merge_recursive($this->_endpoints, array(
29 'pattern' => $rootPattern,
30 'handler' => array($this,
'edit'),
38 parent::__construct();
44 public function authorize($request, &$args, $roleAssignments) {
45 import(
'lib.pkp.classes.security.authorization.PolicySet');
46 $rolePolicy =
new PolicySet(COMBINING_PERMIT_OVERRIDES);
48 import(
'lib.pkp.classes.security.authorization.RoleBasedHandlerOperationPolicy');
49 foreach ($roleAssignments as $role => $operations) {
54 return parent::authorize($request, $args, $roleAssignments);
65 public function edit($slimRequest, $response, $args) {
67 $context = $request->getContext();
68 $params = $slimRequest->getParsedBody();
72 foreach ($slimRequest->getParsedBody() as $param => $val) {
74 case 'paymentsEnabled':
75 $params[$param] = $val ===
'true';
78 $params[$param] = (string) $val;
83 if (isset($params[
'currency'])) {
84 $errors = $contextService->validate(
86 [
'currency' => $params[
'currency']],
87 $context->getSupportedFormLocales(),
88 $context->getPrimaryLocale()
90 if (!empty($errors)) {
91 return $response->withStatus(400)->withJson($errors);
97 foreach ($paymentPlugins as $paymentPlugin) {
98 $errors = array_merge(
100 $paymentPlugin->saveSettings($params, $slimRequest, $request)
103 if (!empty($errors)) {
104 return $response->withStatus(400)->withJson($errors);
107 $context = $contextService->get($context->getId());
108 $context = $contextService->edit($context, $params, $request);
110 return $response->withJson($params);