/** * Any code to run after deleting * * @access protected * * @param boolean $doquery Do the query? */ function post_delete($doquery = true) { if (empty($this->info['group'])) { $this->info['group'] = fetch_socialgroupinfo($this->fetch_field('groupid')); } if ($this->info['hard_delete']) { // prepare table names for MySQL 4.0.x $discussionid = intval($this->existing['discussionid']); $groupmessage_table = TABLE_PREFIX . 'groupmessage'; $deletionlog_table = TABLE_PREFIX . 'deletionlog'; $moderation_table = TABLE_PREFIX . 'moderation'; // delete all messages and their deletion logs and moderation $this->registry->db->query_write("DELETE {$groupmessage_table}, {$deletionlog_table}, {$moderation_table} \n\t\t\t\t FROM {$groupmessage_table} \n\t\t\t\t LEFT JOIN {$deletionlog_table} \n\t\t\t\t ON {$deletionlog_table}.primaryid = {$groupmessage_table}.gmid \n\t\t\t\t AND {$deletionlog_table}.type = 'groupmessage' \n\t\t\t\t LEFT JOIN {$moderation_table} \n\t\t\t\t ON {$moderation_table}.primaryid = {$groupmessage_table}.gmid \n\t\t\t\t AND {$moderation_table}.type = 'groupmessage' \n\t\t\t\t WHERE {$groupmessage_table}.discussionid = {$discussionid}"); if (!$this->info['skip_build_counters']) { require_once DIR . '/includes/functions_socialgroup.php'; build_group_counters($this->existing['groupid']); } // delete read marking $this->registry->db->query_write("\n\t\t\t\tDELETE FROM " . TABLE_PREFIX . "discussionread \n\t\t\t\tWHERE " . TABLE_PREFIX . "discussionread.discussionid = {$discussionid}\n\t\t\t"); // delete subscriptions $this->registry->db->query_write("\n\t\t\t\tDELETE FROM " . TABLE_PREFIX . "subscribediscussion \n\t\t\t\tWHERE " . TABLE_PREFIX . "subscribediscussion.discussionid = {$discussionid}\n\t\t\t"); // update moderation count for owner update_owner_pending_gm_count($this->info['group']['creatoruserid']); ($hook = vBulletinHook::fetch_hook('discussiondata_delete')) ? eval($hook) : false; } }
standard_error(fetch_error('you_do_not_have_permission_to_manage_deleted_messages')); } // Validate Messages $messages = $db->query_read_slave("\n\t\tSELECT gm.gmid, gm.state, gm.groupid, gm.dateline, gm.postuserid, gm.postusername,\n\t\t\tsocialgroup.name AS group_name, socialgroup.creatoruserid\n\t\tFROM " . TABLE_PREFIX . "groupmessage AS gm\n\t\tLEFT JOIN " . TABLE_PREFIX . "socialgroup AS socialgroup ON (socialgroup.groupid = gm.groupid)\n\t\tWHERE gmid IN ({$messageids})\n\t\t\tAND state = 'deleted'\n\t"); while ($message = $db->fetch_array($messages)) { $message['is_group_owner'] = $message['creatoruserid'] == $vbulletin->userinfo['userid']; $messagearray["{$message['gmid']}"] = $message; $grouplist["{$message['groupid']}"] = true; } if (empty($messagearray)) { standard_error(fetch_error('you_did_not_select_any_valid_messages')); } $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 ($grouplist as $groupid => $foo) { build_group_counters($groupid); } foreach ($messagearray as $message) { if (!$message['is_group_owner']) { log_moderator_action($message, 'gm_by_x_for_y_undeleted', array($message['postusername'], $message['group_name'])); } } // empty cookie setcookie('vbulletin_inlinegmessage', '', TIMENOW - 3600, '/'); ($hook = vBulletinHook::fetch_hook('group_inlinemod_undelete')) ? eval($hook) : false; eval(print_standard_redirect('redirect_inline_undeletedmessages', true, $forceredirect)); } /*======================================================================*\ || #################################################################### || # Downloaded: 09:39, Wed Nov 5th 2008 || # SVN: $Revision: 27889 $
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')); } else {
/** * 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; }
/** * Any code to run after deleting * * @access protected * * @param boolean $doquery Do the query? */ function post_delete($doquery = true) { if (empty($this->info['group'])) { $this->info['group'] = fetch_socialgroupinfo($this->fetch_field('groupid')); } if ($this->info['hard_delete']) { // prepare table names for MySQL 4.0.x $discussionid = intval($this->existing['discussionid']); $groupmessage_table = TABLE_PREFIX . 'groupmessage'; $deletionlog_table = TABLE_PREFIX . 'deletionlog'; $moderation_table = TABLE_PREFIX . 'moderation'; $activity = new vB_ActivityStream_Manage('socialgroup', 'discussion'); $activity->set('contentid', $this->existing['discussionid']); $activity->delete(); $idlist = array(); $ids = $this->registry->db->query_read("\n\t\t\t\tSELECT gmid\n\t\t\t\tFROM " . TABLE_PREFIX . "groupmessage\n\t\t\t\tWHERE discussionid = {$this->existing['discussionid']}\n\t\t\t"); while ($id = $this->registry->db->fetch_array($ids)) { $idlist[] = $id['gmid']; } if ($idlist) { $activity = new vB_ActivityStream_Manage('socialgroup', 'groupmessage'); $activity->set('contentid', $idlist); $activity->delete(); } /* KEVIN : Need to add SocialGroup ? So this can all be done in one ? // Search index maintenance - Remove for a hard delete. require_once(DIR . '/vb/search/core.php'); $indexer = vB_Search_Core::get_instance()->get_index_controller('vBForum', 'SocialGroup'); $indexer->delete($discussionid); */ require_once DIR . '/vb/search/core.php'; $indexer = vB_Search_Core::get_instance()->get_index_controller('vBForum', 'SocialGroupMessage'); $result = $this->registry->db->query("SELECT gmid FROM " . TABLE_PREFIX . "groupmessage WHERE discussionid={$discussionid}"); while ($row = $this->registry->db->fetch_row($result)) { $indexer->delete($row[0]); } // delete all messages and their deletion logs and moderation $this->registry->db->query_write("DELETE {$groupmessage_table}, {$deletionlog_table}, {$moderation_table} \n\t\t\t\t FROM {$groupmessage_table} \n\t\t\t\t LEFT JOIN {$deletionlog_table} \n\t\t\t\t ON {$deletionlog_table}.primaryid = {$groupmessage_table}.gmid \n\t\t\t\t AND {$deletionlog_table}.type = 'groupmessage' \n\t\t\t\t LEFT JOIN {$moderation_table} \n\t\t\t\t ON {$moderation_table}.primaryid = {$groupmessage_table}.gmid \n\t\t\t\t AND {$moderation_table}.type = 'groupmessage' \n\t\t\t\t WHERE {$groupmessage_table}.discussionid = {$discussionid}"); if (!$this->info['skip_build_counters']) { require_once DIR . '/includes/functions_socialgroup.php'; build_group_counters($this->existing['groupid']); } // delete read marking $this->registry->db->query_write("\n\t\t\t\tDELETE FROM " . TABLE_PREFIX . "discussionread \n\t\t\t\tWHERE " . TABLE_PREFIX . "discussionread.discussionid = {$discussionid}\n\t\t\t"); // delete subscriptions $this->registry->db->query_write("\n\t\t\t\tDELETE FROM " . TABLE_PREFIX . "subscribediscussion \n\t\t\t\tWHERE " . TABLE_PREFIX . "subscribediscussion.discussionid = {$discussionid}\n\t\t\t"); // update moderation count for owner update_owner_pending_gm_count($this->info['group']['creatoruserid']); ($hook = vBulletinHook::fetch_hook('discussiondata_delete')) ? eval($hook) : false; } }
/** * 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; }
/** * Any code to run after deleting * * @access protected * * @param boolean $doquery Do the query? */ function post_delete($doquery = true) { if (empty($this->info['group'])) { $this->info['group'] = fetch_socialgroupinfo($this->fetch_field('groupid')); } if ($this->info['hard_delete']) { // prepare table names for MySQL 4.0.x $discussionid = intval($this->existing['discussionid']); $groupmessage_table = TABLE_PREFIX . 'groupmessage'; $deletionlog_table = TABLE_PREFIX . 'deletionlog'; $moderation_table = TABLE_PREFIX . 'moderation'; /* KEVIN : Need to add SocialGroup ? So this can all be done in one ? // Search index maintenance - Remove for a hard delete. require_once(DIR . '/vb/search/core.php'); $indexer = vB_Search_Core::get_instance()->get_index_controller('vBForum', 'SocialGroup'); $indexer->delete($discussionid); */ require_once(DIR . '/vb/search/core.php'); $indexer = vB_Search_Core::get_instance()->get_index_controller('vBForum', 'SocialGroupMessage'); $result = $this->registry->db->query("SELECT gmid FROM " . TABLE_PREFIX . "groupmessage WHERE discussionid={$discussionid}"); while ($row = $this->registry->db->fetch_row($result)) { $indexer->delete($row[0]); } // delete all messages and their deletion logs and moderation $this->registry->db->query_write( "DELETE $groupmessage_table, $deletionlog_table, $moderation_table FROM $groupmessage_table LEFT JOIN $deletionlog_table ON $deletionlog_table.primaryid = $groupmessage_table.gmid AND $deletionlog_table.type = 'groupmessage' LEFT JOIN $moderation_table ON $moderation_table.primaryid = $groupmessage_table.gmid AND $moderation_table.type = 'groupmessage' WHERE $groupmessage_table.discussionid = $discussionid" ); if (!$this->info['skip_build_counters']) { require_once(DIR . '/includes/functions_socialgroup.php'); build_group_counters($this->existing['groupid']); } // delete read marking $this->registry->db->query_write(" DELETE FROM " . TABLE_PREFIX . "discussionread WHERE " . TABLE_PREFIX . "discussionread.discussionid = $discussionid "); // delete subscriptions $this->registry->db->query_write(" DELETE FROM " . TABLE_PREFIX . "subscribediscussion WHERE " . TABLE_PREFIX . "subscribediscussion.discussionid = $discussionid "); // update moderation count for owner update_owner_pending_gm_count($this->info['group']['creatoruserid']); ($hook = vBulletinHook::fetch_hook('discussiondata_delete')) ? eval($hook) : false; } }