/** * Save subscription type. */ function execute() { $subscriptionTypeDao = DAORegistry::getDAO('SubscriptionTypeDAO'); $nonExpiring = null; // Suppress scrutinizer warn if (isset($this->typeId)) { $subscriptionType =& $subscriptionTypeDao->getSubscriptionType($this->typeId); $nonExpiring = $subscriptionType->getNonExpiring(); } if (!isset($subscriptionType)) { $subscriptionType = new SubscriptionType(); $nonExpiring = $this->getData('nonExpiring') == null ? 0 : $this->getData('nonExpiring'); $subscriptionType->setNonExpiring($nonExpiring); $subscriptionType->setInstitutional($this->getData('institutional') == null ? 0 : $this->getData('institutional')); } $journal = Request::getJournal(); $subscriptionType->setJournalId($journal->getId()); $subscriptionType->setName($this->getData('name'), null); // Localized $subscriptionType->setDescription($this->getData('description'), null); // Localized $subscriptionType->setCost(round($this->getData('cost'), 2)); $subscriptionType->setCurrencyCodeAlpha($this->getData('currency')); $subscriptionType->setDuration($nonExpiring ? null : (int) $this->getData('duration')); $subscriptionType->setFormat($this->getData('format')); $subscriptionType->setMembership($this->getData('membership') == null ? 0 : $this->getData('membership')); $subscriptionType->setDisablePublicDisplay($this->getData('disable_public_display') == null ? 0 : $this->getData('disable_public_display')); // Update or insert subscription type if ($subscriptionType->getTypeId() != null) { $subscriptionTypeDao->updateSubscriptionType($subscriptionType); } else { $subscriptionType->setSequence(REALLY_BIG_NUMBER); $subscriptionTypeDao->insertSubscriptionType($subscriptionType); // Re-order the subscription types so the new one is at the end of the list. $subscriptionTypeDao->resequenceSubscriptionTypes($subscriptionType->getJournalId()); } }
/** * Internal function to return a SubscriptionType object from a row. * @param $row array * @return SubscriptionType */ function &_returnSubscriptionTypeFromRow(&$row) { $subscriptionType = new SubscriptionType(); $subscriptionType->setTypeId($row['type_id']); $subscriptionType->setJournalId($row['journal_id']); $subscriptionType->setCost($row['cost']); $subscriptionType->setCurrencyCodeAlpha($row['currency_code_alpha']); $subscriptionType->setNonExpiring($row['non_expiring']); $subscriptionType->setDuration($row['duration']); $subscriptionType->setFormat($row['format']); $subscriptionType->setInstitutional($row['institutional']); $subscriptionType->setMembership($row['membership']); $subscriptionType->setDisablePublicDisplay($row['disable_public_display']); $subscriptionType->setSequence($row['seq']); $this->getDataObjectSettings('subscription_type_settings', 'type_id', $row['type_id'], $subscriptionType); HookRegistry::call('SubscriptionTypeDAO::_returnSubscriptionTypeFromRow', array(&$subscriptionType, &$row)); return $subscriptionType; }