364 |
364 |
// $user the user whose claimed publications to retrieve
|
365 |
365 |
// return an array of publications
|
366 |
366 |
public function getAllClaimedPublications($from, $to) {
|
367 |
|
if ($this -> cache -> getCaching()) {
|
|
367 |
/*if ($this -> cache -> getCaching()) {
|
368 |
368 |
$cacheId = self :: CLAIMED_PUBLICATIONS_CACHE_ID . '.' . $from . "." . $to;
|
369 |
369 |
$publications = $this -> cache -> get($cacheId, self :: CACHE_GROUP);
|
370 |
370 |
if ($publications === FALSE) {
|
... | ... | |
372 |
372 |
if ($publications !== NULL)
|
373 |
373 |
$this -> cache -> store($publications, $cacheId, self :: CACHE_GROUP);
|
374 |
374 |
}
|
375 |
|
} else
|
376 |
|
$publications = $this -> _getAllClaimedPublications($from, $to);
|
|
375 |
} else*/
|
|
376 |
$publications = $this -> _getAllClaimedPublicationsExtended($from, $to);
|
377 |
377 |
return $publications;
|
378 |
378 |
}
|
379 |
379 |
|
... | ... | |
559 |
559 |
}
|
560 |
560 |
return $claimedPublications;
|
561 |
561 |
}
|
|
562 |
// Get the publications claimed
|
|
563 |
// return an array of publications or NULL if any errors occur
|
|
564 |
private function _getAllClaimedPublicationsExtended($from, $to) {
|
|
565 |
try {
|
|
566 |
$locale = JFactory :: getLanguage()->getTag();
|
|
567 |
$claimedPublications = array();
|
|
568 |
$claimedPublicationsExtended = array();
|
|
569 |
$time = microtime(TRUE);
|
|
570 |
$time1 = strtotime(str_replace("/", "-", $from)) * 1000;
|
|
571 |
$time2 = strtotime(str_replace("/", "-", $to)) * 1000;
|
|
572 |
$claims = $this->client ->getAllClaimedPublications($time1, $time2);
|
|
573 |
foreach ($claims as $claim){
|
|
574 |
$parsedClaim = $this -> parseClaimedPublication($claim);
|
|
575 |
if ($parsedClaim == null)
|
|
576 |
continue;
|
|
577 |
$claimedPublications[] = $parsedClaim;
|
|
578 |
}
|
|
579 |
$resultsToGet = array();
|
|
580 |
$projectsToGet = array();
|
|
581 |
$claimedDocuments = array();
|
|
582 |
foreach ($claimedPublications as $claimedPublication){
|
|
583 |
if ($claimedPublication -> publication != null and $claimedPublication -> publication -> id != null)
|
|
584 |
$claimedDocuments[$claimedPublication->publicationId] = $claimedPublication -> publication;
|
|
585 |
if ($claimedPublication -> projectId !== null){
|
|
586 |
$projectsToGet[] = $claimedPublication -> projectId;
|
|
587 |
}
|
|
588 |
if ($claimedPublication -> targetPublicationId !== null){
|
|
589 |
$resultsToGet[] = $claimedPublication -> targetPublicationId;
|
|
590 |
}
|
|
591 |
if ($claimedPublication -> targetDatasetId !== null){
|
|
592 |
$resultsToGet[] = $claimedPublication -> targetDatasetId;
|
|
593 |
}
|
|
594 |
if (($claimedPublication -> publication == null || ($claimedPublication -> publication != null and $claimedPublication -> publication -> id == null))){
|
|
595 |
$resultsToGet[] = $claimedPublication -> publicationId;
|
|
596 |
}
|
|
597 |
if ($claimedPublication -> publication == null && $claimedPublication -> type == "dataset"){
|
|
598 |
$resultsToGet[] = $claimedPublication -> publicationId;
|
|
599 |
}
|
|
600 |
}
|
|
601 |
$resultsToGet = array_unique($resultsToGet);
|
|
602 |
$projectsToGet = array_unique($projectsToGet);
|
|
603 |
$searchModel = new OpenAireModelSearch();
|
|
604 |
$results = $searchModel->getResults($resultsToGet, $locale);
|
|
605 |
$projects = $searchModel->getProjects($projectsToGet, $locale);
|
|
606 |
$keydResults = array();
|
|
607 |
$keydProjects = array();
|
|
608 |
foreach ($results as $result)
|
|
609 |
$keydResults[$result->id] = $result;
|
|
610 |
foreach ($projects as $project)
|
|
611 |
$keydProjects[$project->id] = $project;
|
|
612 |
|
|
613 |
foreach ($claimedPublications as $claimedPublication){
|
|
614 |
|
|
615 |
/* if ($claimedPublication -> publication == null || $claimedPublication -> publication -> id == null){
|
|
616 |
//print_r($claimedPublication -> publication -> concepts);
|
|
617 |
$claimedPublication -> publication = isset($keydResults[$claimedPublication -> publicationId])?$keydResults[$claimedPublication -> publicationId]:null;
|
|
618 |
}
|
|
619 |
*/
|
|
620 |
$claimedPublication->targetConceptId=null;
|
|
621 |
if ($claimedPublication -> publication != null && isset($claimedPublication -> publication -> concepts )){
|
|
622 |
$claimedConcepts = array();
|
|
623 |
foreach ($claimedPublication -> publication -> concepts as $concept){
|
|
624 |
$concept = $this->getConcept($concept);
|
|
625 |
$claimedConcept = new stdClass();
|
|
626 |
$claimedConcept->id = $concept->id;
|
|
627 |
$claimedConcept->title = $concept->path;
|
|
628 |
$claimedConcept->date = $claimedPublication->date;
|
|
629 |
$claimedConcepts[] = $claimedConcept;
|
|
630 |
$claimedPublication->title=$concept->path;
|
|
631 |
$claimedPublication->targetConceptId= $concept->id;
|
|
632 |
}
|
|
633 |
$claimedPublication -> concepts= $claimedConcepts;
|
|
634 |
}
|
|
635 |
if ($claimedPublication -> targetPublicationId !== null){
|
|
636 |
$claimedPublication->title = isset($keydResults[$claimedPublication -> targetPublicationId ])?$keydResults[$claimedPublication -> targetPublicationId ]->title:null;
|
|
637 |
if ($claimedPublication->title == null){
|
|
638 |
$claimedPublication->title = isset($claimedDocuments[$claimedPublication -> targetDatasetId ])?$claimedDocuments[$claimedPublication -> targetDatasetId ]->title:null;
|
|
639 |
}
|
|
640 |
}
|
|
641 |
if ($claimedPublication -> targetDatasetId !== null){
|
|
642 |
$claimedPublication->title = isset($keydResults[$claimedPublication -> targetDatasetId ])?$keydResults[$claimedPublication -> targetDatasetId ]->title:null;
|
|
643 |
if ($claimedPublication->title == null){
|
|
644 |
$claimedPublication->title = isset($claimedDocuments[$claimedPublication -> targetDatasetId ])?$claimedDocuments[$claimedPublication -> targetDatasetId ]->title:null;
|
|
645 |
}
|
|
646 |
}
|
|
647 |
if ($claimedPublication -> projectId !== null){
|
|
648 |
$claimedPublication->title = isset($keydProjects[$claimedPublication -> projectId ])?$keydProjects[$claimedPublication -> projectId ]->title:null;
|
|
649 |
$claimedPublication->acronym = isset($keydProjects[$claimedPublication -> projectId ])?$keydProjects[$claimedPublication -> projectId ]->acronym:null;
|
|
650 |
|
|
651 |
}
|
|
652 |
if ($claimedPublication -> publication == null || $claimedPublication -> publication -> id == null){
|
|
653 |
//print_r($claimedPublication -> publication -> concepts);
|
|
654 |
$claimedPublication -> publication = isset($keydResults[$claimedPublication -> publicationId])?$keydResults[$claimedPublication -> publicationId]:null;
|
|
655 |
}
|
|
656 |
}
|
|
657 |
JLog :: add('Retrieved ' . count($claimedPublications) . ' claimed publications in ' . (microtime(TRUE) - $time) . ' s', JLog :: INFO, self :: LOG);
|
|
658 |
return $claimedPublications;
|
|
659 |
} catch (Exception $e) {
|
|
660 |
JLog :: add('Error retrieving claimed publications (user: ' . $user -> username . '): ' . $e -> getMessage(), JLog :: ERROR, self :: LOG);
|
|
661 |
return NULL;
|
|
662 |
}
|
|
663 |
}
|
562 |
664 |
// Search for a publication DOI.
|
563 |
665 |
// $doi the publication DOI to search for
|
564 |
666 |
// return a result (object) containing publications and total
|
... | ... | |
937 |
1039 |
private function parseClaimedPublication($claim) {
|
938 |
1040 |
$claimedPublication = new JObject();
|
939 |
1041 |
$claimedPublication -> date = $claim -> date;
|
|
1042 |
$claimedPublication -> claimType=$claim -> type;
|
940 |
1043 |
$document = new DOMDocument();
|
941 |
1044 |
$document -> recover = TRUE;
|
942 |
1045 |
if ($document -> loadXML(trim($claim -> xml)) == FALSE)
|
com_openaire/site/views/claiminline/view.html.php: fix bug-save multiple claims for projects that have left in session-empty session properly , com_openaire/site/models/claim.php : changes for claim administrator page