$messagearray["{$message['gmid']}"] = $message; $discussionlist["{$discussion['discussionid']}"] = true; $grouplist["{$group['groupid']}"] = true; } } if (empty($messagearray)) { standard_error(fetch_error('you_did_not_select_any_valid_messages')); } require_once DIR . '/vb/search/indexcontroller/queue.php'; $db->query_write("\n\t\tDELETE FROM " . TABLE_PREFIX . "deletionlog\n\t\tWHERE type = 'groupmessage' AND\n\t\t\tprimaryid IN(" . implode(',', array_keys($messagearray)) . ")\n\t"); $db->query_write("\n\t\tUPDATE " . TABLE_PREFIX . "groupmessage\n\t\tSET state = 'visible'\n\t\tWHERE gmid IN(" . implode(',', array_keys($messagearray)) . ")\n\t"); foreach (array_keys($messagearray) as $gmid) { vB_Search_Indexcontroller_Queue::indexQueue('vBForum', 'SocialGroupMessage', 'index', $gmid, null, null); } foreach (array_keys($discussionlist) as $discussionid) { build_discussion_counters($discussionid); } foreach (array_keys($grouplist) as $groupid) { build_group_counters($groupid); } foreach ($messagearray as $message) { if (!$message['is_group_owner']) { if ($message['firstpost']) { log_moderator_action($message, 'discussion_by_x_for_y_undeleted', array($message['postusername'], $message['group_name'])); } else { log_moderator_action($message, 'gm_by_x_in_y_for_z_undeleted', array($message['postusername'], $message['discussion_name'], $message['group_name'])); } } } // empty cookie setcookie($inline_cookie, '', TIMENOW - 3600, '/');
/** * Deleted a SG Message * * @param bool, added for PHP 5.4 Strict Standards compliance * @return boolean Was this message deleted successfully? */ function delete($doquery = true) { if ($gmid = $this->existing['gmid']) { $db =& $this->registry->db; // Search index maintenance - Remove for a hard delete. require_once DIR . '/vb/search/core.php'; if ($this->info['hard_delete']) { $db->query_write("DELETE FROM " . TABLE_PREFIX . "deletionlog WHERE primaryid = {$gmid} AND type = 'groupmessage'"); $db->query_write("DELETE FROM " . TABLE_PREFIX . "groupmessage WHERE gmid = {$gmid}"); $db->query_write("DELETE FROM " . TABLE_PREFIX . "moderation WHERE primaryid = {$gmid} AND type = 'groupmessage'"); vb_Search_Indexcontroller_Queue::indexQueue('vBForum', 'SocialGroupMessage', 'delete', $gmid); $activity = new vB_ActivityStream_Manage('socialgroup', 'groupmessage'); $activity->set('contentid', $gmid); $activity->delete(); // Logging? } else { $this->set('state', 'deleted'); $this->save(); vb_Search_Indexcontroller_Queue::indexQueue('vBForum', 'SocialGroupMessage', 'index', $gmid); $deletionman =& datamanager_init('Deletionlog_GroupMessage', $this->registry, ERRTYPE_SILENT, 'deletionlog'); $deletionman->set('primaryid', $gmid); $deletionman->set('type', 'groupmessage'); $deletionman->set('userid', $this->registry->userinfo['userid']); $deletionman->set('username', $this->registry->userinfo['username']); $deletionman->set('reason', $this->info['reason']); $deletionman->save(); unset($deletionman); } $db->query_write("\n\t\t\t\tDELETE FROM " . TABLE_PREFIX . "moderation WHERE primaryid = {$gmid} AND type = 'groupmessage'\n\t\t\t"); if (!$this->info['skip_build_counters']) { require_once DIR . '/includes/functions_socialgroup.php'; build_discussion_counters($this->existing['discussionid']); build_group_counters($this->info['group']['groupid']); } $this->post_delete(); return true; } return false; }
if ($hard_delete and !fetch_socialgroup_modperm('canremovegroupmessages', $group)) { standard_error(fetch_error('you_do_not_have_permission_to_hard_delete_messages')); } else { if (!$hard_delete and !fetch_socialgroup_modperm('candeletegroupmessages', $group) and ($messageinfo['postuserid'] != $vbulletin->userinfo['userid'] or !fetch_socialgroup_perm('canmanagemessages'))) { standard_error(fetch_error('you_do_not_have_permission_to_soft_delete_messages')); } } } // Only specifically delete discussion on hard delete $delete_discussion = ($is_discussion and $hard_delete and !$undelete); if ($undelete) { require_once DIR . '/vb/search/indexcontroller/queue.php'; $db->query_write("\r\n\t\t\tDELETE FROM " . TABLE_PREFIX . "deletionlog\r\n\t\t\tWHERE type = 'groupmessage' AND\r\n\t\t\t\tprimaryid = " . intval($messageinfo['gmid']) . "\r\n\t\t"); $db->query_write("\r\n\t\t\tUPDATE " . TABLE_PREFIX . "groupmessage\r\n\t\t\tSET state = 'visible'\r\n\t\t\tWHERE gmid = " . intval($messageinfo['gmid']) . "\r\n\t\t"); vB_Search_Indexcontroller_Queue::indexQueue('vBForum', 'SocialGroupMessage', 'index', $gmid, null, null); build_discussion_counters($messageinfo['discussionid']); build_group_counters($messageinfo['groupid']); if (!$messageinfo['is_group_owner']) { require_once DIR . '/includes/functions_log_error.php'; if ($messageinfo['firstpost']) { log_moderator_action($messageinfo, 'discussion_by_x_for_y_undeleted', array($messageinfo['postusername'], $messageinfo['group_name'])); } else { log_moderator_action($messageinfo, 'gm_by_x_in_y_for_z_undeleted', array($messageinfo['postusername'], $messageinfo['discussion_name'], $messageinfo['group_name'])); } $vbulletin->url = 'group.php?' . $vbulletin->session->vars['sessionurl'] . "do=discuss&discussionid={$discussion['discussionid']}"; if (!$is_discussion) { $vbulletin->url .= "&gmid={$messageinfo['gmid']}"; } } if ($is_discussion) { eval(print_standard_redirect('redirect_groupdiscussionrestored'));
/** * Deleted a SG Message * * @return boolean Was this message deleted successfully? */ function delete() { if ($gmid = $this->existing['gmid']) { $db =& $this->registry->db; if ($this->info['hard_delete']) { $db->query_write("\n\t\t\t\t\tDELETE FROM " . TABLE_PREFIX . "deletionlog WHERE primaryid = {$gmid} AND type = 'groupmessage'\n\t\t\t\t"); $db->query_write("\n\t\t\t\t\tDELETE FROM " . TABLE_PREFIX . "groupmessage WHERE gmid = {$gmid}\n\t\t\t\t"); $db->query_write("\n\t\t\t\t\tDELETE FROM " . TABLE_PREFIX . "moderation WHERE primaryid = {$gmid} AND type = 'groupmessage'\n\t\t\t\t"); // Logging? } else { $this->set('state', 'deleted'); $this->save(); $deletionman =& datamanager_init('Deletionlog_GroupMessage', $this->registry, ERRTYPE_SILENT, 'deletionlog'); $deletionman->set('primaryid', $gmid); $deletionman->set('type', 'groupmessage'); $deletionman->set('userid', $this->registry->userinfo['userid']); $deletionman->set('username', $this->registry->userinfo['username']); $deletionman->set('reason', $this->info['reason']); $deletionman->save(); unset($deletionman); } $db->query_write("\n\t\t\t\tDELETE FROM " . TABLE_PREFIX . "moderation WHERE primaryid = {$gmid} AND type = 'groupmessage'\n\t\t\t"); if (!$this->info['skip_build_counters']) { require_once DIR . '/includes/functions_socialgroup.php'; build_discussion_counters($this->existing['discussionid']); build_group_counters($this->info['group']['groupid']); } $this->post_delete(); return true; } return false; }