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

classes/cataloguingMetadata/CataloguingMetadataFieldDAO.inc.php

00001 <?php
00016 import('classes.cataloguingMetadata.CataloguingMetadataField');
00017 import('classes.press.DefaultSettingDAO');
00018 
00019 class CataloguingMetadataFieldDAO extends DefaultSettingDAO {
00023    function CataloguingMetadataFieldDAO() {
00024       parent::DefaultSettingDAO();
00025    }
00026 
00030    function getPrimaryKeyColumnName() {
00031       return 'field_id';
00032    }
00033 
00040    function &getById($cataloguingMetadataFieldId, $pressId = null) {
00041       $params = array((int) $cataloguingMetadataFieldId);
00042       if ($pressId) $params[] = (int) $pressId;
00043 
00044       $result =& $this->retrieve(
00045          'SELECT  *
00046          FROM  cataloguing_metadata_fields
00047          WHERE field_id = ?
00048          ' . ($pressId?' AND press_id = ?':''),
00049          $params
00050       );
00051 
00052       $returner = null;
00053       if ($result->RecordCount() != 0) {
00054          $returner =& $this->_fromRow($result->GetRowAssoc(false));
00055       }
00056       $result->Close();
00057       return $returner;
00058    }
00059 
00064    function &getEnabledByPressId($pressId) {
00065       $result =& $this->retrieve(
00066          'SELECT  *
00067          FROM  cataloguing_metadata_fields
00068          WHERE enabled = ? AND
00069             press_id = ?',
00070          array(1, (int) $pressId)
00071       );
00072 
00073       $returner = null;
00074       while (!$result->EOF) {
00075          $returner[] =& $this->_fromRow($result->GetRowAssoc(false));
00076          $result->MoveNext();
00077       }
00078       $result->Close();
00079       unset($result);
00080 
00081       return $returner;
00082    }
00083 
00088    function getLocaleFieldNames() {
00089       return array('name');
00090    }
00091 
00096    function updateLocaleFields(&$cataloguingMetadataField) {
00097       $this->updateDataObjectSettings('cataloguing_metadata_field_settings', $cataloguingMetadataField, array(
00098          'field_id' => $cataloguingMetadataField->getId()
00099       ));
00100    }
00101 
00106    function newDataObject() {
00107       return new CataloguingMetadataField();
00108    }
00109 
00115    function &_fromRow(&$row) {
00116       $cataloguingMetadataField = $this->newDataObject();
00117       $cataloguingMetadataField->setPressId($row['press_id']);
00118       $cataloguingMetadataField->setId($row['field_id']);
00119       $cataloguingMetadataField->setEnabled($row['enabled']);
00120 
00121       $this->getDataObjectSettings('cataloguing_metadata_field_settings', 'field_id', $row['field_id'], $cataloguingMetadataField);
00122 
00123       return $cataloguingMetadataField;
00124    }
00125 
00130    function insertObject(&$cataloguingMetadataField) {
00131       $this->update(
00132          'INSERT INTO cataloguing_metadata_fields
00133             (press_id, enabled)
00134          VALUES
00135             (?, ?)',
00136          array(
00137             (int) $cataloguingMetadataField->getPressId(),
00138             $cataloguingMetadataField->getEnabled()?1:0
00139          )
00140       );
00141 
00142       $cataloguingMetadataField->setId($this->getInsertCataloguingMetadataFieldId());
00143 
00144       $this->updateLocaleFields($cataloguingMetadataField);
00145 
00146       return $cataloguingMetadataField->getId();
00147    }
00148 
00153    function updateObject(&$cataloguingMetadataField) {
00154 
00155       $this->updateLocaleFields($cataloguingMetadataField);
00156    }
00157 
00163    function deleteById($cataloguingMetadataFieldId, $pressId = null) {
00164       $params = array(0, (int) $cataloguingMetadataFieldId);
00165       if ($pressId) $params[] = (int) $pressId;
00166 
00167       return $this->update(
00168          'UPDATE  cataloguing_metadata_fields
00169          SET   enabled = ?
00170          WHERE field_id = ?
00171             ' . ($pressId?' AND press_id = ?':''),
00172          $params
00173       );
00174    }
00175 
00180    function getInsertCataloguingMetadataFieldId() {
00181       return $this->getInsertId('cataloguing_metadata_fields', 'field_id');
00182    }
00183 
00188    function getSettingsTableName() {
00189       return 'cataloguing_metadata_field_settings';
00190    }
00191 
00196    function getTableName() {
00197       return 'cataloguing_metadata_fields';
00198    }
00199 
00204    function getDefaultType() {
00205       return DEFAULT_SETTING_PUBLICATION_FORMATS;
00206    }
00207 
00212    function getDefaultBaseFilename() {
00213       return 'registry/cataloguingMetadataFields.xml';
00214    }
00215 
00221    function installDefaultBase($pressId) {
00222       $xmlDao = new XMLDAO();
00223 
00224       $data = $xmlDao->parseStruct($this->getDefaultBaseFilename(), array('cataloguingMetadataField'));
00225       if (!isset($data['cataloguingMetadataField'])) return false;
00226 
00227       foreach ($data['cataloguingMetadataField'] as $entry) {
00228          $attrs = $entry['attributes'];
00229          $this->update(
00230             'INSERT INTO cataloguing_metadata_fields
00231             (press_id, enabled)
00232             VALUES
00233             (?, ?)',
00234             array((int) $pressId, 1)
00235          );
00236       }
00237       return true;
00238    }
00239 
00246    function &getSettingAttributes($node = null, $locale = null) {
00247       if ($node == null) {
00248          $settings = array('name');
00249       } else {
00250          $localeKey = $node->getAttribute('localeKey');
00251 
00252          $settings = array(
00253             'name' => __($localeKey, array(), $locale)
00254          );
00255       }
00256       return $settings;
00257    }
00258 }
00259 
00260 ?>

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