AI Search
Classic Search
 Search Phrase:
 Search Type:
Advanced search options
 Search in Forums:
 Search in date period:

 Sort Search Results by:

Filter by custom fields

Topic prefix

AI Assistant
Notifications
Clear all

[Solved] Showing number of new / unread posts per thread.

5 Posts
2 Users
1 Reactions
2,239 Views
sc89me
Posts: 28
Topic starter
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
(@sc89me)
Eminent Member
Joined: 6 years ago
[#11266]

As the title says I am currently looking for a way to add or get rather the number of new posts in a forum or thread to display this as a number in a modified simple layout. 

So as an example you would get "Topic title" then like "8 new posts" this would be specific to current user. 

Is there a function to get this or can anyone make any recommendations on how to achieve this? 

Can work in PHP but I am only support for the website using this plugin so know very little in regards to how it works and I don't see a PHP function breakdown in the docs to point me in the right direction of what function calls I would need to make to modify the template to support this change. 


4 Replies
sc89me
Posts: 28
Topic starter
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
(@sc89me)
Eminent Member
Joined: 6 years ago

Bumpidy bump.


Alvina
Posts: 1857
Moderator
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
(@alvina)
Member
Joined: 7 years ago

Hi @sc89me,

Sorry for the late response.

Please follow the steps below to get it resolved:

1. Open the /wp-content/plugins/wpforo/wpf-includes/class-logs.php file.

2. Find the following class wpForoLogs{}.

3. Put the JS code below at the end of wpForoLogs{} class. (line 366 - if you use the current wpForo 1.6.5 version) :

/**
* get unread posts count for topic by giving topicid
*
* @param int $topicid
*
* @return int
*/
public function get_topic_unreads_count($topicid){
$topicid = intval($topicid);
$read_topics = $this->get_read_topics();
$last_read_postid = (int) wpfval($read_topics, $topicid);
$sql = "SELECT SQL_NO_CACHE COUNT(*) FROM `".WPF()->tables->posts."`
WHERE `status` = 0
AND `topicid` = {$topicid}
AND `postid` > {$last_read_postid}";
$count = (int) WPF()->db->get_var($sql);
return (int) apply_filters('wpforo_logs_get_topic_unreads_count', $count, $topicid, $last_read_postid);
}

4. For using this function, you just need to call it, for example in this way:

$topicid = 955;
echo WPF()->log->get_topic_unreads_count($topicid);

Don't forget to delete all caches and press CTRL + F5(twice)  on the frontend before checking.


sc89me
Posts: 28
Topic starter
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
(@sc89me)
Eminent Member
Joined: 6 years ago

Thanks man I will take a look at this but it looks good thanks should let me move forward. 


sc89me
Posts: 28
Topic starter
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
(@sc89me)
Eminent Member
Joined: 6 years ago

Thanks again @Alvina

I didn't modify my plugin to use the code you have, I added it as a function within my theme to avoid this being over-written in an update. 


public static function get_topic_unreads_count($topicid)
{
$topicid = intval($topicid);
$read_topics = WPF()->log->get_read_topics();
$last_read_postid = (int)wpfval($read_topics, $topicid);
$sql = sprintf('SELECT SQL_NO_CACHE COUNT(*) FROM `%s` WHERE `status` = 0 AND `topicid` = %s AND `postid` > %s',
WPF()->tables->posts,
$topicid,
$last_read_postid
);
$count = (int)WPF()->db->get_var($sql);
return (int)apply_filters('wpforo_logs_get_topic_unreads_count', $count, $topicid, $last_read_postid);
}

I used that plus: 

intval(App::get_topic_unreads_count($topic['topicid']))

In the output. (App is the class in my theme I put this) it seems to work out nice I just had to change your "get_read_topics" refernece to point it back to the log class. 

Is a simmilar query available for parent forums to show the amount of unread posts across all topics within a forum? 

I am sorry for asking now instead of in my first post. 

 


Share: