array ('views/year.php','f','0','m','f','0','','r',''), 2 => array ('views/month.php','f','0','m','f','0','','r','fm'), 3 => array ('views/month.php','f','0','m','f','0','','r','wm'), 4 => array ('views/week.php','f','0','m','f','0','','r','fw'), 5 => array ('views/week.php','f','0','m','f','0','','r','ww'), 6 => array ('views/day.php','f','0','m','f','0','','r',''), 7 => array ('views/upcoming.php','f','0','m','f','0','upcoming','r',''), 8 => array ('views/changes.php','f','0','m','f','0','changes','r',''), 9 => array ('views/matrixc.php','f','0','m','f','0','','r',''), 10 => array ('views/matrixu.php','f','0','m','f','0','','r',''), 20 => array ('pages/login.php','l','l','l','f','0','log_in','m',''), 21 => array ('pages/search.php','a','a','a','f','0','search','r',''), 22 => array ('pages/contact.php','a','a','a','f','0','contact','m',''), 23 => array ('pages/thumbnails.php','a','a','a','f','0','thumbnails','',''), 24 => array ('pages/help.php','h','h','h','0','0','user_guide','',''), 30 => array ('pages/event.php','e','e','e','0','0','add_event','rm',''), 31 => array ('pages/event.php','e','e','e','0','0','edit_event','rm',''), 32 => array ('pages/eventreport.php','e','e','e','0','0','event','r',''), 90 => array ('pages/settings.php','a','a','a','f','0','settings','m',''), 91 => array ('pages/categories.php','a','a','a','f','0','edit_cats','',''), 92 => array ('pages/users.php','a','a','a','f','0','edit_users','',''), 93 => array ('pages/groups.php','a','a','a','f','0','edit_groups','',''), 94 => array ('pages/database.php','a','a','a','f','0','manage_db','',''), 95 => array ('pages/importICS.php','a','a','a','f','0','ics_import','',''), 96 => array ('pages/exportICS.php','a','a','a','f','0','ics_export','r',''), 97 => array ('pages/importCSV.php','a','a','a','f','0','csv_import','',''), 99 => array ('pages/styling.php','s','s','s','0','0','ui_styling','','') ); //get toolboxes require './common/toolboxd.php'; //database tools + LCV require './common/toolbox.php'; //general tools //set error reporting //error_reporting(E_ERROR); //errors only //ini_set('display_errors',0); ini_set('log_errors',1); //no error display error_reporting(E_ALL); //errors, warnings and notices - test ini_set('display_errors',1); ini_set('log_errors',1); //test //proxies: don't cache header("Cache-control: private"); //start session session_name('PHPSESSID'); session_start(); //validate GET / POST variables validVars(); if (empty($_SESSION['lcI'])) { $_SESSION['lcI'] = md5(rand()); } //set one-time CSRF lcI $lcI = $_SESSION['lcI']; //strip slashes in case magic_quotes on (PHP < 5.4) if (!empty($_COOKIE)) { $_COOKIE = array_map('stripslashes', $_COOKIE); } //load config data if (!file_exists('./lcconfig.php')) {//no current config data if (!file_exists('./lcaldbc.dat')) { //no config data: install header("Location: install".strtolower(substr(str_replace('.','',LCV),0,3)).".php"); exit(); } else { //upgrade header("Location: upgrade".strtolower(substr(str_replace('.','',LCV),0,3)).".php"); exit(); } } require './lcconfig.php'; if (isset($lcc)) { $lcV = $lcc; } //= 0"); stExec($stH,array($_SESSION['lcUser'])); unset($_SESSION['lcUser']); $row = $stH->fetch(PDO::FETCH_NUM); $stH = null; //release statement handle $_SESSION['uid'] = !empty($row) ? $row[0] : 1; //if not found: public } //get user data & privs $stH = stPrep("SELECT u.`ID`,u.`name`,u.`email` AS mail,u.`language` AS lang,g.`privs`,g.`vCatIDs` AS vCats,g.`eCatIDs` AS eCats,g.`rEvents` AS rEvts,g.`mEvents` AS mEvts,g.`pEvents` AS pEvts,g.`upload`,g.`sendSms` AS sndSms FROM `users` AS u INNER JOIN `groups` AS g ON g.`ID` = u.`groupID` WHERE u.`ID` = 1 OR u.`ID` = ? ORDER BY u.`ID` DESC"); //if userID not found, revert to public user stExec($stH,array($_SESSION['uid'])); $usr = $stH->fetch(PDO::FETCH_ASSOC); //user & group data $row = $stH->fetch(PDO::FETCH_ASSOC); $stH = null; if (isset($_GET['pP']) and $usr['privs'] == 9) { phpinfo(); exit; } //admin - show PHP installation page if ($row != false) { //take care that usr has rights of usr + public user if ($usr['vCats'] != '0' and $row['privs'] > 0) { $usr['vCats'] = $row['vCats'] == '0' ? '0' : $usr['vCats'].','.$row['vCats']; } //view categories if ($usr['eCats'] != '0' and $row['privs'] > 1) { $usr['eCats'] = $row['eCats'] == '0' ? '0' : $usr['eCats'].','.$row['eCats']; } //edit categories } unset($row); if ($usr['ID'] == 1) { $_SESSION['uid'] = 1; } //public user $usr['ID'] = $_SESSION['uid']; //current user //switch to calendar specific session $sessID = session_id(); $sessNM = session_name(); session_write_close(); session_id($sessID.$calID); session_name($sessNM.$calID); session_start(); unset($sessID,$sessNM); //get settings from database $set = getSettings(); //when login: bake 0:forget, 1:remember if (isset($_POST['bake'])) { setcookie('LCALuid', serialize($usr['ID']), $nowTS+86400*$set['cookieExp']*$_POST['bake']); //set or refresh } //set time zone date_default_timezone_set($set['timeZone']); $today = date('Y-m-d'); //date of today if (empty($_POST['lcI']) or isset($_POST['bake'])) { //external hit or log in - update login data & load last selected options $stH = stPrep("UPDATE `users` SET `login0` = CASE WHEN substr(`login0`,1,1) = '9' THEN ? ELSE `login0` END, `login1` = ?, `loginCnt` = `loginCnt` + 1 WHERE `ID` = ?"); stExec($stH,array($today,$today,$usr['ID'])); if ($set['restLastSel'] and $usr['ID'] > 1) { loadLastSel($calID); } } //check for mobile browsers if (!isset($_SESSION['mobile'])) { $_SESSION['mobile'] = isMobile() > 1; //mobile small screen size } $isMob = $_SESSION['mobile']; //set header display if (isset($_GET['hdr'])) { $_SESSION['hdr'] = $_GET['hdr']; } elseif (!isset($_SESSION['hdr'])) { $_SESSION['hdr'] = 1; } $cH = $_SESSION['hdr']; //calendar header //set language if (isset($_REQUEST["cL"])) { $_SESSION['cL'] = $_REQUEST['cL']; } if (empty($_SESSION['cL'])) { $_SESSION['cL'] = ($usr['lang'] ? $usr['lang'] : $set['language']); } if (!file_exists("./lang/ui-{$_SESSION['cL']}.php")) { $_SESSION['cL'] = 'english'; } $opt['cL'] = strtolower($_SESSION['cL']); require "./lang/ui-{$opt['cL']}.php"; //set view restrictions $eDetails = ($set['details4All'] == 1 or ($set['details4All'] == 2 and $usr['ID'] > 1)); //show event details $avViews = $usr['ID'] == 1 ? $set['viewsPublic'] : $set['viewsLogged']; //available views if (isset($_POST['loff'])) { //logoff: reset options $opt['cP'] = $_SESSION['cP'] = $usr['privs'] ? $set['defViewPub'] : 20; $_SESSION['cG'] = $_SESSION['cU'] = $_SESSION['cC'] = $opt['cG'] = $opt['cU'] = $opt['cC'] = array(0); $_SESSION['cL'] = $opt['cL'] = $set['language']; goto allSet; } //set current page if (isset($_REQUEST['cP'])) { if ($_REQUEST['cP'] == 'up') { //one level up if (!empty($_SESSION['cP'])) { $oneUp = array(2 => 1, 3 => 1, 4 => 2, 5 => 3, 6 => 4); $upPage = $_SESSION['cP']; while ($upPage > 1) { $upPage = $oneUp[$upPage]; if (strpos($avViews,strval($upPage)) !== false) { $_SESSION['cP'] = $upPage; break; } } } } elseif (($_REQUEST['cP'] > 10 or strpos($avViews,strval($_REQUEST['cP'])) !== false) and array_key_exists($_REQUEST['cP'],$pages)) { $_SESSION['cP'] = $_REQUEST['cP']; } elseif ($_REQUEST['cP'] == 0) { $_SESSION['cP'] = $usr['ID'] == 1 ? $set['defViewPub'] : $set['defViewLog']; } } if (empty($_SESSION['cP'])) { $_SESSION['cP'] = $usr['ID'] > 1 ? $set['defViewLog'] : ($usr['privs'] ? $set['defViewPub'] : 20); } //if no privs, force login $opt['cP'] = !empty($_REQUEST['xP']) ? $_REQUEST['xP'] : $_SESSION['cP']; //$xP: don't store in session //set group filter if (isset($_REQUEST['cG'])) { $_SESSION['cG'] = $_REQUEST['cG']; } elseif (!isset($_SESSION['cG'])) { $_SESSION['cG'] = array(0); } $opt['cG'] = $_SESSION['cG']; //current group //set user filter if (isset($_REQUEST['cU'])) { $_SESSION['cU'] = $_REQUEST['cU']; } elseif (!isset($_SESSION['cU'])) { $_SESSION['cU'] = array(0); } $opt['cU'] = $_SESSION['cU']; //current user //set category filter if (isset($_REQUEST['cC'])) { $_SESSION['cC'] = $_REQUEST['cC']; } elseif (!isset($_SESSION['cC'])) { $_SESSION['cC'] = array(0); } $opt['cC'] = $_SESSION['cC']; //current category //save last selected cP, cG, cU, cC, cL if ((isset($_REQUEST['cP']) or isset($_REQUEST['cG']) or isset($_REQUEST['cU']) or isset($_REQUEST['cC']) or isset($_REQUEST['cL'])) and $usr['ID'] > 1) { saveLastSel($calID); } allSet: //set current date $nD = ''; //preset no new date if (!empty($_POST['nD'])) { $_SESSION['cD'] = $nD = DDtoID($_POST['nD']); } elseif (isset($_REQUEST['cD'])) { $_SESSION['cD'] = $_REQUEST['cD']; } if (empty($_SESSION['cD'])) { $_SESSION['cD'] = $today; } //empty: today $opt['cD'] = $_SESSION['cD']; //current date //set rss get-method filter $cF = "&cal={$calID}"; foreach ($opt['cG'] as $group) { if ($group) { $cF .= '&cG%5B%5D='.$group; } } foreach ($opt['cU'] as $user) { if ($user) { $cF .= '&cU%5B%5D='.$user; } } foreach ($opt['cC'] as $categ) { if ($categ) { $cF .= '&cC%5B%5D='.$categ; } } if ($cF) { $cF = '?'.substr($cF,5); } $mode = isset($_REQUEST['mode']) ? $_REQUEST['mode'] : $pages[$opt['cP']][8]; //get mode $pageTitle = !empty($pages[$opt['cP']][6]) ? $xx["title_{$pages[$opt['cP']][6]}"] : ''; if (strpos($pages[$opt['cP']][7],'r') !== false) { //retrieve required require './common/retrieve.php'; } if (strpos($pages[$opt['cP']][7],'m') !== false) { //messaging required require './common/messaging.php'; } /* build calendar page */ $hdrType = $cH < 1 ? $pages[$opt['cP']][2] : ($isMob ? $pages[$opt['cP']][3] : $pages[$opt['cP']][1]); //set header type $ftrType = $isMob ? $pages[$opt['cP']][5] : $pages[$opt['cP']][4]; //set footer type $body = $pages[$opt['cP']][0]; //body uri unset($pages); require './common/header1.php'; //header require "./{$body}"; //body // require './common/footer.php'; //footer ?>