예제 #1
0
 /**
  * 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());
     }
 }
예제 #2
0
 /**
  * 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;
 }