oc-server3/htdocs/adoptcache.php
2012-08-16 21:04:13 +02:00

202 lines
5.4 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 = 'adoptcache';
$tpl->menuitem = MNU_CACHES_ADOPT;
$login->verify();
if ($login->userid == 0)
$tpl->redirect_login();
$action = isset($_REQUEST['action']) ? $_REQUEST['action'] : 'listbyuser';
$tpl->assign('action', $action);
$tpl->assign('error', '');
if ($action == 'listbycache')
{
$cacheid = isset($_REQUEST['cacheid']) ? $_REQUEST['cacheid']+0 : 0;
listRequestsByCacheId($cacheid);
}
else if ($action == 'add')
{
$tpl->assign('action', 'listbycache');
$cacheid = isset($_REQUEST['cacheid']) ? $_REQUEST['cacheid']+0 : 0;
$tou = isset($_REQUEST['tou']) ? $_REQUEST['tou']+0 : 0;
$submit = isset($_REQUEST['submit']) ? $_REQUEST['submit']+0 : 0;
$username = isset($_REQUEST['username']) ? $_REQUEST['username'] : '';
$tpl->assign('adoptusername', $username);
if ($submit == 1)
{
$userid = sql_value("SELECT `user_id` FROM `user` WHERE `username`='&1'", 0, $username);
if ($userid == 0)
$tpl->assign('error', 'userunknown');
else if ($tou != 1)
$tpl->assign('error', 'tou');
else
addRequest($cacheid, $userid);
}
listRequestsByCacheId($cacheid);
}
else if ($action == 'cancel')
{
$cacheid = isset($_REQUEST['cacheid']) ? $_REQUEST['cacheid']+0 : 0;
$userid = isset($_REQUEST['userid']) ? $_REQUEST['userid']+0 : 0;
cancelRequest($cacheid, $userid);
}
else if ($action == 'commit')
{
$cacheid = isset($_REQUEST['cacheid']) ? $_REQUEST['cacheid']+0 : 0;
$submit = isset($_REQUEST['submit']) ? $_REQUEST['submit']+0 : 0;
$tou = isset($_REQUEST['tou']) ? $_REQUEST['tou']+0 : 0;
if ($submit == 1 && $tou == 1)
commitRequest($cacheid);
else
showAdoptScreen($cacheid, $submit);
}
else // if ($action == 'listbyuser')
{
$tpl->assign('action', 'listbyuser');
listRequestsByUserId();
}
$tpl->error(ERROR_UNKNOWN);
function showAdoptScreen($cacheid, $touerror)
{
global $tpl, $login;
$rs = sql("SELECT `caches`.`name`, `user`.`username`, `cache_adoption`.`date_created`
FROM `caches`
INNER JOIN `user` ON `caches`.`user_id`=`user`.`user_id`
INNER JOIN `cache_adoption` ON `caches`.`cache_id`=`cache_adoption`.`cache_id`
WHERE `caches`.`cache_id`='&1'
AND `cache_adoption`.`user_id`='&2'",
$cacheid, $login->userid);
$r = sql_fetch_assoc($rs);
if ($r === false)
$tpl->error(ERROR_NO_ACCESS);
$tpl->assign('cache', $r);
sql_free_result($rs);
if ($touerror != 0)
$tpl->assign('error', 'tou');
$tpl->display();
}
function listRequestsByCacheId($cacheid)
{
global $tpl, $login;
// cache exists?
$cache = new cache($cacheid);
if ($cache->exist() == false)
$tpl->error(ERROR_CACHE_NOT_EXISTS);
// is the current user the owner of the cache?
if ($cache->getUserId() != $login->userid)
$tpl->error(ERROR_NO_ACCESS);
$rs = sql("SELECT `caches`.`cache_id` AS `id`, `user`.`user_id` AS `userid`, `user`.`username` AS `username`, `cache_adoption`.`date_created`
FROM `caches`
INNER JOIN `cache_adoption` ON `caches`.`cache_id` = `cache_adoption`.`cache_id`
INNER JOIN `user` ON `cache_adoption`.`user_id`=`user`.`user_id`
WHERE `caches`.`cache_id`='&1'",
$cacheid);
$tpl->assign_rs('adoptions', $rs);
sql_free_result($rs);
$tpl->assign('cachename', $cache->getName());
$tpl->display();
}
function listRequestsByUserId()
{
global $tpl, $login;
$tpl->menuitem = MNU_MYPROFILE_ADOPT;
$rs = sql("SELECT `caches`.`cache_id` AS `id`, `caches`.`name` AS `cachename`, `user`.`user_id` AS `ownerid`, `user`.`username` AS `ownername`, `cache_adoption`.`date_created`
FROM `caches`
INNER JOIN `cache_adoption` ON `caches`.`cache_id` = `cache_adoption`.`cache_id`
INNER JOIN `user` ON `caches`.`user_id`=`user`.`user_id`
WHERE `cache_adoption`.`user_id`='&1'",
$login->userid);
$tpl->assign_rs('adoptions', $rs);
sql_free_result($rs);
$tpl->display();
}
function addRequest($cacheid, $userid)
{
global $tpl;
// cache exists?
$cache = new cache($cacheid);
if ($cache->exist() == false)
$tpl->error(ERROR_CACHE_NOT_EXISTS);
if ($cache->allowEdit() == false)
$tpl->error(ERROR_NO_ACCESS);
if ($cache->getUserId() == $userid)
{
$tpl->assign('error', 'sameuser');
$tpl->display();
}
else
{
if ($cache->addAdoption($userid) == false)
$tpl->error(ERROR_UNKNOWN);
$tpl->redirect('adoptcache.php?action=listbycache&cacheid=' . $cacheid);
}
}
function commitRequest($cacheid)
{
global $tpl, $login;
// cache exists?
$cache = new cache($cacheid);
if ($cache->exist() == false)
$tpl->error(ERROR_CACHE_NOT_EXISTS);
if ($cache->commitAdoption($login->userid) == false)
$tpl->error(ERROR_UNKNOWN);
$tpl->redirect('viewcache.php?cacheid=' . $cacheid);
}
function cancelRequest($cacheid, $userid)
{
global $tpl, $login;
// cache exists?
$cache = new cache($cacheid);
if ($cache->exist() == false)
$tpl->error(ERROR_CACHE_NOT_EXISTS);
if ($cache->allowEdit() == false && $login->userid != $userid)
$tpl->error(ERROR_NO_ACCESS);
if ($cache->cancelAdoption($userid) == false)
$tpl->error(ERROR_UNKNOWN);
$tpl->redirect('adoptcache.php');
}
?>