1 | <?php |
||||||
2 | namespace EWW\Dpf\Controller; |
||||||
3 | |||||||
4 | /* |
||||||
5 | * This file is part of the TYPO3 CMS project. |
||||||
6 | * |
||||||
7 | * It is free software; you can redistribute it and/or modify it under |
||||||
8 | * the terms of the GNU General Public License, either version 2 |
||||||
9 | * of the License, or any later version. |
||||||
10 | * |
||||||
11 | * For the full copyright and license information, please read the |
||||||
12 | * LICENSE.txt file that was distributed with this source code. |
||||||
13 | * |
||||||
14 | * The TYPO3 project - inspiring people to share! |
||||||
15 | */ |
||||||
16 | |||||||
17 | use EWW\Dpf\Domain\Model\FrontendUser; |
||||||
18 | use EWW\Dpf\Domain\Model\MetadataGroup; |
||||||
19 | use EWW\Dpf\Services\FeUser\FisDataService; |
||||||
20 | use EWW\Dpf\Services\FeUser\GndDataService; |
||||||
21 | |||||||
22 | use EWW\Dpf\Services\FeUser\OrcidDataService; |
||||||
23 | use EWW\Dpf\Services\FeUser\RorDataService; |
||||||
24 | use EWW\Dpf\Services\FeUser\UnpaywallDataService; |
||||||
25 | use EWW\Dpf\Services\FeUser\ZdbDataService; |
||||||
26 | use EWW\Dpf\Session\BulkImportSessionData; |
||||||
27 | use EWW\Dpf\Session\SearchSessionData; |
||||||
28 | |||||||
29 | /** |
||||||
30 | * AjaxBackofficeController |
||||||
31 | */ |
||||||
32 | class AjaxBackofficeController extends \EWW\Dpf\Controller\AbstractController |
||||||
33 | { |
||||||
34 | /** |
||||||
35 | * bookmarkRepository |
||||||
36 | * |
||||||
37 | * @var \EWW\Dpf\Domain\Repository\BookmarkRepository |
||||||
38 | * @TYPO3\CMS\Extbase\Annotation\Inject |
||||||
39 | */ |
||||||
40 | protected $bookmarkRepository = null; |
||||||
41 | |||||||
42 | /** |
||||||
43 | * frontendUserRepository |
||||||
44 | * |
||||||
45 | * @var \EWW\Dpf\Domain\Repository\FrontendUserRepository |
||||||
46 | * @TYPO3\CMS\Extbase\Annotation\Inject |
||||||
47 | */ |
||||||
48 | protected $frontendUserRepository = null; |
||||||
49 | |||||||
50 | /** |
||||||
51 | * metadataGroupRepository |
||||||
52 | * |
||||||
53 | * @var \EWW\Dpf\Domain\Repository\MetadataGroupRepository |
||||||
54 | * @TYPO3\CMS\Extbase\Annotation\Inject |
||||||
55 | */ |
||||||
56 | protected $metadataGroupRepository = null; |
||||||
57 | |||||||
58 | /** |
||||||
59 | * externalMetadataRepository |
||||||
60 | * |
||||||
61 | * @var \EWW\Dpf\Domain\Repository\ExternalMetadataRepository |
||||||
62 | * @TYPO3\CMS\Extbase\Annotation\Inject |
||||||
63 | */ |
||||||
64 | protected $externalMetadataRepository = null; |
||||||
65 | |||||||
66 | /** |
||||||
67 | * Adds a the given document identifier to the bookmark list of the current fe user. |
||||||
68 | * |
||||||
69 | * @param string $identifier |
||||||
70 | * @return bool |
||||||
71 | */ |
||||||
72 | public function addBookmarkAction($identifier) |
||||||
73 | { |
||||||
74 | /** @var \EWW\Dpf\Domain\Model\Bookmark $bookmark */ |
||||||
75 | $bookmark = $this->bookmarkRepository->findBookmark($this->security->getUser()->getUid(), $identifier); |
||||||
76 | if (!$bookmark) { |
||||||
0 ignored issues
–
show
introduced
by
![]() |
|||||||
77 | $bookmark = $this->objectManager->get(\EWW\Dpf\Domain\Model\Bookmark::class); |
||||||
78 | $bookmark->setDocumentIdentifier($identifier); |
||||||
79 | $bookmark->setFeUserUid($this->security->getUser()->getUid()); |
||||||
80 | $this->bookmarkRepository->add($bookmark); |
||||||
81 | return true; |
||||||
82 | } |
||||||
83 | |||||||
84 | return false; |
||||||
85 | } |
||||||
86 | |||||||
87 | /** |
||||||
88 | * Removes the given document from the bookmark list of the current fe user. |
||||||
89 | * |
||||||
90 | * @param string $identifier |
||||||
91 | * @return bool |
||||||
92 | */ |
||||||
93 | public function removeBookmarkAction($identifier) |
||||||
94 | { |
||||||
95 | /** @var \EWW\Dpf\Domain\Model\Bookmark $bookmark */ |
||||||
96 | $bookmark = $this->bookmarkRepository->findBookmark($this->security->getUser()->getUid(), $identifier); |
||||||
97 | if ($bookmark) { |
||||||
0 ignored issues
–
show
|
|||||||
98 | $this->bookmarkRepository->remove($bookmark); |
||||||
99 | return true; |
||||||
100 | } |
||||||
101 | |||||||
102 | return false; |
||||||
103 | } |
||||||
104 | |||||||
105 | /** |
||||||
106 | * Adds a workspace filter to the session. |
||||||
107 | * |
||||||
108 | * @param string $name |
||||||
109 | * @param array $values |
||||||
110 | * @return bool |
||||||
111 | */ |
||||||
112 | public function addWorkspaceFilterAction($name, $values = []) |
||||||
113 | { |
||||||
114 | /** @var SearchSessionData $workspaceSessionData */ |
||||||
115 | $workspaceSessionData = $this->session->getWorkspaceData(); |
||||||
116 | $workspaceSessionData->setFilter($name, $values); |
||||||
117 | $this->session->setWorkspaceData($workspaceSessionData); |
||||||
118 | return true; |
||||||
119 | } |
||||||
120 | |||||||
121 | /** |
||||||
122 | * Adds a workspace sort to the session. |
||||||
123 | * |
||||||
124 | * @param string $field |
||||||
125 | * @param string $order |
||||||
126 | * @return bool |
||||||
127 | */ |
||||||
128 | public function addWorkspaceSortAction($field, $order) |
||||||
129 | { |
||||||
130 | /** @var SearchSessionData $workspaceSessionData */ |
||||||
131 | $workspaceSessionData = $this->session->getWorkspaceData(); |
||||||
132 | $workspaceSessionData->setSortField($field); |
||||||
133 | $workspaceSessionData->setSortOrder($order); |
||||||
134 | $this->session->setWorkspaceData($workspaceSessionData); |
||||||
135 | return true; |
||||||
136 | } |
||||||
137 | |||||||
138 | /** |
||||||
139 | * Toggles the filter to exclude discarded documents. |
||||||
140 | * |
||||||
141 | * @return bool |
||||||
142 | */ |
||||||
143 | public function toggleWorkspaceExcludeDiscardedAction() |
||||||
144 | { |
||||||
145 | /** @var SearchSessionData $workspaceSessionData */ |
||||||
146 | $workspaceSessionData = $this->session->getWorkspaceData(); |
||||||
147 | $workspaceSessionData->toggleExcludeDiscardedFilter(); |
||||||
148 | $this->session->setWorkspaceData($workspaceSessionData); |
||||||
149 | return true; |
||||||
150 | } |
||||||
151 | |||||||
152 | /** |
||||||
153 | * Toggles the filter to hide bookmarked documents. |
||||||
154 | * |
||||||
155 | * @return bool |
||||||
156 | */ |
||||||
157 | public function toggleWorkspaceBookmarksOnlyAction() |
||||||
158 | { |
||||||
159 | /** @var SearchSessionData $workspaceSessionData */ |
||||||
160 | $workspaceSessionData = $this->session->getWorkspaceData(); |
||||||
161 | $workspaceSessionData->toggleBookmarksOnlyFilter(); |
||||||
162 | $this->session->setWorkspaceData($workspaceSessionData); |
||||||
163 | return true; |
||||||
164 | } |
||||||
165 | |||||||
166 | /** |
||||||
167 | * Sets the items per page for the workspace list. |
||||||
168 | * |
||||||
169 | * @param int $itemsPerPage |
||||||
170 | * @return bool |
||||||
171 | */ |
||||||
172 | public function setWorkspaceItemsPerPageAction($itemsPerPage) |
||||||
173 | { |
||||||
174 | /** @var SearchSessionData $workspaceSessionData */ |
||||||
175 | $workspaceSessionData = $this->session->getWorkspaceData(); |
||||||
176 | $workspaceSessionData->setItemsPerPage($itemsPerPage); |
||||||
177 | $this->session->setWorkspaceData($workspaceSessionData); |
||||||
178 | return true; |
||||||
179 | } |
||||||
180 | |||||||
181 | |||||||
182 | /** |
||||||
183 | * Save an extended search query. |
||||||
184 | * |
||||||
185 | * @param string $name |
||||||
186 | * @param string $query |
||||||
187 | * @return bool |
||||||
188 | */ |
||||||
189 | public function saveExtendedSearchAction($name, $query) |
||||||
190 | { |
||||||
191 | $search = new \EWW\Dpf\Domain\Model\StoredSearch(); |
||||||
192 | $search->setName($name); |
||||||
193 | $search->setQuery($query); |
||||||
194 | |||||||
195 | /** @var FrontendUser $feUser */ |
||||||
196 | $feUser = $this->security->getUser(); |
||||||
197 | $feUser->addStoredSearch($search); |
||||||
198 | $this->frontendUserRepository->update($feUser); |
||||||
199 | |||||||
200 | return true; |
||||||
201 | } |
||||||
202 | |||||||
203 | /** |
||||||
204 | * Loads a stored extended search query. |
||||||
205 | * |
||||||
206 | * @param int $id |
||||||
207 | * @return bool |
||||||
208 | */ |
||||||
209 | public function loadExtendedSearchAction($id) |
||||||
210 | { |
||||||
211 | /** @var FrontendUser $feUser */ |
||||||
212 | $feUser = $this->security->getUser(); |
||||||
213 | $searches = $feUser->getStoredSearches(); |
||||||
214 | |||||||
215 | foreach ($searches as $search) { |
||||||
216 | if ($search->getUid() == $id) { |
||||||
217 | return $search->getQuery(); |
||||||
218 | } |
||||||
219 | } |
||||||
220 | |||||||
221 | return false; |
||||||
222 | } |
||||||
223 | |||||||
224 | /** |
||||||
225 | * Loads a list of all stored extended search queries. |
||||||
226 | * |
||||||
227 | * @return string |
||||||
228 | */ |
||||||
229 | public function loadExtendedSearchListAction() |
||||||
230 | { |
||||||
231 | /** @var FrontendUser $feUser */ |
||||||
232 | $feUser = $this->security->getUser(); |
||||||
233 | |||||||
234 | $searches = []; |
||||||
235 | foreach ($feUser->getStoredSearches() as $search) { |
||||||
236 | $searches[] = [ |
||||||
237 | 'uid' => $search->getUid(), |
||||||
238 | 'name' => $search->getName(), |
||||||
239 | 'query' => $search->getQuery() |
||||||
240 | ]; |
||||||
241 | } |
||||||
242 | |||||||
243 | return json_encode($searches); |
||||||
244 | } |
||||||
245 | |||||||
246 | /** |
||||||
247 | * @param string $searchTerm |
||||||
248 | * @param string $type |
||||||
249 | * @return false|string |
||||||
250 | */ |
||||||
251 | public function searchFisAction($searchTerm, $type = 'person') { |
||||||
252 | $fisUserDataService = new FisDataService(); |
||||||
253 | $methodName = 'search'.ucfirst($type).'Request'; |
||||||
254 | $result = $fisUserDataService->{$methodName}($searchTerm); |
||||||
255 | |||||||
256 | return json_encode($result); |
||||||
257 | } |
||||||
258 | |||||||
259 | /** |
||||||
260 | * @param string $dataId |
||||||
261 | * @param int $groupId |
||||||
262 | * @param int $groupIndex |
||||||
263 | * @param int $fieldIndex |
||||||
264 | * @param int $pageId |
||||||
265 | * @param string $type |
||||||
266 | * @return false|string |
||||||
267 | */ |
||||||
268 | public function getFisDataAction($dataId, $groupId, $groupIndex, $fieldIndex, $pageId, $type = 'person') { |
||||||
269 | $fisDataService = new FisDataService(); |
||||||
270 | $methodName = 'get'.ucfirst($type).'Data'; |
||||||
271 | $fisData = $fisDataService->{$methodName}($dataId); |
||||||
272 | |||||||
273 | $result = $this->getApiMappingArray($groupId, $fisData, $groupIndex, $fieldIndex, $pageId, 'getFis'.ucfirst($type).'Mapping'); |
||||||
274 | |||||||
275 | return json_encode($result); |
||||||
276 | } |
||||||
277 | |||||||
278 | /** |
||||||
279 | * @param string $searchTerm |
||||||
280 | * @param string $type |
||||||
281 | * @return false|string |
||||||
282 | */ |
||||||
283 | public function searchGndAction($searchTerm, $type = 'person') { |
||||||
284 | $gndUserDataService = new GndDataService(); |
||||||
285 | $methodName = 'search'.ucfirst($type).'Request'; |
||||||
286 | $result = $gndUserDataService->{$methodName}($searchTerm); |
||||||
287 | |||||||
288 | return json_encode($result); |
||||||
289 | } |
||||||
290 | |||||||
291 | /** |
||||||
292 | * @param string $dataId |
||||||
293 | * @param int $groupId |
||||||
294 | * @param int $groupIndex |
||||||
295 | * @param int $fieldIndex |
||||||
296 | * @param int $pageId |
||||||
297 | * @param string $type |
||||||
298 | */ |
||||||
299 | public function getGndDataAction($dataId, $groupId, $groupIndex, $fieldIndex, $pageId, $type = 'person') { |
||||||
300 | $gndUserDataService = new GndDataService(); |
||||||
301 | $methodName = 'get'.ucfirst($type).'Data'; |
||||||
302 | $gndData = $gndUserDataService->{$methodName}($dataId); |
||||||
303 | |||||||
304 | $result = $this->getApiMappingArray($groupId, $gndData, $groupIndex, $fieldIndex, $pageId, 'getGnd'.ucfirst($type).'Mapping'); |
||||||
305 | |||||||
306 | return json_encode($result); |
||||||
307 | } |
||||||
308 | |||||||
309 | /** |
||||||
310 | * search ROR API |
||||||
311 | * API is organisation only! |
||||||
312 | * @param string $searchTerm |
||||||
313 | * @return false|string |
||||||
314 | */ |
||||||
315 | public function searchRorAction($searchTerm) { |
||||||
316 | $rorUserDataService = new RorDataService(); |
||||||
317 | $result = $rorUserDataService->searchOrganisationRequest($searchTerm); |
||||||
318 | |||||||
319 | return json_encode($result); |
||||||
320 | } |
||||||
321 | |||||||
322 | /** |
||||||
323 | * @param string $dataId |
||||||
324 | * @param int $groupId |
||||||
325 | * @param int $groupIndex |
||||||
326 | * @param int $fieldIndex |
||||||
327 | * @param int $pageId |
||||||
328 | */ |
||||||
329 | public function getRorDataAction($dataId, $groupId, $groupIndex, $fieldIndex, $pageId) { |
||||||
330 | $rorUserDataService = new RorDataService(); |
||||||
331 | $rorData = $rorUserDataService->getOrganisationData($dataId); |
||||||
332 | |||||||
333 | $result = $this->getApiMappingArray($groupId, $rorData, $groupIndex, $fieldIndex, $pageId, 'getRorMapping'); |
||||||
334 | |||||||
335 | return json_encode($result); |
||||||
336 | } |
||||||
337 | |||||||
338 | /** |
||||||
339 | * @param string $searchTerm |
||||||
340 | * @return false|string |
||||||
341 | */ |
||||||
342 | public function searchZdbAction($searchTerm) { |
||||||
343 | $zdbUserDataService = new ZdbDataService(); |
||||||
344 | $result = $zdbUserDataService->searchRequest($searchTerm); |
||||||
345 | |||||||
346 | return json_encode($result); |
||||||
347 | } |
||||||
348 | |||||||
349 | /** |
||||||
350 | * @param string $dataId |
||||||
351 | * @param int $groupId |
||||||
352 | * @param int $groupIndex |
||||||
353 | * @param int $fieldIndex |
||||||
354 | * @param int $pageId |
||||||
355 | * @return false|string |
||||||
356 | */ |
||||||
357 | public function getZdbDataAction($dataId, $groupId, $groupIndex, $fieldIndex, $pageId) { |
||||||
358 | $zdbDataService = new ZdbDataService(); |
||||||
359 | $zdbData = $zdbDataService->getDataRequest($dataId); |
||||||
360 | |||||||
361 | $result = $this->getApiMappingArray($groupId, $zdbData, $groupIndex, $fieldIndex, $pageId, 'getZdbMapping'); |
||||||
362 | |||||||
363 | return json_encode($result); |
||||||
364 | } |
||||||
365 | |||||||
366 | /** |
||||||
367 | * @param string $searchTerm |
||||||
368 | */ |
||||||
369 | public function searchUnpaywallAction($searchTerm) { |
||||||
370 | $unpaywallUserDataService = new UnpaywallDataService(); |
||||||
371 | $result = $unpaywallUserDataService->searchRequest($searchTerm); |
||||||
372 | |||||||
373 | return json_encode($result); |
||||||
374 | } |
||||||
375 | |||||||
376 | /** |
||||||
377 | * @param string $dataId |
||||||
378 | * @param int $groupId |
||||||
379 | * @param int $groupIndex |
||||||
380 | * @param int $fieldIndex |
||||||
381 | * @param int $pageId |
||||||
382 | * @return false|string |
||||||
383 | */ |
||||||
384 | public function getUnpaywallDataAction($dataId, $groupId, $groupIndex, $fieldIndex, $pageId) { |
||||||
385 | $unpaywallDataService = new UnpaywallDataService(); |
||||||
386 | $unpaywallData = $unpaywallDataService->getDataRequest($dataId); |
||||||
387 | |||||||
388 | $result = $this->getApiMappingArray($groupId, $unpaywallData, $groupIndex, $fieldIndex, $pageId, 'getUnpaywallMapping'); |
||||||
389 | |||||||
390 | return json_encode($result); |
||||||
391 | } |
||||||
392 | |||||||
393 | /** |
||||||
394 | * @param string $searchTerm |
||||||
395 | * @param string $type |
||||||
396 | */ |
||||||
397 | public function searchOrcidAction($searchTerm, $type = 'person') { |
||||||
398 | $orcidUserDataService = new OrcidDataService(); |
||||||
399 | $methodName = 'search'.ucfirst($type).'Request'; |
||||||
400 | $result = $orcidUserDataService->{$methodName}($searchTerm); |
||||||
401 | |||||||
402 | return json_encode($result); |
||||||
403 | } |
||||||
404 | |||||||
405 | /** |
||||||
406 | * @param string $dataId |
||||||
407 | * @param int $groupId |
||||||
408 | * @param int $groupIndex |
||||||
409 | * @param int $fieldIndex |
||||||
410 | * @param int $pageId |
||||||
411 | * @param string $type |
||||||
412 | * @return false|string |
||||||
413 | */ |
||||||
414 | public function getOrcidDataAction($dataId, $groupId, $groupIndex, $fieldIndex, $pageId, $type = 'person') { |
||||||
415 | $orcidDataService = new OrcidDataService(); |
||||||
416 | $methodName = 'get'.ucfirst($type).'Data'; |
||||||
417 | $orcidData = $orcidDataService->{$methodName}($dataId); |
||||||
418 | |||||||
419 | $result = $this->getApiMappingArray($groupId, $orcidData, $groupIndex, $fieldIndex, $pageId, 'getOrcid'.ucfirst($type).'Mapping'); |
||||||
420 | |||||||
421 | return json_encode($result); |
||||||
422 | } |
||||||
423 | |||||||
424 | /** |
||||||
425 | * Preparing data from api and returning an array to identify specific field in frontend |
||||||
426 | * @param $groupId |
||||||
427 | * @param $data |
||||||
428 | * @param $groupIndex |
||||||
429 | * @param $fieldIndex |
||||||
430 | * @param $pageId |
||||||
431 | * @param $methodMappingName |
||||||
432 | * @return mixed |
||||||
433 | */ |
||||||
434 | public function getApiMappingArray($groupId, $data, $groupIndex, $fieldIndex, $pageId, $methodMappingName) { |
||||||
435 | // get mapping |
||||||
436 | /** @var MetadataGroup $group */ |
||||||
437 | $group = $this->metadataGroupRepository->findByUid($groupId); |
||||||
438 | |||||||
439 | foreach ($group->getChildren() as $key => $value) { |
||||||
440 | if (!empty($value->{$methodMappingName}())) { |
||||||
441 | // for configuration field1->field1a |
||||||
442 | $mappingPart = explode('->', $value->{$methodMappingName}()); |
||||||
443 | $apiData = ''; |
||||||
444 | $i = 0; |
||||||
445 | foreach ($mappingPart as $mapping) { |
||||||
446 | if ($i == 0) { |
||||||
447 | $apiData = $data->{$mapping}; |
||||||
448 | } else { |
||||||
449 | if (is_array($apiData)) { |
||||||
450 | foreach ($apiData as $fisArrayValue) { |
||||||
451 | $apiDataArray[] = $fisArrayValue->{$mapping}; |
||||||
452 | } |
||||||
453 | } else { |
||||||
454 | $apiData = $apiData->{$mapping}; |
||||||
455 | } |
||||||
456 | } |
||||||
457 | $i++; |
||||||
458 | } |
||||||
459 | |||||||
460 | if (!empty($apiData) || !empty($apiDataArray)) { |
||||||
461 | if (!empty($apiDataArray)) { |
||||||
462 | foreach ($apiDataArray as $key => $apiDataValue) { |
||||||
0 ignored issues
–
show
|
|||||||
463 | $result[$pageId . '-' . $groupId . '-' . $groupIndex . '-' . $value->getUid() . '-' . $key] = $apiDataValue; |
||||||
464 | } |
||||||
465 | $apiDataArray = []; |
||||||
466 | } else { |
||||||
467 | $result[$pageId . '-' . $groupId . '-' . $groupIndex . '-' . $value->getUid() . '-' . $fieldIndex] = $apiData; |
||||||
468 | } |
||||||
469 | } |
||||||
470 | } |
||||||
471 | } |
||||||
472 | |||||||
473 | return $result; |
||||||
0 ignored issues
–
show
Comprehensibility
Best Practice
introduced
by
|
|||||||
474 | } |
||||||
475 | |||||||
476 | |||||||
477 | /** |
||||||
478 | * Selects or unselects an external metadata record to be imported later as a document. |
||||||
479 | * |
||||||
480 | * @param string $identifier |
||||||
481 | * @return bool |
||||||
482 | * @throws \TYPO3\CMS\Extbase\Persistence\Exception\IllegalObjectTypeException |
||||||
483 | */ |
||||||
484 | public function toggleBulkImportRecordAction($identifier) |
||||||
485 | { |
||||||
486 | $externalMetaData = $this->externalMetadataRepository->findOneByPublicationIdentifier($identifier); |
||||||
0 ignored issues
–
show
The method
findOneByPublicationIdentifier() does not exist on EWW\Dpf\Domain\Repositor...ernalMetadataRepository . Since you implemented __call , consider adding a @method annotation.
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
![]() |
|||||||
487 | |||||||
488 | if ($externalMetaData) { |
||||||
489 | $this->externalMetadataRepository->remove($externalMetaData); |
||||||
490 | } else { |
||||||
491 | /** @var BulkImportSessionData $bulkImportSessionData */ |
||||||
492 | $bulkImportSessionData = $this->session->getBulkImportData(); |
||||||
493 | $currentResults = $bulkImportSessionData->getCurrentMetadataItems(); |
||||||
494 | if ($currentResults && is_array($currentResults)) { |
||||||
0 ignored issues
–
show
The expression
$currentResults of type array is implicitly converted to a boolean; are you sure this is intended? If so, consider using ! empty($expr) instead to make it clear that you intend to check for an array without elements.
This check marks implicit conversions of arrays to boolean values in a comparison. While in PHP an empty array is considered to be equal (but not identical) to false, this is not always apparent. Consider making the comparison explicit by using ![]() |
|||||||
495 | $this->externalMetadataRepository->add($currentResults[$identifier]); |
||||||
496 | } |
||||||
497 | } |
||||||
498 | |||||||
499 | return true; |
||||||
500 | } |
||||||
501 | |||||||
502 | /** |
||||||
503 | * Activates/deactivates the author search for the bulk import. |
||||||
504 | * |
||||||
505 | * @param string $apiName |
||||||
506 | * @return bool |
||||||
507 | */ |
||||||
508 | public function toggleBulkImportAuthorSearchAction($apiName) |
||||||
509 | { |
||||||
510 | /** @var BulkImportSessionData $bulkImportData */ |
||||||
511 | $bulkImportSessionData = $this->session->getBulkImportData(); |
||||||
512 | |||||||
513 | switch ($apiName) { |
||||||
514 | case 'CrossRef': |
||||||
515 | $searchField = $bulkImportSessionData->getCrossRefSearchField(); |
||||||
516 | if ($searchField === 'author') { |
||||||
517 | $searchField = ''; |
||||||
518 | } else { |
||||||
519 | $searchField = 'author'; |
||||||
520 | } |
||||||
521 | $bulkImportSessionData->setCrossRefSearchField($searchField); |
||||||
522 | break; |
||||||
523 | case 'PubMed': |
||||||
524 | $searchField = $bulkImportSessionData->getPubMedSearchField(); |
||||||
525 | if ($searchField === 'author') { |
||||||
526 | $searchField = ''; |
||||||
527 | } else { |
||||||
528 | $searchField = 'author'; |
||||||
529 | } |
||||||
530 | $bulkImportSessionData->setPubMedSearchField($searchField); |
||||||
531 | break; |
||||||
532 | default: |
||||||
533 | return false; |
||||||
534 | } |
||||||
535 | |||||||
536 | $this->session->setBulkImportData($bulkImportSessionData); |
||||||
537 | |||||||
538 | return true; |
||||||
539 | } |
||||||
540 | |||||||
541 | public function initializeAction() |
||||||
542 | { |
||||||
543 | $this->authorizationChecker->denyAccessUnlessLoggedIn(); |
||||||
544 | |||||||
545 | parent::initializeAction(); |
||||||
546 | } |
||||||
547 | |||||||
548 | /** |
||||||
549 | * @param int $feUser |
||||||
550 | * @return false|string |
||||||
551 | */ |
||||||
552 | public function generateApiTokenAction($feUser) { |
||||||
553 | $currentUser = $this->security->getUser(); |
||||||
554 | if ($currentUser->getUid() === $feUser) { |
||||||
555 | $string = md5(substr(md5(time()), 0, 14)).date("Y-m-dH:i:s"); |
||||||
556 | $hash = hash('sha256', $string); |
||||||
557 | |||||||
558 | $currentUser->setApiToken($hash); |
||||||
559 | $this->frontendUserRepository->update($currentUser); |
||||||
560 | |||||||
561 | return json_encode(['apiToken' => $hash]); |
||||||
562 | } else { |
||||||
563 | return json_encode(['failed' => 'wrong user id']); |
||||||
564 | } |
||||||
565 | } |
||||||
566 | |||||||
567 | /** |
||||||
568 | * @param int $feUser |
||||||
569 | * @return bool |
||||||
570 | */ |
||||||
571 | public function removeApiTokenAction($feUser) { |
||||||
572 | $currentUser = $this->security->getUser(); |
||||||
573 | if ($currentUser->getUid() === $feUser) { |
||||||
574 | $currentUser->setApiToken(''); |
||||||
575 | $this->frontendUserRepository->update($currentUser); |
||||||
576 | |||||||
577 | return json_encode(['success' => '1']); |
||||||
0 ignored issues
–
show
|
|||||||
578 | } else { |
||||||
579 | return json_encode(['failed' => 'wrong user id']); |
||||||
0 ignored issues
–
show
|
|||||||
580 | } |
||||||
581 | |||||||
582 | } |
||||||
583 | |||||||
584 | } |
||||||
585 |