#include "party.style"
#include "passwd.inc"

<?
  $problem = '';
  $dbh = pg_pconnect ("<dbconnstring>")
	       or die("Unable to connect to SQL server");

  if (!strlen ($name)) {
    $problem .= "<p>No name given, baaaaaaad.</p>";
  }

  $query  = "SELECT day FROM party_dates ORDER BY day";
  $sth = pg_exec ($dbh, $query) or die("Datenbank-Abfrage!");

  $days = array ();
  for ($nr=0; $nr < pg_NumRows ($sth); $nr++) {
    $row = pg_fetch_array ($sth, $nr);
    if ($GLOBALS[$row['day']] == 1) { $days[]=$row['day']; }
  }

  if (count ($days) == 0) {
    $problem .= "<p>No days selected.</p>";
  }

  if (strlen ($email)) {
    $query = sprintf ("SELECT id FROM party_person WHERE email = '%s'",
		      addslashes ($email));
    $sth = pg_exec ($dbh, $query) or die("Cannot execute query.");
    if (pg_NumRows ($sth) > 0) {
      $problem .= "<p>This mail address is already in use, please use a different one.</p>";
    }
  }

  if (!strlen ($problem)) {
    $sth = pg_exec ($dbh, "BEGIN TRANSACTION") or die("Cannot begin transaction!");

    $oldmail = $email;
    if (empty($email)) {
      $email = 'NULL';
      $passwd = '';
    } else {
      $email = "'".addslashes ($email)."'";
      $passwd = randpass();
    }

    $query = sprintf ("INSERT INTO party_person (name,email,login,passwd,country,city,type,food,admin) "
		     ."VALUES ('%s',%s,%s,'%s','%s','%s','%s','%s',0)",
		      addslashes ($name),
		      $email,
		      $email,
		      md5 ($passwd),
		      addslashes ($country),
		      addslashes ($city),
		      addslashes ($type),
		      addslashes ($food));

    $sth = pg_exec ($dbh, $query) or die("Cannot insert your data, contact Joey!");

    $query = sprintf ("SELECT id FROM party_person WHERE oid = %d", pg_getlastoid ($sth));
    $sth = pg_exec ($dbh, $query) or die("Cannot find your data, huh?");

    if (pg_NumRows ($sth) > 0) {
      $row = pg_fetch_array ($sth, 0);
      reset ($days);
      while (list(,$day) = each($days)) {
	$query = sprintf ("INSERT INTO party_attend (person,day) VALUES (%d,'%s')",
			  $row['id'],
			  addslashes ($day));
	$sth = pg_exec ($dbh, $query) or die("Cannot assign a day for you.");
      }
    } else {
      die("Cannot find recently inserted data.");
    }

    $sth = pg_exec ($dbh, "COMMIT") or die("Cannot commit transaction!");

    # Now we're finished
    mail_password ($oldmail, $passwd);
  }
?>

#include <infodrom.style>
#include <debian.style>

<page title="Debian Birthday Party -- Sign on">

<h1 align=center>Debian Birthday Party</h1>

<?
  if (strlen ($problem)) {
    echo "<p>An error is occurred.  Please go back to the formular and fix the problem.</p>";
    echo $problem;
  } else {
    printf ("<p>Hello %s!</p><p>You've successfully signed up for the Debian Party.</p>", $name);
    if (strlen ($email)) {
      printf ("<p>The password will be sent to %s.</p>", $oldmail);
    }
  }
?>

</page>

# Local variables:
# mode: indented-text
# mode: auto-fill
# end:
