/ojs/ojs-2.1.0-1/pages/manager/SubscriptionHandler.inc.php

https://github.com/mcrider/pkpUpgradeTestSuite · PHP · 365 lines · 229 code · 80 blank · 56 comment · 68 complexity · 7a226ff82a014589338d05ba584392c4 MD5 · raw file

  1. <?php
  2. /**
  3. * SubscriptionHandler.inc.php
  4. *
  5. * Copyright (c) 2003-2004 The Public Knowledge Project
  6. * Distributed under the GNU GPL v2. For full terms see the file docs/COPYING.
  7. *
  8. * @package pages.manager
  9. *
  10. * Handle requests for subscription management functions.
  11. *
  12. * $Id: SubscriptionHandler.inc.php,v 1.11 2005/11/30 19:31:05 alec Exp $
  13. */
  14. class SubscriptionHandler extends ManagerHandler {
  15. /**
  16. * Display a list of subscriptions for the current journal.
  17. */
  18. function subscriptions() {
  19. parent::validate();
  20. SubscriptionHandler::setupTemplate();
  21. $journal = &Request::getJournal();
  22. $rangeInfo = &Handler::getRangeInfo('subscriptions');
  23. $subscriptionDao = &DAORegistry::getDAO('SubscriptionDAO');
  24. $subscriptions = &$subscriptionDao->getSubscriptionsByJournalId($journal->getJournalId(), $rangeInfo);
  25. $templateMgr = &TemplateManager::getManager();
  26. $templateMgr->assign_by_ref('subscriptions', $subscriptions);
  27. $templateMgr->assign('helpTopicId', 'journal.managementPages.subscriptions');
  28. $templateMgr->display('subscription/subscriptions.tpl');
  29. }
  30. /**
  31. * Delete a subscription.
  32. * @param $args array first parameter is the ID of the subscription to delete
  33. */
  34. function deleteSubscription($args) {
  35. parent::validate();
  36. if (isset($args) && !empty($args)) {
  37. $journal = &Request::getJournal();
  38. $subscriptionId = (int) $args[0];
  39. $subscriptionDao = &DAORegistry::getDAO('SubscriptionDAO');
  40. // Ensure subscription is for this journal
  41. if ($subscriptionDao->getSubscriptionJournalId($subscriptionId) == $journal->getJournalId()) {
  42. $subscriptionDao->deleteSubscriptionById($subscriptionId);
  43. }
  44. }
  45. Request::redirect(null, null, 'subscriptions');
  46. }
  47. /**
  48. * Display form to edit a subscription.
  49. * @param $args array optional, first parameter is the ID of the subscription to edit
  50. */
  51. function editSubscription($args = array()) {
  52. parent::validate();
  53. SubscriptionHandler::setupTemplate();
  54. $journal = &Request::getJournal();
  55. $subscriptionId = !isset($args) || empty($args) ? null : (int) $args[0];
  56. $userId = Request::getUserVar('userId');
  57. $subscriptionDao = &DAORegistry::getDAO('SubscriptionDAO');
  58. // Ensure subscription is valid and for this journal
  59. if (($subscriptionId != null && $subscriptionDao->getSubscriptionJournalId($subscriptionId) == $journal->getJournalId()) || ($subscriptionId == null && $userId)) {
  60. import('subscription.form.SubscriptionForm');
  61. $templateMgr = &TemplateManager::getManager();
  62. $templateMgr->append('pageHierarchy', array(Request::url(null, 'manager', 'subscriptions'), 'manager.subscriptions'));
  63. if ($subscriptionId == null) {
  64. $templateMgr->assign('subscriptionTitle', 'manager.subscriptions.createTitle');
  65. } else {
  66. $templateMgr->assign('subscriptionTitle', 'manager.subscriptions.editTitle');
  67. }
  68. $subscriptionForm = &new SubscriptionForm($subscriptionId, $userId);
  69. $subscriptionForm->initData();
  70. $subscriptionForm->display();
  71. } else {
  72. Request::redirect(null, null, 'subscriptions');
  73. }
  74. }
  75. /**
  76. * Display form to create new subscription.
  77. */
  78. function createSubscription() {
  79. SubscriptionHandler::editSubscription();
  80. }
  81. /**
  82. * Display a list of users from which to choose a subscriber.
  83. */
  84. function selectSubscriber() {
  85. parent::validate();
  86. $templateMgr = &TemplateManager::getManager();
  87. SubscriptionHandler::setupTemplate();
  88. $templateMgr->append('pageHierarchy', array(Request::url(null, 'manager', 'subscriptions'), 'manager.subscriptions'));
  89. $userDao = &DAORegistry::getDAO('UserDAO');
  90. $searchType = null;
  91. $searchMatch = null;
  92. $search = $searchQuery = Request::getUserVar('search');
  93. $searchInitial = Request::getUserVar('searchInitial');
  94. if (isset($search)) {
  95. $searchType = Request::getUserVar('searchField');
  96. $searchMatch = Request::getUserVar('searchMatch');
  97. } else if (isset($searchInitial)) {
  98. $searchInitial = String::strtoupper($searchInitial);
  99. $searchType = USER_FIELD_INITIAL;
  100. $search = $searchInitial;
  101. }
  102. $rangeInfo = Handler::getRangeInfo('users');
  103. $users = &$userDao->getUsersByField($searchType, $searchMatch, $search, true, $rangeInfo);
  104. $templateMgr->assign('searchField', $searchType);
  105. $templateMgr->assign('searchMatch', $searchMatch);
  106. $templateMgr->assign('search', $searchQuery);
  107. $templateMgr->assign('searchInitial', $searchInitial);
  108. $templateMgr->assign('isJournalManager', true);
  109. $templateMgr->assign('fieldOptions', Array(
  110. USER_FIELD_FIRSTNAME => 'user.firstName',
  111. USER_FIELD_LASTNAME => 'user.lastName',
  112. USER_FIELD_USERNAME => 'user.username',
  113. USER_FIELD_EMAIL => 'user.email'
  114. ));
  115. $templateMgr->assign_by_ref('users', $users);
  116. $templateMgr->assign('helpTopicId', 'journal.managementPages.subscriptions');
  117. $templateMgr->assign('subscriptionId', Request::getUserVar('subscriptionId'));
  118. $templateMgr->display('subscription/users.tpl');
  119. }
  120. /**
  121. * Save changes to a subscription.
  122. */
  123. function updateSubscription() {
  124. parent::validate();
  125. import('subscription.form.SubscriptionForm');
  126. $journal = &Request::getJournal();
  127. $subscriptionId = Request::getUserVar('subscriptionId') == null ? null : (int) Request::getUserVar('subscriptionId');
  128. $subscriptionDao = &DAORegistry::getDAO('SubscriptionDAO');
  129. if (($subscriptionId != null && $subscriptionDao->getSubscriptionJournalId($subscriptionId) == $journal->getJournalId()) || $subscriptionId == null) {
  130. $subscriptionForm = &new SubscriptionForm($subscriptionId);
  131. $subscriptionForm->readInputData();
  132. if ($subscriptionForm->validate()) {
  133. $subscriptionForm->execute();
  134. if (Request::getUserVar('createAnother')) {
  135. Request::redirect(null, null, 'selectSubscriber', null, array('subscriptionCreated', 1));
  136. } else {
  137. Request::redirect(null, null, 'subscriptions');
  138. }
  139. } else {
  140. SubscriptionHandler::setupTemplate();
  141. $templateMgr = &TemplateManager::getManager();
  142. $templateMgr->append('pageHierarchy', array(Request::url(null, 'manager', 'subscriptions'), 'manager.subscriptions'));
  143. if ($subscriptionId == null) {
  144. $templateMgr->assign('subscriptionTitle', 'manager.subscriptions.createTitle');
  145. } else {
  146. $templateMgr->assign('subscriptionTitle', 'manager.subscriptions.editTitle');
  147. }
  148. $subscriptionForm->display();
  149. }
  150. } else {
  151. Request::redirect(null, null, 'subscriptions');
  152. }
  153. }
  154. /**
  155. * Display a list of subscription types for the current journal.
  156. */
  157. function subscriptionTypes() {
  158. parent::validate();
  159. SubscriptionHandler::setupTemplate(true);
  160. $journal = &Request::getJournal();
  161. $rangeInfo = &Handler::getRangeInfo('subscriptionTypes');
  162. $subscriptionTypeDao = &DAORegistry::getDAO('SubscriptionTypeDAO');
  163. $subscriptionTypes = &$subscriptionTypeDao->getSubscriptionTypesByJournalId($journal->getJournalId(), $rangeInfo);
  164. $templateMgr = &TemplateManager::getManager();
  165. $templateMgr->assign('subscriptionTypes', $subscriptionTypes);
  166. $templateMgr->assign('helpTopicId', 'journal.managementPages.subscriptions');
  167. $templateMgr->display('subscription/subscriptionTypes.tpl');
  168. }
  169. /**
  170. * Rearrange the order of subscription types.
  171. */
  172. function moveSubscriptionType($args) {
  173. parent::validate();
  174. $subscriptionTypeId = isset($args[0])?$args[0]:0;
  175. $journal = &Request::getJournal();
  176. $subscriptionTypeDao = &DAORegistry::getDAO('SubscriptionTypeDAO');
  177. $subscriptionType = &$subscriptionTypeDao->getSubscriptionType($subscriptionTypeId);
  178. if ($subscriptionType && $subscriptionType->getJournalId() == $journal->getJournalId()) {
  179. $isDown = Request::getUserVar('dir')=='d';
  180. $subscriptionType->setSequence($subscriptionType->getSequence()+($isDown?1.5:-1.5));
  181. $subscriptionTypeDao->updateSubscriptionType($subscriptionType);
  182. $subscriptionTypeDao->resequenceSubscriptionTypes($subscriptionType->getJournalId());
  183. }
  184. Request::redirect(null, null, 'subscriptionTypes');
  185. }
  186. /**
  187. * Delete a subscription type.
  188. * @param $args array first parameter is the ID of the subscription type to delete
  189. */
  190. function deleteSubscriptionType($args) {
  191. parent::validate();
  192. if (isset($args) && !empty($args)) {
  193. $journal = &Request::getJournal();
  194. $subscriptionTypeId = (int) $args[0];
  195. $subscriptionTypeDao = &DAORegistry::getDAO('SubscriptionTypeDAO');
  196. // Ensure subscription type is for this journal
  197. if ($subscriptionTypeDao->getSubscriptionTypeJournalId($subscriptionTypeId) == $journal->getJournalId()) {
  198. $subscriptionTypeDao->deleteSubscriptionTypeById($subscriptionTypeId);
  199. }
  200. }
  201. Request::redirect(null, null, 'subscriptionTypes');
  202. }
  203. /**
  204. * Display form to edit a subscription type.
  205. * @param $args array optional, first parameter is the ID of the subscription type to edit
  206. */
  207. function editSubscriptionType($args = array()) {
  208. parent::validate();
  209. SubscriptionHandler::setupTemplate(true);
  210. $journal = &Request::getJournal();
  211. $subscriptionTypeId = !isset($args) || empty($args) ? null : (int) $args[0];
  212. $subscriptionTypeDao = &DAORegistry::getDAO('SubscriptionTypeDAO');
  213. // Ensure subscription type is valid and for this journal
  214. if (($subscriptionTypeId != null && $subscriptionTypeDao->getSubscriptionTypeJournalId($subscriptionTypeId) == $journal->getJournalId()) || $subscriptionTypeId == null) {
  215. import('subscription.form.SubscriptionTypeForm');
  216. $templateMgr = &TemplateManager::getManager();
  217. $templateMgr->append('pageHierarchy', array(Request::url(null, 'manager', 'subscriptionTypes'), 'manager.subscriptionTypes'));
  218. if ($subscriptionTypeId == null) {
  219. $templateMgr->assign('subscriptionTypeTitle', 'manager.subscriptionTypes.createTitle');
  220. } else {
  221. $templateMgr->assign('subscriptionTypeTitle', 'manager.subscriptionTypes.editTitle');
  222. }
  223. $subscriptionTypeForm = &new SubscriptionTypeForm($subscriptionTypeId);
  224. $subscriptionTypeForm->initData();
  225. $subscriptionTypeForm->display();
  226. } else {
  227. Request::redirect(null, null, 'subscriptionTypes');
  228. }
  229. }
  230. /**
  231. * Display form to create new subscription type.
  232. */
  233. function createSubscriptionType() {
  234. SubscriptionHandler::editSubscriptionType();
  235. }
  236. /**
  237. * Save changes to a subscription type.
  238. */
  239. function updateSubscriptionType() {
  240. parent::validate();
  241. import('subscription.form.SubscriptionTypeForm');
  242. $journal = &Request::getJournal();
  243. $subscriptionTypeId = Request::getUserVar('typeId') == null ? null : (int) Request::getUserVar('typeId');
  244. $subscriptionTypeDao = &DAORegistry::getDAO('SubscriptionTypeDAO');
  245. if (($subscriptionTypeId != null && $subscriptionTypeDao->getSubscriptionTypeJournalId($subscriptionTypeId) == $journal->getJournalId()) || $subscriptionTypeId == null) {
  246. $subscriptionTypeForm = &new SubscriptionTypeForm($subscriptionTypeId);
  247. $subscriptionTypeForm->readInputData();
  248. if ($subscriptionTypeForm->validate()) {
  249. $subscriptionTypeForm->execute();
  250. if (Request::getUserVar('createAnother')) {
  251. SubscriptionHandler::setupTemplate(true);
  252. $templateMgr = &TemplateManager::getManager();
  253. $templateMgr->append('pageHierarchy', array(Request::url(null, 'manager', 'subscriptionTypes'), 'manager.subscriptionTypes'));
  254. $templateMgr->assign('subscriptionTypeTitle', 'manager.subscriptionTypes.createTitle');
  255. $templateMgr->assign('subscriptionTypeCreated', '1');
  256. $subscriptionTypeForm = &new SubscriptionTypeForm($subscriptionTypeId);
  257. $subscriptionTypeForm->initData();
  258. $subscriptionTypeForm->display();
  259. } else {
  260. Request::redirect(null, null, 'subscriptionTypes');
  261. }
  262. } else {
  263. SubscriptionHandler::setupTemplate(true);
  264. $templateMgr = &TemplateManager::getManager();
  265. $templateMgr->append('pageHierarchy', array(Request::url(null, 'manager', 'subscriptionTypes'), 'manager.subscriptionTypes'));
  266. if ($subscriptionTypeId == null) {
  267. $templateMgr->assign('subscriptionTypeTitle', 'manager.subscriptionTypes.createTitle');
  268. } else {
  269. $templateMgr->assign('subscriptionTypeTitle', 'manager.subscriptionTypes.editTitle');
  270. }
  271. $subscriptionTypeForm->display();
  272. }
  273. } else {
  274. Request::redirect(null, null, 'subscriptionTypes');
  275. }
  276. }
  277. function setupTemplate($subclass = false) {
  278. parent::setupTemplate(true);
  279. if ($subclass) {
  280. $templateMgr = &TemplateManager::getManager();
  281. $templateMgr->append('pageHierarchy', array(Request::url(null, 'manager', 'subscriptions'), 'manager.subscriptions'));
  282. }
  283. }
  284. }
  285. ?>