148 lines
4.5 KiB
PHP
Raw Permalink Normal View History

2023-01-24 19:00:39 +01:00
<?php
class journalArticle extends _publication {
private $journal_name = "";
private $journal_id = "";
private $article_id = "";
private $volume = 0;
private $issue = 0;
protected $type = 1;
public function setJournal($name) {
$this->journal_name = $name;
return;
}
public function setVolumeIssue($volumeIssue) {
/* volume (issue) */
$vi = explode ("(", preg_replace('/[^\d(]/', '', $volumeIssue));
$this->volume = preg_replace ('/\D/', '', $vi[0]);
if (count ($vi)>1) {
$this->issue = preg_replace ('/\D/', '', $vi[1]);
}
return;
}
public function setVolume($volume) {
/* volume (issue) */
$this->volume = preg_replace ('/\D/', '', $volume);
return;
}
public function setIssue($issue) {
$this->issue = preg_replace ('/\D/', '', $issue);
return;
}
// each type has its own master record
// THIS ONLY ADDS article (master of publication)
protected function _addMaster() {
$this->type = 1;
if (!$this->_isJournal()) {
if (!$this->_addJournal()) {
common::except ('Err cannot add journal, terminating (in ' .__DIR__ .'/' .__FILE__ .':' .__LINE__ .')');
return false;
}
}
if (!$this->_isArticle()) {
if (!$this->_addArticle()) {
common::except ('Err cannot add journal article, terminating (in ' .__DIR__ .'/' .__FILE__ .':' .__LINE__ .')');
return false;
}
}
return $this->article_id;
}
private function _isArticle() {
try {
$stmt = $this->PDO->prepare("SELECT id FROM p_journalArticle WHERE id_journal=:id_journal AND volume=:volume AND issue=:issue AND fromPage=:fromPage AND toPage=:toPage");
$stmt->execute(array(
'id_journal' => $this->journal_id,
'volume' => $this->volume,
'issue' => $this->issue,
'fromPage' => $this->fromPage,
'toPage' => $this->toPage));
// this instead of rowCount to make in compatible with non-mysql DB
if ($r = $stmt->fetch(PDO::FETCH_NUM)) {
$this->article_id = $r[0];
return true;
}
return false;
}
catch (exception $ex) {
common::except ('Err: ' .$ex .' in ' .__DIR__ .'/' .__FILE__ .':' .__LINE__);
}
}
private function _addArticle() {
try {
$stmt = $this->PDO->prepare("INSERT INTO p_journalArticle (id_journal, volume, issue, fromPage, toPage) VALUES (:id_journal, :volume, :issue, :fromPage, :toPage)");
$stmt->execute(array(
'id_journal' => $this->journal_id,
'volume' => intval($this->volume),
'issue' => intval($this->issue),
'fromPage' => intval($this->fromPage),
'toPage' => intval($this->toPage)));
$this->article_id = $this->PDO->lastInsertId();
return true;
}
catch (exception $ex) {
common::except ('Err: ' .$ex .' in ' .__DIR__ .'/' .__FILE__ .':' .__LINE__);
}
}
private function _addJournal() {
try {
$stmt = $this->PDO->prepare("INSERT INTO l_journal (name) VALUES (:name)");
$stmt->execute(array($this->journal_name));
$this->journal_id = $this->PDO->lastInsertId();
return true;
}
catch (exception $ex) {
common::except ('Err: ' .$ex .' in ' .__DIR__ .'/' .__FILE__ .':' .__LINE__);
return false;
}
}
private function _isJournal() {
try {
for ($x=1; $x<=2; $x++) {
$stmt = $this->PDO->prepare("SELECT id FROM l_journal where name=:name " .($x==1?'AND id_issn!="" ':'') ." order by id asc");
$stmt->execute(array($this->journal_name));
// this instead of rowCount to make in compatible with non-mysql DB
if ($r = $stmt->fetch(PDO::FETCH_NUM)) {
$this->journal_id = $r[0];
return true;
}
}
return false;
}
catch (exception $ex) {
common::except ('Err: ' .$ex .' in ' .__DIR__ .'/' .__FILE__ .':' .__LINE__);
}
}
}