summaryrefslogtreecommitdiff
path: root/htdocs
diff options
context:
space:
mode:
Diffstat (limited to 'htdocs')
-rw-r--r--htdocs/deletepost.php57
-rw-r--r--htdocs/postings.php2
-rw-r--r--htdocs/src/Post.inc.php34
-rw-r--r--htdocs/src/PostIterator.inc.php10
-rw-r--r--htdocs/src/base.inc.php5
-rw-r--r--htdocs/src/config.inc.php.example1
6 files changed, 103 insertions, 6 deletions
diff --git a/htdocs/deletepost.php b/htdocs/deletepost.php
new file mode 100644
index 0000000..7ebec19
--- /dev/null
+++ b/htdocs/deletepost.php
@@ -0,0 +1,57 @@
+<?php
+
+/* Foursquare Community Site
+ *
+ * Copyright (C) 2011 Foursquare Church.
+ *
+ * Developers: Jesse Morgan <jmorgan@foursquarestaff.com>
+ *
+ */
+
+require_once "src/base.inc.php";
+
+require_once "src/header.inc.php";
+
+// Make sure we have all the needed information
+if (!isset($_GET['id']) or !is_numeric($_GET['id'])
+ or !isset($_GET['secret'])) {
+ errorNotFound();
+}
+
+// Get the post.
+$post = Post::getById($_GET['id']);
+
+// Got a post with the right secretid?
+if (!$post and $post->getSecretId() == $_GET['secret']) {
+ errorNotFound();
+}
+
+if (isset($_GET['confirmed'])) {
+ // Delete post
+ $post->delete();
+
+ echo "<p>Your post has been removed.</p>";
+
+ echo "<p><a href=\"". $GLOBALS['CONFIG']['urlroot']
+ ."\">Return to homepage</a>.</p>";
+
+} else {
+ // Are you sure...
+ echo "<p>Are you sure you want to remove your posting titled "
+ . $post->getName() ."?</p>";
+ echo "<p><a href=\"". $_SERVER['REQUEST_URI']
+ ."&confirmed\">Yes, delete it</a> ";
+ echo "<a href=\"". $GLOBALS['CONFIG']['urlroot']
+ ."\">No, do not delete</a></p>";
+}
+
+require_once "src/footer.inc.php";
+
+function errorNotFound() {
+ // TODO: Better 404 error
+ echo "404";
+ exit;
+}
+
+?>
+
diff --git a/htdocs/postings.php b/htdocs/postings.php
index 7550e18..ee178cb 100644
--- a/htdocs/postings.php
+++ b/htdocs/postings.php
@@ -51,6 +51,8 @@ if (isset($_GET['moderate'])) {
echo "<h2>". $post->getName() ."</h2>";
echo "<p>Date: ". date('r', $post->getTimestamp()) ."</p>";
+echo "<p>Email: <a href=\"mailto:". $post->getPublicEmail() ."\">"
+ . $post->getPublicEmail() ."</a></p>";
echo "<p class=\"desc\">".
str_replace("\n", '<br />', $post->getDescription())
diff --git a/htdocs/src/Post.inc.php b/htdocs/src/Post.inc.php
index c05cb7e..4a109d2 100644
--- a/htdocs/src/Post.inc.php
+++ b/htdocs/src/Post.inc.php
@@ -88,7 +88,7 @@ class Post {
} else {
// Creating... set special fields.
$info['stage'] = 'verification';
- $info['secretid'] = uniqid();
+ $info['secretid'] = uniqid('', true);
$info['created'] = date('Y-m-d H:i:s');
try {
@@ -108,6 +108,16 @@ class Post {
}
}
+ public function delete() {
+ $db = getDatabase();
+
+ // Delete Images
+ $db->delete('image', 'post_id=' . $this->getId());
+
+ // Delete Post
+ $db->delete('post', 'id=' . $this->getId());
+ }
+
public function getId() {
return $this->info['id'];
}
@@ -167,6 +177,10 @@ class Post {
return $this->info['email'];
}
+ public function getPublicEmail() {
+ return 'posting-' . $this->getId() .'@'. $GLOBALS['CONFIG']['emaildomain'];
+ }
+
public function setEmail($value) {
$this->info['email'] = $value;
}
@@ -254,7 +268,7 @@ class Post {
$email->setSubject($GLOBALS['CONFIG']['sitetitle'] . " Email Validation");
- $url = $GLOBALS['CONFIG']['urlroot'] . '/validate.php?id=' . $this->getSecretId();
+ $url = buildUrl('validate.php?id=' . $this->getSecretId());
$email->appendMessage("Please click on the link below to verify your email address.\n\n");
$email->appendMessage($url);
@@ -265,14 +279,22 @@ class Post {
public function sendAcceptance() {
$email = new Email($this->getEmail());
- $email->setSubject($GLOBALS['CONFIG']['sitetitle'] . " Posting Approved");
+ $email->setSubject($GLOBALS['CONFIG']['sitetitle']
+ . " Posting Approved");
$email->appendMessage("Your posting titled ". $this->getName()
." has been approved by our moderation team.\n\n");
- $url = $GLOBALS['CONFIG']['urlroot'] . '/postings/'
- . $this->getId() .'.html';
- $email->appendMessage("You can view your post at $url.");
+ // View URL
+ $url = buildUrl('postings/' . $this->getId() . '.html');
+ $email->appendMessage("You can view your post at $url.\n\n");
+
+ // Delete URL
+ $url = buildUrl('deletepost.php?id=' . $this->getId()
+ . '&secret=' . $this->getSecretId());
+ $email->appendMessage("Your posting will expire in " .
+ $GLOBALS['CONFIG']['expiretime']
+ . " days. If you would like to remove it sooner, go to $url.\n");
$email->send();
}
diff --git a/htdocs/src/PostIterator.inc.php b/htdocs/src/PostIterator.inc.php
index 43c1a05..a269853 100644
--- a/htdocs/src/PostIterator.inc.php
+++ b/htdocs/src/PostIterator.inc.php
@@ -37,6 +37,16 @@ class PostIterator implements Iterator {
$this->where[] = "category_id='$category_id'";
}
+ public function filterCreated($after, $before = false) {
+ $sqlafter = date('Y-m-d H:i:s', $after);
+ $this->where[] = "created > '$sqlafter'";
+
+ if ($before !== false) {
+ $sqlbefore = date('Y-m-d H:i:s', $before);
+ $this->where[] = "created < '$sqlbefore'";
+ }
+ }
+
public function orderBy($order) {
$this->order = $order;
}
diff --git a/htdocs/src/base.inc.php b/htdocs/src/base.inc.php
index d7a9354..7d48ca7 100644
--- a/htdocs/src/base.inc.php
+++ b/htdocs/src/base.inc.php
@@ -41,5 +41,10 @@ function __autoload($class) {
require_once "$class.inc.php";
}
+function buildUrl($tail='') {
+ return 'http://' . $GLOBALS['CONFIG']['domain']
+ . $GLOBALS['CONFIG']['urlroot'] . "/$tail";
+}
+
?>
diff --git a/htdocs/src/config.inc.php.example b/htdocs/src/config.inc.php.example
index d0d912c..0a4a8d4 100644
--- a/htdocs/src/config.inc.php.example
+++ b/htdocs/src/config.inc.php.example
@@ -20,6 +20,7 @@ $CONFIG = array(
'email_from' => 'community@myfoursquarechurch.com',
'emaildomain' => 'listandshare.com',
+ 'domain' => 'localhost',
'urlroot' => '/~jesse/p4s/community/htdocs',
'root' => '/Users/jesse/Development/P4Square/community/htdocs',
'uploads' => '/Users/jesse/Development/P4Square/community/uploads',