PDA

View Full Version : Help. Where I can hook to show different post text depending on user ID?


cheaton
03-30-2011, 11:36 AM
Please help me to solve my problem ...

I am writing a script that handles my own bbtag ( for example) in messages that are visible to all users. But I can't find right place to analyze can user view text plased inside tag ...?

This is a handler for [test_results]xxx tag, I am setting this hook on bbcode_create


if (function_exists("handle_testResults") == false)
{
function handle_testResults(&$parser, $param)
{
global $vbulletin;

if ($vbulletin->userinfo['userid'] == 2)
{
return "HERE TEXT WICH THIS USER CAN VIEW";
}
else
{
return "YOU CANNOT VIEW THIS MESSAGE!";
}
}

$this->tag_list['no_option']['test_results']['callback'] = 'handle_external';
$this->tag_list['no_option']['test_results']['external_callback'] = 'handle_testResults';
}

But this way doesn't change message for guests for example, it show "HERE TEXT WICH THIS USER CAN VIEW" for all users.

Help me to find right plase for this code, so I can show custom text for some users or groups, and other users. Also where I can plase same code, to prevent users to view this text if user will click "Answer with quotation" button in reply text...

Sorry for my bad english and thanks for your help...

Lynne
03-30-2011, 01:49 PM
If you are in debug mode, then you get a list of the hooks the page goes through on the bottom of the page. I'd try a few of the hook locations around where the postbit_display_* hooks are:
showthread_query
bbcode_fetch_tags
bbcode_create
showthread_postbit_create
postbit_factory
postbit_display_start
reputation_image
bbcode_parse_start
postbit_imicons
postbit_display_complete

cheaton
03-30-2011, 02:27 PM
If you are in debug mode, then you get a list of the hooks the page goes through on the bottom of the page. I'd try a few of the hook locations around where the postbit_display_* hooks are:
Thank you for your advice. Looks like I've set hooks right before, looks like my problem in appears, because this code doesn't work

if (function_exists("handle_testResults") == false)
{
function handle_testResults(&$parser, $param)
{
global $post, $vbulletin;


echo "111111111111111111111111111111";
return "222222222222222222222222";
}
}

$this->tag_list['no_option']['test_results']['callback'] = 'handle_external';
$this->tag_list['no_option']['test_results']['external_callback'] = 'handle_testResults';
I think here I am using incorrect call to my function, wich must return "222222222222222222222222" instead text inside tag...

Actualy bbcode_create works, but it display same result for all users...:-( How I can process post only if it have [test_results] tag for each user with his own result? Just I don't want to parse all messages in thread, I am trying to make code, wich will work only with messages with custom tag. Thanks.