• Main Page
  • Modules
  • Classes
  • Files
  • File List

classes/monograph/GenreDAO.inc.php

00001 <?php
00002 
00016 import('classes.monograph.Genre');
00017 import('classes.press.DefaultSettingDAO');
00018 
00019 class GenreDAO extends DefaultSettingDAO {
00023    function GenreDAO() {
00024       parent::DefaultSettingDAO();
00025    }
00026 
00030    function getPrimaryKeyColumnName() {
00031       return 'genre_id';
00032    }
00033 
00039    function &getById($genreId, $pressId = null){
00040       $sqlParams = array((int)$genreId);
00041       if ($pressId) {
00042          $sqlParams[] = (int)$pressId;
00043       }
00044 
00045       $result =& $this->retrieve('SELECT * FROM genres WHERE genre_id = ?'. ($pressId ? ' AND press_id = ?' : ''), $sqlParams);
00046       $returner = null;
00047       if ($result->RecordCount() != 0) {
00048          $returner =& $this->_fromRow($result->GetRowAssoc(false));
00049       }
00050       $result->Close();
00051       return $returner;
00052    }
00053 
00061    function &getEnabledByPressId($pressId, $rangeInfo = null) {
00062       $result =& $this->retrieveRange(
00063          'SELECT * FROM genres WHERE enabled = ? AND press_id = ?', array(1, $pressId), $rangeInfo
00064       );
00065 
00066       $returner = new DAOResultFactory($result, $this, '_fromRow', array('id'));
00067       return $returner;
00068    }
00069 
00074    function getLocaleFieldNames() {
00075       return array('name', 'designation');
00076    }
00077 
00082    function updateLocaleFields(&$genre) {
00083       $this->updateDataObjectSettings('genre_settings', $genre, array(
00084          'genre_id' => $genre->getId()
00085       ));
00086    }
00087 
00092    function newDataObject() {
00093       return new Genre();
00094    }
00095 
00101    function &_fromRow(&$row) {
00102       $genre = $this->newDataObject();
00103       $genre->setId($row['genre_id']);
00104       $genre->setPressId($row['press_id']);
00105       $genre->setSortable($row['sortable']);
00106       $genre->setCategory($row['category']);
00107 
00108       $this->getDataObjectSettings('genre_settings', 'genre_id', $row['genre_id'], $genre);
00109 
00110       HookRegistry::call('GenreDAO::_fromRow', array(&$genre, &$row));
00111 
00112       return $genre;
00113    }
00114 
00119    function insertObject(&$genre) {
00120       $this->update(
00121          'INSERT INTO genres
00122             (sortable, press_id, category)
00123          VALUES
00124             (?, ?, ?)',
00125          array(
00126             $genre->getSortable() ? 1 : 0,
00127             (int) $genre->getPressId(),
00128             (int) $genre->getCategory()
00129          )
00130       );
00131 
00132       $genre->setId($this->getInsertGenreId());
00133 
00134       $this->updateLocaleFields($genre);
00135 
00136       return $genre->getId();
00137    }
00138 
00143    function updateObject(&$genre) {
00144       $this->updateLocaleFields($genre);
00145    }
00146 
00151    function deleteObject($genre) {
00152       return $this->deleteById($genre->getId());
00153    }
00154 
00159    function deleteById($entryId) {
00160       return $this->update(
00161          'UPDATE genres SET enabled = ? WHERE genre_id = ?', array(0, (int) $entryId)
00162       );
00163    }
00164 
00170    function deleteByPressId($pressId) {
00171       return $this->update(
00172          'DELETE FROM genres WHERE press_id = ?', array((int) $pressId)
00173       );
00174    }
00175 
00180    function getInsertGenreId() {
00181       return $this->getInsertId('genres', 'genre_id');
00182    }
00183 
00188    function getSettingsTableName() {
00189       return 'genre_settings';
00190    }
00191 
00196    function getTableName() {
00197       return 'genres';
00198    }
00199 
00204    function getDefaultType() {
00205       return DEFAULT_SETTING_GENRES;
00206    }
00207 
00212    function getDefaultBaseFilename() {
00213       return 'registry/genres.xml';
00214    }
00215 
00221    function installDefaultBase($pressId) {
00222       $xmlDao = new XMLDAO();
00223 
00224       $data = $xmlDao->parseStruct($this->getDefaultBaseFilename(), array('genre'));
00225       if (!isset($data['genre'])) return false;
00226 
00227       foreach ($data['genre'] as $entry) {
00228          $attrs = $entry['attributes'];
00229          $this->update(
00230             'INSERT INTO genres
00231             (entry_key, sortable, press_id, category)
00232             VALUES
00233             (?, ?, ?, ?)',
00234             array($attrs['key'], $attrs['sortable'] ? 1 : 0, $pressId, $attrs['category'])
00235          );
00236       }
00237       return true;
00238    }
00239 
00246    function &getSettingAttributes($node = null, $locale = null) {
00247 
00248       if ($node == null) {
00249          $settings = array('name', 'designation');
00250       } else {
00251          $localeKey = $node->getAttribute('localeKey');
00252          $sortable = $node->getAttribute('sortable');
00253 
00254          $designation = $sortable ? GENRE_SORTABLE_DESIGNATION : __($localeKey.'.designation', array(), $locale);
00255 
00256          $settings = array(
00257             'name' => __($localeKey, array(), $locale),
00258             'designation' => $designation
00259          );
00260       }
00261       return $settings;
00262    }
00263 }
00264 
00265 ?>

Generated on Mon Sep 17 2012 13:58:55 for Open Monograph Press by  doxygen 1.7.1