Open Journal Systems  3.3.0
SubscriptionTypeDAO.inc.php
1 <?php
2 
17 import('classes.subscription.SubscriptionType');
18 
19 class SubscriptionTypeDAO extends DAO {
24  function newDataObject() {
25  return new SubscriptionType();
26  }
27 
34  function getById($typeId, $journalId = null) {
35  $params = array((int) $typeId);
36  if ($journalId) $params[] = (int) $journalId;
37 
38  $result = $this->retrieve(
39  'SELECT * FROM subscription_types WHERE type_id = ?' .
40  ($journalId?' AND journal_id = ?':''),
41  $params
42  );
43 
44  $returner = null;
45  if ($result->RecordCount() != 0) {
46  $returner = $this->_fromRow($result->GetRowAssoc(false));
47  }
48 
49  $result->Close();
50  return $returner;
51  }
52 
58  function getSubscriptionTypeName($typeId) {
59  $result = $this->retrieve(
60  'SELECT COALESCE(l.setting_value, p.setting_value) FROM subscription_type_settings l LEFT JOIN subscription_type_settings p ON (p.type_id = ? AND p.setting_name = ? AND p.locale = ?) WHERE l.type_id = ? AND l.setting_name = ? AND l.locale = ?',
61  array(
62  (int) $typeId, 'name', AppLocale::getLocale(),
63  (int) $typeId, 'name', AppLocale::getPrimaryLocale()
64  )
65  );
66 
67  $returner = isset($result->fields[0]) ? $result->fields[0] : false;
68 
69  $result->Close();
70  return $returner;
71  }
72 
79  $result = $this->retrieve(
80  'SELECT institutional FROM subscription_types WHERE type_id = ?', (int) $typeId
81  );
82 
83  $returner = isset($result->fields[0]) ? $result->fields[0] : false;
84 
85  $result->Close();
86  return $returner;
87  }
88 
94  function getSubscriptionTypeMembership($typeId) {
95  $result = $this->retrieve(
96  'SELECT membership FROM subscription_types WHERE type_id = ?', (int) $typeId
97  );
98 
99  $returner = isset($result->fields[0]) ? $result->fields[0] : false;
100 
101  $result->Close();
102  return $returner;
103  }
104 
111  $result = $this->retrieve(
112  'SELECT disable_public_display FROM subscription_types WHERE type_id = ?', (int) $typeId
113  );
114 
115  $returner = isset($result->fields[0]) ? $result->fields[0] : false;
116 
117  $result->Close();
118  return $returner;
119  }
120 
127  function subscriptionTypeExistsByTypeId($typeId, $journalId) {
128  $result = $this->retrieve(
129  'SELECT COUNT(*)
130  FROM subscription_types
131  WHERE type_id = ?
132  AND journal_id = ?',
133  array(
134  (int) $typeId,
135  (int) $journalId
136  )
137  );
138  $returner = isset($result->fields[0]) && $result->fields[0] != 0 ? true : false;
139 
140  $result->Close();
141  return $returner;
142  }
143 
149  function _fromRow($row) {
150  $subscriptionType = $this->newDataObject();
151  $subscriptionType->setId($row['type_id']);
152  $subscriptionType->setJournalId($row['journal_id']);
153  $subscriptionType->setCost($row['cost']);
154  $subscriptionType->setCurrencyCodeAlpha($row['currency_code_alpha']);
155  $subscriptionType->setDuration($row['duration']);
156  $subscriptionType->setFormat($row['format']);
157  $subscriptionType->setInstitutional($row['institutional']);
158  $subscriptionType->setMembership($row['membership']);
159  $subscriptionType->setDisablePublicDisplay($row['disable_public_display']);
160  $subscriptionType->setSequence($row['seq']);
161 
162  $this->getDataObjectSettings('subscription_type_settings', 'type_id', $row['type_id'], $subscriptionType);
163 
164  HookRegistry::call('SubscriptionTypeDAO::_fromRow', array(&$subscriptionType, &$row));
165 
166  return $subscriptionType;
167  }
168 
173  function getLocaleFieldNames() {
174  return array('name', 'description');
175  }
176 
181  function updateLocaleFields($subscriptionType) {
182  $this->updateDataObjectSettings('subscription_type_settings', $subscriptionType, array(
183  'type_id' => $subscriptionType->getId()
184  ));
185  }
186 
192  function insertObject($subscriptionType) {
193  $this->update(
194  'INSERT INTO subscription_types
195  (journal_id, cost, currency_code_alpha, duration, format, institutional, membership, disable_public_display, seq)
196  VALUES
197  (?, ?, ?, ?, ?, ?, ?, ?, ?)',
198  array(
199  (int) $subscriptionType->getJournalId(),
200  (float) $subscriptionType->getCost(),
201  $subscriptionType->getCurrencyCodeAlpha(),
202  $subscriptionType->getDuration(),
203  $subscriptionType->getFormat(),
204  (int) $subscriptionType->getInstitutional(),
205  $subscriptionType->getMembership(),
206  (int) $subscriptionType->getDisablePublicDisplay(),
207  (float) $subscriptionType->getSequence(),
208  )
209  );
210 
211  $subscriptionType->setId($this->getInsertId());
212  $this->updateLocaleFields($subscriptionType);
213  return $subscriptionType->getId();
214  }
215 
220  function updateObject($subscriptionType) {
221  $this->update(
222  'UPDATE subscription_types
223  SET
224  journal_id = ?,
225  cost = ?,
226  currency_code_alpha = ?,
227  duration = ?,
228  format = ?,
229  institutional = ?,
230  membership = ?,
231  disable_public_display = ?,
232  seq = ?
233  WHERE type_id = ?',
234  array(
235  (int) $subscriptionType->getJournalId(),
236  $subscriptionType->getCost(),
237  $subscriptionType->getCurrencyCodeAlpha(),
238  $subscriptionType->getDuration(),
239  $subscriptionType->getFormat(),
240  (int) $subscriptionType->getInstitutional(),
241  $subscriptionType->getMembership(),
242  (int) $subscriptionType->getDisablePublicDisplay(),
243  (float) $subscriptionType->getSequence(),
244  (int) $subscriptionType->getId(),
245  )
246  );
247  $this->updateLocaleFields($subscriptionType);
248  }
249 
256  function deleteById($typeId, $journalId = null) {
257  $subscriptionType = $this->getById($typeId, $journalId);
258  if ($subscriptionType) {
259  $subscriptionDao = DAORegistry::getDAO($subscriptionType->getInstitutional()?'InstitutionalSubscriptionDAO':'IndividualSubscriptionDAO');
260  $subscriptionDao->deleteById($typeId);
261  $this->update('DELETE FROM subscription_types WHERE type_id = ?', (int) $typeId);
262  $this->update('DELETE FROM subscription_type_settings WHERE type_id = ?', (int) $typeId);
263  }
264  }
265 
271  function deleteByJournal($journalId) {
272  $result = $this->retrieve(
273  'SELECT type_id
274  FROM subscription_types
275  WHERE journal_id = ?',
276  (int) $journalId
277  );
278  if ($result->RecordCount() != 0) {
279  while (!$result->EOF && $returner) {
280  $typeId = $result->fields[0];
281  $returner = $this->deleteSubscriptionTypeById($typeId);
282  $result->MoveNext();
283  }
284  }
285  $result->Close();
286  }
287 
293  function getByJournalId($journalId, $rangeInfo = null) {
294  $result = $this->retrieveRange(
295  'SELECT * FROM subscription_types WHERE journal_id = ? ORDER BY seq',
296  (int) $journalId, $rangeInfo
297  );
298 
299  return new DAOResultFactory($result, $this, '_fromRow');
300  }
301 
309  function getByInstitutional($journalId, $institutional = false, $disablePublicDisplay = null, $rangeInfo = null) {
310  $result = $this->retrieveRange(
311  'SELECT *
312  FROM subscription_types
313  WHERE journal_id = ?
314  AND institutional = ?
315  ' . ($disablePublicDisplay===true?'AND disable_public_display = 1':'') . '
316  ' . ($disablePublicDisplay===false?'AND disable_public_display = 0':'') . '
317  ORDER BY seq',
318  array((int) $journalId, (int) $institutional),
319  $rangeInfo
320  );
321 
322  return new DAOResultFactory($result, $this, '_fromRow');
323  }
324 
331  function subscriptionTypesExistByInstitutional($journalId, $institutional = false) {
332  $result = $this->retrieve(
333  'SELECT COUNT(*)
334  FROM
335  subscription_types st
336  WHERE st.journal_id = ?
337  AND st.institutional = ?',
338  array((int) $journalId, (int) $institutional)
339  );
340  $returner = isset($result->fields[0]) && $result->fields[0] != 0 ? true : false;
341  $result->Close();
342  return $returner;
343  }
344 
349  function getInsertId() {
350  return $this->_getInsertId('subscription_types', 'type_id');
351  }
352 
356  function resequenceSubscriptionTypes($journalId) {
357  $result = $this->retrieve(
358  'SELECT type_id FROM subscription_types WHERE journal_id = ? ORDER BY seq',
359  (int) $journalId
360  );
361 
362  for ($i=1; !$result->EOF; $i++) {
363  list($subscriptionTypeId) = $result->fields;
364  $this->update(
365  'UPDATE subscription_types SET seq = ? WHERE type_id = ?',
366  array(
367  (int) $i,
368  (int) $subscriptionTypeId
369  )
370  );
371 
372  $result->MoveNext();
373  }
374 
375  $result->Close();
376  }
377 }
378 
379 
SubscriptionTypeDAO\insertObject
insertObject($subscriptionType)
Definition: SubscriptionTypeDAO.inc.php:192
SubscriptionType
Definition: SubscriptionType.inc.php:25
DAOResultFactory
Wrapper around ADORecordSet providing "factory" features for generating objects from DAOs.
Definition: DAOResultFactory.inc.php:21
SubscriptionTypeDAO\deleteByJournal
deleteByJournal($journalId)
Definition: SubscriptionTypeDAO.inc.php:271
DAO\retrieveRange
& retrieveRange($sql, $params=false, $dbResultRange=null, $callHooks=true)
Definition: DAO.inc.php:176
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
SubscriptionTypeDAO\getByJournalId
getByJournalId($journalId, $rangeInfo=null)
Definition: SubscriptionTypeDAO.inc.php:293
SubscriptionTypeDAO\getSubscriptionTypeName
getSubscriptionTypeName($typeId)
Definition: SubscriptionTypeDAO.inc.php:58
SubscriptionTypeDAO\_fromRow
_fromRow($row)
Definition: SubscriptionTypeDAO.inc.php:149
SubscriptionTypeDAO\resequenceSubscriptionTypes
resequenceSubscriptionTypes($journalId)
Definition: SubscriptionTypeDAO.inc.php:356
DAO\retrieve
& retrieve($sql, $params=false, $callHooks=true)
Definition: DAO.inc.php:85
AppLocale\getPrimaryLocale
static getPrimaryLocale()
Definition: env1/MockAppLocale.inc.php:95
SubscriptionTypeDAO\getSubscriptionTypeMembership
getSubscriptionTypeMembership($typeId)
Definition: SubscriptionTypeDAO.inc.php:94
SubscriptionTypeDAO\getSubscriptionTypeDisablePublicDisplay
getSubscriptionTypeDisablePublicDisplay($typeId)
Definition: SubscriptionTypeDAO.inc.php:110
SubscriptionTypeDAO
Operations for retrieving and modifying SubscriptionType objects.
Definition: SubscriptionTypeDAO.inc.php:19
SubscriptionTypeDAO\getLocaleFieldNames
getLocaleFieldNames()
Definition: SubscriptionTypeDAO.inc.php:173
SubscriptionTypeDAO\updateObject
updateObject($subscriptionType)
Definition: SubscriptionTypeDAO.inc.php:220
DAO\update
update($sql, $params=false, $callHooks=true, $dieOnError=true)
Definition: DAO.inc.php:214
SubscriptionTypeDAO\getById
getById($typeId, $journalId=null)
Definition: SubscriptionTypeDAO.inc.php:34
SubscriptionTypeDAO\subscriptionTypeExistsByTypeId
subscriptionTypeExistsByTypeId($typeId, $journalId)
Definition: SubscriptionTypeDAO.inc.php:127
DAO\_getInsertId
_getInsertId($table='', $id='')
Definition: DAO.inc.php:255
SubscriptionTypeDAO\getInsertId
getInsertId()
Definition: SubscriptionTypeDAO.inc.php:349
DAO\getDataObjectSettings
getDataObjectSettings($tableName, $idFieldName, $idFieldValue, $dataObject)
Definition: DAO.inc.php:582
SubscriptionTypeDAO\subscriptionTypesExistByInstitutional
subscriptionTypesExistByInstitutional($journalId, $institutional=false)
Definition: SubscriptionTypeDAO.inc.php:331
SubscriptionTypeDAO\getSubscriptionTypeInstitutional
getSubscriptionTypeInstitutional($typeId)
Definition: SubscriptionTypeDAO.inc.php:78
SubscriptionTypeDAO\getByInstitutional
getByInstitutional($journalId, $institutional=false, $disablePublicDisplay=null, $rangeInfo=null)
Definition: SubscriptionTypeDAO.inc.php:309
SubscriptionTypeDAO\deleteById
deleteById($typeId, $journalId=null)
Definition: SubscriptionTypeDAO.inc.php:256
SubscriptionTypeDAO\updateLocaleFields
updateLocaleFields($subscriptionType)
Definition: SubscriptionTypeDAO.inc.php:181
DAO\updateDataObjectSettings
updateDataObjectSettings($tableName, $dataObject, $idArray)
Definition: DAO.inc.php:488
SubscriptionTypeDAO\newDataObject
newDataObject()
Definition: SubscriptionTypeDAO.inc.php:24
HookRegistry\call
static call($hookName, $args=null)
Definition: HookRegistry.inc.php:86
AppLocale\getLocale
static getLocale()
Definition: env1/MockAppLocale.inc.php:40
DAO
Operations for retrieving and modifying objects from a database.
Definition: DAO.inc.php:31