#include <LUGO.style>

<?
define('TEXT_SUBSCRIBE', 'Sie werden in Kürze eine Mail von der Liste erhalten, die Sie beantworten müssen.
Erst dann werden Sie tatsächlich auf der Mailing-Liste angemeldet.
Dieser Mechanismus schützt Sie davor, daß jemand Fremdes einfach Ihre Adresse auf der Liste anmelden kann.');
define('TEXT_UNSUBSCRIBE', 'Sie werden sofort aus der Liste ausgetragen.
Wir würden uns freuen, wenn Sie weiterhin Freie Software und GNU/Linux verwenden und
andere bei der Nutzung unterstützen.
Der Linux-Stammtisch in Oldenburg steht natürlich auch weiterhin für Sie offen.');
define('ERROR_NO_NAME','Sie haben keinen Namen angegeben,\nbitte holen Sie das nach.');
define('ERROR_NO_MAIL','Sie haben keine Mail-Adresse angegeben,\nbitte holen Sie das nach.');
define('ERROR_MAIL_INVALID','Sie haben keine gültige Mail-Adresse angegeben,\nbitte holen Sie das nach.');
######################################################################################
#                                                                                    #
# RFC822 Email Parser                                                                #
# http://code.iamcal.com/php/rfc822/rfc822.phps                                      #
#                                                                                    #
# By Cal Henderson <cal@iamcal.com>                                                  #
# This code is licensed under a Creative Commons Attribution-ShareAlike 2.5 License  #
# http://creativecommons.org/licenses/by-sa/2.5/                                     #
#                                                                                    #
# Revision 2                                                                         #
#                                                                                    #
######################################################################################


function is_valid_email_address($email){
    $qtext = '[^\\x0d\\x22\\x5c\\x80-\\xff]';
    $dtext = '[^\\x0d\\x5b-\\x5d\\x80-\\xff]';
    $char = '[^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c'.
              '\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]';
    $atom = "$char+";

          $quoted_pair = '\\x5c[\\x00-\\x7f]';
          $domain_literal = "\\x5b($dtext|$quoted_pair)*\\x5d";
          $quoted_string = "\\x22($qtext|$quoted_pair)*\\x22";
          $domain_ref = $atom;
          $top_domain = "[a-zA-Z]{2,10}";
          $sub_domain = "($domain_ref|$domain_literal)";
          $word = "($atom|$quoted_string)";
          $domain = "$sub_domain(\\x2e$sub_domain)*\\x2e$top_domain";
          $local_part = "$word(\\x2e$word)*";
          $addr_spec = "$local_part\\x40$domain";
          return preg_match("!^$addr_spec$!", $email) ? 1 : 0;
      }
?>
<page name="Mailing-Liste mit Einladungen">

<h3>Einladungen per Mail</h3>

<protect>
<?
  $display = true;
  $error = '';
  $email = '';
  $name = '';

  if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if (isset($_POST['dasteil']))
      $email = $_POST['dasteil'];
    if (isset($_POST['dername']))
      $name = $_POST['dername'];

    if (empty($name))
      $error = ERROR_NO_NAME;
    elseif (empty($email))
      $error = ERROR_NO_MAIL;
    elseif (!is_valid_email_address($email))
      $error = ERROR_MAIL_INVALID;
    else {
      $to = 'linux-stammtisch-einladungen-request@lists.infodrom.org';
      if (isset($_POST['subscribe']))
	$subject = 'subscribe';
      else
	$subject = 'unsubscribe';

      $body = "Request by <http://" . $_SERVER["SERVER_NAME"] . "/>\n\n";
      $body .= "URL      : " . (isset($_SERVER["SCRIPT_URI"])?$_SERVER["SCRIPT_URI"]:$_SERVER["HTTP_REFERER"]) . "\n";
      $body .= "Remote   : " . $_SERVER["REMOTE_ADDR"] . "\n";
      $body .= "UserAgent: " . $_SERVER["HTTP_USER_AGENT"] . "\n";

      $from = 'From: ' . mb_encode_mimeheader($name) . " <" . $email . ">";

      mail($to, $subject, $body, $from);

      $display = false;
    }
  }

  if ($display) {
?>
</protect>
<p>Die Linux User Group Oldenburg betreibt neben der obigen
Mailing-Liste für Diskussionen auch eine moderierte Liste, über die nur
Einladungen und Administrativa verschickt werden.  Diese Liste ist
insbesondere für weniger versierte Mitglieder gedacht, denen die
Diskussionen auf der herkömmlichen Liste zu viel werden.</p>

<p>Sie können sich bequem über das Formular an- und abmelden.  Nach
Abschicken der Anmeldung wird Ihnen eine E-Mail zugestellt, die sie
beantworten müssen.  Danach werden Sie auf der Mailing-Liste
eingetragen.</p>

<style type="text/css">
input {
  background-color: #e6e6e6;
  border: 1px solid #404080;
}
input {
  padding-left: 2px;
  margin-bottom: 5px;
}
input.button {
  width: auto;
  margin-top: 3px;
}
input.button:hover {
  border: 1px solid #000000;
  background-color: #d0d0d0;
  color: black;
}
p.alert {
  background: #d0d0d0;
  color: #ff0000;
  font-weight: bold;
  padding: 5px;
}
</style>

<?
    if (!empty($error))
      echo('<p class="alert">'.str_replace('\n',' ', $error).'</p>');
?>

<script language="javascript"><!--
function check_form()
{
    var name = document.getElementById('dername');
    var email = document.getElementById('dasteil');

    if (!name || !email)
	return false;

    if (name.value.length == 0) {
	alert('<?=ERROR_NO_NAME?>');
	return false;
    }

    if (email.value.length == 0) {
	alert('<?=ERROR_NO_MAIL?>');
	return false;
    }

    return true;
}
//--></script>

<form action="einladungen.php" method="POST">

<b>Ihr Name</b>
<br><input type="text" name="dername" id="dername" tabindex="1" value="<?=$name?>" size="40" />
<br><b>Mail-Adresse</b>
<br><input type="text" name="dasteil" id="dasteil" tabindex="2" value="<?=$email?>" size="40" />
<br>

<input class="button" type="submit" tabindex="3" name="subscribe" value="Anmelden" onclick="return check_form();">
       &nbsp;&nbsp;&nbsp;&nbsp;
<input class="button" type="submit" tabindex="4" name="unsubscribe" value="Abmelden" onclick="return check_form();">

</form>

<?
   } else { /* if ($display) */
     if (isset($_POST['subscribe']))
       echo("<p>".TEXT_SUBSCRIBE."</p>");
     else
       echo("<p>".TEXT_UNSUBSCRIBE."</p>");

   } /* if ($display) */
?>
</page>

# Local variables:
# mode: indented-text
# mode: iso-accents
# end:
