/** * 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()); } }