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 ?>