Support Forum
Is there a way when looking at the topics listed in a forum to indicate which topic the browsing user has previously posted in? I know the "New" icon will show if there was any new posts in something that they have posted in but wondering if absent any new posts in the thread if there is a way to show which ones they are involved in.
I am using reboot theme if that matters.
I guess on the whole we think that a user would know of they had posted in a particular topic or not 🙂 so currently the answer is no. I am planning on extending the notification system - hopefully some time this year - which would include this but not there yet,
My advice would be our subscriptions plugin. This will send them an email on a new post in a topic they subscribe to plus will give them a visual clue in the forum header of new posts in subscribed topics.
YELLOW
SWORDFISH
|
I am sure this is the absolute worst way of going about this but I figured a way to do this for my users. we have a pretty active forum during the football season and so it helps to have something to show which threads you have replied in.
anyway I modified just before the start of column 2 in spForumViewDesktop.php and displayed two images one for if the user posted in the thread ond one for if they didn't.
global $wpdb;
$current_user = wp_get_current_user();
if ($current_user->ID != 0) {
$myThisTopic = $spThisTopic->topic_id;
$thisUserId = $current_user->ID ;$wpdb->get_results("select post_id from wp_sfposts where topic_id = ".$myThisTopic." and user_id = ".$thisUserId." limit 1");
$rowcount = $wpdb->num_rows;
if($rowcount != 0){
echo "[Image Can Not Be Found]";
}else{
echo "";
}}else{
echo "";
}
Users dont know which topics they posted in? unless is quite old, seems odd, but hey - not judging! 😉
not exactly sure what you are trying to do with this code... Adding another query like that would be a significant performance hit... and not sure what you are doing with that query... you getting a list of post ids, but you really want to know if there is any poster ids that match the current user... so if you insisted on the query, do a get_var() and just return the first post id where the poster was the user... then you can just see if you have a value for the post id and get rid of the num_rows() too...
perhaps I would suggest that you take a look at our inspector... forum - toolbox - data inspector... with it you can see much of the large amounts of data already available to you on any given page...
for example, dont do the expensive wp_get_current_user() as you dont neeed all that info... simply use the global variable $spThisUser... the ID would be $spThisUser->ID... and just for grins, wp has a global variable as well called $current_user so you dont need to fill it...
but actually, having read through this a couple more times, you actually want to know this on forum view.. and know if current user posted in the listed topics... was originally thinking topic view..
Like Andy says, when we implement the notification system edge case desirements like this should be more possible directly...
Visit Cruise Talk Central and Mr Papa's World
This is a common feature on almost every forum I've managed whether that is ip.board (native) vbulletin or simplemachines (plugin).
When you have users that are active in many posts and your forum is quite active it is nice to know which posts you have posted in with a visual hint. It makes scanning the list of topics easy to know which topics you have a level of interest in already. It is one of the highest features that people were missing when we converted.
Query is pretty simple. I am not getting a list of post_id's. I am getting one post id. it's returning a single post id if the user posted in that topic because of the limit 1 constraint. If they did post then an image is displayed for that topic in forum view. If not then a different topic is displayed. This is how it works in ip.board.
i should have thought to put in the $spUser->ID I just had copied over the query I was using to see if I could pull whether or not a user had posted in a thread. Will switch to $spUser->ID.
Sans query I don't know how else I would figure out if the current viewing user had posted in the thread. I looked through the data inspector and didn't see any sort of array containing a list of users that had replied to the topic. At lease not in forum view.
I am curious to see your notifications upgrade as there are several things that are severely lacking in display on the forum itself. Whether or not someone quoted you, whether or not someone thanked/liked your post, admin notifications that a post was reported. We had to rewrite a custom section for this as well.
I tend to remember where I post 😉 but if I want to know about updates, I subscribe... If I just have interest and want to check back, I watch... but different strokes for different folks... understand your use case... and we have been talking about best way (like notifications) to do it...
if you are returning a single variable, better to use get_var() than return an array, but minor impact... just like using the api to do the work... sorry, wasnt trying to imply yours wouldnt work...
the data inspector comment was just a general comment to help you see the significant amount of data that is available on each page load... as I said after reading through a few more times, wouldnt help in this case...
to be clear, its $spThisUser->ID...
glad to see you exploring the extreme customization of simple press... we think its a power api that can customize to just about anything you want... thanks for sharing...
Visit Cruise Talk Central and Mr Papa's World
Oh I actually love the ability to play with customization and child themes and not worrying too much about breaking anything too badly. It is pretty awesome.
on the get_var() though on the wordpress site It says:
Executes a SQL query and returns the value from the SQL result. If the SQL result contains more than one column and/or more than one row, this function returns the value in the column and row specified. If $query is null, this function returns the value in the specified column and row from the previous SQL result.
I wonder about the bolded part causing an issue. Say on one topic listing the user did respond. but in the next they didn't. Would the query then show that they did since it would default to the previous query's result? I have to be reading that wrong.
Here is what the current working code looks like:
global $wpdb;
if ($spThisUser->ID != 0) {
$reply_count = $wpdb->get_var("SELECT COUNT(*) from wp_sfposts where topic_id = ".$spThisTopic->topic_id." and user_id = ".$spThisUser->ID." LIMIT 1");
if($reply_count != 0){
echo "<img src='http://www.vikefans.com/wp-content/sp-resources/forum-themes/reboot-child/images/iPosted.png'>";
}else{
echo "<img src='http://www.vikefans.com/wp-content/sp-resources/forum-themes/reboot-child/images/noPost.png'>";
}}else{
echo "<img src='http://www.vikefans.com/wp-content/sp-resources/forum-themes/reboot-child/images/noPost.png'>";
}