summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Prodromou <evan@controlyourself.ca>2009-01-24 19:38:40 +0100
committerEvan Prodromou <evan@controlyourself.ca>2009-01-24 19:38:40 +0100
commit0d34cd24abc0329aae7d408b3bab3d692caaa045 (patch)
treeff0751391eeb3023d4a9eda4168c30b596449255
parent1f4edd70cbe28783784c41eda6c93008bbf86a78 (diff)
Update notice deletion
Changed the errors in notice deletion so it now works. Also, consistently delete records from related tables that refer to the notice.
-rw-r--r--actions/deletenotice.php40
-rw-r--r--classes/Notice.php36
-rw-r--r--lib/util.php17
3 files changed, 28 insertions, 65 deletions
diff --git a/actions/deletenotice.php b/actions/deletenotice.php
index d8bc5d0e0..d4b8e50e5 100644
--- a/actions/deletenotice.php
+++ b/actions/deletenotice.php
@@ -111,15 +111,8 @@ class DeletenoticeAction extends DeleteAction
$this->elementStart('p');
$this->element('span', array('id' => 'confirmation_text'),
_('Are you sure you want to delete this notice?'));
-
- $this->element('input', array('id' => 'submit_no',
- 'name' => 'submit',
- 'type' => 'submit',
- 'value' => _('No')));
- $this->element('input', array('id' => 'submit_yes',
- 'name' => 'submit',
- 'type' => 'submit',
- 'value' => _('Yes')));
+ $this->submit('yes', _('Yes'));
+ $this->submit('no', _('No'));
$this->elementEnd('p');
$this->elementEnd('form');
}
@@ -135,31 +128,18 @@ class DeletenoticeAction extends DeleteAction
return;
}
- $url = common_get_returnto();
- $confirmed = $this->trimmed('submit');
-
- if ($confirmed == _('Yes')) {
-
- $replies = new Reply;
- $replies->get('notice_id', $this->notice->id);
-
- common_dequeue_notice($this->notice);
-
- if (common_config('memcached', 'enabled')) {
- $notice->blowSubsCache();
- }
-
- $replies->delete();
+ if ($this->arg('yes')) {
$this->notice->delete();
+ }
- } else {
+ $url = common_get_returnto();
- if ($url) {
- common_set_returnto(null);
- } else {
- $url = common_local_url('public');
- }
+ if ($url) {
+ common_set_returnto(null);
+ } else {
+ $url = common_local_url('public');
}
+
common_redirect($url);
}
}
diff --git a/classes/Notice.php b/classes/Notice.php
index 4a06c9258..c597137fe 100644
--- a/classes/Notice.php
+++ b/classes/Notice.php
@@ -63,8 +63,24 @@ class Notice extends Memcached_DataObject
{
$this->blowCaches(true);
$this->blowFavesCache(true);
- $this->blowInboxes();
- return parent::delete();
+ $this->blowSubsCache(true);
+
+ $this->query('BEGIN');
+ $related = array('Reply',
+ 'Fave',
+ 'Notice_tag',
+ 'Group_inbox',
+ 'Queue_item');
+ if (common_config('inboxes', 'enabled')) {
+ $related[] = 'Notice_inbox';
+ }
+ foreach ($related as $cls) {
+ $inst = new $cls();
+ $inst->notice_id = $this->id;
+ $inst->delete();
+ }
+ $result = parent::delete();
+ $this->query('COMMIT');
}
function saveTags()
@@ -568,22 +584,6 @@ class Notice extends Memcached_DataObject
return;
}
- # Delete from inboxes if we're deleted.
-
- function blowInboxes()
- {
-
- $enabled = common_config('inboxes', 'enabled');
-
- if ($enabled === true || $enabled === 'transitional') {
- $inbox = new Notice_inbox();
- $inbox->notice_id = $this->id;
- $inbox->delete();
- }
-
- return;
- }
-
function saveGroups()
{
$enabled = common_config('inboxes', 'enabled');
diff --git a/lib/util.php b/lib/util.php
index b5b194519..a80c62287 100644
--- a/lib/util.php
+++ b/lib/util.php
@@ -1140,23 +1140,6 @@ function common_enqueue_notice($notice)
return $result;
}
-function common_dequeue_notice($notice)
-{
- $qi = Queue_item::staticGet($notice->id);
- if ($qi) {
- $result = $qi->delete();
- if (!$result) {
- $last_error = &PEAR::getStaticProperty('DB_DataObject','lastError');
- common_log(LOG_ERR, 'DB error deleting queue item: ' . $last_error->message);
- return false;
- }
- common_log(LOG_DEBUG, 'complete dequeueing notice ID = ' . $notice->id);
- return $result;
- } else {
- return false;
- }
-}
-
function common_real_broadcast($notice, $remote=false)
{
$success = true;