name = 'log_cache'; $tpl->menuitem = MNU_CACHES_SEARCH_VIEWCACHE; $tpl->caching = false; // check login $login->verify(); if ($login->userid == 0) $tpl->redirect_login(); // get cache_id if not given $cacheId = 0; if (isset($_REQUEST['wp'])) $cacheId = cache::cacheIdFromWP($_REQUEST['wp']); else if (isset($_REQUEST['cacheid'])) $cacheId = $_REQUEST['cacheid']; // check adminstatus of user $useradmin = ($login->hasAdminPriv()) ? 1 : 0; // prepare array to indicate errors in template $validate = array(); // proceed loggable, if valid cache_id $validate['logAllowed'] = true; if ($cacheId != 0) { // get cache object $cache = new cache($cacheId); // check log allowed, depending on cache state and logged in user $validate['logAllowed'] = $cache->allowLog(); // get user object $user = new user($login->userid); // is user cache owner $isOwner = ($user->getUserId() == $cache->getUserId()); // assing ratings to template $tpl->assign('ratingallowed', $user->allowRatings()); $tpl->assign('givenratings', $user->getGivenRatings()); $tpl->assign('maxratings', $user->getMaxRatings()); $tpl->assign('israted', $cache->isRecommendedByUser($user->getUserId())); $tpl->assign('foundsuntilnextrating', $user->foundsUntilNextRating()); $tpl->assign('isowner', $isOwner); // check and prepare form values $datesaved = isset($_COOKIE['oclogdate']); if ($datesaved) { $defaultLogYear = substr($_COOKIE['oclogdate'],0,4); $defaultLogMonth = substr($_COOKIE['oclogdate'],4,2); $defaultLogDay = substr($_COOKIE['oclogdate'],6,2); } $logText = (isset($_POST['logtext'])) ? ($_POST['logtext']) : ''; $logType = (isset($_REQUEST['logtype'])) ? ($_REQUEST['logtype']+0) : null; $logDateDay = (isset($_POST['logday'])) ? trim($_POST['logday']) : ($datesaved ? $defaultLogDay : date('d')); $logDateMonth = (isset($_POST['logmonth'])) ? trim($_POST['logmonth']) : ($datesaved ? $defaultLogMonth : date('m')); $logDateYear = (isset($_POST['logyear'])) ? trim($_POST['logyear']) : ($datesaved ? $defaultLogYear : date('Y')); $logTimeHour = (isset($_POST['loghour'])) ? trim($_POST['loghour']) : ""; $logTimeMinute = (isset($_POST['logminute'])) ? trim($_POST['logminute']) : ""; $rateOption = (isset($_POST['ratingoption'])) ? $_POST['ratingoption']+0 : 0; $rateCache = (isset($_POST['rating'])) ? $_POST['rating']+0 : 0; $ocTeamComment = (isset($_REQUEST['teamcomment'])) ? $_REQUEST['teamcomment'] != 0 : 0; // if not a found log, ignore the rating $rateOption = ($logType == 1 || $logType == 7) + 0; // get logtext editormode (from form or from userprofile) // 1 = text; 2 = HTML; 3 = tinyMCE if (isset($_POST['descMode'])) $descMode = $_POST['descMode']+0; else { if ($user->getNoHTMLEditor() == 1) $descMode = 1; else $descMode = 3; } if (($descMode < 1) || ($descMode > 3)) $descMode = 3; // add javascript-header if editor if ($descMode == 3) { $tpl->add_header_javascript('resource2/tinymce/tiny_mce_gzip.js'); $tpl->add_header_javascript('resource2/tinymce/config/log.js.php?lang='.strtolower($opt['template']['locale'])); } // check and prepare log text if ($descMode != 1) { $ocPurifier = new OcHTMLPurifier(); $logText = $ocPurifier->purify($logText); } else $logText = nl2br(htmlspecialchars($logText, ENT_COMPAT, 'UTF-8')); // validate date if (is_numeric($logDateMonth) && is_numeric($logDateDay) && is_numeric($logDateYear) && ($logTimeHour . $logTimeMinute == "" || is_numeric($logTimeHour)) && ($logTimeMinute == "" || is_numeric($logTimeMinute))) { $validate['dateOk'] = checkdate( $logDateMonth, $logDateDay, $logDateYear) && ($logDateYear >= 2000) && ($logTimeHour>=0) && ($logTimeHour<=23) && ($logTimeMinute>=0) && ($logTimeMinute<=59); if ($validate['dateOk'] && isset($_POST['submitform'])) $validate['dateOk'] = (mktime( $logTimeHour+0, $logTimeMinute+0, 0, $logDateMonth, $logDateDay, $logDateYear) < time()); } else $validate['dateOk'] = false; // store valid date in temporary cookie; it will be the default for the next log if ($validate['dateOk']) setcookie('oclogdate', sprintf('%04d%02d%02d',$logDateYear, $logDateMonth, $logDateDay)); // check log type $validate['logType'] = $cache->logTypeAllowed($logType); // check log password $validate['logPw'] = true; if (isset($_POST['submitform']) && $cache->requireLogPW()) $validate['logPw'] = $cache->validateLogPW($logType, $_POST['log_pw']); // check for errors $loggable = array_product($validate); // prepare duplicate log error $validate['duplicateLog'] = true; // all checks done, no error => log if (isset($_POST['submitform']) && $loggable) { /* * check if time is logged * set seconds 00:00:01, means "00:00 was logged" * set seconds 00:00:00, means "no time was logged" */ $logTimeSecond = ($logTimeHour . $logTimeMinute != "" && $logTimeHour == 0 && $logTimeMinute == 0) + 0; // make time values database ready $logDate = date($opt['db']['dateformat'], mktime( $logTimeHour+0, $logTimeMinute+0, $logTimeSecond, $logDateMonth, $logDateDay, $logDateYear)); // check if duplicate entry already exists (sending form multiple times, or OCProp error) if (!cachelog::isDuplicate($cache->getCacheId(), $user->getUserId(), $logType, $logDate, $logText)) { // get new cachelog object $cacheLog = cachelog::createNewFromCache($cache, $user->getUserId()); // set values $cacheLog->setType($logType); $cacheLog->setDate($logDate); $cacheLog->setText($logText); $cacheLog->setTextHtml(($descMode != 1) ? 1 : 0); $cacheLog->setTextHtmlEdit(($descMode == 3) ? 1 : 0); // save log values $cacheLog->save(); // update cache status $cache->updateCacheStatus($logType); // update rating (if correct logtype, user has ratings to give and is not owner (exept owner adopted cache)) if ($rateOption && $user->allowRatings() && (!$isOwner || ($isOwner && $cache->hasAdopted($user->getUserId())))) if ($rateCache) $cache->addRecommendation($user->getUserId()); else $cache->removeRecommendation($user->getUserId()); // save cache $cache->save(); // clear statpic $statPic = $user->getStatpic(); $statPic->deleteFile(); } // finished, redirect to listing $tpl->redirect('viewcache.php?cacheid=' . $cache->getCacheId()); } // assign values to template // error $tpl->assign('validate', $validate); // user info $tpl->assign('userFound', $user->getStatFound()); // cache infos $tpl->assign('cachename', $cache->getName()); $tpl->assign('cacheid', $cache->getCacheId()); $tpl->assign('cachetype', $cache->getType()); // date/time $tpl->assign('logday', $logDateDay); $tpl->assign('logmonth', $logDateMonth); $tpl->assign('logyear', $logDateYear); $tpl->assign('loghour', $logTimeHour); $tpl->assign('logminute', $logTimeMinute); // log text $tpl->assign('logtext', $logText); // text, or editor $tpl->assign('descMode', $descMode); // logtypes $tpl->assign('logtypes', $cache->getUserLogTypes($logType)); // teamcomment $tpl->assign('octeamcommentallowed', $cache->teamcommentAllowed(3)); $tpl->assign('octeamcomment', ($ocTeamComment || (!$cache->statusUserLogAllowed() && $useradmin)) ? true : false); $tpl->assign('octeamcommentclass', (!$cache->statusUserLogAllowed() && $useradmin) ? 'redtext' : ''); // masslogs $tpl->assign('masslog', cachelog::isMasslogging($user->getUserId())); // show number of found on log page $tpl->assign('showstatfounds', $user->showStatFounds()); } else { // not loggable $validate['logAllowed'] = false; } // prepare template and display $tpl->assign('validate', $validate); $tpl->display(); ?>