Commit 0d34cd24 authored by Evan Prodromou's avatar Evan Prodromou

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.
parent 1f4edd70
......@@ -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);
}
}
......@@ -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');
......
......@@ -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;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment