![]() |
How to update User Titles and Ranks automatically?
Ranks are not updating automatically for my users. Is there a way to automatically update user titles and ranks? I don't want to manually run Admin CP > Maintenance > Update Counters > Update User Titles and Ranks each time.
Does anyone know if this can be run as a cron job or any mod that does this? I'm currently using vB 3.7.3. Do other versions of vBulletin have the capability to run this automatically? How about vB 3.8.4 or vB 4.0.2? I searched both vBulletin.com and vBulletin.org, but the only responses to "ranks are not updating" seem to be "then run Admin CP > Maintenance > Update Counters > Update User Titles and Ranks". I'm looking for a way to do this automatically. Thanks. |
Do any of your Scheduled Tasks run?
|
Marco, thanks for your response.
Yes, schedule tasks do run, but I don't believe any of them updates counters. The schedule tasks that currently run include promotions.php, threadviews.php, subscriptions.php, etc. What did you have in mind? --------------- Added [DATE]1267438686[/DATE] at [TIME]1267438686[/TIME] --------------- ETA: If you know of a PHP script that can do this (update titles and ranks), please let me know and I'll add a new scheduled task using the script. |
Then they should be updated automatically.
To troubleshoot this, please remove any hacks and disable your plugins, then see if you still have this problem. Note: To temporarily disable the plugin system, edit config.php and add this line right under <?php define('DISABLE_HOOKS', true); If so, reupload all the original vB non-image files (except install.php). Make sure you upload these in ASCII format and overwrite the ones on the server. |
Quote:
|
promotion.php for sure does update ranks.
|
Aah, I see what you mean now. It makes sense that promotion.php should update ranks. Here's the thing though, I'm using Ranks differently.
Users subscribe to a Rank, by purchasing a Paid Subscription. The subscription script adds them to a new rank (through the use of an additional user group), e.g. Paid Rank When they purchase the Paid Rank subscription, they are automatically given the rank of Paid Rank and their new Rank is displayed correctly. However - and here's where I'm facing the issue - when their subscription period ends, the rank is not removed. Their profile and posts still show Paid Rank. promotions.php does not update (remove) users from Paid Rank after expiry of their Paid Rank subscription. What works for now is either: a. Manually go to Admin CP, user's profile, and just hit save, or b. Manually run "Update user titles and ranks" I'm looking for a script that can essentially automatically do what "Update User Titles and Ranks" does, and run it every night, instead of running it manually. The obvious response is: "You're doing it wrong, you should be using User Titles for this". But I need to use Ranks for this, because users are essentially purchasing Custom Titles using a Paid Subscription, and their original User Title is becoming their new Rank, so basically someone who is: Username Premium Member can buy a Paid Subscription for Custom Title and become: Username Custom Title Premium Member (where Premium Member is the Rank) So, my question is: Is there a script that does what "Update User Titles and Ranks" does? Or is there another approach that can solve this issue? Thanks. |
You're doing it wrong, you should be using User Titles for this. ;)
But i have just tested the following: - Created 2 ranks. -- 1 active for the 'Registered users' usergroup, minimum posts set to 1. ("Reg Rank") -- 1 active only for the 'Moderators' usergroup (only do this on a test forum :D), minimum posts =1 ("Mod Rank") - Created test user with 2 threads - While test user still in Registered Users usergroup, he is showing the "Reg Rank" - Created a subscription that will change the usergroup of the user to Moderator (again, only do this on a test board). - Added the user manually to the subscription from the AdminCP. - His userrank now changed to "Mod Rank". No need to update counters or anything. So most likely you have a modification installed that is interfering with the normal behaviour. |
Quote:
Quote:
Now, go to the user profile (in Admin CP) of the test user that moved from rank "Reg Rank" to "Mod Rank", and edit the active Paid Subscription for this user. Set it to Active: No and click Save. (Edited To Add: This simulates expiry of Paid Subscription) This should make the user go back from Mod Rank to Reg Rank, correct? But this doesn't get updated. You can confirm this by doing the above with your test user and looking at the user's profile (regular view from forum). Note that you will still see Mod Rank displayed for your test user. But if you go back to the test user's profile in Admin CP and just click Save, the test user's rank will now show as Reg Rank (you can again confirm by looking at the regular forum view of the user's profile). This is a manual update to the rank. I want to automate this. You can repeat the test by: Setting the subscription back to Active: Yes (check rank, it should be Mod Rank) Then setting the subscription to Active: No (check rank, it should be Reg Rank but it is still Mod Rank) Now just go back to the user's profile (Admin CP view) and click Save (check rank, it now correctly updates to Reg Rank) Repeat if necessary to check again. Same thing happens each time. Thanks for your efforts. Let me know if you get any ideas after you test the above. |
Quote:
I have just again tested this, and when i enable the subscription the usergroup and rank are updated, if i disable the paid subscription, both the usergroup and rank revert back. PS Did you set these ranks to act only on a specific usergroup or did you leave it to all usergroups? |
Quote:
Quote:
What's probably happening in your case is that a move to a different primary usergroup is causing the refresh. Try it with an additonal usergroup instead and see if it updates. Quote:
Thanks a lot for your efforts, Marco. Appreciate you testing it out. See Post #4 in this thread: https://vborg.vbsupport.ru/showthread.php?t=130545 I'm looking for a .php script like that that I could run as a scheduled task. Preferably with options to limit the updates to a specific usergroup, rather than all members. |
Quote:
I have tested it again now on a clean 3.7.3 testboard, and it is still working as expected. I also tested it now with a secondary usergroup in teh subscription and still working as expected. So my guess is that 1 of your modifications is causing the problem. |
Quote:
Quote:
I just tested it with Primary vs. Secondary Usergroups. In the case of the Primary Usergroup, it works fine and updates the rank even at the end of the subscription (when the user is moved back to the original primary usergroup). In the case of the Secondary Usergroup, it doesn't update the rank on the user's profile page (regular forum view). I have to manually Save the user profile (in Admin CP) to refresh the rank display on the user's profile page (regular forum view). I guess there's nothing more you can do to help at this point. You've already tested it out for me, and it works on your test server. It must be something else conflicting on my server, but I guess I'll just use the manual route or try to use a Primary group move to refresh the rank. Thanks a lot again for all your help! |
If you have a test installation on your server, then you may PM me the details and amdin login and i will have a look for you.
If you are sure that this is not caused by a modification, then you can also choose to open a support ticket. |
Quote:
I either have to SAVE the user record in AdminCP or run the "update user titles and ranks" manually to get the rank graphic for the member to begin appearing in any of his posts (postbit_legacy). It's also messed up in reverse. If a user's subscription expires, vBulletin correctly changes the usergroup, but the rank graphic associated with the expired usergroup continues to appear in postbit etc, until I manually SAVE the user record in AdminCP or run the "update user titles and ranks" manually to get the now expired rank graphic for the member to disappear. I came here and searched the forum for a simple way of having the "update user titles and ranks" job run nightly as a maintenance function, as I'm really getting tired of having to go in and SAVE every user record after they get a new usergroup checked off, or their subscription expires. Can anyone tell me how to add this job as an overnight run, or provide me a fix for this long standing bug? Thanks in advance ... :) Regards, Doug |
I'm in the same boat.
Actually, when upgrading the user to the premium usergroup in 3.8.6, it worked instantly. Using the same upgrade script (even with define('DISABLE_HOOKS', true);) I have to run the Update User Titles script. I've considered tearing out the code used for updating users and running it for just a single instance, but that sounds like trouble (at least with me doing it). I'm not sure what changed from vb3.8 to vb4.1.1, but then again, I've been saying that all month. :D |
Well I now have the same issue and the funny thing when I do it all manually it will work the way it should removing the rank and badge associated with it. However when subscription does it only the additional user group will be removed leaving the rank and badge. I cannot see how this is supposed to be like this as you have associated that rank with that user group so if the user group is taken away the rank and badge should not be available as well
|
Quote:
|
I would also like to update the User Titles via a scheduled task. VB can't help and sent me here.
I have a hack that auto-bans spammers, but I still have to update the counters manually in order for the "banned" to show in the User Title..... Been trying to figure this out off and on for a few years :) |
Quote:
|
Quote:
Quote:
For now try editing a cron job and by that I mean the file for instance one related to a scheduled task that runs at least daily. Where can you add the code? Ensure your scheduled tasks are enabled then edit the file cleanup.php OR cleanup2.php OR dailycleanup.php which is located in the /includes/cron/ folder and add the query just below: PHP Code:
PHP Code:
Enjoy! Note: Should delete entries in ranks table using query similar to the below as well HOWEVER this sets usertitle to guest and removes user info from post and requires fix broken user profiles to be used so just an example query for now until I have time to adjust it properly i.e. insert into instead of delete: PHP Code:
|
Thanks for the tip.
|
What about updating rank badges when paid subscriptions expire?
|
All times are GMT. The time now is 01:29 PM. |
Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
![]() |
|
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|