00001 <?php
00002
00015
00016
00017
00018 class SubscriptionManagerHandler extends Handler {
00019 function index() {
00020 SubscriptionManagerHandler::subscriptions();
00021 }
00022
00026 function subscriptions() {
00027 SubscriptionManagerHandler::validate();
00028 SubscriptionManagerHandler::setupTemplate();
00029
00030 $journal = &Request::getJournal();
00031 $rangeInfo = &Handler::getRangeInfo('subscriptions');
00032 $subscriptionDao = &DAORegistry::getDAO('SubscriptionDAO');
00033
00034
00035 $searchField = Request::getUserVar('searchField');
00036 $dateSearchField = Request::getUserVar('dateSearchField');
00037 $searchMatch = Request::getUserVar('searchMatch');
00038 $search = Request::getUserVar('search');
00039
00040 $fromDate = Request::getUserDateVar('dateFrom', 1, 1);
00041 if ($fromDate !== null) $fromDate = date('Y-m-d H:i:s', $fromDate);
00042 $toDate = Request::getUserDateVar('dateTo', 32, 12, null, 23, 59, 59);
00043 if ($toDate !== null) $toDate = date('Y-m-d H:i:s', $toDate);
00044
00045 $subscriptions = &$subscriptionDao->getSubscriptionsByJournalId($journal->getJournalId(), $searchField, $searchMatch, $search, $dateSearchField, $fromDate, $toDate, $rangeInfo);
00046
00047 $templateMgr = &TemplateManager::getManager();
00048 $templateMgr->assign_by_ref('subscriptions', $subscriptions);
00049 $templateMgr->assign('helpTopicId', 'journal.managementPages.subscriptions');
00050
00051
00052 foreach (SubscriptionManagerHandler::getSearchFormDuplicateParameters() as $param)
00053 $templateMgr->assign($param, Request::getUserVar($param));
00054
00055 $templateMgr->assign('dateFrom', $fromDate);
00056 $templateMgr->assign('dateTo', $toDate);
00057 $templateMgr->assign('fieldOptions', SubscriptionManagerHandler::getSearchFieldOptions());
00058 $templateMgr->assign('dateFieldOptions', SubscriptionManagerHandler::getDateFieldOptions());
00059
00060 $templateMgr->display('subscription/subscriptions.tpl');
00061 }
00062
00069 function getSearchFormDuplicateParameters() {
00070 return array(
00071 'searchField', 'searchMatch', 'search',
00072 'dateFromMonth', 'dateFromDay', 'dateFromYear',
00073 'dateToMonth', 'dateToDay', 'dateToYear',
00074 'dateSearchField'
00075 );
00076 }
00077
00082 function getSearchFieldOptions() {
00083 return array(
00084 SUBSCRIPTION_USER => 'manager.subscriptions.user',
00085 SUBSCRIPTION_MEMBERSHIP => 'manager.subscriptions.membership',
00086 SUBSCRIPTION_DOMAIN => 'manager.subscriptions.domain',
00087 SUBSCRIPTION_IP_RANGE => 'manager.subscriptions.ipRange'
00088 );
00089 }
00090
00095 function getDateFieldOptions() {
00096 return array(
00097 SUBSCRIPTION_DATE_START => 'manager.subscriptions.dateStartSearch',
00098 SUBSCRIPTION_DATE_END => 'manager.subscriptions.dateEndSearch'
00099 );
00100 }
00101
00106 function deleteSubscription($args) {
00107 SubscriptionManagerHandler::validate();
00108
00109 if (isset($args) && !empty($args)) {
00110 $journal = &Request::getJournal();
00111 $subscriptionId = (int) $args[0];
00112
00113 $subscriptionDao = &DAORegistry::getDAO('SubscriptionDAO');
00114
00115
00116 if ($subscriptionDao->getSubscriptionJournalId($subscriptionId) == $journal->getJournalId()) {
00117 $subscriptionDao->deleteSubscriptionById($subscriptionId);
00118 }
00119 }
00120
00121 Request::redirect(null, null, 'subscriptions');
00122 }
00123
00128 function editSubscription($args = array()) {
00129 SubscriptionManagerHandler::validate();
00130 SubscriptionManagerHandler::setupTemplate();
00131
00132 $journal = &Request::getJournal();
00133 $subscriptionId = !isset($args) || empty($args) ? null : (int) $args[0];
00134 $userId = Request::getUserVar('userId');
00135 $subscriptionDao = &DAORegistry::getDAO('SubscriptionDAO');
00136
00137
00138 if (($subscriptionId != null && $subscriptionDao->getSubscriptionJournalId($subscriptionId) == $journal->getJournalId()) || ($subscriptionId == null && $userId)) {
00139 import('subscription.form.SubscriptionForm');
00140
00141 $templateMgr = &TemplateManager::getManager();
00142 $templateMgr->append('pageHierarchy', array(Request::url(null, 'manager', 'subscriptions'), 'manager.subscriptions'));
00143
00144 if ($subscriptionId == null) {
00145 $templateMgr->assign('subscriptionTitle', 'manager.subscriptions.createTitle');
00146 } else {
00147 $templateMgr->assign('subscriptionTitle', 'manager.subscriptions.editTitle');
00148 }
00149
00150 $subscriptionForm = &new SubscriptionForm($subscriptionId, $userId);
00151 $subscriptionForm->initData();
00152 $subscriptionForm->display();
00153
00154 } else {
00155 Request::redirect(null, null, 'subscriptions');
00156 }
00157 }
00158
00162 function createSubscription() {
00163 SubscriptionManagerHandler::editSubscription();
00164 }
00165
00169 function selectSubscriber() {
00170 SubscriptionManagerHandler::validate();
00171 $templateMgr = &TemplateManager::getManager();
00172 SubscriptionManagerHandler::setupTemplate();
00173 $templateMgr->append('pageHierarchy', array(Request::url(null, 'manager', 'subscriptions'), 'manager.subscriptions'));
00174
00175 $userDao = &DAORegistry::getDAO('UserDAO');
00176
00177 $searchType = null;
00178 $searchMatch = null;
00179 $search = $searchQuery = Request::getUserVar('search');
00180 $searchInitial = Request::getUserVar('searchInitial');
00181 if (!empty($search)) {
00182 $searchType = Request::getUserVar('searchField');
00183 $searchMatch = Request::getUserVar('searchMatch');
00184
00185 } else if (isset($searchInitial)) {
00186 $searchInitial = String::strtoupper($searchInitial);
00187 $searchType = USER_FIELD_INITIAL;
00188 $search = $searchInitial;
00189 }
00190
00191 $rangeInfo = Handler::getRangeInfo('users');
00192
00193 $users = &$userDao->getUsersByField($searchType, $searchMatch, $search, true, $rangeInfo);
00194
00195 $templateMgr->assign('searchField', $searchType);
00196 $templateMgr->assign('searchMatch', $searchMatch);
00197 $templateMgr->assign('search', $searchQuery);
00198 $templateMgr->assign('searchInitial', Request::getUserVar('searchInitial'));
00199
00200 $templateMgr->assign('isJournalManager', false);
00201
00202 $templateMgr->assign('fieldOptions', Array(
00203 USER_FIELD_FIRSTNAME => 'user.firstName',
00204 USER_FIELD_LASTNAME => 'user.lastName',
00205 USER_FIELD_USERNAME => 'user.username',
00206 USER_FIELD_EMAIL => 'user.email'
00207 ));
00208 $templateMgr->assign_by_ref('users', $users);
00209 $templateMgr->assign('helpTopicId', 'journal.managementPages.subscriptions');
00210 $templateMgr->assign('subscriptionId', Request::getUserVar('subscriptionId'));
00211 $templateMgr->assign('alphaList', explode(' ', Locale::translate('common.alphaList')));
00212 $templateMgr->display('subscription/users.tpl');
00213 }
00214
00218 function updateSubscription() {
00219 SubscriptionManagerHandler::validate();
00220
00221 import('subscription.form.SubscriptionForm');
00222
00223 $journal = &Request::getJournal();
00224 $subscriptionId = Request::getUserVar('subscriptionId') == null ? null : (int) Request::getUserVar('subscriptionId');
00225 $subscriptionDao = &DAORegistry::getDAO('SubscriptionDAO');
00226
00227 if (($subscriptionId != null && $subscriptionDao->getSubscriptionJournalId($subscriptionId) == $journal->getJournalId()) || $subscriptionId == null) {
00228
00229 $subscriptionForm = &new SubscriptionForm($subscriptionId);
00230 $subscriptionForm->readInputData();
00231
00232 if ($subscriptionForm->validate()) {
00233 $subscriptionForm->execute();
00234
00235 if (Request::getUserVar('createAnother')) {
00236 Request::redirect(null, null, 'selectSubscriber', null, array('subscriptionCreated', 1));
00237 } else {
00238 Request::redirect(null, null, 'subscriptions');
00239 }
00240
00241 } else {
00242 SubscriptionManagerHandler::setupTemplate();
00243
00244 $templateMgr = &TemplateManager::getManager();
00245 $templateMgr->append('pageHierarchy', array(Request::url(null, 'manager', 'subscriptions'), 'manager.subscriptions'));
00246
00247 if ($subscriptionId == null) {
00248 $templateMgr->assign('subscriptionTitle', 'manager.subscriptions.createTitle');
00249 } else {
00250 $templateMgr->assign('subscriptionTitle', 'manager.subscriptions.editTitle');
00251 }
00252
00253 $subscriptionForm->display();
00254 }
00255
00256 } else {
00257 Request::redirect(null, null, 'subscriptions');
00258 }
00259 }
00260
00264 function subscriptionTypes() {
00265 SubscriptionManagerHandler::validate();
00266 SubscriptionManagerHandler::setupTemplate(true);
00267
00268 $journal = &Request::getJournal();
00269 $rangeInfo = &Handler::getRangeInfo('subscriptionTypes');
00270 $subscriptionTypeDao = &DAORegistry::getDAO('SubscriptionTypeDAO');
00271 $subscriptionTypes = &$subscriptionTypeDao->getSubscriptionTypesByJournalId($journal->getJournalId(), $rangeInfo);
00272
00273 $templateMgr = &TemplateManager::getManager();
00274 $templateMgr->assign('subscriptionTypes', $subscriptionTypes);
00275 $templateMgr->assign('helpTopicId', 'journal.managementPages.subscriptions');
00276
00277 $templateMgr->display('subscription/subscriptionTypes.tpl');
00278 }
00279
00283 function moveSubscriptionType($args) {
00284 SubscriptionManagerHandler::validate();
00285
00286 $subscriptionTypeId = isset($args[0])?$args[0]:0;
00287 $journal = &Request::getJournal();
00288
00289 $subscriptionTypeDao = &DAORegistry::getDAO('SubscriptionTypeDAO');
00290 $subscriptionType = &$subscriptionTypeDao->getSubscriptionType($subscriptionTypeId);
00291
00292 if ($subscriptionType && $subscriptionType->getJournalId() == $journal->getJournalId()) {
00293 $isDown = Request::getUserVar('dir')=='d';
00294 $subscriptionType->setSequence($subscriptionType->getSequence()+($isDown?1.5:-1.5));
00295 $subscriptionTypeDao->updateSubscriptionType($subscriptionType);
00296 $subscriptionTypeDao->resequenceSubscriptionTypes($subscriptionType->getJournalId());
00297 }
00298
00299 Request::redirect(null, null, 'subscriptionTypes');
00300 }
00301
00306 function deleteSubscriptionType($args) {
00307 SubscriptionManagerHandler::validate();
00308
00309 if (isset($args) && !empty($args)) {
00310 $journal = &Request::getJournal();
00311 $subscriptionTypeId = (int) $args[0];
00312
00313 $subscriptionTypeDao = &DAORegistry::getDAO('SubscriptionTypeDAO');
00314
00315
00316 if ($subscriptionTypeDao->getSubscriptionTypeJournalId($subscriptionTypeId) == $journal->getJournalId()) {
00317 $subscriptionTypeDao->deleteSubscriptionTypeById($subscriptionTypeId);
00318 }
00319 }
00320
00321 Request::redirect(null, null, 'subscriptionTypes');
00322 }
00323
00328 function editSubscriptionType($args = array()) {
00329 SubscriptionManagerHandler::validate();
00330 SubscriptionManagerHandler::setupTemplate(true);
00331
00332 $journal = &Request::getJournal();
00333 $subscriptionTypeId = !isset($args) || empty($args) ? null : (int) $args[0];
00334 $subscriptionTypeDao = &DAORegistry::getDAO('SubscriptionTypeDAO');
00335
00336
00337 if (($subscriptionTypeId != null && $subscriptionTypeDao->getSubscriptionTypeJournalId($subscriptionTypeId) == $journal->getJournalId()) || $subscriptionTypeId == null) {
00338
00339 import('subscription.form.SubscriptionTypeForm');
00340
00341 $templateMgr = &TemplateManager::getManager();
00342 $templateMgr->append('pageHierarchy', array(Request::url(null, 'manager', 'subscriptionTypes'), 'manager.subscriptionTypes'));
00343
00344 if ($subscriptionTypeId == null) {
00345 $templateMgr->assign('subscriptionTypeTitle', 'manager.subscriptionTypes.createTitle');
00346 } else {
00347 $templateMgr->assign('subscriptionTypeTitle', 'manager.subscriptionTypes.editTitle');
00348 }
00349
00350 $subscriptionTypeForm = &new SubscriptionTypeForm($subscriptionTypeId);
00351 if ($subscriptionTypeForm->isLocaleResubmit()) {
00352 $subscriptionTypeForm->readInputData();
00353 } else {
00354 $subscriptionTypeForm->initData();
00355 }
00356 $subscriptionTypeForm->display();
00357
00358 } else {
00359 Request::redirect(null, null, 'subscriptionTypes');
00360 }
00361 }
00362
00366 function createSubscriptionType() {
00367 SubscriptionManagerHandler::editSubscriptionType();
00368 }
00369
00373 function updateSubscriptionType() {
00374 SubscriptionManagerHandler::validate();
00375
00376 import('subscription.form.SubscriptionTypeForm');
00377
00378 $journal = &Request::getJournal();
00379 $subscriptionTypeId = Request::getUserVar('typeId') == null ? null : (int) Request::getUserVar('typeId');
00380 $subscriptionTypeDao = &DAORegistry::getDAO('SubscriptionTypeDAO');
00381
00382 if (($subscriptionTypeId != null && $subscriptionTypeDao->getSubscriptionTypeJournalId($subscriptionTypeId) == $journal->getJournalId()) || $subscriptionTypeId == null) {
00383
00384 $subscriptionTypeForm = &new SubscriptionTypeForm($subscriptionTypeId);
00385 $subscriptionTypeForm->readInputData();
00386
00387 if ($subscriptionTypeForm->validate()) {
00388 $subscriptionTypeForm->execute();
00389
00390 if (Request::getUserVar('createAnother')) {
00391 SubscriptionManagerHandler::setupTemplate(true);
00392
00393 $templateMgr = &TemplateManager::getManager();
00394 $templateMgr->append('pageHierarchy', array(Request::url(null, 'manager', 'subscriptionTypes'), 'manager.subscriptionTypes'));
00395 $templateMgr->assign('subscriptionTypeTitle', 'manager.subscriptionTypes.createTitle');
00396 $templateMgr->assign('subscriptionTypeCreated', '1');
00397
00398 $subscriptionTypeForm = &new SubscriptionTypeForm($subscriptionTypeId);
00399 $subscriptionTypeForm->initData();
00400 $subscriptionTypeForm->display();
00401
00402 } else {
00403 Request::redirect(null, null, 'subscriptionTypes');
00404 }
00405
00406 } else {
00407 SubscriptionManagerHandler::setupTemplate(true);
00408
00409 $templateMgr = &TemplateManager::getManager();
00410 $templateMgr->append('pageHierarchy', array(Request::url(null, 'manager', 'subscriptionTypes'), 'manager.subscriptionTypes'));
00411
00412 if ($subscriptionTypeId == null) {
00413 $templateMgr->assign('subscriptionTypeTitle', 'manager.subscriptionTypes.createTitle');
00414 } else {
00415 $templateMgr->assign('subscriptionTypeTitle', 'manager.subscriptionTypes.editTitle');
00416 }
00417
00418 $subscriptionTypeForm->display();
00419 }
00420
00421 } else {
00422 Request::redirect(null, null, 'subscriptionTypes');
00423 }
00424 }
00425
00429 function subscriptionPolicies() {
00430 SubscriptionManagerHandler::validate();
00431 SubscriptionManagerHandler::setupTemplate(true);
00432
00433 import('subscription.form.SubscriptionPolicyForm');
00434
00435 $templateMgr = &TemplateManager::getManager();
00436 $templateMgr->assign('helpTopicId', 'journal.managementPages.subscriptions');
00437
00438 if (Config::getVar('general', 'scheduled_tasks')) {
00439 $templateMgr->assign('scheduledTasksEnabled', true);
00440 }
00441
00442 $subscriptionPolicyForm = &new SubscriptionPolicyForm();
00443 if ($subscriptionPolicyForm->isLocaleResubmit()) {
00444 $subscriptionPolicyForm->readInputData();
00445 } else {
00446 $subscriptionPolicyForm->initData();
00447 }
00448 $subscriptionPolicyForm->display();
00449 }
00450
00454 function saveSubscriptionPolicies($args = array()) {
00455 SubscriptionManagerHandler::validate();
00456
00457 import('subscription.form.SubscriptionPolicyForm');
00458
00459 $subscriptionPolicyForm = &new SubscriptionPolicyForm();
00460 $subscriptionPolicyForm->readInputData();
00461
00462 if ($subscriptionPolicyForm->validate()) {
00463 $subscriptionPolicyForm->execute();
00464
00465 SubscriptionManagerHandler::setupTemplate(true);
00466
00467 $templateMgr = &TemplateManager::getManager();
00468 $templateMgr->assign('helpTopicId', 'journal.managementPages.subscriptions');
00469 $templateMgr->assign('subscriptionPoliciesSaved', '1');
00470
00471 if (Config::getVar('general', 'scheduled_tasks')) {
00472 $templateMgr->assign('scheduledTasksEnabled', true);
00473 }
00474
00475 $subscriptionPolicyForm->display();
00476 } else {
00477 $templateMgr = &TemplateManager::getManager();
00478 $templateMgr->assign('helpTopicId', 'journal.managementPages.subscriptions');
00479
00480 if (Config::getVar('general', 'scheduled_tasks')) {
00481 $templateMgr->assign('scheduledTasksEnabled', true);
00482 }
00483
00484 $subscriptionPolicyForm->display();
00485 }
00486 }
00487
00493 function validate() {
00494 parent::validate();
00495 $journal =& Request::getJournal();
00496 if (!$journal || !Validation::isSubscriptionManager()) {
00497 Validation::redirectLogin();
00498 }
00499 }
00500
00505 function createUser($args = array()) {
00506 SubscriptionManagerHandler::validate();
00507 SubscriptionManagerHandler::setupTemplate(true);
00508
00509 $journal = &Request::getJournal();
00510
00511 $templateMgr = &TemplateManager::getManager();
00512
00513 import('manager.form.UserManagementForm');
00514
00515 $templateMgr->assign('currentUrl', Request::url(null, null, 'createUser'));
00516 $userForm = &new UserManagementForm();
00517 if ($userForm->isLocaleResubmit()) {
00518 $userForm->readInputData();
00519 } else {
00520 $userForm->initData();
00521 }
00522 $userForm->display();
00523 }
00524
00528 function updateUser() {
00529 SubscriptionManagerHandler::validate();
00530
00531 $journal = &Request::getJournal();
00532
00533 import('manager.form.UserManagementForm');
00534
00535 $userForm = &new UserManagementForm();
00536 $userForm->readInputData();
00537
00538 if ($userForm->validate()) {
00539 $userForm->execute();
00540
00541 if (Request::getUserVar('createAnother')) {
00542 $templateMgr = &TemplateManager::getManager();
00543 $templateMgr->assign('currentUrl', Request::url(null, null, 'index'));
00544 $templateMgr->assign('userCreated', true);
00545 $userForm = &new UserManagementForm();
00546 $userForm->initData();
00547 $userForm->display();
00548
00549 } else {
00550 Request::redirect(null, null, 'selectSubscriber');
00551 }
00552
00553 } else {
00554 SubscriptionManagerHandler::setupTemplate(true);
00555 $userForm->display();
00556 }
00557 }
00558
00563 function setupTemplate($subclass = false) {
00564 $templateMgr = &TemplateManager::getManager();
00565 $templateMgr->assign('pageHierarchy',
00566 $subclass ? array(array(Request::url(null, 'user'), 'navigation.user'), array(Request::url(null, 'subscriptionManager'), 'subscriptionManager.subscriptionManagement'))
00567 : array(array(Request::url(null, 'user'), 'navigation.user'))
00568 );
00569 }
00570 }
00571
00572 ?>