# HG changeset patch # User Matti Hamalainen # Date 1382362002 -10800 # Node ID a85f258f6beb5fe141f903c63bade4c3e1770aca # Parent c7b1eb993240b28666ec9c12aad70def49676c9c Move some things around and modularize the code. diff -r c7b1eb993240 -r a85f258f6beb admajax.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/admajax.php Mon Oct 21 16:26:42 2013 +0300 @@ -0,0 +1,445 @@ +\n"; +} + + +// XMLHttp responses +$action = "ERROR"; +if (stChkRequestItem("action") && stChkRequestItem("type")) +{ + $action = $_REQUEST["action"]; + $type = $_REQUEST["type"]; +} + + +switch ($action) +{ + case "dump": + // + // Perform generic data dump + // + if (($res = stExecSQLCond( + "SELECT * FROM attendees WHERE email NOT NULL AND email != '' ORDER BY regtime DESC", + "Dump OK.")) !== FALSE) + { + $out1 = array(); + $out2 = array(); + + foreach ($res as $item) + { + $out1[] = $item["name"]." <".$item["email"].">"; + $out2[] = $item["email"]; + } + + echo "

". + implode(", ", $out1)."


". + implode("
", $out1)."


". + implode(", ", $out2)."


". + implode("
", $out2)."

"; + + } + break; + + case "get": + // + // Get specific data + // + switch ($type) + { + case "news": + $sql = "SELECT * FROM news ORDER BY utime DESC"; + break; + + case "attendees": + $sql = "SELECT * FROM attendees ORDER BY regtime DESC"; + break; + + case "voters": + break; + + case "compos": + $sql = "SELECT * FROM compos ORDER BY id DESC"; + break; + + case "settings": + $prefix = "st"; + + echo + "

Site settings

\n". + "\n"; + foreach (stExecSQL("SELECT * FROM settings WHERE vtype<>".VT_TEXT) as $item) + { + echo + " \n". + " \n". + " \n". + " \n"; + } + echo "
"; + $id = $item["key"]; + switch ($item["vtype"]) + { + case VT_INT: + echo stGetFormTextInput(10, 10, "", $id, $prefix, $item["vint"]); + break; + case VT_STR: + echo stGetFormTextInput(40, 128, "", $id, $prefix, $item["vstr"]); + break; + case VT_BOOL: + echo stGetFormCheckBoxInput("", $id, $prefix, $item["vint"], ""); + break; + } + echo "".$item["desc"]."
\n".saveButton(); + + foreach (stExecSQL("SELECT * FROM settings WHERE vtype=".VT_TEXT) as $item) + { + echo "

".chentities($item["desc"])."

\n". + stGetFormTextArea(10, 60, "", $item["key"], $prefix, $item["vtext"]). + "\n
\n".saveButton(); + } + break; + + case "entries": + stGetCompoList(FALSE, FALSE); + + foreach ($compos as $id => $compo) + { + echo + "
\n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n"; + + $prefix = "en"; + foreach ($compo["entries"] as $eid => $entry) + { + echo + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n"; + } + + $prefix = "ne"; + echo + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + "
#".$id." - ".chentities($compo["name"])."
CompoTitleAuthor(s)FilenameActions
".stGetFormTextInput(5, 5, "compo_id", $eid, "en", $id)."".stGetFormTextInput(30, 64, "name", $eid, "en", $entry["name"])."".stGetFormTextInput(30, 64, "author", $eid, "en", $entry["author"])."".stGetFormTextInput(20, 64, "filename", $eid, "en", $entry["filename"])."". + stGetFormButtonInput("update", $eid, $prefix, " Upd ", "updateEntry(".$eid.")"). + stGetFormButtonInput("delete", $eid, $prefix, " Del ", "deleteEntry(".$eid.")"). + "
".stGetFormTextInput(30, 64, "name", $id, "ne", "")."".stGetFormTextInput(30, 64, "author", $id, "ne", "")."".stGetFormTextInput(20, 64, "filename", $id, "ne", "")."".stGetFormButtonInput("add", $id, $prefix, " Add new ", "addEntry(".$id.")")."
\n". + "
\n"; + } + break; + } + + // + // Perform query if we need to, output results + // + if (isset($sql) && ($res = stExecSQLCond($sql, "")) !== FALSE) + { + if ($type == "news") + { + foreach ($res as $item) + { + $id = $item["id"]; + stPrintNewsItem($item, + "
". + " \n" + ); + } + } + else + if ($type == "attendees") + { + // List of attendees + echo + "\n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n"; + $row = 0; + foreach ($res as $item) + stPrintAttendee($item, $row++, TRUE); + + // For adding a new one + $prefix = "ne"; + echo + "
NameGroupsRegisteredOnelinerE-mailActions
\n". + "
\n". + "\n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + "
NameGroupsOnelinerE-mailActions
".stGetFormTextInput(20, 64, "name", "x", $prefix, "")."".stGetFormTextInput(20, 64, "groups", "x", $prefix, "")."".stGetFormTextInput(30, 64, "oneliner", "x", $prefix, "")."".stGetFormTextInput(20, 64, "email", "x", $prefix, "")."".stGetFormButtonInput("add", "", $prefix, " Add new ", "addAttendee()")."
\n"; + } + else + if ($type == "compos") + { + foreach ($res as $item) + { + $id = $item["id"]; + $prefix = "co"; + echo + "
\n". + "

