00001 <?php
00002
00015
00016
00017
00018 class SubscriptionHandler extends ManagerHandler {
00019
00023 function subscriptions() {
00024 parent::validate();
00025 SubscriptionHandler::setupTemplate();
00026
00027 $journal = &Request::getJournal();
00028 $rangeInfo = &Handler::getRangeInfo('subscriptions');
00029 $subscriptionDao = &DAORegistry::getDAO('SubscriptionDAO');
00030
00031
00032 $searchField = Request::getUserVar('searchField');
00033 $dateSearchField = Request::getUserVar('dateSearchField');
00034 $searchMatch = Request::getUserVar('searchMatch');
00035 $search = Request::getUserVar('search');
00036
00037 $fromDate = Request::getUserDateVar('dateFrom', 1, 1);
00038 if ($fromDate !== null) $fromDate = date('Y-m-d H:i:s', $fromDate);
00039 $toDate = Request::getUserDateVar('dateTo', 32, 12, null, 23, 59, 59);
00040 if ($toDate !== null) $toDate = date('Y-m-d H:i:s', $toDate);
00041
00042 $subscriptions = &$subscriptionDao->getSubscriptionsByJournalId($journal->getJournalId(), $searchField, $searchMatch, $search, $dateSearchField, $fromDate, $toDate, $rangeInfo);
00043
00044 $templateMgr = &TemplateManager::getManager();
00045 $templateMgr->assign_by_ref('subscriptions', $subscriptions);
00046 $templateMgr->assign('helpTopicId', 'journal.managementPages.subscriptions');
00047
00048
00049 foreach (SubscriptionHandler::getSearchFormDuplicateParameters() as $param)
00050 $templateMgr->assign($param, Request::getUserVar($param));
00051
00052 $templateMgr->assign('dateFrom', $fromDate);
00053 $templateMgr->assign('dateTo', $toDate);
00054 $templateMgr->assign('fieldOptions', SubscriptionHandler::getSearchFieldOptions());
00055 $templateMgr->assign('dateFieldOptions', SubscriptionHandler::getDateFieldOptions());
00056
00057 $templateMgr->display('subscription/subscriptions.tpl');
00058 }
00059
00066 function getSearchFormDuplicateParameters() {
00067 return array(
00068 'searchField', 'searchMatch', 'search',
00069 'dateFromMonth', 'dateFromDay', 'dateFromYear',
00070 'dateToMonth', 'dateToDay', 'dateToYear',
00071 'dateSearchField'
00072 );
00073 }
00074
00079 function getSearchFieldOptions() {
00080 return array(
00081 SUBSCRIPTION_USER => 'manager.subscriptions.user',
00082 SUBSCRIPTION_MEMBERSHIP => 'manager.subscriptions.membership',
00083 SUBSCRIPTION_DOMAIN => 'manager.subscriptions.domain',
00084 SUBSCRIPTION_IP_RANGE => 'manager.subscriptions.ipRange'
00085 );
00086 }
00087
00092 function getDateFieldOptions() {
00093 return array(
00094 SUBSCRIPTION_DATE_START => 'manager.subscriptions.dateStartSearch',
00095 SUBSCRIPTION_DATE_END => 'manager.subscriptions.dateEndSearch'
00096 );
00097 }
00098
00103 function deleteSubscription($args) {
00104 parent::validate();
00105
00106 if (isset($args) && !empty($args)) {
00107 $journal = &Request::getJournal();
00108 $subscriptionId = (int) $args[0];
00109
00110 $subscriptionDao = &DAORegistry::getDAO('SubscriptionDAO');
00111
00112
00113 if ($subscriptionDao->getSubscriptionJournalId($subscriptionId) == $journal->getJournalId()) {
00114 $subscriptionDao->deleteSubscriptionById($subscriptionId);
00115 }
00116 }
00117
00118 Request::redirect(null, null, 'subscriptions');
00119 }
00120
00125 function editSubscription($args = array()) {
00126 parent::validate();
00127 SubscriptionHandler::setupTemplate();
00128
00129 $journal = &Request::getJournal();
00130 $subscriptionId = !isset($args) || empty($args) ? null : (int) $args[0];
00131 $userId = Request::getUserVar('userId');
00132 $subscriptionDao = &DAORegistry::getDAO('SubscriptionDAO');
00133
00134
00135 if (($subscriptionId != null && $subscriptionDao->getSubscriptionJournalId($subscriptionId) == $journal->getJournalId()) || ($subscriptionId == null && $userId)) {
00136 import('subscription.form.SubscriptionForm');
00137
00138 $templateMgr = &TemplateManager::getManager();
00139 $templateMgr->append('pageHierarchy', array(Request::url(null, 'manager', 'subscriptions'), 'manager.subscriptions'));
00140
00141 if ($subscriptionId == null) {
00142 $templateMgr->assign('subscriptionTitle', 'manager.subscriptions.createTitle');
00143 } else {
00144 $templateMgr->assign('subscriptionTitle', 'manager.subscriptions.editTitle');
00145 }
00146
00147 $subscriptionForm = &new SubscriptionForm($subscriptionId, $userId);
00148 $subscriptionForm->initData();
00149 $subscriptionForm->display();
00150
00151 } else {
00152 Request::redirect(null, null, 'subscriptions');
00153 }
00154 }
00155
00159 function createSubscription() {
00160 SubscriptionHandler::editSubscription();
00161 }
00162
00166 function selectSubscriber() {
00167 parent::validate();
00168 $templateMgr = &TemplateManager::getManager();
00169 SubscriptionHandler::setupTemplate();
00170 $templateMgr->append('pageHierarchy', array(Request::url(null, 'manager', 'subscriptions'), 'manager.subscriptions'));
00171
00172 $userDao = &DAORegistry::getDAO('UserDAO');
00173
00174 $searchType = null;
00175 $searchMatch = null;
00176 $search = $searchQuery = Request::getUserVar('search');
00177 $searchInitial = Request::getUserVar('searchInitial');
00178 if (!empty($search)) {
00179 $searchType = Request::getUserVar('searchField');
00180 $searchMatch = Request::getUserVar('searchMatch');
00181
00182 } else if (isset($searchInitial)) {
00183 $searchInitial = String::strtoupper($searchInitial);
00184 $searchType = USER_FIELD_INITIAL;
00185 $search = $searchInitial;
00186 }
00187
00188 $rangeInfo = Handler::getRangeInfo('users');
00189
00190 $users = &$userDao->getUsersByField($searchType, $searchMatch, $search, true, $rangeInfo);
00191
00192 $templateMgr->assign('searchField', $searchType);
00193 $templateMgr->assign('searchMatch', $searchMatch);
00194 $templateMgr->assign('search', $searchQuery);
00195 $templateMgr->assign('searchInitial', Request::getUserVar('searchInitial'));
00196
00197 $templateMgr->assign('isJournalManager', true);
00198
00199 $templateMgr->assign('fieldOptions', Array(
00200 USER_FIELD_FIRSTNAME => 'user.firstName',
00201 USER_FIELD_LASTNAME => 'user.lastName',
00202 USER_FIELD_USERNAME => 'user.username',
00203 USER_FIELD_EMAIL => 'user.email'
00204 ));
00205 $templateMgr->assign_by_ref('users', $users);
00206 $templateMgr->assign('helpTopicId', 'journal.managementPages.subscriptions');
00207 $templateMgr->assign('subscriptionId', Request::getUserVar('subscriptionId'));
00208 $templateMgr->assign('alphaList', explode(' ', Locale::translate('common.alphaList')));
00209 $templateMgr->display('subscription/users.tpl');
00210 }
00211
00215 function updateSubscription() {
00216 parent::validate();
00217
00218 import('subscription.form.SubscriptionForm');
00219
00220 $journal = &Request::getJournal();
00221 $subscriptionId = Request::getUserVar('subscriptionId') == null ? null : (int) Request::getUserVar('subscriptionId');
00222 $subscriptionDao = &DAORegistry::getDAO('SubscriptionDAO');
00223
00224 if (($subscriptionId != null && $subscriptionDao->getSubscriptionJournalId($subscriptionId) == $journal->getJournalId()) || $subscriptionId == null) {
00225
00226 $subscriptionForm = &new SubscriptionForm($subscriptionId);
00227 $subscriptionForm->readInputData();
00228
00229 if ($subscriptionForm->validate()) {
00230 $subscriptionForm->execute();
00231
00232 if (Request::getUserVar('createAnother')) {
00233 Request::redirect(null, null, 'selectSubscriber', null, array('subscriptionCreated', 1));
00234 } else {
00235 Request::redirect(null, null, 'subscriptions');
00236 }
00237
00238 } else {
00239 SubscriptionHandler::setupTemplate();
00240
00241 $templateMgr = &TemplateManager::getManager();
00242 $templateMgr->append('pageHierarchy', array(Request::url(null, 'manager', 'subscriptions'), 'manager.subscriptions'));
00243
00244 if ($subscriptionId == null) {
00245 $templateMgr->assign('subscriptionTitle', 'manager.subscriptions.createTitle');
00246 } else {
00247 $templateMgr->assign('subscriptionTitle', 'manager.subscriptions.editTitle');
00248 }
00249
00250 $subscriptionForm->display();
00251 }
00252
00253 } else {
00254 Request::redirect(null, null, 'subscriptions');
00255 }
00256 }
00257
00261 function subscriptionTypes() {
00262 parent::validate();
00263 SubscriptionHandler::setupTemplate(true);
00264
00265 $journal = &Request::getJournal();
00266 $rangeInfo = &Handler::getRangeInfo('subscriptionTypes');
00267 $subscriptionTypeDao = &DAORegistry::getDAO('SubscriptionTypeDAO');
00268 $subscriptionTypes = &$subscriptionTypeDao->getSubscriptionTypesByJournalId($journal->getJournalId(), $rangeInfo);
00269
00270 $templateMgr = &TemplateManager::getManager();
00271 $templateMgr->assign('subscriptionTypes', $subscriptionTypes);
00272 $templateMgr->assign('helpTopicId', 'journal.managementPages.subscriptions');
00273
00274 $templateMgr->display('subscription/subscriptionTypes.tpl');
00275 }
00276
00280 function moveSubscriptionType($args) {
00281 parent::validate();
00282
00283 $subscriptionTypeId = isset($args[0])?$args[0]:0;
00284 $journal = &Request::getJournal();
00285
00286 $subscriptionTypeDao = &DAORegistry::getDAO('SubscriptionTypeDAO');
00287 $subscriptionType = &$subscriptionTypeDao->getSubscriptionType($subscriptionTypeId);
00288
00289 if ($subscriptionType && $subscriptionType->getJournalId() == $journal->getJournalId()) {
00290 $isDown = Request::getUserVar('dir')=='d';
00291 $subscriptionType->setSequence($subscriptionType->getSequence()+($isDown?1.5:-1.5));
00292 $subscriptionTypeDao->updateSubscriptionType($subscriptionType);
00293 $subscriptionTypeDao->resequenceSubscriptionTypes($subscriptionType->getJournalId());
00294 }
00295
00296 Request::redirect(null, null, 'subscriptionTypes');
00297 }
00298
00303 function deleteSubscriptionType($args) {
00304 parent::validate();
00305
00306 if (isset($args) && !empty($args)) {
00307 $journal = &Request::getJournal();
00308 $subscriptionTypeId = (int) $args[0];
00309
00310 $subscriptionTypeDao = &DAORegistry::getDAO('SubscriptionTypeDAO');
00311
00312
00313 if ($subscriptionTypeDao->getSubscriptionTypeJournalId($subscriptionTypeId) == $journal->getJournalId()) {
00314 $subscriptionTypeDao->deleteSubscriptionTypeById($subscriptionTypeId);
00315 }
00316 }
00317
00318 Request::redirect(null, null, 'subscriptionTypes');
00319 }
00320
00325 function editSubscriptionType($args = array()) {
00326 parent::validate();
00327 SubscriptionHandler::setupTemplate(true);
00328
00329 $journal = &Request::getJournal();
00330 $subscriptionTypeId = !isset($args) || empty($args) ? null : (int) $args[0];
00331 $subscriptionTypeDao = &DAORegistry::getDAO('SubscriptionTypeDAO');
00332
00333
00334 if (($subscriptionTypeId != null && $subscriptionTypeDao->getSubscriptionTypeJournalId($subscriptionTypeId) == $journal->getJournalId()) || $subscriptionTypeId == null) {
00335
00336 import('subscription.form.SubscriptionTypeForm');
00337
00338 $templateMgr = &TemplateManager::getManager();
00339 $templateMgr->append('pageHierarchy', array(Request::url(null, 'manager', 'subscriptionTypes'), 'manager.subscriptionTypes'));
00340
00341 if ($subscriptionTypeId == null) {
00342 $templateMgr->assign('subscriptionTypeTitle', 'manager.subscriptionTypes.createTitle');
00343 } else {
00344 $templateMgr->assign('subscriptionTypeTitle', 'manager.subscriptionTypes.editTitle');
00345 }
00346
00347 $subscriptionTypeForm = &new SubscriptionTypeForm($subscriptionTypeId);
00348 if ($subscriptionTypeForm->isLocaleResubmit()) {
00349 $subscriptionTypeForm->readInputData();
00350 } else {
00351 $subscriptionTypeForm->initData();
00352 }
00353 $subscriptionTypeForm->display();
00354
00355 } else {
00356 Request::redirect(null, null, 'subscriptionTypes');
00357 }
00358 }
00359
00363 function createSubscriptionType() {
00364 SubscriptionHandler::editSubscriptionType();
00365 }
00366
00370 function updateSubscriptionType() {
00371 parent::validate();
00372
00373 import('subscription.form.SubscriptionTypeForm');
00374
00375 $journal = &Request::getJournal();
00376 $subscriptionTypeId = Request::getUserVar('typeId') == null ? null : (int) Request::getUserVar('typeId');
00377 $subscriptionTypeDao = &DAORegistry::getDAO('SubscriptionTypeDAO');
00378
00379 if (($subscriptionTypeId != null && $subscriptionTypeDao->getSubscriptionTypeJournalId($subscriptionTypeId) == $journal->getJournalId()) || $subscriptionTypeId == null) {
00380
00381 $subscriptionTypeForm = &new SubscriptionTypeForm($subscriptionTypeId);
00382 $subscriptionTypeForm->readInputData();
00383
00384 if ($subscriptionTypeForm->validate()) {
00385 $subscriptionTypeForm->execute();
00386
00387 if (Request::getUserVar('createAnother')) {
00388 SubscriptionHandler::setupTemplate(true);
00389
00390 $templateMgr = &TemplateManager::getManager();
00391 $templateMgr->append('pageHierarchy', array(Request::url(null, 'manager', 'subscriptionTypes'), 'manager.subscriptionTypes'));
00392 $templateMgr->assign('subscriptionTypeTitle', 'manager.subscriptionTypes.createTitle');
00393 $templateMgr->assign('subscriptionTypeCreated', '1');
00394
00395 $subscriptionTypeForm = &new SubscriptionTypeForm($subscriptionTypeId);
00396 $subscriptionTypeForm->initData();
00397 $subscriptionTypeForm->display();
00398
00399 } else {
00400 Request::redirect(null, null, 'subscriptionTypes');
00401 }
00402
00403 } else {
00404 SubscriptionHandler::setupTemplate(true);
00405
00406 $templateMgr = &TemplateManager::getManager();
00407 $templateMgr->append('pageHierarchy', array(Request::url(null, 'manager', 'subscriptionTypes'), 'manager.subscriptionTypes'));
00408
00409 if ($subscriptionTypeId == null) {
00410 $templateMgr->assign('subscriptionTypeTitle', 'manager.subscriptionTypes.createTitle');
00411 } else {
00412 $templateMgr->assign('subscriptionTypeTitle', 'manager.subscriptionTypes.editTitle');
00413 }
00414
00415 $subscriptionTypeForm->display();
00416 }
00417
00418 } else {
00419 Request::redirect(null, null, 'subscriptionTypes');
00420 }
00421 }
00422
00426 function subscriptionPolicies() {
00427 parent::validate();
00428 SubscriptionHandler::setupTemplate(true);
00429
00430 import('subscription.form.SubscriptionPolicyForm');
00431
00432 $templateMgr = &TemplateManager::getManager();
00433 $templateMgr->assign('helpTopicId', 'journal.managementPages.subscriptions');
00434
00435 if (Config::getVar('general', 'scheduled_tasks')) {
00436 $templateMgr->assign('scheduledTasksEnabled', true);
00437 }
00438
00439 $subscriptionPolicyForm = &new SubscriptionPolicyForm();
00440 if ($subscriptionPolicyForm->isLocaleResubmit()) {
00441 $subscriptionPolicyForm->readInputData();
00442 } else {
00443 $subscriptionPolicyForm->initData();
00444 }
00445 $subscriptionPolicyForm->display();
00446 }
00447
00451 function saveSubscriptionPolicies($args = array()) {
00452 parent::validate();
00453
00454 import('subscription.form.SubscriptionPolicyForm');
00455
00456 $subscriptionPolicyForm = &new SubscriptionPolicyForm();
00457 $subscriptionPolicyForm->readInputData();
00458
00459 if ($subscriptionPolicyForm->validate()) {
00460 $subscriptionPolicyForm->execute();
00461
00462 SubscriptionHandler::setupTemplate(true);
00463
00464 $templateMgr = &TemplateManager::getManager();
00465 $templateMgr->assign('helpTopicId', 'journal.managementPages.subscriptions');
00466 $templateMgr->assign('subscriptionPoliciesSaved', '1');
00467
00468 if (Config::getVar('general', 'scheduled_tasks')) {
00469 $templateMgr->assign('scheduledTasksEnabled', true);
00470 }
00471
00472 $subscriptionPolicyForm->display();
00473 } else {
00474 $templateMgr = &TemplateManager::getManager();
00475 $templateMgr->assign('helpTopicId', 'journal.managementPages.subscriptions');
00476
00477 if (Config::getVar('general', 'scheduled_tasks')) {
00478 $templateMgr->assign('scheduledTasksEnabled', true);
00479 }
00480
00481 $subscriptionPolicyForm->display();
00482 }
00483 }
00484
00485 function setupTemplate($subclass = false) {
00486 parent::setupTemplate(true);
00487 if ($subclass) {
00488 $templateMgr = &TemplateManager::getManager();
00489 $templateMgr->append('pageHierarchy', array(Request::url(null, 'manager', 'subscriptions'), 'manager.subscriptions'));
00490 }
00491 }
00492
00493 }
00494
00495 ?>