Page MenuHomeGRNET

riferimento.php
No OneTemporary

File Metadata

Created
Sat, Jan 17, 12:18 PM

riferimento.php

<?php
include_once("db.php");
include_once("utility.php");
include_once("fieldrender.php");
include_once("parserfield.php");
include_once("OpenResolver.php");
class Riferimento {
protected $rif;
private $controllo;
public function __construct($id = null, $type = null) {
$this->controllo = array();
$this->rif = $_SESSION['db']->fetch_fields("riferimento");
if ($id != null) {
$result = $_SESSION['db']->execute("SELECT * FROM riferimento WHERE ri_id=$id");
if ($result && $_SESSION['db']->numrows($result) == 1) {
$dati = $_SESSION['db']->fetch($result);
foreach ($this->rif as $key => $v)
$this->rif[$key]->value = $dati[$key];
$type = $this->rif["ri_tipomateriale"]->value;
}
}
switch ($type) {
case getConstVar("TIPO_ARTICOLO"):
unset($this->rif["ri_isbn"]);
$this->rif["ri_tipomateriale"]->value = getConstVar("TIPO_ARTICOLO");
break;
case getConstVar("TIPO_LIBRO"):
unset($this->rif["ri_issn"]);
unset($this->rif["ri_fasc"]);
$this->rif["ri_tipomateriale"]->value = getConstVar("TIPO_LIBRO");
break;
}
}
public function __get($fieldname) {
return $this->rif[$fieldname]->value;
}
public function __set($fieldname, $value) {
$this->rif[$fieldname]->value = $value;
}
public function get_controllo() {
return $this->controllo;
}
public function reset_controllo() {
$this->controllo = array();
}
public function __isset($fieldname) {
return isset($this->rif[$fieldname]);
}
public function __unset($fieldname) {
unset($this->rif[$fieldname]);
}
function __destruct() {
$this->rif = null;
}
public function visualizza_intestazione() {
$ret = "<div class=\"ri_tipomateriale\">";
if ($this->rif["ri_tipomateriale"]->value == getConstVar("TIPO_ARTICOLO"))
$ret.= "<span>" . getConstVar("ARTICOLO") . "</span>";
else if ($this->rif["ri_tipomateriale"]->value == getConstVar("TIPO_LIBRO"))
$ret.= "<span>" . getConstVar("LIBRO") . "</span>";
$ret.="</div>";
return $ret;
}
function visualizza($intestazione = true, $labels = true) {
$ret = "";
foreach ($this->rif as $key => $valore)
if ($key != "ri_id" && $key != "ri_tipomateriale") {
$ret.= FieldRender::renderField($this->rif[$key]);
}
return $ret;
}
function elimina() {
$query = "DELETE FROM riferimento WHERE ri_id=" . $this->rif["ri_id"]->value;
$result = $_SESSION['db']->execute($query);
return $result;
}
public function addFormFields($form, $new) {
$this->reset_controllo();
if (!$new)
$form->addHidden("ri_id", $this->rif["ri_id"]->value);
if ($this->rif["ri_tipomateriale"]->value == getConstVar("TIPO_LIBRO")) {
$form->addHidden("ri_docID", null);
unset($_SESSION['ri_docID']);
}
$form->addHTML("<div class=\"ri_tipomateriale\">");
if ($this->rif["ri_tipomateriale"]->value == getConstVar("TIPO_ARTICOLO"))
$form->addHTML("<span>" . getConstVar("ARTICOLO") . "</span>");
else if ($this->rif["ri_tipomateriale"]->value == getConstVar("TIPO_LIBRO"))
$form->addHTML("<span>" . getConstVar("LIBRO") . "</span>");
$form->addHTML("</div>");
foreach ($this->rif as $key => $v) {
if ($key != "ri_id" && $key != "ri_tipomateriale") {
$controllo_rif = $form->addField($this->rif[$key]);
$this->controllo = array_merge($this->controllo, $controllo_rif);
if ($key == "ri_au2")
$form->addHTML("<br class=\"clear_float\"/>");
} else
$noinsert[$key] = TRUE;
}
$code = urlencode(serialize($noinsert));
$form->addHidden("noins_rif", $code);
return $this->controllo;
}
function inserisci($post) {
$attributi = "";
$valori = "";
$noinsert = unserialize(urldecode($post["noins_rif"]));
$dbfields = new ParserField($post);
$attributi = "ri_tipomateriale";
$valori = "'" . $post["rif_type"] . "'";
foreach ($this->rif as $key => $v)
if (!isset($noinsert[$key]) || !$noinsert[$key]) {
$attributi.="," . $key;
$valori.="," . $dbfields->parse($this->rif[$key]);
}
if ($attributi != "") {
$query = "INSERT into riferimento ($attributi) VALUES (" . strip_tags($valori) . ")";
$result = $_SESSION['db']->execute($query);
if ($result)
return $_SESSION['db']->last_id();
} else
return FALSE;
}
public function inserisciDB() {
$attributi = "";
$valori = "";
foreach ($this->rif as $key => $v) {
if ($key != "ri_id") {
if ($attributi != "")
$attributi.=",";
$attributi.=$key;
if ($valori != "")
$valori.=",";
$valori.=ParserField::quote($this->rif[$key]);
}
}
if ($attributi != "") {
$query = "INSERT into riferimento ($attributi) VALUES($valori)";
$result = $_SESSION['db']->execute($query);
if ($result)
return $_SESSION['db']->last_id();
} else
return FALSE;
}
public function aggiorna($post) {
$coppie = "";
$noinsert = unserialize(urldecode($post["noins_rif"]));
$dbfields = new ParserField($post);
foreach ($this->rif as $key => $v)
if (!isset($noinsert[$key]) || !$noinsert[$key]) {
if ($coppie != "")
$coppie.=",";
$coppie.=$key . "=" . $dbfields->parse($this->rif[$key]);
}
if ($coppie != "") {
$query = "UPDATE riferimento SET " . strip_tags($coppie) . " WHERE ri_id=" . $this->rif["ri_id"]->value;
$result = $_SESSION['db']->execute($query);
return $result;
}
return TRUE;
}
public function aggiornaDB() {
$coppie = "";
foreach ($this->rif as $key => $v) {
if ($coppie != "")
$coppie.=",";
$coppie.=$key . "=" . ParserField::quote($this->rif[$key]);
}
if ($coppie != "") {
$query = "UPDATE riferimento SET " . strip_tags($coppie) . " WHERE ri_id=" . $this->rif["ri_id"]->value;
$result = $_SESSION['db']->execute($query);
return $result;
}
return TRUE;
}
public function aggiornaObject($post) {
$noinsert = unserialize(urldecode($post["noins_rif"]));
$flds = new ParserField($post);
foreach ($this->rif as $key => $v) {
if (!isset($noinsert[$key]) || !$noinsert[$key]) {
$value = $flds->simple_parse($this->rif[$key]);
$this->rif[$key]->value = $value;
}
}
if (isset($post['ri_docID']))
$_SESSION['ri_docID'] = $post['ri_docID'];
return TRUE;
}
function parse_openurl($type) {
$oR = new OpenResolver();
$infoAutori = array();
if (isset($_GET['sid']) && urldecode($_GET['sid']) == 'Entrez:PubMed' && isset($_GET['id']) && strpos(urldecode($_GET['id']), "pmid:") === 0) {
$valori = $oR->parser_Pubmed(urldecode($_GET['id']), urldecode($_GET['sid']));
$infoAutori = preg_split("/,/", $valori['autore'], 2);
if (!isset($infoAutori[1]))
$infoAutori[1] = "";
list($autore1, $altriautori) = $infoAutori;
$this->rif["ri_titolopub"]->value = isset($valori['titolo']) ? $valori['titolo'] : null;
$this->rif["ri_titolopart"]->value = isset($valori['sottotitolo']) ? $valori['sottotitolo'] : null;
$this->rif["ri_au1"]->value = $autore1;
$this->rif["ri_au2"]->value = $altriautori;
$this->rif["ri_anno"]->value = isset($valori['anno']) ? $valori['anno'] : null;
$this->rif["ri_vol"]->value = isset($valori['volume']) ? $valori['volume'] : null;
$this->rif["ri_fasc"]->value = isset($valori['fascicolo']) ? $valori['fascicolo'] : null;
$this->rif["ri_pgini"]->value = isset($valori['pagini']) ? $valori['pagini'] : null;
$this->rif["ri_pgfine"]->value = isset($valori['pagfin']) ? $valori['pagfin'] : null;
$this->rif["ri_editore"]->value = isset($valori['editore']) ? $valori['editore'] : null;
$this->rif["ri_luogoed"]->value = isset($valori['luogo']) ? $valori['luogo'] : null;
$this->rif["ri_issn"]->value = isset($valori['issn']) ? $valori['issn'] : null;
$this->rif["ri_abstract"]->value = isset($valori['abstract']) ? $valori['abstract'] : null;
$this->rif["ri_sid"]->value = $_GET['sid'];
$this->rif["ri_doi"]->value = isset($valori['doi']) ? $valori['doi'] : null;
$this->rif["ri_pmid"]->value = isset($valori['pmid']) ? $valori['pmid'] : null;
}else {
$genericdata = $oR->getGenericData();
$titoli = $oR->getTitle();
$autori = $oR->getAuthor();
$codice = $oR->getISSNISBN();
$this->rif["ri_titolopub"]->value = isset($titoli['titolo']) ? $titoli['titolo'] : null;
$this->rif["ri_titolopart"]->value = isset($titoli['sottotitolo']) ? $titoli['sottotitolo'] : null;
$this->rif["ri_au1"]->value = isset($autori[0]) ? $autori[0] : null;
$this->rif["ri_au2"]->value = isset($autori[1]) ? $autori[1] : null;
$this->rif["ri_anno"]->value = isset($genericdata['anno']) ? $genericdata['anno'] : null;
$this->rif["ri_vol"]->value = isset($genericdata['volume']) ? $genericdata['volume'] : null;
$this->rif["ri_pgini"]->value = isset($genericdata['pagini']) ? $genericdata['pagini'] : null;
$this->rif["ri_pgfine"]->value = isset($genericdata['pagfin']) ? $genericdata['pagfin'] : null;
$this->rif["ri_editore"]->value = isset($genericdata['editore']) ? $genericdata['editore'] : null;
$this->rif["ri_luogoed"]->value = isset($genericdata['luogo']) ? $genericdata['luogo'] : null;
$this->rif["ri_sid"]->value = $oR->getSID();
$this->rif["ri_doi"]->value = $oR->getdoi();
if ($type == getConstVar("TIPO_ARTICOLO")) {
$this->rif["ri_fasc"]->value = $genericdata['fascicolo'];
}
if ($type == getConstVar("TIPO_ARTICOLO")) {
$this->rif["ri_issn"]->value = $codice['issn'];
} else {
$this->rif["ri_isbn"]->value = $codice['isbn'];
}
}
}
// DIADOSIS TEAM Get details from DOI...
//the curl request processor
function processCurlJsonrequest($URL) { //Initiate cURL request and send back the result
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json'));
curl_setopt($ch, CURLOPT_URL, $URL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
$resulta = curl_exec($ch);
$contentType = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
if (curl_errno($ch)) {
$return = curl_error($ch);
} else if ($contentType !== 'application/json') {
$return = false;
} else {
$return = $resulta;
curl_close($ch);
}
return $return;
}
// DIADOSIS TEAM Get details from PMID...
//the curl request processor
function processCurlXMLrequest($URL) { //Initiate cURL request and send back the result
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/xml'));
curl_setopt($ch, CURLOPT_URL, $URL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
$resulta = curl_exec($ch);
$contentType = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
if (curl_errno($ch)) {
$return = curl_error($ch);
} else if ($contentType !== 'text/xml; charset=UTF-8') {
$return = false;
} else {
$return = $resulta;
curl_close($ch);
}
return $return;
}
//DIADOSIS TEAM * Parse DOI
function parse_doi_api($type) {
if (isset($_GET['doi'])) {
$_GET['doi'] = strip_tags($_GET['doi']);
if (strpos($_GET['doi'], '10.') !== false) {
$doi = "https://dx.doi.org/" . $_GET['doi'];
$json_r = json_decode($this->processCurlJsonrequest($doi));
// DIADOSIS TEAM Check if api call with doi returns results, meaning id doi is published or if there was another problem
if (!is_null($json_r)) {
$i = 0;
$infoAutori = $json_r->author[0]->family . ' ' . $json_r->author[0]->given;
$infoAutori1 = "";
foreach ($json_r->author as $auth) {
if ($i != 0) {
$infoAutori1 .= $auth->family . ' ' . $auth->given . ", ";
}
$i++;
}
$infoAutori1 = substr($infoAutori1, 0, -2);
$this->rif["ri_titolopub"]->value = isset($json_r->{'container-title'}) ? $json_r->{'container-title'} : null;
$this->rif["ri_titolopart"]->value = isset($json_r->title) ? $json_r->title : null;
$this->rif["ri_au1"]->value = $infoAutori;
$this->rif["ri_au2"]->value = $infoAutori1;
$this->rif["ri_anno"]->value = isset($json_r->issued->{'date-parts'}[0]) ? $json_r->issued->{'date-parts'}[0][0] : null;
$this->rif["ri_vol"]->value = isset($json_r->volume) ? $json_r->volume : null;
$this->rif["ri_fasc"]->value = isset($json_r->issue) ? $json_r->issue : null;
$pages = explode("-", $json_r->page);
$this->rif["ri_pgini"]->value = (isset($pages[0]) && $pages[0] != 0) ? $pages[0] : "1";
$this->rif["ri_pgfine"]->value = isset($pages[1]) ? $pages[1] : "1";
$this->rif["ri_editore"]->value = isset($json_r->publisher) ? $json_r->publisher : null;
$this->rif["ri_issn"]->value = isset($json_r->ISSN[0]) ? $json_r->ISSN[0] : null;
$this->rif["ri_abstract"]->value = isset($json_r->abstract) ? $json_r->abstract : null;
$this->rif["ri_sid"]->value = $_GET['sid'];
$this->rif["ri_doi"]->value = isset($json_r->DOI) ? $json_r->DOI : null;
} else {
echo '<script>alert(\'' . getConstVar('DOI_NOT_FETCH_DETAILS') . '\');</script>';
$this->rif["ri_titolopub"]->value = "DOI: " . $_GET['doi'];
$this->rif["ri_anno"]->value = date("Y");
$this->rif["ri_pgini"]->value = "1";
$this->rif["ri_doi"]->value = $_GET['doi'];
}
} else {
$doi = "http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&retmode=xml&id=" . $_GET['doi'];
$xml_r = simplexml_load_string($this->processCurlXMLrequest($doi));
// DIADOSIS TEAM Check if api call with pmid returns results, meaning pmid was not correct or if there was another problem
if (isset($xml_r->ERROR) || !isset($xml_r->PubmedArticle)) {
echo '<script>alert(\'' . getConstVar('PMID_NOT_FETCH_DETAILS') . '\');</script>';
$this->rif["ri_pmid"]->value = $_GET['doi'];
} else {
$i = 0;
$infoAutori = $xml_r->PubmedArticle->MedlineCitation->Article->AuthorList->Author->LastName[0] . ' ' . $xml_r->PubmedArticle->MedlineCitation->Article->AuthorList->Author->ForeName[0] . ' ' . $xml_r->PubmedArticle->MedlineCitation->Article->AuthorList->Author->Initials[0];
$infoAutori1 = "";
foreach ($xml_r->PubmedArticle->MedlineCitation->Article->AuthorList->Author as $auth) {
if ($i != 0) {
$infoAutori1 .= $auth->LastName . ' ' . $auth->ForeName . ' ' . $auth->Initials . ", ";
}
$i++;
}
// DIADOSIS TEAM GET article DOI and PMID from list of IDs. if PMID not in list get it from above field in the api result
foreach ($xml_r->PubmedArticle->PubmedData->ArticleIdList->ArticleId as $ids) {
if ($ids ["IdType"] == "doi")
$api_get_doi = (string) $ids[0];
if ($ids ["IdType"] == "pubmed")
$api_get_pmid = (string) $ids[0];
}
if (!isset($api_get_pmid))
$api_get_pmid = $xml_r->PubmedArticle->MedlineCitation->PMID;
if (isset($xml_r->PubmedArticle->MedlineCitation->Article->Pagination)) {
$pages = explode("-", $xml_r->PubmedArticle->MedlineCitation->Article->Pagination->MedlinePgn);
$pages[1] = $pages[0] + $pages[1];
}
if (isset($xml_r->PubmedArticle->MedlineCitation->Article->Journal->JournalIssue->PubDate->Year))
$year = (string) $xml_r->PubmedArticle->MedlineCitation->Article->Journal->JournalIssue->PubDate->Year;
else
if (isset($xml_r->PubmedArticle->MedlineCitation->Article->Journal->JournalIssue->PubDate->MedlineDate))
$year = substr((string) $xml_r->PubmedArticle->MedlineCitation->Article->Journal->JournalIssue->PubDate->MedlineDate, 0, 4);
else
$year = "0";
$infoAutori1 = substr($infoAutori1, 0, -2);
$this->rif["ri_titolopub"]->value = isset($xml_r->PubmedArticle->MedlineCitation->Article->Journal->Title) ? (string) $xml_r->PubmedArticle->MedlineCitation->Article->Journal->Title : null;
$this->rif["ri_titolopart"]->value = isset($xml_r->PubmedArticle->MedlineCitation->Article->ArticleTitle) ? (string) $xml_r->PubmedArticle->MedlineCitation->Article->ArticleTitle : null;
$this->rif["ri_au1"]->value = $infoAutori;
$this->rif["ri_au2"]->value = $infoAutori1;
$this->rif["ri_anno"]->value = $year;
$this->rif["ri_vol"]->value = isset($xml_r->PubmedArticle->MedlineCitation->Article->Journal->JournalIssue->Volume) ? (string) $xml_r->PubmedArticle->MedlineCitation->Article->Journal->JournalIssue->Volume : null;
$this->rif["ri_fasc"]->value = isset($xml_r->PubmedArticle->MedlineCitation->Article->Journal->JournalIssue->Issue) ? (string) $xml_r->PubmedArticle->MedlineCitation->Article->Journal->JournalIssue->Issue : null;
$this->rif["ri_pgini"]->value = (isset($pages) && (int) $pages[0] != 0 ) ? $pages[0] : "1";
$this->rif["ri_pgfine"]->value = (isset($pages) && (int) $pages[1] != 0 ) ? $pages[1] : "1";
$this->rif["ri_editore"]->value = isset($xml_r->PubmedArticle->MedlineCitation->Article->Abstract->CopyrightInformation) ? (string) $xml_r->PubmedArticle->MedlineCitation->Article->Abstract->CopyrightInformation : null;
$this->rif["ri_issn"]->value = isset($xml_r->PubmedArticle->MedlineCitation->Article->Journal->ISSN) ? (string) $xml_r->PubmedArticle->MedlineCitation->Article->Journal->ISSN : null;
$this->rif["ri_abstract"]->value = isset($xml_r->PubmedArticle->MedlineCitation->Article->Abstract->AbstractText) ? (string) $xml_r->PubmedArticle->MedlineCitation->Article->Abstract->AbstractText : null;
$this->rif["ri_sid"]->value = $_GET['sid'];
$this->rif["ri_doi"]->value = isset($api_get_doi) ? $api_get_doi : null;
$this->rif["ri_pmid"]->value = $api_get_pmid;
}
}
}
}
}

Event Timeline