Für die neueste Version der Game Section habe ich zwei Code-Änderungen vorgenommen, die ich nicht vorenthalten möchte, falls sie von Interesse sind.
1. E-Mail an den User, dessen Highscore bei einem Spiel von einem anderen User geschlagen wurde
Solltet Ihr den Code verwenden wollen, solltet Ihr ggf. Eure User vorwarnen, dass sie entsprechende Mails erhalten werden. Es könnten je nach Aktivität in Eurem Forum recht viele Mails werden.
Suche in der Datei games/submit.php nach
PHP-Code:
require_once MYBB_ROOT."inc/class_games.php";
und füge danach diese Zeile ein
PHP-Code:
require_once MYBB_ROOT."inc/functions.php";
suche in der selben Datei
PHP-Code:
if(($champ['score'] < $score && $game['score_type'] == "DESC") || ($champ['score'] > $score && $game['score_type'] == "ASC"))
{
und füge danach diese Zeilen ein
PHP-Code:
$query4 = $db->query("SELECT * FROM ".TABLE_PREFIX."users WHERE uid='".$champ['uid']."'");
$ex_champ = $db->fetch_array($query4);
if ($ex_champ['uid'] != $mybb->user['uid']){
$subject = "Dein Highscore wurde geschlagen....";
$message = "Hallo ".$champ['username'].".
Dein Highscore bei dem Spiel ".$champ['title']." wurde von ".addslashes($mybb->user['username'])." geschlagen.
URL zu dem Spiel: ".$mybb->settings['bburl']."/games.php?action=play&gid=".$gid."
Link zu den Highscores dieses Spiels: ".$mybb->settings['bburl']."/games.php?action=scores&gid=".$gid;
my_mail($ex_champ['email'], $subject, $message);
}
Der Text kann natürlich entsprechend angepasst oder ggf. auch über die language-files eingebunden werden.
2. PM an den User, dessen Highscore bei einem Spiel von einem anderen User geschlagen wurde
Bei den nachfolgenden Änderungen gehe ich davon aus, dass die o.a. Änderungen
nicht durchgeführt wurden bzw., dass es sich um eine originale games/submit.php handelt.
Suche in der Datei games/submit.php nach
PHP-Code:
if(($champ['score'] < $score && $game['score_type'] == "DESC") || ($champ['score'] > $score && $game['score_type'] == "ASC"))
{
und füge danach folgende Zeilen ein
PHP-Code:
$query4 = $db->query("SELECT * FROM ".TABLE_PREFIX."users WHERE uid='".$champ['uid']."'");
$ex_champ = $db->fetch_array($query4);
if ($ex_champ['uid'] != $mybb->user['uid']){
global $mybb;
require_once MYBB_ROOT."inc/datahandlers/pm.php";
$pmhandler = new PMDataHandler();
$subject = "Dein Highscore wurde geschlagen....";
$message = "Hallo ".$champ['username']."
Dein Highscore bei dem Spiel ".$champ['title']." wurde von ".addslashes($mybb->user['username'])." geschlagen.
Klicke [url=".$mybb->settings['bburl']."/games.php?action=play&gid=".$gid."]hier[/url], um das Spiel erneut zu spielen und Deinen [url=".$mybb->settings['bburl']."/games.php?action=scores&gid=".$gid."]Highscore[/url] zurück zu holen.";
$toid = $champ['uid'];
$fromid = $mybb->user['uid'];
$pm = array(
'subject' => $subject,
'message' => $message,
'toid' => array($toid),
'fromid' => $fromid
);
$pmhandler->set_data($pm);
if(!$pmhandler->validate_pm())
return false;
else
{
$pmhandler->insert_pm();
//return true;
}
}
Auch hier kann der Text natürlich entsprechend angepasst oder ggf. auch über die language-files eingebunden werden.
Vielleicht kann's ja jemand brauchen....
EDIT: Ab und an kam es zu dem Problem, dass nach dem Versenden der PM ein redirect auf die index.php erfolgt und z.B. kein Kommentar beim Spiel abgegeben werden konnte. Ich habe bei dem obigen Code das
return true auskommentiert und das scheint das Problem zu lösen.