classes/paper/PaperGalleyDAO.inc.php

Go to the documentation of this file.
00001 <?php
00002 
00016 //$Id$
00017 
00018 import('paper.PaperGalley');
00019 import('paper.PaperHTMLGalley');
00020 
00021 class PaperGalleyDAO extends DAO {
00023    var $paperFileDao;
00024 
00028    function PaperGalleyDAO() {
00029       parent::DAO();
00030       $this->paperFileDao =& DAORegistry::getDAO('PaperFileDAO');
00031    }
00032 
00039    function &getGalley($galleyId, $paperId = null) {
00040       if (isset($paperId)) {
00041          $result =& $this->retrieve(
00042             'SELECT g.*,
00043             a.file_name, a.original_file_name, a.file_type, a.file_size, a.date_uploaded, a.date_modified
00044             FROM paper_galleys g
00045             LEFT JOIN paper_files a ON (g.file_id = a.file_id)
00046             WHERE g.galley_id = ? AND g.paper_id = ?',
00047             array($galleyId, $paperId)
00048          );
00049 
00050       } else {
00051          $result =& $this->retrieve(
00052             'SELECT g.*,
00053             a.file_name, a.original_file_name, a.file_type, a.file_size, a.date_uploaded, a.date_modified
00054             FROM paper_galleys g
00055             LEFT JOIN paper_files a ON (g.file_id = a.file_id)
00056             WHERE g.galley_id = ?',
00057             $galleyId
00058          );
00059       }
00060 
00061       $returner = null;
00062       if ($result->RecordCount() != 0) {
00063          $returner =& $this->_returnGalleyFromRow($result->GetRowAssoc(false));
00064       }
00065 
00066       $result->Close();
00067       unset($result);
00068 
00069       return $returner;
00070    }
00071 
00077    function &getGalleysByPaper($paperId) {
00078       $galleys = array();
00079 
00080       $result =& $this->retrieve(
00081          'SELECT g.*,
00082          a.file_name, a.original_file_name, a.file_type, a.file_size, a.date_uploaded, a.date_modified
00083          FROM paper_galleys g
00084          LEFT JOIN paper_files a ON (g.file_id = a.file_id)
00085          WHERE g.paper_id = ? ORDER BY g.seq',
00086          $paperId
00087       );
00088 
00089       while (!$result->EOF) {
00090          $galleys[] =& $this->_returnGalleyFromRow($result->GetRowAssoc(false));
00091          $result->moveNext();
00092       }
00093 
00094       $result->Close();
00095       unset($result);
00096 
00097       HookRegistry::call('PaperGalleyDAO::getGalleysByPaper', array(&$galleys, &$paperId));
00098 
00099       return $galleys;
00100    }
00101 
00107    function &_returnGalleyFromRow(&$row) {
00108       if ($row['html_galley']) {
00109          $galley = new PaperHTMLGalley();
00110 
00111          // HTML-specific settings
00112          $galley->setStyleFileId($row['style_file_id']);
00113          if ($row['style_file_id']) {
00114             $galley->setStyleFile($this->paperFileDao->getPaperFile($row['style_file_id']));
00115          }
00116 
00117          // Retrieve images
00118          $images =& $this->getGalleyImages($row['galley_id']);
00119          $galley->setImageFiles($images); 
00120 
00121       } else {
00122          $galley = new PaperGalley();
00123       }
00124       $galley->setId($row['galley_id']);
00125       $galley->setPaperId($row['paper_id']);
00126       $galley->setLocale($row['locale']);
00127       $galley->setFileId($row['file_id']);
00128       $galley->setLabel($row['label']);
00129       $galley->setSequence($row['seq']);
00130       $galley->setViews($row['views']);
00131 
00132       // PaperFile set methods
00133       $galley->setFileName($row['file_name']);
00134       $galley->setOriginalFileName($row['original_file_name']);
00135       $galley->setFileType($row['file_type']);
00136       $galley->setFileSize($row['file_size']);
00137       $galley->setDateModified($this->datetimeFromDB($row['date_modified']));
00138       $galley->setDateUploaded($this->datetimeFromDB($row['date_uploaded']));
00139 
00140       HookRegistry::call('PaperGalleyDAO::_returnGalleyFromRow', array(&$galley, &$row));
00141 
00142       return $galley;
00143    }
00144 
00149    function insertGalley(&$galley) {
00150       $this->update(
00151          'INSERT INTO paper_galleys
00152             (paper_id, file_id, label, locale, html_galley, style_file_id, seq)
00153             VALUES
00154             (?, ?, ?, ?, ?, ?, ?)',
00155          array(
00156             $galley->getPaperId(),
00157             $galley->getFileId(),
00158             $galley->getLabel(),
00159             $galley->getLocale(),
00160             (int)$galley->isHTMLGalley(),
00161             $galley->isHTMLGalley() ? $galley->getStyleFileId() : null,
00162             $galley->getSequence() == null ? $this->getNextGalleySequence($galley->getPaperId()) : $galley->getSequence()
00163          )
00164       );
00165       $galley->setId($this->getInsertGalleyId());
00166       return $galley->getId();
00167    }
00168 
00173    function updateGalley(&$galley) {
00174       return $this->update(
00175          'UPDATE paper_galleys
00176             SET
00177                file_id = ?,
00178                label = ?,
00179                locale = ?,
00180                html_galley = ?,
00181                style_file_id = ?,
00182                seq = ?
00183             WHERE galley_id = ?',
00184          array(
00185             $galley->getFileId(),
00186             $galley->getLabel(),
00187             $galley->getLocale(),
00188             (int)$galley->isHTMLGalley(),
00189             $galley->isHTMLGalley() ? $galley->getStyleFileId() : null,
00190             $galley->getSequence(),
00191             $galley->getId()
00192          )
00193       );
00194    }
00195 
00200    function deleteGalley(&$galley) {
00201       return $this->deleteGalleyById($galley->getId());
00202    }
00203 
00209    function deleteGalleyById($galleyId, $paperId = null) {
00210       $this->deleteImagesByGalley($galleyId);
00211       if (isset($paperId)) {
00212          return $this->update(
00213             'DELETE FROM paper_galleys WHERE galley_id = ? AND paper_id = ?',
00214             array($galleyId, $paperId)
00215          );
00216 
00217       } else {
00218          return $this->update(
00219             'DELETE FROM paper_galleys WHERE galley_id = ?', $galleyId
00220          );
00221       }
00222    }
00223 
00229    function deleteGalleysByPaper($paperId) {
00230       $galleys =& $this->getGalleysByPaper($paperId);
00231       foreach ($galleys as $galley) {
00232          $this->deleteGalleyById($galley->getId(), $paperId);
00233       }
00234    }
00235 
00242    function galleyExistsByFileId($paperId, $fileId) {
00243       $result =& $this->retrieve(
00244          'SELECT COUNT(*) FROM paper_galleys
00245          WHERE paper_id = ? AND file_id = ?',
00246          array($paperId, $fileId)
00247       );
00248 
00249       $returner = isset($result->fields[0]) && $result->fields[0] == 1 ? true : false;
00250 
00251       $result->Close();
00252       unset($result);
00253 
00254       return $returner;
00255    }
00256 
00261    function incrementViews($galleyId) {
00262       return $this->update(
00263          'UPDATE paper_galleys SET views = views + 1 WHERE galley_id = ?',
00264          $galleyId
00265       );
00266    }
00267 
00272    function resequenceGalleys($paperId) {
00273       $result =& $this->retrieve(
00274          'SELECT galley_id FROM paper_galleys WHERE paper_id = ? ORDER BY seq',
00275          $paperId
00276       );
00277 
00278       for ($i=1; !$result->EOF; $i++) {
00279          list($galleyId) = $result->fields;
00280          $this->update(
00281             'UPDATE paper_galleys SET seq = ? WHERE galley_id = ?',
00282             array($i, $galleyId)
00283          );
00284          $result->moveNext();
00285       }
00286 
00287       $result->close();
00288       unset($result);
00289    }
00290 
00296    function getNextGalleySequence($paperId) {
00297       $result =& $this->retrieve(
00298          'SELECT MAX(seq) + 1 FROM paper_galleys WHERE paper_id = ?',
00299          $paperId
00300       );
00301       $returner = floor($result->fields[0]);
00302 
00303       $result->Close();
00304       unset($result);
00305 
00306       return $returner;
00307    }
00308 
00313    function getInsertGalleyId() {
00314       return $this->getInsertId('paper_galleys', 'galley_id');
00315    }
00316 
00317 
00318    //
00319    // Extra routines specific to HTML galleys.
00320    //
00321 
00327    function &getGalleyImages($galleyId) {
00328       $images = array();
00329 
00330       $result =& $this->retrieve(
00331          'SELECT a.* FROM paper_html_galley_images i, paper_files a
00332          WHERE i.file_id = a.file_id AND i.galley_id = ?',
00333          $galleyId
00334       );
00335 
00336       while (!$result->EOF) {
00337          $images[] =& $this->paperFileDao->_returnPaperFileFromRow($result->GetRowAssoc(false));
00338          $result->MoveNext();
00339       }
00340 
00341       $result->Close();
00342       unset($result);
00343 
00344       return $images;
00345    }
00346 
00352    function insertGalleyImage($galleyId, $fileId) {
00353       return $this->update(
00354          'INSERT INTO paper_html_galley_images
00355          (galley_id, file_id)
00356          VALUES
00357          (?, ?)',
00358          array($galleyId, $fileId)
00359       );
00360    }
00361 
00367    function deleteGalleyImage($galleyId, $fileId) {
00368       return $this->update(
00369          'DELETE FROM paper_html_galley_images
00370          WHERE galley_id = ? AND file_id = ?',
00371          array($galleyId, $fileId)
00372       );
00373    }
00374 
00379    function deleteImagesByGalley($galleyId) {
00380       return $this->update(
00381          'DELETE FROM paper_html_galley_images WHERE galley_id = ?',
00382          $galleyId
00383       );
00384    }
00385 }
00386 
00387 ?>

Generated on 25 Jul 2013 for Open Conference Systems by  doxygen 1.4.7