Go Back   vb.org Archive > vBulletin 4 Discussion > vB4 Programming Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 05-09-2013, 04:03 AM
dagg929 dagg929 is offline
 
Join Date: Nov 2012
Posts: 9
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default User defined PHP function in custom block

I've searched everywhere and I can't find a definitive answer to my question. I'm having trouble getting a user defined php function to execute inside of a custom block.

Code:
$my_output = 'Bad';
if(!function_exists('good'))
{
function good()
{
      $my_output = 'Good';     
}
}
good();
return $my_output;
This is just a test code I wrote to see if this was indeed my problem and it was. The output is always "Bad". Any suggestions to get this to work would be appreciated.

Also, do these same issues arise if I define the php code as a plugin? I haven't been able to get it to work that way either and I figured it would be better to define the code in the block anyways.
Reply With Quote
  #2  
Old 05-09-2013, 08:29 AM
tbworld tbworld is offline
 
Join Date: Oct 2008
Posts: 2,126
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by dagg929 View Post
I've searched everywhere and I can't find a definitive answer to my question. I'm having trouble getting a user defined php function to execute inside of a custom block.
Where are you currently installing your custom code? Typically custom code is installed via the Product/Plugin system.
Reply With Quote
  #3  
Old 05-09-2013, 09:12 AM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

You need to make sure $my_output is a global variable. You need a global statement inside the good() function, and you also may need one at the beginning of the plugin code, depending on the hook being used. So try something like:

Code:
global $my_output;
$my_output = 'Bad';
if(!function_exists('good'))
{
function good()
{
      global $my_output;
      $my_output = 'Good';     
}
}
good();
return $my_output;

ETA: or you could use a reference parameter or return a value from good(), but probably your actual code is different than the example you posted, so maybe that won't work.
Reply With Quote
  #4  
Old 05-10-2013, 02:28 AM
dagg929 dagg929 is offline
 
Join Date: Nov 2012
Posts: 9
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thank you for the global suggestion I think that would solve part of the problem, but I don't think that was entirely the issue because I've tried returning straight from the function and it never executed.

I did solve my problem though, I just got rid of the function because it seems like too much of a hassle to try to work around. Was easier to just execute the code where needed.

To answer the first question, in a forum block. It's not a large chunk of code, but I needed to do a call to the database and some manipulating. The function was just for output formatting so I just scrapped it.
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 08:17 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.08523 seconds
  • Memory Usage 2,186KB
  • Queries Executed 13 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (2)bbcode_code
  • (1)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (4)post_thanks_box
  • (4)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (4)post_thanks_postbit_info
  • (4)postbit
  • (4)postbit_onlinestatus
  • (4)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete