dir|^|Packages file|^|Packages/modification.php|^|643|^|1054832918 file|^|Packages/modification.txt|^|78|^|1054832918 This mod adds the ability to remove all posts (and Topics) of a selected user.file|^|Packages/modification1.4.1.mod|^|2191|^|1054832919 english.lng $txt[1] = $txt['removepostsbymember1'] = "Remove Posts By Member"; $txt['removepostsbymember2'] = "Remove Topics Too"; $txt['removepostsbymember3'] = "Report Progress"; $txt['removepostsbymember4'] = "Delete Selected Member's Posts"; $txt['removepostsbymember5'] = "Are you sure you want to remove all posts made by this user?"; $txt['removepostsbymember6'] = "Deleting All Posts By Member: "; $txt['removepostsbymember7'] = "Attempting to delete "; $txt['removepostsbymember8'] = " is the first message in an active topic "; $txt['removepostsbymember9'] = "Deleted "; $txt['removepostsbymember10'] = "Skipping "; $txt['removepostsbymember11'] = " is the first message in an empty topic"; german.lng $txt[1] = //entferne alle Beitrgäe und eröffnete Themen eines Mitglieds $txt['removepostsbymember1'] = "Entferne Beiträge eines Mitglieds"; $txt['removepostsbymember2'] = "Entferne auch dessen eröffnete Themen"; $txt['removepostsbymember3'] = "Bericht anzeigen"; $txt['removepostsbymember4'] = "Lösche die Beiträge des ausgewählten Mitglieds"; $txt['removepostsbymember5'] = "Bist Du sicher das Du alle Beiträge dieses Mitglieds Löschen willst?"; $txt['removepostsbymember6'] = "Lösche alle Beiträges eines Mitglieds: "; $txt['removepostsbymember7'] = "Löschversuch für ID_MSG "; $txt['removepostsbymember8'] = " ist der erste Beitrag in einem Aktiven Thema "; $txt['removepostsbymember9'] = "Lösche "; $txt['removepostsbymember10'] = "Überspringe "; $txt['removepostsbymember11'] = " ist der erste Beitrag in einem leeren Thema"; Sources/Admin.php $txt[5]
$txt[removepostsbymember1]
index.php #END FASTFIND R* else if ($action == 'removepostsbymember') { include_once "$sourcedir/RemovePostsByMember.php"; RemovePostsByMember(); } else if ($action == 'removepostsbymember2') { include_once "$sourcedir/RemovePostsByMember.php"; RemovePostsByMember2(); } file|^|Packages/modification1.5.x.mod|^|2679|^|1054832919 Remove Posts By Member 1.0 (YabbSE 1.5.x) Jack.R.Abbit Jack.R.Abbit Jack.R.Abbit This mod adds the ability to remove all posts (and Topics) of a selected user. no english.lng $txt[1] = $txt['removepostsbymember1'] = 'Remove Posts By Member'; $txt['removepostsbymember2'] = 'Remove Topics Too'; $txt['removepostsbymember3'] = 'Report Progress'; $txt['removepostsbymember4'] = 'Delete Selected Member\'s Posts'; $txt['removepostsbymember5'] = 'Are you sure you want to remove all posts made by this user?'; $txt['removepostsbymember6'] = 'Deleting All Posts By Member: '; $txt['removepostsbymember7'] = 'Attempting to delete '; $txt['removepostsbymember8'] = ' is the first message in an active topic '; $txt['removepostsbymember9'] = 'Deleted '; $txt['removepostsbymember10'] = 'Skipping '; $txt['removepostsbymember11'] = ' is the first message in an empty topic'; german.lng $txt[1] = //entferne alle Beitrgäe und eröffnete Themen eines Mitglieds $txt['removepostsbymember1'] = 'Entferne Beiträge eines Mitglieds'; $txt['removepostsbymember2'] = 'Entferne auch dessen eröffnete Themen'; $txt['removepostsbymember3'] = 'Bericht anzeigen'; $txt['removepostsbymember4'] = 'Lösche die Beiträge des ausgewählten Mitglieds'; $txt['removepostsbymember5'] = 'Bist Du sicher das Du alle Beiträge dieses Mitglieds Löschen willst?'; $txt['removepostsbymember6'] = 'Lösche alle Beiträges eines Mitglieds: '; $txt['removepostsbymember7'] = 'Löschversuch für ID_MSG '; $txt['removepostsbymember8'] = ' ist der erste Beitrag in einem Aktiven Thema '; $txt['removepostsbymember9'] = 'Lösche '; $txt['removepostsbymember10'] = 'Überspringe '; $txt['removepostsbymember11'] = ' ist der erste Beitrag in einem leeren Thema'; Sources/Admin.php ' . $txt[5] . '
' . $txt['removepostsbymember1'] . '
index.php $actionArray = array( 'removepostsbymember' => array("$sourcedir/RemovePostsByMember.php", 'RemovePostsByMember'), 'removepostsbymember2' => array("$sourcedir/RemovePostsByMember.php", 'RemovePostsByMember2'), file|^|Packages/uninstall.php|^|594|^|1054832920 '; if ($myversion == '1.5+') { rename('Packages/modification1.5.x.mod', 'Packages/modification.mod'); unlink('Packages/modification1.4.1.mod'); } else { rename('Packages/modification1.4.1.mod', 'Packages/modification.mod'); unlink('Packages/modification1.5.x.mod'); } if (file_exists("Sources/RemovePostsByMember.php")) { echo 'Removing RemovePostsByMember.php
'; unlink("Sources/RemovePostsByMember.php"); } ?>file|^|Packages/uninstall.txt|^|64|^|1054832920 Trying to run uninstall files for removepostsbymember.mod.yp....dir|^|Sources file|^|Sources/RemovePostsByMember.php|^|13890|^|1054834849 ' . $txt['removepostsbymember1'] . '
' . $txt['removepostsbymember2'] . '

' . $txt['removepostsbymember3'] . '

'; footer(); obExit(); } function RemovePostsByMember2() { global $spamember,$removeTopics,$reportProgress,$settings,$txt,$db_prefix,$modSettings,$maxdays; if($settings[7] != "Administrator") fatal_error($txt[1]); $request = mysql_query("SELECT memberName FROM {$db_prefix}members WHERE ID_MEMBER=$spamember") or database_error(__FILE__, __LINE__); $curmem = mysql_fetch_array($request); template_header(); $request = mysql_query("SELECT ID_MSG,ID_TOPIC,ID_MEMBER,subject,posterName FROM {$db_prefix}messages WHERE ID_MEMBER=$spamember") or database_error(__FILE__, __LINE__); if ($reportProgress) echo $txt['removepostsbymember6'] . ' ' . $curmem['memberName'] . '

'; while ($curpost = mysql_fetch_array($request)) { if ($reportProgress) echo $txt['removepostsbymember7'] . ' ID_MSG(' . $curpost['ID_MSG'] . ') - ' . $curpost['subject'] . '
'; $postid = $curpost['ID_MSG']; $threadid = $curpost['ID_TOPIC']; $request2 = mysql_query("SELECT m.*,t.locked,t.ID_FIRST_MSG,t.ID_LAST_MSG,t.ID_TOPIC,t.ID_BOARD,t.ID_POLL,t.numReplies FROM {$db_prefix}messages AS m, {$db_prefix}topics AS t WHERE (m.ID_MSG=$postid AND m.ID_TOPIC=t.ID_TOPIC) LIMIT 1") or database_error(__FILE__, __LINE__); $row = mysql_fetch_assoc($request2); if ($row['ID_FIRST_MSG']==$row['ID_MSG']) // this is the first message { if ($row['numReplies'] != 0) { if ($reportProgress) echo 'ID_MSG(' . $curpost['ID_MSG'] . ')' . $txt['removepostsbymember8'] . '
'; if ($removeTopics == 1) { if ($reportProgress) echo '  ' . $txt['removepostsbymember7'] . ' ID_TOPIC(' . $curpost['ID_TOPIC'] . ')
'; //Lines 38-45 all there to delete attachments on thread deletion - Jeff $request3 = mysql_query("SELECT attachmentFilename FROM {$db_prefix}messages WHERE (ID_TOPIC=$threadid AND (attachmentFilename IS NOT NULL))") or database_error(__FILE__, __LINE__); if (mysql_num_rows($request3)>0) { while($row2 = mysql_fetch_array($request3)) unlink($modSettings['attachmentUploadDir'] . "/" . $row2['attachmentFilename']); } $request3 = mysql_query("SELECT ID_BOARD,numReplies,ID_POLL FROM {$db_prefix}topics WHERE ID_TOPIC=$threadid") or database_error(__FILE__, __LINE__); $row2 = mysql_fetch_array($request3); $request3 = mysql_query("DELETE FROM {$db_prefix}polls WHERE ID_POLL='$row2[ID_POLL]' LIMIT 1") or database_error(__FILE__, __LINE__); $row2['numReplies']++; $request3 = mysql_query("UPDATE {$db_prefix}boards SET numTopics=numTopics-1,numPosts=numPosts-$row2[numReplies] WHERE ID_BOARD=$row2[ID_BOARD]") or database_error(__FILE__, __LINE__); $request3 = mysql_query("DELETE FROM {$db_prefix}topics WHERE ID_TOPIC=$threadid") or database_error(__FILE__, __LINE__); $request3 = mysql_query("DELETE FROM {$db_prefix}messages WHERE ID_TOPIC=$threadid") or database_error(__FILE__, __LINE__); $request3 = mysql_query("Delete From {$db_prefix}calendar Where id_topic=$threadid") or database_error(__FILE__, __LINE__); $request3 = mysql_query("DELETE FROM {$db_prefix}log_topics WHERE ID_TOPIC=$threadid") or database_error(__FILE__, __LINE__); if ($reportProgress) echo '  ' . $txt['removepostsbymember9'] . ' ID_TOPIC(' . $curpost['ID_TOPIC'] . ')
'; if ($reportProgress) echo $txt['removepostsbymember9'] . ' ID_MSG(' . $curpost['ID_MSG'] . ')

'; } else if ($removeTopics != 1) { if ($reportProgress) echo '  ' . $txt['removepostsbymember10'] . ' ID_TOPIC(' . $curpost['ID_TOPIC'] . ')
'; if ($reportProgress) echo $txt['removepostsbymember10'] . ' ID_MSG(' . $curpost['ID_MSG'] . ')

'; } } else if ($row['numReplies'] == 0) { if ($reportProgress) echo 'ID_MSG(' . $curpost['ID_MSG'] . ')' . $txt['removepostsbymember11'] . '
'; if ($reportProgress) echo '  ' . $txt['removepostsbymember7'] . ' ID_TOPIC(' . $curpost['ID_TOPIC'] . ')
'; $request3 = mysql_query("DELETE FROM {$db_prefix}topics WHERE ID_TOPIC=$row[ID_TOPIC] LIMIT 1") or database_error(__FILE__, __LINE__); $request3 = mysql_query("DELETE FROM {$db_prefix}polls WHERE ID_POLL='$row[ID_POLL]' LIMIT 1") or database_error(__FILE__, __LINE__); $request3 = mysql_query("UPDATE {$db_prefix}boards SET numPosts=numPosts-1,numTopics=numTopics-1 WHERE ID_BOARD=$row[ID_BOARD] $doLimitOne") or database_error(__FILE__, __LINE__); $request3 = mysql_query("DELETE FROM {$db_prefix}calendar WHERE id_topic = '$row[ID_TOPIC]'") or database_error(__FILE__, __LINE__); $request3 = mysql_query("DELETE FROM {$db_prefix}messages WHERE ID_MSG=$postid LIMIT 1") or database_error(__FILE__, __LINE__); if ($reportProgress) echo '  ' . $txt['removepostsbymember9'] . ' ID_TOPIC(' . $curpost['ID_TOPIC'] . ')
'; if ($reportProgress) echo $txt['removepostsbymember9'] . ' ID_MSG(' . $curpost['ID_MSG'] . ')

'; } } else if ($row['ID_FIRST_MSG']==$row['ID_LAST_MSG']) // this is the only post { $request3 = mysql_query("DELETE FROM {$db_prefix}topics WHERE ID_TOPIC=$row[ID_TOPIC] LIMIT 1") or database_error(__FILE__, __LINE__); $request3 = mysql_query("DELETE FROM {$db_prefix}polls WHERE ID_POLL='$row[ID_POLL]' LIMIT 1") or database_error(__FILE__, __LINE__); $request3 = mysql_query("UPDATE {$db_prefix}boards SET numPosts=numPosts-1,numTopics=numTopics-1 WHERE ID_BOARD=$row[ID_BOARD] $doLimitOne") or database_error(__FILE__, __LINE__); if ($reportProgress) echo $txt['removepostsbymember9'] . ' ID_MSG(' . $curpost['ID_MSG'] . ')

'; } else if ($row['ID_LAST_MSG']==$row['ID_MSG']) // this is the last message { $request3 = mysql_query("SELECT ID_MSG FROM {$db_prefix}messages WHERE (ID_TOPIC=$row[ID_TOPIC] AND ID_MSG!=$row[ID_MSG]) ORDER BY ID_MSG DESC LIMIT 1") or database_error(__FILE__, __LINE__); $row2 = mysql_fetch_assoc($request3); $request3 = mysql_query("UPDATE {$db_prefix}topics SET ID_LAST_MSG=$row2[ID_MSG],numReplies=numReplies-1 WHERE ID_TOPIC=$row[ID_TOPIC] $doLimitOne") or database_error(__FILE__, __LINE__); $request3 = mysql_query("UPDATE {$db_prefix}boards SET numPosts=numPosts-1 WHERE ID_BOARD=$row[ID_BOARD] $doLimitOne") or database_error(__FILE__, __LINE__); // I don't think it's possible to ever reach this "if" condition. The first IF will always catch this // case before it gets to here. I added the calendar code just in case, but.... $request3 = mysql_query("DELETE FROM {$db_prefix}calendar WHERE ID_TOPIC = '$row[ID_TOPIC]'") or database_error(__FILE__, __LINE__); $request3 = mysql_query("DELETE FROM {$db_prefix}messages WHERE ID_MSG=$postid LIMIT 1") or database_error(__FILE__, __LINE__); if ($reportProgress) echo $txt['removepostsbymember9'] . ' ID_MSG(' . $curpost['ID_MSG'] . ')

'; } else // this is just "some" message { $request3 = mysql_query("UPDATE {$db_prefix}topics SET numReplies=numReplies-1 WHERE ID_TOPIC=$row[ID_TOPIC] $doLimitOne") or database_error(__FILE__, __LINE__); $request3 = mysql_query("UPDATE {$db_prefix}boards SET numPosts=numPosts-1 WHERE ID_BOARD=$row[ID_BOARD] $doLimitOne") or database_error(__FILE__, __LINE__); $request3 = mysql_query("DELETE FROM {$db_prefix}messages WHERE ID_MSG=$postid LIMIT 1") or database_error(__FILE__, __LINE__); if ($reportProgress) echo $txt['removepostsbymember9'] . ' ID_MSG(' . $curpost['ID_MSG'] . ')

'; } if( $row['ID_MEMBER'] != '-1') $request3 = mysql_query("UPDATE {$db_prefix}members SET posts=posts-1 WHERE (ID_MEMBER=$row[ID_MEMBER] && posts > 0) $doLimitOne;") or database_error(__FILE__, __LINE__); #delete attachment, by Meriadoc if ($row['attachmentSize'] > 0) unlink($modSettings['attachmentUploadDir'] . "/" . $row['attachmentFilename']); } // Recount all the boards global $sourcedir,$subsphpver; $pos = strpos($subsphpver, "YaBB SE 1.5"); if (!($pos === false)) $myversion = '1.5+'; $request = mysql_query("SELECT ID_BOARD FROM {$db_prefix}boards WHERE 1;") or database_error(__FILE__, __LINE__); while ($row = mysql_fetch_row($request)) { $result = mysql_query("SELECT ID_TOPIC FROM {$db_prefix}topics WHERE ID_BOARD=$row[0];") or database_error(__FILE__, __LINE__); $topics = mysql_num_rows($result); while ($row2 = mysql_fetch_row($result)) { $result2 = mysql_query("SELECT COUNT(*) AS count FROM {$db_prefix}messages WHERE ID_TOPIC=$row2[0];") or database_error(__FILE__, __LINE__); $row3 = mysql_fetch_row($result2); $result2 = mysql_query("UPDATE {$db_prefix}topics SET numReplies=$row3[0]-1 WHERE ID_TOPIC=$row2[0];") or database_error(__FILE__, __LINE__); } $result = mysql_query("SELECT COUNT(*) FROM {$db_prefix}messages AS m, {$db_prefix}topics AS t WHERE (m.ID_TOPIC=t.ID_TOPIC AND t.ID_BOARD=$row[0]);") or database_error(__FILE__, __LINE__); $tmp = mysql_fetch_row($result); $posts = $tmp[0]; $result = mysql_query("UPDATE {$db_prefix}boards SET numTopics=$topics, numPosts=$posts WHERE ID_BOARD=$row[0];") or database_error(__FILE__, __LINE__); if ($myversion == '1.5+') updateLastMessage($row[0]); } if ($myversion == '1.5+') { updateStats('member'); updateStats('message'); updateStats('topic'); echo $txt[503] . '

'; } echo $txt[51] . '

'; footer(); obExit(); } ?>