name = 'adminreports'; $tpl->menuitem = MNU_ADMIN_REPORTS; $error = 0; $login->verify(); if ($login->userid == 0) $tpl->redirect_login(); if (($login->admin & ADMIN_USER) != ADMIN_USER) $tpl->error(ERROR_NO_ACCESS); $id = isset($_REQUEST['id']) ? $_REQUEST['id']+0 : 0; $rid = isset($_REQUEST['rid']) ? $_REQUEST['rid']+0 : 0; $cacheid = isset($_REQUEST['cacheid']) ? $_REQUEST['cacheid']+0 : 0; $ownerid = isset($_REQUEST['ownerid']) ? $_REQUEST['ownerid']+0 : 0; $adminid = sql_value("SELECT `adminid` FROM `cache_reports` WHERE `id`=&1", 0, $rid); $age = sql_value("SELECT DATEDIFF(NOW(),`lastmodified`) FROM `cache_reports` WHERE `id`=&1", 0, $rid); if (isset($_REQUEST['assign']) && $rid > 0 && ($adminid == 0 || ($adminid != $login->userid && $age >= 14))) { sql("UPDATE `cache_reports` SET `status`=2, `adminid`=&2 WHERE `id`=&1", $rid, $login->userid); $tpl->redirect('adminreports.php?id='.$rid); } elseif (isset($_REQUEST['contact']) && $ownerid > 0) { $tpl->redirect('mailto.php?userid=' . urlencode($ownerid)); } elseif ((isset($_REQUEST['statusActive']) || isset($_REQUEST['statusTNA']) || isset($_REQUEST['statusArchived']) || isset($_REQUEST['statusLockedVisible']) || isset($_REQUEST['statusLockedInvisible'])) && $adminid == $login->userid) { $cache = new cache($cacheid); if ($cache->exist() == false) $tpl->error(ERROR_CACHE_NOT_EXISTS); if ($cache->allowView() == false) $tpl->error(ERROR_NO_ACCESS); if (isset($_REQUEST['statusActive'])) $cache->setStatus(1); else if (isset($_REQUEST['statusTNA'])) $cache->setStatus(2); else if (isset($_REQUEST['statusArchived'])) $cache->setStatus(3); else if (isset($_REQUEST['statusLockedVisible'])) $cache->setStatus(6); else if (isset($_REQUEST['statusLockedInvisible'])) $cache->setStatus(7); $cache->save(); $tpl->redirect('adminreports.php?id=' . urlencode($rid)); } elseif (isset($_REQUEST['done']) && $adminid == $login->userid) { sql("UPDATE `cache_reports` SET `status`=3 WHERE `id`=&1", $rid); $tpl->redirect('adminreports.php?id='.$rid); } elseif (isset($_REQUEST['assign']) && ($adminid == 0 || $adminid != $login->userid)) { $error = 1; if ($rid > 0) { $id = $rid; } else { $id = 0; } } elseif (isset($_REQUEST['assign']) && $adminid == $login->userid) { $error = 2; $id = $rid; } elseif (isset($_REQUEST['statusActive']) || isset($_REQUEST['statusTNA']) || isset($_REQUEST['statusArchived']) || isset($_REQUEST['done']) || isset($_REQUEST['statusLockedVisible']) || isset($_REQUEST['statusLockedInvisible'])) { if ($adminid == 0) { $id = $rid; $error = 4; } elseif ($adminid != $login->userid) { $id = $rid; $error = 3; } } if ($id == 0) { // no details, show list of reported caches $rs = sql("SELECT `cr`.`id`, IF(`cr`.`status`=1,'(*) ', '') AS `new`, `c`.`name`, `u2`.`username` AS `ownernick`, `u`.`username`, IF(LENGTH(`u3`.`username`)>10, CONCAT(LEFT(`u3`.`username`,9),'.'),`u3`.`username`) AS `adminname`, `cr`.`lastmodified`, `cr`.`adminid` IS NOT NULL AND `cr`.`adminid`!=&1 AS otheradmin FROM `cache_reports` `cr` INNER JOIN `caches` `c` ON `c`.`cache_id` = `cr`.`cacheid` INNER JOIN `user` `u` ON `u`.`user_id` = `cr`.`userid` INNER JOIN `user` AS `u2` ON `u2`.`user_id`=`c`.`user_id` LEFT JOIN `user` AS `u3` ON `u3`.`user_id`=`cr`.`adminid` WHERE `cr`.`status` < 3 " . // AND (`cr`.`adminid` IS NULL OR `cr`.`adminid`=&1) "ORDER BY (`cr`.`adminid` IS NULL OR `cr`.`adminid`=&1) DESC, `cr`.`status` ASC, `cr`.`lastmodified` ASC", $login->userid); $tpl->assign_rs('reportedcaches', $rs); sql_free_result($rs); $tpl->assign('list', true); } else { // show details of a report $rs = sql("SELECT `cr`.`id`, `cr`.`cacheid`, `cr`.`userid`, `u1`.`username` AS `usernick`, IFNULL(`cr`.`adminid`, 0) AS `adminid`, IFNULL(`u2`.`username`, '') AS `adminnick`, IFNULL(`tt2`.`text`, `crr`.`name`) AS `reason`, `cr`.`note`, IFNULL(tt.text, crs.name) AS `status`, `cr`.`lastmodified`, `c`.`name` AS `cachename`, `c`.`user_id` AS `ownerid` FROM `cache_reports` AS `cr` LEFT JOIN `cache_report_reasons` AS `crr` ON `cr`.`reason`=`crr`.`id` LEFT JOIN `caches` AS `c` ON `c`.`cache_id`=`cr`.`cacheid` LEFT JOIN `user` AS `u1` ON `u1`.`user_id`=`cr`.`userid` LEFT JOIN `user` AS `u2` ON `u2`.`user_id`=`cr`.`adminid` LEFT JOIN `cache_report_status` AS `crs` ON `cr`.`status`=`crs`.`id` LEFT JOIN `sys_trans_text` AS `tt` ON `crs`.`trans_id`=`tt`.`trans_id` AND `tt`.`lang`='&2' LEFT JOIN `sys_trans_text` AS `tt2` ON `crr`.`trans_id`=`tt2`.`trans_id` AND `tt2`.`lang`='&2' WHERE `cr`.`id`=&1", $id, $opt['template']['locale']); if ($record = sql_fetch_assoc($rs)) { $tpl->assign('id', $record['id']); $tpl->assign('cacheid', $record['cacheid']); $tpl->assign('userid', $record['userid']); $tpl->assign('usernick', $record['usernick']); $tpl->assign('adminid', $record['adminid']); $tpl->assign('adminnick', $record['adminnick']); $tpl->assign('reason', $record['reason']); $tpl->assign('note', $record['note']); $tpl->assign('status', $record['status']); $tpl->assign('lastmodified', $record['lastmodified']); $tpl->assign('cachename', $record['cachename']); $tpl->assign('ownerid', $record['ownerid']); } sql_free_result($rs); $tpl->assign('list', false); $tpl->assign('otheradmin',$record['adminid']>0 && $record['adminid'] != $login->userid); $tpl->assign('ownreport',$record['adminid'] == $login->userid); } $tpl->assign('error', $error); $tpl->display(); ?>