PDA

View Full Version : Stop post count from increasing


DemonicInu
09-13-2020, 10:31 AM
I know it's possible on older vb's (well if I remember right) but i'm not seeing a option to leave users post in a forum while this post count stays the same. I want to have a spam section on my forum where users can pretty much post w/e but I don't want their post going up, is that possible?

Mot235
09-14-2020, 11:08 AM
this is not possible within the settings. Only possible through changing of the core files.

There are no resources on this that I could find, but I was able to achieve this by changing the content.php in the vb library, and the misc.php in the admincp.

I also don't know if its the best way to handle it, but it works, but unless you are willing to make such changes, it's not an option.

Mot235
02-05-2021, 11:28 AM
Welp after some time and becoming a little bit more comfortable with things I thought I'd share this in case anyone else is interested. Maybe someone smarter than me or more knowledgeable than me could turn this into a mod one day.

I created this area to remind myself and all others that before we do any updates to BASE VB5, that certain items will be OVERWRITTEN, if not kept track of because at this point. We are modding core backend files and many templates have been modified.

1. Feature to prevent post increment. Two locations
core\admincp\misc.php lines 290-326
// NOTICE: How we determine if a post counts in user post count here needs to
// match the criteria used in vB_Library_Content::countInUserPostCount()
// If you update in one place, please update in the other
$topChannels = vB_Api::instance('content_channel')->fetchTopLevelChannelIds();
if (isset($topChannels['errors']))
{
print_stop_message2($topChannels['errors'][0]);
}
$checkChannels = array(
$topChannels['forum'],
$topChannels['blog'],
$topChannels['groups'],
);
$channelContentType = vB_Types::instance()->getContentTypeID('vBForum_Channel');
echo '<p>' . $vbphrase['updating_post_counts'] . '</p>';
$gotforums = '';
foreach ($checkChannels as $checkChannel)
{
$forums = $vbulletin->db->query_read("
SELECT node.nodeid
FROM " . TABLE_PREFIX . "node AS node
INNER JOIN " . TABLE_PREFIX . "closure AS cl ON cl.parent = $checkChannel AND cl.child = node.nodeid
WHERE node.contenttypeid = $channelContentType
AND node.nodeid <> $checkChannel
AND node.nodeid <> 269
AND node.parentid <> 269
");
while ($forum = $vbulletin->db->fetch_array($forums))
{
$gotforums .= ',' . $forum['nodeid'];
}
}
core\vb\library\content.php
line 1003 if ($textCountChange = $this->textCountChange AND $nodevals['routeid'] != '229')
lines 1212-1215 // Update the post count for this user (content add)
if ($nodevals['routeid'] != '229') {
$this->incrementUserPostCount($node);
}


How this modification works

Spam world has a set nodeid of 269. In misc.php there exists tools that will go through and fix user post counts by looking for the criteria in that select statement. updated the sql statement to exclude nodes made under spam world which will all have a parentid relating back to the the main spamworld nodeid.


for content entry, somehow I found out that any "nodes" made under spamworld were assigned a routeid of 229 in the database and wrapped post increments to only increment after it checks for a routeid not equal to 229.

To find the routeid needed to check for, I basically made a channel, and then started spamming and then looked in the node table to find out if there was any common thing i could filter by.