diff options
-rw-r--r-- | htdocs/new-post.php | 91 |
1 files changed, 78 insertions, 13 deletions
diff --git a/htdocs/new-post.php b/htdocs/new-post.php index e6f4035..7312e5f 100644 --- a/htdocs/new-post.php +++ b/htdocs/new-post.php @@ -14,24 +14,89 @@ require_once "src/header.inc.php"; echo "<h2>Submit Post</h2>"; -echo "<form action=\"submit-post.php\" method=\"post\">"; -echo "<p><label>Category: <select name=\"category\">"; -foreach (Category::getCategories() as $short => $name) { - echo "<option name=\"$short\">$name</option>"; -} -echo "</select></label</p>"; +// Process submission +if (isset($_POST['category'])) { + $required = array( + 'title' => 'Title', + 'description' => 'Description', + 'category' => 'Category', + 'email' => 'Email Address', + 'email2' => 'Confirm Email Address', + ); + + $error = ''; + $values = array(); + foreach ($required as $field => $desc) { + if (!isset($_POST[$field]) or trim($_POST[$field]) == '') { + $error .= "<p>$desc is a required field.</p>"; + + } else { + $values[$field] = addslashes($_POST[$field]); + } + } + + if ($values['email'] != $values['email2']) { + $error .= "<p>Email addresses must match.</p>"; + } + + if ($error == '') { + $post = new Post(); + + $post->setEmail($values['email']); + $post->setCategory($values['category']); + $post->setTitle($values['title']); + $post->setDescription($values['description']); -echo "<p><label>Title: <input type=\"text\" name=\"title\" /></label></p>"; + if ($post->save()) { + $post->sendValidation(); -echo "<p><label for=\"desc\">Description:</label></p>"; -echo "<p><textarea name=\"description\" id=\"desc\" rows=\"10\"" - . " cols=\"80\"></textarea></p>"; + // TODO: Revise wording. + echo "<p>Your posting is awaiting email verification</p>"; -// TODO: Link to terms of service. -echo "<p><label><input type=\"checkbox\" name=\"tos\" value=\"1\" /> I agree to the terms of service.</label></p>"; + } else { + $error .= "An internal error has occured."; + } -echo "<p><input type=\"submit\" value=\"Submit\" /></p></form>"; + } else { + render_form($error); + } + +} else { + render_form(); +} require_once "src/footer.inc.php"; + +function render_form($error="") { + if ($error != '') { + echo "<div class=\"error\">$error</div>"; + } + + echo "<form action=\"new-post.php\" method=\"post\">"; + echo "<p><label>Category: <select name=\"category\">"; + foreach (Category::getCategories() as $short => $name) { + echo "<option name=\"$short\">$name</option>"; + } + echo "</select></label</p>"; + + echo "<p><label>Title: <input type=\"text\" name=\"title\" /></label></p>"; + + echo "<p><label for=\"desc\">Description:</label></p>"; + echo "<p><textarea name=\"description\" id=\"desc\" rows=\"10\"" + . " cols=\"80\"></textarea></p>"; + + echo "<p><label>Email Address: <input type=\"text\" name=\"email\" />" + . "</label></p>"; + echo "<p><label>Confirm Email: <input type=\"text\" name=\"email2\" />" + . "</label></p>"; + + // TODO: Link to terms of service. + echo "<p><label><input type=\"checkbox\" name=\"tos\" value=\"1\" />" + ." I agree to the terms of service.</label></p>"; + + echo "<p><input type=\"submit\" value=\"Submit\" /></p></form>"; +} + + ?> |