00001 <?php
00002
00015
00016
00017
00018 class Handler {
00019
00023 function index() {
00024 header('HTTP/1.0 404 Not Found');
00025 fatalError('404 Not Found');
00026 }
00027
00032 function validate($requiresJournal = false) {
00033 if (Config::getVar('security', 'force_ssl') && Request::getProtocol() != 'https') {
00034
00035 Request::redirectSSL();
00036 }
00037
00038 $journal = Request::getJournal();
00039
00040 if ($requiresJournal && $journal == null) {
00041
00042 Request::redirect(null, 'about');
00043 }
00044
00045 $page = Request::getRequestedPage();
00046 if ( $journal != null &&
00047 !Validation::isLoggedIn() &&
00048 !in_array($page, Handler::getLoginExemptions()) &&
00049 $journal->getSetting('restrictSiteAccess')
00050 ) {
00051 Request::redirect(null, 'login');
00052 }
00053 }
00054
00060 function getLoginExemptions() {
00061 return array('user', 'login', 'help');
00062 }
00063
00071 function hashPageContext($contextData = array()) {
00072 return md5(
00073 Request::getRequestedJournalPath() . ',' .
00074 Request::getRequestedPage() . ',' .
00075 Request::getRequestedOp() . ',' .
00076 serialize($contextData)
00077 );
00078 }
00079
00088 function &getRangeInfo($rangeName, $contextData = null) {
00089 $journal =& Request::getJournal();
00090 $journalSettingsDao =& DAORegistry::getDAO('JournalSettingsDAO');
00091
00092 $pageNum = Request::getUserVar($rangeName . 'Page');
00093 if (empty($pageNum)) {
00094 $session =& Request::getSession();
00095 $pageNum = 1;
00096 if ($session && $contextData !== null) {
00097
00098 $context = Handler::hashPageContext($contextData);
00099
00100 if (Request::getUserVar('clearPageContext')) {
00101
00102 $session->unsetSessionVar("page-$context");
00103 } else {
00104 $oldPage = $session->getSessionVar("page-$context");
00105 if (is_numeric($oldPage)) $pageNum = $oldPage;
00106 }
00107 }
00108 } else {
00109 $session =& Request::getSession();
00110 if ($session && $contextData !== null) {
00111
00112 $context = Handler::hashPageContext($contextData);
00113 $session->setSessionVar("page-$context", $pageNum);
00114 }
00115 }
00116
00117 if ($journal) $count = $journalSettingsDao->getSetting($journal->getJournalId(), 'itemsPerPage');
00118 if (!isset($count)) $count = Config::getVar('interface', 'items_per_page');
00119
00120 import('db.DBResultRange');
00121
00122 if (isset($count)) $returner = &new DBResultRange($count, $pageNum);
00123 else $returner = &new DBResultRange(-1, -1);
00124
00125 return $returner;
00126 }
00127 }
00128
00129 ?>