11<?php
22
33import ('classes.handler.Handler ' );
4+ import ('classes.log.SubmissionEventLogEntry ' );
5+ import ('lib.pkp.classes.log.SubmissionLog ' );
46import ('plugins.generic.scieloScreening.classes.DOIScreening ' );
57import ('plugins.generic.scieloScreening.classes.DOIScreeningDAO ' );
68import ('plugins.generic.scieloScreening.classes.ScreeningChecker ' );
@@ -31,16 +33,29 @@ function addDOIs($args, $request){
3133 return http_response_code (200 );
3234 }
3335
36+ private function logDOIValidationEvent ($ request , $ submission , $ doi , $ response ) {
37+ if (array_key_exists ('messageError ' , $ response )) {
38+ SubmissionLog::logEvent ($ request , $ submission , SUBMISSION_LOG_METADATA_UPDATE , 'plugins.generic.scieloScreening.log.doiNotValidated ' , ['doi ' => $ doi , 'errorMessage ' => $ response ['messageError ' ]]);
39+ } else if ($ response ['doiConfirmedAuthorship ' ]){
40+ SubmissionLog::logEvent ($ request , $ submission , SUBMISSION_LOG_METADATA_UPDATE , 'plugins.generic.scieloScreening.log.doiValidatedAuthorshipConfirmed ' , ['doi ' => $ doi ]);
41+ } else {
42+ SubmissionLog::logEvent ($ request , $ submission , SUBMISSION_LOG_METADATA_UPDATE , 'plugins.generic.scieloScreening.log.doiValidatedAuthorshipNotConfirmed ' , ['doi ' => $ doi ]);
43+ }
44+ }
45+
3446 public function validateDOI ($ args , $ request ){
3547 $ checker = new ScreeningChecker ();
3648 $ responseCrossref = array ();
49+ $ submission = Services::get ('submission ' )->get ((int )$ args ['submissionId ' ]);
3750
3851 $ crossrefClient = new DOISystemClient ('Crossref.org ' , 'https://api.crossref.org/works?filter=doi: ' );
3952 $ crossrefService = new CrossrefService ($ args ['doiString ' ], $ crossrefClient );
4053
4154 if (!$ crossrefService ->DOIExists ()) {
4255 $ statusMessage = $ crossrefService ->getStatusResponseMessage ();
4356 $ response = $ this ->getDOIStatusResponseMessage ($ statusMessage );
57+
58+ $ this ->logDOIValidationEvent ($ request , $ submission , $ args ['doiString ' ], $ response );
4459 return json_encode ($ response );
4560 } else {
4661 $ responseCrossref = $ crossrefService ->getResponseContent ();
@@ -51,32 +66,36 @@ public function validateDOI($args, $request){
5166 $ doiOrgService = new DOISystemService ($ args ['doiString ' ], $ doiOrgClient );
5267 $ statusMessage = $ doiOrgService ->getStatusResponseMessage ();
5368 $ response = $ this ->getDOIStatusResponseMessage ($ statusMessage );
69+
70+ $ this ->logDOIValidationEvent ($ request , $ submission , $ args ['doiString ' ], $ response );
5471 return json_encode ($ response );
5572 }
5673
57- $ submission = Services::get ('submission ' )->get ((int )$ args ['submissionId ' ]);
58- $ doiConfirmedAuthorship = $ this ->checkDOIAuthorship ($ submission , $ responseCrossref );
59-
6074 $ itemCrossref = $ responseCrossref ['message ' ]['items ' ][0 ];
6175 if (!$ checker ->checkDOIArticle ($ itemCrossref )) {
6276 $ response = [
6377 'statusValidate ' => 0 ,
6478 'messageError ' => __ ("plugins.generic.scieloScreening.doiFromJournal " )
6579 ];
80+ $ this ->logDOIValidationEvent ($ request , $ submission , $ args ['doiString ' ], $ response );
6681 return json_encode ($ response );
6782 }
6883
6984 $ yearArticle = 0 ;
70- if (isset ($ itemCrossref ['published-print ' ]))
85+ if (isset ($ itemCrossref ['published-print ' ])){
7186 $ yearArticle = $ itemCrossref ['published-print ' ]['date-parts ' ][0 ][0 ];
72- else
87+ } else {
7388 $ yearArticle = $ itemCrossref ['published-online ' ]['date-parts ' ][0 ][0 ];
89+ }
7490
75- return json_encode ( [
91+ $ response = [
7692 'statusValidate ' => 1 ,
7793 'yearArticle ' => $ yearArticle ,
78- 'doiConfirmedAuthorship ' => $ doiConfirmedAuthorship
79- ]);
94+ 'doiConfirmedAuthorship ' => $ this ->checkDOIAuthorship ($ submission , $ responseCrossref )
95+ ];
96+
97+ $ this ->logDOIValidationEvent ($ request , $ submission , $ args ['doiString ' ], $ response );
98+ return json_encode ($ response );
8099 }
81100
82101 public function checkDOIAuthorship ($ submission , $ responseCrossref ){
@@ -103,14 +122,24 @@ private function getDOIStatusResponseMessage($statusMessage) {
103122 ];
104123 }
105124
125+ private function logDOIScreeningEvent ($ request , $ submission , $ doisImploded = null ) {
126+ if (is_null ($ doisImploded )) {
127+ SubmissionLog::logEvent ($ request , $ submission , SUBMISSION_LOG_METADATA_UPDATE , 'plugins.generic.scieloScreening.log.doiScreeningCompletedSuccess ' );
128+ } else {
129+ SubmissionLog::logEvent ($ request , $ submission , SUBMISSION_LOG_METADATA_UPDATE , 'plugins.generic.scieloScreening.log.doiScreeningNotCompleted ' , ['doisImploded ' => $ doisImploded ]);
130+ }
131+ }
132+
106133 public function validateDOIsFromScreening ($ args , $ request ){
107134 $ checker = new ScreeningChecker ();
108-
135+ $ submission = Services::get ('submission ' )->get ((int )$ args ['submissionId ' ]);
136+
109137 if ($ checker ->checkDOIRepeated ($ args ['dois ' ])){
110138 $ response = [
111139 'statusValidateDOIs ' => 0 ,
112140 'messageError ' => __ ("plugins.generic.scieloScreening.doiDifferentRequirement " )
113141 ];
142+ $ this ->logDOIScreeningEvent ($ request , $ submission , implode (", " , $ args ['dois ' ]));
114143 return json_encode ($ response );
115144 }
116145
@@ -120,6 +149,7 @@ public function validateDOIsFromScreening($args, $request){
120149 'statusValidateDOIs ' => 0 ,
121150 'messageError ' => __ ("plugins.generic.scieloScreening.attentionRules " )
122151 ];
152+ $ this ->logDOIScreeningEvent ($ request , $ submission , implode (", " , $ args ['dois ' ]));
123153 return json_encode ($ response );
124154 }
125155 else if ($ countOkay == 2 ){
@@ -128,10 +158,12 @@ public function validateDOIsFromScreening($args, $request){
128158 'statusValidateDOIs ' => 0 ,
129159 'messageError ' => __ ("plugins.generic.scieloScreening.attentionRules " )
130160 ];
161+ $ this ->logDOIScreeningEvent ($ request , $ submission , implode (", " , $ args ['dois ' ]));
131162 return json_encode ($ response );
132163 }
133164 }
134165
166+ $ this ->logDOIScreeningEvent ($ request , $ submission );
135167 return json_encode (['statusValidateDOIs ' => 1 ]);
136168 }
137169
0 commit comments