00001 <?php
00002
00017
00018
00019
00020 import('classes.article.ArticleGalleyDAO');
00021
00022
00023 class ArticleXMLGalleyDAO extends ArticleGalleyDAO {
00030 function _getXMLGalleyFromId($galleyId, $articleId = null) {
00031
00032
00033 if (isset($articleId)) {
00034 $result = &$this->retrieve(
00035 'SELECT x.*, x.galley_type AS file_type,
00036 g.file_id, g.html_galley, g.style_file_id, g.seq,
00037 a.file_name, a.original_file_name, a.file_size, a.status, a.date_uploaded, a.date_modified
00038 FROM article_xml_galleys x
00039 LEFT JOIN article_galleys g ON (x.galley_id = g.galley_id)
00040 LEFT JOIN article_files a ON (g.file_id = a.file_id)
00041 WHERE x.xml_galley_id = ? AND x.article_id = ?',
00042 array($galleyId, $articleId)
00043 );
00044
00045 } else {
00046 $result = &$this->retrieve(
00047 'SELECT x.*, x.galley_type AS file_type,
00048 g.file_id, g.html_galley, g.style_file_id, g.seq,
00049 a.file_name, a.original_file_name, a.file_size, a.status, a.date_uploaded, a.date_modified
00050 FROM article_xml_galleys x
00051 LEFT JOIN article_galleys g ON (x.galley_id = g.galley_id)
00052 LEFT JOIN article_files a ON (g.file_id = a.file_id)
00053 WHERE x.xml_galley_id = ?',
00054 $galleyId
00055 );
00056 }
00057
00058
00059 if ($result->RecordCount() != 0) {
00060 $articleGalley = &$this->_returnGalleyFromRow($result->GetRowAssoc(false));
00061
00062 $xmlGalleyPlugin = &PluginRegistry::getPlugin('generic', 'XMLGalleyPlugin');
00063 $xmlGalley = $xmlGalleyPlugin->_returnXMLGalleyFromArticleGalley($articleGalley);
00064 return $xmlGalley;
00065 }
00066 }
00067
00071 function appendXMLGalleys($hookName, $args) {
00072 $galleys =& $args[0];
00073 $articleId =& $args[1];
00074
00075
00076 reset($galleys);
00077 while (list($key) = each($galleys)) {
00078 $galley = & $galleys[$key];
00079
00080
00081 if ($galley->getFileType() == "text/xml") {
00082
00083
00084 $result = &$this->retrieve(
00085 'SELECT xml_galley_id
00086 FROM article_xml_galleys x
00087 WHERE x.galley_id = ? AND x.article_id = ? ORDER BY xml_galley_id',
00088 array($galley->getGalleyId(), $articleId)
00089 );
00090
00091 $xmlGalleyPlugin = &PluginRegistry::getPlugin('generic', 'XMLGalleyPlugin');
00092 $journal = &Request::getJournal();
00093
00094 while (!$result->EOF) {
00095 $row = $result->GetRowAssoc(false);
00096 $xmlGalley = $this->_getXMLGalleyFromId($row['xml_galley_id'], $articleId);
00097 $xmlGalley->setGalleyId($row['xml_galley_id']);
00098
00099
00100 if ( ($xmlGalleyPlugin->getSetting($journal->getJournalId(), 'nlmPDF') == 1
00101 && $xmlGalley->isPdfGalley()) || $xmlGalley->isHTMLGalley()) {
00102 array_push($galleys, $xmlGalley);
00103 }
00104 $result->moveNext();
00105 }
00106
00107
00108 if (isset($xmlGalley)) unset($galleys[$key]);
00109 }
00110 unset($galley);
00111 }
00112
00113 return true;
00114 }
00115
00119 function insertXMLGalleys($hookName, $args) {
00120 $galley =& $args[0];
00121 $galleyId =& $args[1];
00122
00123
00124 if ($galley->getLabel() == "XML") {
00125
00126
00127 $this->update(
00128 'INSERT INTO article_xml_galleys
00129 (galley_id, article_id, label, galley_type)
00130 VALUES
00131 (?, ?, ?, ?)',
00132 array(
00133 $galleyId,
00134 $galley->getArticleId(),
00135 'XHTML',
00136 'application/xhtml+xml'
00137 )
00138 );
00139
00140
00141
00142 $journal = &Request::getJournal();
00143 $xmlGalleyPlugin = &PluginRegistry::getPlugin('generic', 'XMLGalleyPlugin');
00144
00145 if ($xmlGalleyPlugin->getSetting($journal->getJournalId(), 'nlmPDF') == 1 &&
00146 $xmlGalleyPlugin->getSetting($journal->getJournalId(), 'XSLstylesheet') == 'NLM' ) {
00147
00148
00149 $this->update(
00150 'INSERT INTO article_xml_galleys
00151 (galley_id, article_id, label, galley_type)
00152 VALUES
00153 (?, ?, ?, ?)',
00154 array(
00155 $galleyId,
00156 $galley->getArticleId(),
00157 'PDF',
00158 'application/pdf'
00159 )
00160 );
00161
00162 }
00163 return true;
00164 }
00165 return false;
00166 }
00167
00172 function deleteXMLGalleys($hookName, $args) {
00173 $galleyId =& $args[0];
00174 $articleId =& $args[1];
00175
00176 if (isset($articleId)) {
00177 $this->update(
00178 'DELETE FROM article_xml_galleys WHERE galley_id = ? AND article_id = ?',
00179 array($galleyId, $articleId)
00180 );
00181
00182 } else {
00183 $this->update(
00184 'DELETE FROM article_xml_galleys WHERE galley_id = ?', $galleyId
00185 );
00186 }
00187
00188 }
00189
00193 function incrementXMLViews($hookName, $args) {
00194 $galleyId =& $args[0];
00195
00196 return $this->update(
00197 'UPDATE article_xml_galleys SET views = views + 1 WHERE xml_galley_id = ?',
00198 $galleyId
00199 );
00200
00201 }
00202 }
00203
00204 ?>