oc-server3/htdocs/adminreports.php

185 lines
6.3 KiB
PHP

<?php
/***************************************************************************
* For license information see doc/license.txt
*
* Unicode Reminder メモ
***************************************************************************/
require('./lib2/web.inc.php');
require_once('./lib2/logic/cache.class.php');
$tpl->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();
?>