X-Git-Url: https://git.nubati.net/cgi-bin/gitweb.cgi?p=e-DoKo.git;a=blobdiff_plain;f=include%2Fuser.php;h=eb4f6c4c33dd8160c066491811546b3328bb75ae;hp=be0d68a5b08740252cbe3f7af9fa13f236b3b5db;hb=85f97815af1237463bc50b766f06b66b0c5ac8c1;hpb=2666bb58429c385b716d2ffd5d5fe9a9e7af4f45 diff --git a/include/user.php b/include/user.php index be0d68a..eb4f6c4 100644 --- a/include/user.php +++ b/include/user.php @@ -1,4 +1,23 @@ + * + * This file is part of e-DoKo. + * + * e-DoKo is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * e-DoKo is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with e-DoKo. If not, see . + * + */ + /* make sure that we are not called from outside the scripts, * use a variable defined in config.php to check this */ @@ -53,8 +72,9 @@ if(myisset("forgot")) " $newpw \n". "to log into the server. The new password is valid for 24h, so make\n". "sure you reset your password to something new. Your old password will\n". - " also still be valid until you set a new one\n"; - mymail($email,$EmailName."recovery ",$message); + "also still be valid until you set a new one.\n"; + $subject = 'Recovery'; + mymail($myid,$subject,$message); /* we save these in the database */ DB_set_recovery_password($myid,md5($newpw)); @@ -107,71 +127,182 @@ else /* display all games the user has played */ echo "
"; + + if($myvacation = check_vacation($myid)) + { + $vac_start = $myvacation[0]; + $vac_stop = $myvacation[1]; + $vac_comment = $myvacation[2]; + echo "

Enjoy your vacation (don't forgot to change your settings once you're back). Between $vac_start and $vac_stop other users will see the following message: $vac_comment.

\n"; + } + echo "

These are all your games:

\n"; - echo "

Session:
\n"; - echo " p = pre-game phase "; - echo "P = game in progess "; - echo "F = game finished "; - echo " N = game finished, hand played by others too
"; + /* output legend */ + echo "

Games: \n"; + echo "   = pre-game phase "; + echo "   = game in progess "; + echo "N = game over (N people played the same hand)
"; + echo " Reminder: canceling a game can't be reversed!"; echo "

