oc-server3/htdocs/removelog.php
following acb6f77ed5 log- and recommendation-related fixes and changes
- recommendation will not be lost if the cache is logged a second time
- RT406: recommendation will not be lost if other log of same user is deleted
* recommendation stars will only be displayed with found and attended logs
- recommendations cannot be logged with event notes
- multiple found logs of one user will be counted as 1 at top ratings list
* reversed event log type order: will attend / attended / note
2012-08-23 23:18:42 +02:00

195 lines
6.9 KiB
PHP

<?php
/****************************************************************************
./removelogs.php
-------------------
begin : July 7 2004
For license information see doc/license.txt
****************************************************************************/
/****************************************************************************
Unicode Reminder メモ
remove a cache log
GET/POST-Parameter: logid
****************************************************************************/
//prepare the templates and include all neccessary
require_once('./lib/common.inc.php');
require_once($stylepath . '/lib/icons.inc.php');
//Preprocessing
if ($error == false)
{
//cacheid
$log_id = 0;
if (isset($_REQUEST['logid']))
{
$log_id = $_REQUEST['logid'];
}
if ($usr === false)
{
$tplname = 'login';
tpl_set_var('username', '');
tpl_set_var('target', htmlspecialchars('removelog.php?logid=' . urlencode($log_id), ENT_COMPAT, 'UTF-8'));
tpl_set_var('message', $login_required);
}
else
{
$log_rs = sql("SELECT `cache_logs`.`node` AS `node`, `cache_logs`.`uuid` AS `uuid`, `cache_logs`.`cache_id` AS `cache_id`, `caches`.`user_id` AS `cache_owner_id`,
`caches`.`name` AS `cache_name`, `cache_logs`.`text` AS `log_text`, `cache_logs`.`type` AS `log_type`,
`cache_logs`.`user_id` AS `log_user_id`, `cache_logs`.`date` AS `log_date`,
`log_types`.`icon_small` AS `icon_small`,
`user`.`username` as `log_username`,
`cache_status`.`allow_user_view`
FROM `log_types`, `cache_logs`, `caches`, `user`, `cache_status`
WHERE `cache_logs`.`id`='&1'
AND `cache_logs`.`user_id`=`user`.`user_id`
AND `caches`.`cache_id`=`cache_logs`.`cache_id`
AND `caches`.`status`=`cache_status`.`id`
AND `log_types`.`id`=`cache_logs`.`type`", $log_id, $locale);
//log exists?
if (mysql_num_rows($log_rs) == 1)
{
$log_record = sql_fetch_array($log_rs);
mysql_free_result($log_rs);
include($stylepath . '/removelog.inc.php');
if ($log_record['node'] != $oc_nodeid)
{
tpl_errorMsg('removelog', $error_wrong_node);
exit;
}
if ($log_record['allow_user_view'] != 1 && $log_record['cache_owner_id'] != $usr['userid'])
exit;
//cache-owner or log-owner
if (($log_record['log_user_id'] == $usr['userid']) || ($log_record['cache_owner_id'] == $usr['userid']))
{
//Daten lesen
$commit = isset($_REQUEST['commit']) ? $_REQUEST['commit'] : 0;
//we are the logger
if ($log_record['log_user_id'] == $usr['userid'])
{
$tplname = 'removelog_logowner';
}
else
{
$tplname = 'removelog_cacheowner';
if ($commit == 1)
{
//send email to logowner schicken
$email_content = read_file($stylepath . '/email/removed_log.email');
$message = isset($_POST['logowner_message']) ? $_POST['logowner_message'] : '';
if ($message != '')
{
//message to logowner
$message = $removed_message_titel . "\n" . $message . "\n" . $removed_message_end;
}
//get cache owner name
$cache_owner_rs = sql("SELECT `username` FROM `user` WHERE `user_id`='&1'", $log_record['cache_owner_id']);
$cache_owner_record = sql_fetch_array($cache_owner_rs);
//get email address of logowner
$log_user_rs = sql("SELECT `email`, `username` FROM `user` WHERE `user_id`='&1'", $log_record['log_user_id']);
$log_user_record = sql_fetch_array($log_user_rs);
$email_content = mb_ereg_replace('%log_owner%', $log_user_record['username'], $email_content);
$email_content = mb_ereg_replace('%cache_owner%', $cache_owner_record['username'], $email_content);
$email_content = mb_ereg_replace('%cache_name%', $log_record['cache_name'], $email_content);
$email_content = mb_ereg_replace('%comment%', $message, $email_content);
//send email
mb_send_mail($log_user_record['email'], $removed_log_title, $email_content, $emailheaders);
}
}
if ($commit == 1)
{
// move to archive
sql("INSERT INTO `cache_logs_archived` SELECT * FROM `cache_logs` WHERE `cache_logs`.`id`='&1' LIMIT 1", $log_id);
//log entfernen
sql("DELETE FROM `cache_logs` WHERE `cache_logs`.`id`='&1' LIMIT 1", $log_id);
// remove cache from users top caches, if the only found or attended log
// of this user was deleted
sql("DELETE FROM `cache_rating` WHERE `user_id` = '&1' AND `cache_id` = '&2' AND
0 = (SELECT COUNT(*) FROM `cache_logs` WHERE `user_id` = '&1' AND `cache_id` = '&2' AND `type` IN (1,7))",
$log_record['log_user_id'], $log_record['cache_id']);
// do not use slave server for the next time ...
db_slave_exclude();
//call eventhandler
require_once($opt['rootpath'] . 'lib/eventhandler.inc.php');
event_remove_log($cacheid, $usr['userid']+0);
//cache anzeigen
tpl_redirect('viewcache.php?cacheid=' . urlencode($log_record['cache_id']));
exit;
}
// quickfix: this is coded in res_logentry_logitem.tpl (after smarty migration)
switch ($log_record['log_type'])
{
case 1:
$sLogTypeText = t("%1 found the Geocache", $log_record['log_username']);
break;
case 2:
$sLogTypeText = t("%1 didn't find the Geoacache", $log_record['log_username']);
break;
case 3:
$sLogTypeText = t("%1 wrote a note", $log_record['log_username']);
break;
case 7:
$sLogTypeText = t("%1 has visited the event", $log_record['log_username']);
break;
case 8:
$sLogTypeText = t("%1 wants to visit the event", $log_record['log_username']);
break;
default:
$sLogTypeText = $log_record['log_username'];
break;
}
tpl_set_var('cachename', htmlspecialchars($log_record['cache_name'], ENT_COMPAT, 'UTF-8'));
tpl_set_var('cacheid', htmlspecialchars($log_record['cache_id'], ENT_COMPAT, 'UTF-8'));
tpl_set_var('logid_urlencode', htmlspecialchars(urlencode($log_id), ENT_COMPAT, 'UTF-8'));
tpl_set_var('logid', htmlspecialchars($log_id, ENT_COMPAT, 'UTF-8'));
tpl_set_var('logimage', icon_log_type($log_record['icon_small'], ""));
tpl_set_var('date', htmlspecialchars(strftime($dateformat, strtotime($log_record['log_date'])), ENT_COMPAT, 'UTF-8'));
tpl_set_var('userid', htmlspecialchars($log_record['log_user_id'] + 0, ENT_COMPAT, 'UTF-8'));
tpl_set_var('username', htmlspecialchars($log_record['log_username'], ENT_COMPAT, 'UTF-8'));
tpl_set_var('typetext', htmlspecialchars($sLogTypeText, ENT_COMPAT, 'UTF-8'));
tpl_set_var('logtext', $log_record['log_text']);
tpl_set_var('log_user_name', htmlspecialchars($log_record['log_username'], ENT_COMPAT, 'UTF-8'));
}
else
{
//TODO: hm ... no permission to remove the log
}
}
else
{
//TODO: log doesn't exist
}
}
}
//make the template and send it out
tpl_BuildTemplate();
?>