diff options
-rw-r--r-- | design/database.sql | 1 | ||||
-rw-r--r-- | htdocs/new-post.php | 70 | ||||
-rw-r--r-- | htdocs/src/Post.inc.php | 22 |
3 files changed, 88 insertions, 5 deletions
diff --git a/design/database.sql b/design/database.sql index 8a19001..caecbeb 100644 --- a/design/database.sql +++ b/design/database.sql @@ -50,6 +50,7 @@ CREATE TABLE post ( secretid VARCHAR(32) NOT NULL, source_id INTEGER UNSIGNED NOT NULL, + reason VARCHAR(255) NULL, stage ENUM('verification', 'moderation', 'approved', diff --git a/htdocs/new-post.php b/htdocs/new-post.php index 7112a8c..d463d1a 100644 --- a/htdocs/new-post.php +++ b/htdocs/new-post.php @@ -57,8 +57,13 @@ switch ($stage) { handle_images(); break; - case 'finish': + case 'source': if (finish_images()) + handle_source(); + break; + + case 'finish': + if (finish_source()) handle_finish(); break; @@ -100,12 +105,11 @@ function finish_category() { function handle_tos() { // Display ToS - // TODO: Display ToS Here - form_start('post'); echo "<p><label><input type=\"checkbox\" name=\"tos\" value=\"1\" />" - ." I agree to the terms of service.</label></p>"; + ." I agree to the <a href=\"". buildUrl('page/tou.html') + ."\">terms of service</a>.</label></p>"; form_end(); } @@ -176,7 +180,7 @@ function handle_images() { // Display image form echo "<p>You may upload up to four images with your post.</p>"; - form_start('finish'); + form_start('source'); for ($i = 1; $i <= MAX_IMAGE_UPLOADS; $i++) { echo "<p><label>Image $i: " @@ -200,6 +204,62 @@ function finish_images() { return true; } +function handle_source($error='') { + form_start('finish'); + + if ($error != '') { + echo "<div class=\"errorbox\">$error</div>"; + } + + echo "<p>Where did you hear about this site?</p>"; + + echo "<select name=\"source\">"; + + foreach(Source::getSources() as $source) { + echo "<option value=\"". $source->getId() ."\">" + . $source->getName() ."</option>"; + } + + echo "<option value=\"0\">Other</option>"; + echo "</select>"; + + echo "<p>If you selecte other, please explain:"; + echo " <input type=\"text\" name=\"explain\" /></p>"; + + form_end(); +} + +function finish_source() { + $error = '<p>This question is required.</p>'; + + $post = $_SESSION['newpost']; + if (isset($_POST['source']) and is_numeric($_POST['source'])) { + if ($_POST['source'] == 0) { + if (isset($_POST['explain']) and trim($_POST['explain']) != '') { + $post->otherSource($_POST['explain']); + $post->save(); + return true; + + } else { + $error = '<p>Explaination is a required field.</p>'; + } + + } else { + $source = Source::getById($_POST['source']); + + if ($source) { + $post->setSource($_POST['source']); + $post->save(); + return true; + } + } + + } + + handle_source($error); + return false; +} + function handle_finish() { $post = $_SESSION['newpost']; diff --git a/htdocs/src/Post.inc.php b/htdocs/src/Post.inc.php index c29b5a9..4f5e246 100644 --- a/htdocs/src/Post.inc.php +++ b/htdocs/src/Post.inc.php @@ -149,6 +149,28 @@ class Post { return $this->info['stage']; } + public function getSource() { + if ($this->info['source_id'] != 0) { + return $this->info['source_id']; + + } else { + return false; + } + } + + public function getOtherSource() { + return $this->info['reason']; + } + + public function setSource($value) { + $this->info['source_id'] = $value; + } + + public function otherSource($value) { + $this->info['source_id'] = 0; + $this->info['reason'] = $value; + } + public function approve() { if ($this->getStage() == 'moderation') { $this->info['stage'] = 'approved'; |