\n"; + /* get all games */ $output = array(); $result = DB_query("SELECT Hand.hash,Hand.game_id,G.mod_date,G.player,G.status, ". - " (SELECT count(H.randomnumbers) FROM Game H WHERE H.randomnumbers=G.randomnumbers) AS count ". + " (SELECT count(H.randomnumbers) FROM Game H WHERE H.randomnumbers=G.randomnumbers) AS count, ". + " G.session". " FROM Hand". " LEFT JOIN Game G ON G.id=Hand.game_id". " WHERE user_id='$myid'". " ORDER BY G.session,G.create_date" ); - $gamenrold = -1; - echo "\n \n \n"; - else - echo "$gamenr:\n"; - $gamenrold = $gamenr; - echo "\n\n
\n"; - while( $r = DB_fetch_array($result)) + /* sort into active and passive sessions */ + $count = 0; /* count number of games to check for beginner status */ + $session = -1; + $maxgame = 0; + $output_active = ""; + $output_inactive = ""; + $sessionoutput = ""; + $gameoutput = ""; + $keep_going = 2; + while( $keep_going ) { - $game = DB_format_gameid($r[1]); - $gamenr = (int) $game; - if($gamenrold < $gamenr) + /* get next element */ + $r = DB_fetch_array($result); + + if($r) + $count++; + else { - if($gamenrold!=-1) - echo "
$gamenr:\n"; + /* need to run the while loop one more time when we run out of elements in the database */ + $keep_going--; + $r[0] = NULL; + $r[1] = NULL; + $r[2] = NULL; + $r[3] = NULL; + $r[4] = NULL; + $r[5] = NULL; + $r[6] = -2; } - $Multi = ($r[5]>1) ? "multi" : ""; - if($r[4]=='pre') - echo " p \n"; - else if ($r[4]=='gameover') - { - echo " "; - if($r[5]<2) - echo "F "; - else - echo $r[5]; - echo "\n"; - } - else - echo " P \n"; - if($r[4] != 'gameover') + if( $r[6]==$session ) { - echo "\n "; - if($r[3]==$myid || !$r[3]) - echo "(it's your turn)\n"; - else + /* same session, update information */ + $maxgame++; + $myhash = $r[0]; + $gameid = $r[1]; + $gamemoddate = $r[2]; + $userid = $r[3]; + $gamestatus = $r[4]; + $gamefrequence = $r[5]; + + /* create output */ + $sessionoutput .= $gameoutput; + $gameoutput = " " + .$gamefrequence."\n"; + } + else + { /* new session */ + + /* output old session if available */ + if($maxgame) { - $name = DB_get_name('userid',$r[3]); - $gameid = $r[1]; - if(DB_get_reminder($r[3],$gameid)==0) - if(time()-strtotime($r[2]) > 60*60*24*7) - echo "Send a reminder."; - echo "(it's $name's turn)\n"; - }; - if(time()-strtotime($r[2]) > 60*60*24*30) - echo "Cancel?". - " (clicking here is final and can't be restored)"; + /* is session active? */ + if($gamestatus == 'pre' || $gamestatus== 'play' || time()-strtotime($gamemoddate) < 60*60*24*5 ) + { + $output_active .= "
  • "; + if($gamestatus == 'pre') + $output_active .= ''; + else if($gamestatus == 'play') + $output_active .= ''; + else + $output_active .= ''; + $output_active .= "". + DB_format_gameid($gameid).'   '; + + + + /* who's turn is it? */ + if( $gamestatus == 'pre' || $gamestatus == 'play') + { + $output_active .= ''; + if($userid==$myid || !$userid) + $output_active .= " your turn\n"; + else + { + $name = DB_get_name('userid',$userid); + + /* check vacaction status of this user */ + if($vacation=check_vacation($userid)) + { + $stop = substr($vacation[1],0,10); + $title = 'begin:'.substr($vacation[0],0,10).' end:'.$vacation[1].' '.$vacation[2]; + $output_active .= " $name's (on vacation until $stop) turn\n"; + } + else + $output_active .= "$name's turn\n"; + + /* check if we need to send out a reminder */ + if(DB_get_reminder($userid,$gameid)==0) + if(time()-strtotime($gamemoddate) > 60*60*24*7) + $output_active .= "Send a reminder? "; + + }; + $output_active .= ''; + + if(time()-strtotime($gamemoddate) > 60*60*24*30) + $output_active .= "Cancel? "; + } + + if($maxgame>1) + { + $output_active .= ' (hide/show) old
    '."\n"; + $output_active .= ' '.$sessionoutput.''; + } + + $output_active .= "
  • \n"; + + } + else + { + /* session is not active anymore */ + $output_inactive .= "
  • $session:" ; + $output_inactive .= $sessionoutput.$gameoutput ; + $output_inactive .= "
  • \n"; + } + + /* reset all session variables */ + $maxgame = 0; + $sessionoutput = ""; + $gameoutput = ""; + + } + + /* save game information */ + $maxgame++; + $myhash = $r[0]; + $gameid = $r[1]; + $gamemoddate = $r[2]; + $userid = $r[3]; + $gamestatus = $r[4]; + $gamefrequence = $r[5]; + $session = $r[6]; + + /* create output */ + $sessionoutput .= $gameoutput; + $gameoutput = " " + .$gamefrequence."\n"; + } } - echo "
    \n"; + + echo "\n"; + + /* give a hint for new players */ + if($count<10) + echo "

    You can start new games using the link in the top right corner!

    \n"; /* display last 5 users that have signed up to e-DoKo */ $names = DB_get_names_of_new_logins(5); @@ -180,9 +311,14 @@ else echo "

    \n"; /* display last 5 users that logged on */ - $names = DB_get_names_of_last_logins(5); echo "

    Players last logged in:

    \n

    \n"; - echo implode(", ",$names).",...\n"; + + $names = DB_get_names_of_last_logins(7); + $emails = DB_get_emails_of_last_logins(7); + for($i=0;$i<7;$i++) + { + echo "\n"; + } echo "

    \n"; echo "
    \n";