forked from GNUsocial/gnu-social
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.
This commit is contained in:
parent
1f4edd70cb
commit
0d34cd24ab
@ -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 {
|
||||
|
||||
if ($url) {
|
||||
common_set_returnto(null);
|
||||
} else {
|
||||
$url = common_local_url('public');
|
||||
}
|
||||
}
|
||||
|
||||
$url = common_get_returnto();
|
||||
|
||||
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');
|
||||
|
17
lib/util.php
17
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;
|
||||
|
Loading…
Reference in New Issue
Block a user