#".$id." - ".chentities($item["name"])."

\n". + stGetFormTextInput(40, 64, "name", $id, $prefix, $item["name"])."\n". + stGetFormCheckBoxInput("visible", $id, $prefix, $item["visible"], "Visible")."\n". + stGetFormCheckBoxInput("showAuthors", $id, $prefix, $item["showAuthors"], "Show authors")."\n". + stGetFormCheckBoxInput("voting", $id, $prefix, $item["voting"], "Enable voting")."
\n". + stGetFormTextArea(5, 60, "description", $id, $prefix, $item["description"])."\n
\n". + stGetFormButtonInput("update", $id, $prefix, " Update ", "updateCompo(".$id.")")."\n". + "
\n". + "
\n"; + } + } + } + break; + + case "delete": + // + // Delete entry + // + if (stChkRequestItem("id")) + { + $id = intval(stGetRequestItem("id")); + + if ($type == "news") + { + $sql = stPrepareSQL("DELETE FROM news WHERE id=%d AND persist=0", $id); + stExecSQLCond($sql, "OK, news item ".$id." deleted."); + } + else + if ($type == "attendees") + { + // Attendees require some more work + $sql = stPrepareSQL("DELETE FROM attendees WHERE id=%d", $id); + stExecSQLCond($sql, "OK, attendee ".$id." deleted."); + + $sql = stPrepareSQL("DELETE FROM votes WHERE voter_id=%d", $id); + stExecSQLCond($sql, "OK, attendee ".$id." votes deleted."); + } + else + if ($type == "entries") + { + // .. as do compo entries + $sql = stPrepareSQL("DELETE FROM entries WHERE id=%d", $id); + stExecSQLCond($sql, "OK, entry ".$id." deleted."); + + $sql = stPrepareSQL("DELETE FROM votes WHERE entry_id=%d", $id); + stExecSQLCond($sql, "OK, entry ".$id." votes deleted."); + } + } + else + stSetStatus(901, "No ID specified."); + break; + + case "add": + // + // Add new entry + // + if ($type == "news" && stChkRequestItem("text") && + stChkRequestItem("author") && stChkRequestItem("title")) + { + $sql = stPrepareSQL( + "INSERT INTO news (utime,title,text,author) VALUES (%d,%S,%Q,%S)", + time(), "title", "text", "author"); + + stExecSQLCond($sql, "OK, news item added."); + } + else + if ($type == "compo" && stChkRequestItem("name") && + stChkRequestItem("description")) + { + $sql = stPrepareSQL( + "INSERT INTO compos (name,description,visible,voting,showAuthors) VALUES (%S,%Q,0,0,0)", + "name", "description"); + + stExecSQLCond($sql, "OK, compo added."); + } + else + if ($type == "attendees" && stChkRequestItem("name") && + stChkRequestItem("groups") && stChkRequestItem("oneliner") && + stChkRequestItem("email")) + { + $sql = stPrepareSQL( + "INSERT INTO attendees (regtime,name,groups,oneliner,email) VALUES (%d,%S,%S,%S,%S)", + time(), "name", "groups", "oneliner", "email"); + + stExecSQLCond($sql, "OK, attendee added."); + } + else + if ($type == "entry" && stChkRequestItem("name") && + stChkRequestItem("author") && stChkRequestItem("compo_id")) + { + $sql = stPrepareSQL( + "INSERT INTO entries (name,author,compo_id,filename) VALUES (%S,%S,%D,%S)", + "name", "author", "compo_id", "filename"); + + stExecSQLCond($sql, "OK, entry added."); + } + else + stSetStatus(902, "No data."); + break; + + case "update": + // + // Update existing entry + // + if ($type == "attendees" && stChkRequestItem("id") && + stChkRequestItem("email") && stChkRequestItem("oneliner") && + stChkRequestItem("active")) + { + $sql = stPrepareSQLUpdate("attendees", + "WHERE id=".intval(stGetRequestItem("id")), + array( + "email" => "S", + "oneliner" => "S", + "active" => "B", + )); + + stExecSQLCond($sql, "OK, attendee updated."); + } + else + if ($type == "news" && stChkRequestItem("id") && + stChkRequestItem("text") && stChkRequestItem("author") && + stChkRequestItem("title")) + { + $sql = stPrepareSQLUpdate("news", + "WHERE id=".intval(stGetRequestItem("id")), + array( + "title" => "S", + "text" => "Q", + "author" => "S" + )); + + stExecSQLCond($sql, "OK, news item updated."); + } + else + if ($type == "compo" && stChkRequestItem("id") && + stChkRequestItem("name") && stChkRequestItem("description") && + stChkRequestItem("visible") && stChkRequestItem("voting") && + stChkRequestItem("showAuthors")) + { + $sql = stPrepareSQLUpdate("compos", + "WHERE id=".intval(stGetRequestItem("id")), + array( + "name" => "S", + "description" => "Q", + "visible" => "B", + "voting" => "B", + "showAuthors" => "B", + )); + + stExecSQLCond($sql, "OK, compo updated."); + } + else + if ($type == "entry" && stChkRequestItem("id") && + stChkRequestItem("name") && stChkRequestItem("author") && + stChkRequestItem("compo_id")) + { + $sql = stPrepareSQLUpdate("entries", + "WHERE id=".intval(stGetRequestItem("id")), + array( + "name" => "S", + "author" => "S", + "filename" => "S", + "compo_id" => "D", + )); + + stExecSQLCond($sql, "OK, entry updated."); + } + else + if ($type == "settings") + { + foreach (stExecSQL("SELECT * FROM settings") as $item) + if (stChkRequestItem($item["key"])) + { + $val = stGetRequestItem($item["key"]); + switch ($item["vtype"]) + { + case VT_INT: $vsql = stPrepareSQL("vint=%d", $val); break; + case VT_BOOL: $vsql = stPrepareSQL("vint=%d", $val ? 1 : 0); break; + case VT_STR: $vsql = stPrepareSQL("vstr=%s", $val); break; + case VT_TEXT: $vsql = stPrepareSQL("vtext=%s", $val); break; + } + + $sql = "UPDATE settings SET ".$vsql." WHERE key=".$db->quote($item["key"]); + stExecSQLCond($sql, "OK, setting updated."); + } + } + else + stSetStatus(902, "No data."); + break; + + default: + stSetStatus(404, "Not Found"); + break; +} + +?> \ No newline at end of file diff -r c7b1eb993240 -r a85f258f6beb admin.inc.php --- a/admin.inc.php Mon Oct 21 15:17:04 2013 +0300 +++ b/admin.inc.php Mon Oct 21 16:26:42 2013 +0300 @@ -13,7 +13,7 @@ { case VT_STR: case VT_TEXT: $type = 0; break; - case VT_INT: $type = 4; break; + case VT_INT: $type = 4; break; case VT_BOOL: $type = 3; break; } $args[] = "\"".$item["key"]."\":".$type; @@ -61,159 +61,7 @@ { ?>