17 import(
'classes.subscription.SubscriptionType');
34 function getById($typeId, $journalId =
null) {
35 $params = array((
int) $typeId);
36 if ($journalId) $params[] = (int) $journalId;
39 'SELECT * FROM subscription_types WHERE type_id = ?' .
40 ($journalId?
' AND journal_id = ?':
''),
45 if ($result->RecordCount() != 0) {
46 $returner = $this->
_fromRow($result->GetRowAssoc(
false));
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 = ?',
67 $returner = isset($result->fields[0]) ? $result->fields[0] :
false;
80 'SELECT institutional FROM subscription_types WHERE type_id = ?', (
int) $typeId
83 $returner = isset($result->fields[0]) ? $result->fields[0] :
false;
96 'SELECT membership FROM subscription_types WHERE type_id = ?', (
int) $typeId
99 $returner = isset($result->fields[0]) ? $result->fields[0] :
false;
112 'SELECT disable_public_display FROM subscription_types WHERE type_id = ?', (
int) $typeId
115 $returner = isset($result->fields[0]) ? $result->fields[0] :
false;
130 FROM subscription_types
138 $returner = isset($result->fields[0]) && $result->fields[0] != 0 ? true :
false;
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']);
162 $this->
getDataObjectSettings(
'subscription_type_settings',
'type_id', $row[
'type_id'], $subscriptionType);
164 HookRegistry::call(
'SubscriptionTypeDAO::_fromRow', array(&$subscriptionType, &$row));
166 return $subscriptionType;
174 return array(
'name',
'description');
183 'type_id' => $subscriptionType->getId()
194 'INSERT INTO subscription_types
195 (journal_id, cost, currency_code_alpha, duration, format, institutional, membership, disable_public_display, seq)
197 (?, ?, ?, ?, ?, ?, ?, ?, ?)',
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(),
213 return $subscriptionType->getId();
222 'UPDATE subscription_types
226 currency_code_alpha = ?,
231 disable_public_display = ?,
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(),
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);
274 FROM subscription_types
275 WHERE journal_id = ?',
278 if ($result->RecordCount() != 0) {
279 while (!$result->EOF && $returner) {
280 $typeId = $result->fields[0];
281 $returner = $this->deleteSubscriptionTypeById($typeId);
295 'SELECT * FROM subscription_types WHERE journal_id = ? ORDER BY seq',
296 (
int) $journalId, $rangeInfo
309 function getByInstitutional($journalId, $institutional =
false, $disablePublicDisplay =
null, $rangeInfo =
null) {
312 FROM subscription_types
314 AND institutional = ?
315 ' . ($disablePublicDisplay===
true?
'AND disable_public_display = 1':
'') .
'
316 ' . ($disablePublicDisplay===
false?
'AND disable_public_display = 0':
'') .
'
318 array((
int) $journalId, (
int) $institutional),
335 subscription_types st
336 WHERE st.journal_id = ?
337 AND st.institutional = ?',
338 array((
int) $journalId, (
int) $institutional)
340 $returner = isset($result->fields[0]) && $result->fields[0] != 0 ? true :
false;
350 return $this->
_getInsertId(
'subscription_types',
'type_id');
358 'SELECT type_id FROM subscription_types WHERE journal_id = ? ORDER BY seq',
362 for ($i=1; !$result->EOF; $i++) {
363 list($subscriptionTypeId) = $result->fields;
365 'UPDATE subscription_types SET seq = ? WHERE type_id = ?',
368 (
int) $subscriptionTypeId