aboutsummaryrefslogtreecommitdiffstats
path: root/index.php
diff options
context:
space:
mode:
authorMischa Peters <mpeters@high5.nl>2014-08-03 10:44:22 +0200
committerMischa Peters <mpeters@high5.nl>2014-08-03 10:44:22 +0200
commit9e422ec7a8af767683c1a6fb87d6749ab7b436a1 (patch)
tree8cc2deb536d76fd00c93e7d0b94271a153a8583d /index.php
Initial Commit
Diffstat (limited to 'index.php')
-rw-r--r--index.php206
1 files changed, 206 insertions, 0 deletions
diff --git a/index.php b/index.php
new file mode 100644
index 0000000..5bdbbfa
--- /dev/null
+++ b/index.php
@@ -0,0 +1,206 @@
+<?php
+//
+// Minimalist Admin is a very simple webinterface for Minimalist
+// Copyright (c) 2005-2014 High5! (Mischa Peters <mischa at high5 dot nl>)
+//
+// This program 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 2 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+//
+// Minimalist Admin verion 0.6, Copyright (c) 2005-2014 High5! (Mischa Peters)
+// Minimalist Admin comes with ABSOLUTELY NO WARRANTY.
+// This is free software, and you are welcome to redistribute it
+// under certain conditions.
+//
+// High5!, hereby disclaims all copyright interest in the program
+// `Minimalist Admin' (which makes passes at Minimalist) written
+// by Vladimir Litovka.
+//
+//error_reporting(E_NOTICE | E_ERROR | E_WARNING | E_PARSE);
+
+// Read global config file
+include "config.inc";
+
+// Minimalist Admin version
+$version = "0.6";
+
+// Set some variables.
+$get_list = "";
+$email = "";
+$emailconfirm = "";
+$writeonly = "";
+$unsubscribe = "";
+
+// _GET list to process
+if (!empty($_GET['l']))
+{
+ $get_list = $_GET['l'];
+ if (!preg_match('/^([a-z0-9-])+$/i', trim($get_list)))
+ {
+ header("Location: index.php");
+ exit;
+ }
+ // Check if list config exists and include it
+ if (file_exists("lists/$get_list-config.inc")) include "lists/$get_list-config.inc";
+}
+
+// Set variables from config.inc and lists/$get_list-config.inc
+$minimalist_lists = $CONF['minimalist_lists'];
+$minimalist_email = $CONF['minimalist_email'];
+$minimalist_title = $CONF['minimalist_title'];
+$minimalist_list_title = $CONF['minimalist_list_title'];
+$list_name = $CONF['list_name'];
+$list_writers = $CONF['list_writers'];
+$list_subscribe = $CONF['list_subscribe'];
+$list_unsubscribe = $CONF['list_unsubscribe'];
+$error_email_nomatch = $CONF['error_email_nomatch'];
+$error_email_notvalid = $CONF['error_email_notvalid'];
+
+// Print the html header
+print_header();
+
+// Test if REQUEST_METHOD is a GET request
+if ($_SERVER['REQUEST_METHOD'] == "GET")
+{
+ // If $get_list is not empty print list form
+ if (!empty($get_list))
+ {
+ print_form();
+ print_footer();
+ }
+ // If $get_list is empty process the $minimalist_lists file.
+ else
+ {
+ if (file_exists("$minimalist_lists"))
+ {
+ $fh = file("$minimalist_lists");
+ print "<table border=\"0\" class=\"list\">\n";
+ for ($i = 0; $i < sizeof($fh); $i++)
+ {
+ list($list, $desc) = preg_split("/\t/", $fh[$i], 2);
+ if (!empty($list)) print "<tr><td><a href=\"index.php?l=$list\">$list</a></td><td>$desc</td></tr>\n";
+ }
+ print "</table>\n";
+ }
+ else
+ {
+ print "Unable to find minimalists file at: $minimalist_lists\n";
+ }
+ print_footer();
+ }
+}
+
+// Test if REQUEST_METHOD is a GET request
+if ($_SERVER['REQUEST_METHOD'] == "POST")
+{
+ if (!empty($_POST['email'])) $email = $_POST['email'];
+ if (!empty($_POST['emailconfirm'])) $emailconfirm = $_POST['emailconfirm'];
+ if (!empty($_POST['writeonly'])) $writeonly = $_POST['writeonly'];
+ if (!empty($_POST['unsubscribe'])) $unsubscribe = $_POST['unsubscribe'];
+
+ if ($email != $emailconfirm)
+ {
+ print "$error_email_nomatch\n";
+ print_form();
+ print_footer();
+ exit;
+ }
+
+ if (!preg_match('/^[-!#$%&\'*+\\.\/0-9=?A-Z^_{|}~]+' . '@' . '([-0-9A-Z]+\.)+' . '([0-9A-Z]){2,4}$/i', trim($email)))
+ {
+ print "$error_email_notvalid\n";
+ print_form();
+ print_footer();
+ exit;
+ }
+
+ if (!empty($writeonly))
+ {
+ $get_list = $get_list . "-writers";
+ }
+
+ if ($unsubscribe)
+ {
+ mail($minimalist_email, "unsubscribe $get_list $email", "", "From: $email");
+ print "$list_unsubscribe\n";
+ print_footer();
+ exit;
+ }
+ else
+ {
+ mail($minimalist_email, "subscribe $get_list $email", "", "From: $email");
+ print "$list_subscribe\n";
+ print_footer();
+ exit;
+ }
+}
+
+function print_header()
+{
+ global $get_list;
+ global $minimalist_title;
+ global $minimalist_list_title;
+ global $list_name;
+ global $list_writers;
+
+ // Set the title_list_name to $list_name if $get_list is empty.
+ $title_list_name = (empty($list_name)) ? $get_list : $list_name;
+ // Set the title to $minimalist_title if $get_list is empty.
+ $title = (empty($get_list)) ? $minimalist_title : "$minimalist_list_title $title_list_name";
+
+ print "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n";
+ print "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n";
+ print "<head>\n";
+ print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">\n";
+ if (file_exists(realpath("lists/$get_list-stylesheet.css")))
+ {
+ print "<link rel=\"stylesheet\" href=\"lists/$get_list-stylesheet.css\">\n";
+ }
+ else
+ {
+ print "<link rel=\"stylesheet\" href=\"stylesheet.css\">\n";
+ }
+ print "<title>$title</title>\n";
+ print "</head>\n";
+ print "<body>\n";
+ print "<h2>$title</h2>\n";
+}
+
+function print_form()
+{
+ global $list_writers;
+ print "<form method=\"post\">\n";
+ print "<table border=\"0\">\n";
+ print "<tr><td>Email:</td><td><input type=\"textbox\" name=\"email\"></td></tr>\n";
+ print "<tr><td>Email (verification):</td><td><input type=\"textbox\" name=\"emailconfirm\"></td></tr>\n";
+ if (preg_match("/enable/", $list_writers)) {
+ print "<tr><td>Post Only (don't receive):</td><td><input type=\"checkbox\" name=\"writeonly\"></td></tr>\n";
+ }
+ print "<tr><td>Unsubscribe:</td><td><input type=\"checkbox\" name=\"unsubscribe\"></td></tr>\n";
+ print "<tr><td align=\"center\" colspan=\"2\"><input type=\"submit\" name=\"submit\" value=\"Submit\"></tr>\n";
+ print "</table>\n";
+ print "</form>\n";
+ print "<br />\n";
+ print "<a href=\"index.php\">Back</a>\n";
+}
+
+function print_footer()
+{
+ global $version;
+ print "<div id=\"footer\">\n";
+ print "Copyright (c) 2005-2011 by <a target=\"blank\" href=\"http://high5.net/\">High5!</a> -- Minimalist Admin v$version</a>\n";
+ print "</div>\n";
+ print "</body>\n";
+ print "</html>\n";
+}
+?>