dir|^|Packages
file|^|Packages/modification.php|^|643|^|1054832918
global $db_prefix, $YaBBversion;
$pos = strpos($YaBBversion, "YaBB SE 1.5");
if (!($pos === false))
$myversion = '1.5+';
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("Packages/uninstall.php"))
unlink("Packages/uninstall.php");
if (file_exists("Packages/uninstall.txt"))
unlink("Packages/uninstall.txt");
if (file_exists("Packages/uninstall.sql"))
unlink("Packages/uninstall.sql");
?>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
global $db_prefix, $YaBBversion;
$pos = strpos($YaBBversion, "YaBB SE 1.5");
if (!($pos === false))
$myversion = '1.5+';
echo 'Building modification.mod
';
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'] . ' |
|
|
';
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();
}
?>