![]() |
where to place my safe custom functions?
Hi...
Possibly a new security feature of my vBulletin is stopping me from including my custom php file which has a custom-function within it and then using that function in a custom template, where should I place my 'safe' function and get my template working again? The error I'm having is: Fatal error: Call to undefined function customfunction() in /home/www/xxx/includes/adminfunctions_template.php(3950) : eval()'d code(277) : eval()'d code on line 47 please advise |
Use hook: template_safe_faunctions
Code:
$safe_functions[] = 'my_php_function_name'; |
Quote:
|
This should help. :)
http://www.vbulletin.com/docs/html/f...n_conditionals If you have a specific question and you can show your work, then I can be of more assistance. :) |
Thank you...
Yes were on the right track... I have a custom php file in my forums directory which through a template is being included, all that php file really has in it is that function, the template is not being saved telling me it's undefined... So in the php file I've included the line : $safe_functions[] = 'myFunction'; but it's a no show still... It all used to work :) using vBulletin 3.8.7 Patch Level 4 - Just need to let vB know that myFunction is a good'un and I'm golden.. the custom php file is being included, just can't save the template without an error.... Thanks for the help. \ EDIT, I'm getting it now I think.... |
Quote:
"Safe Functions" allows a PHP function or user function to be accessible via a template. It's main purpose was to limit harmful functions from being executed at presentation. "$safe_function" is an array that you can add the name of your function to, this is added to the array at template hook: "template_safe_functions". (See .. "/includes/adminfunctions_template.php" around line ~1888. I have a notion that you are trying to send information to the template through output buffering, but cannot be sure without seeing your code. My forte' lies with vb4, so you could be still doing something I am not familiar with. |
Yeah I dunno...
just want a function included simple as... so I see in my 'adminfunctions_template.php' this line: ($hook = vBulletinHook::fetch_hook('template_safe_functions ')) ? eval($hook) : false; What's a hook? do I need to create a new plugin for my function? insert some code into my custom php file to allow vB to accept it? or insert more code into my custom template? or create a new template with proper allowed custom functions? - I'm confused... I'll explain, this should be easier you know :D Got a custom php file, it's being included, here's the code Code:
<? Code:
// // require_once('top10pagenation.php'); Thanks ever so for the help, I just can't seem to understand what's what with this, cheers --------------- Added [DATE]1406330921[/DATE] at [TIME]1406330921[/TIME] --------------- I placed in the admin_functions template near those lines you mentioned '$safe_functions = array( 'paginateRecords', // test ); so it's like this now: Code:
static $safe_functions; |
Quote:
But I don't think that's what you want. It looks to me like you are trying to call your custom function to do some formatting, in which case you would want to use a plugin. Your code would then create one or more variables and you'd use them in a template. So, which hook location should you use? It depends on what you're trying to do. Hooks are just places in the vbulletin scripts where addon code can be called, so you need to find one in a location that's allows you to do what you want to do. |
Quote:
Code:
<?xml version="1.0" encoding="ISO-8859-1"?> My template (incidentally I have php plugin which allows me to use php in templates, so for the 'echo' statement I'm hoping is all ok) Code:
// require_once('top10pagenation.php'); |
Couple questions:
What modification are you using to include PHP in templates? What template are you inserting this into? You do not need "$safe_functions" for what you are doing, since you are circumventing the template system. Give me a few minutes to get my bearing on this with VB3. :) |
OK thanks for the help...
The plugin to allow PHP is called 'Product : Let PHP Live!' and looks like this: Code:
if (!function_exists('let_php_live')) { The template I'm using is a custom one, see below: Code:
$stylevar[htmldoctype] On my forum I just link to my php file which calls up my template: Code:
<?php --------------- Added [DATE]1406390365[/DATE] at [TIME]1406390365[/TIME] --------------- Adding the hooks etc seems to work... just blank output Code:
// require_once('top10pagenation.php'); |
* Removed *
|
Lovely... would you believe I was going along similar lines...
Anyway, if you could clear a few things up... I've followed everything here and it's very clear, getting a good understanding, I have one more template/php-file to do like this and I'll apply your enlightening way to that also... Right, well it's working, kinda... I can see what's happening, top10.php seems fine, template is fine, when called I see my forum header, the outout header and graphic and the footer graphic and then the forum footer itself, but nothing inbetween... What I'm doing as you would of guessed is reading a file from ftp, putting a 100 lines of it into a text file/flat-file and then trying to read it out nicely... seems like the fault of the 'top10.txt' which checking now is zero bytes, so it's making the file, putting nothing into it and then reading nothing out, so it's either my ftp url which I'm sure is right or line 94 of the top10.php which is: Code:
$ftpurl = "./top10records.txt"; Code:
$ftpurl = "ftp://username:password@88.88.88.88/Data_PermaScore.lua"; // Your FTP uri |
Remove that line it is a typo. That was for my local test data. I will remove it from the message above, sorry. :)
Most of your html code could have easily been placed into the template. Which would have made it easier to code, once you get the hang of things. |
Thanks, Done...
I'm still trying to work out why it's creating a zero-byte 'top10.txt' file and putting nothing into it for reading... hmmm so I'm getting an output of zilch, Can't see anything obvious... EDIT, ahh right, removed the top10.txt and it worked, showing records... but all of them :D Up to 95 records before it breaks... no pagenation Example shown: Code:
#0 1 : 'kkk-'_KILLS-( 51370)_DEATHS-( 22963)_SUICIDES-( 3444)_HEADSHOTS-( 1261)_DUELWINS-( 3)_LEVEL-( 89) |
If you can attach a copy of the data file and your CSS then I can check it out further. Just capture the raw CSV, not the cache file.
|
1 Attachment(s)
See the attachment for my test output. This was before I posted the code here.
|
1 Attachment(s)
Quote:
OK, well I changed the line: Code:
if ($record > 50) On page one, at the bottom the first two records are repeated after the fifty shown, then if you press next which works, page two shows again all records and the next two at the bottom are record 3 and 4 and so it go's on :) hopefully we're getting there, thanks ever so for this help. |
The problem I think is in $numrecs. I changed the variable only at posting time for consistency. It should be $numRecs. So you might want to change all $numrecs to $numRecs. There should be two.
I will get a chance to take a look at this, later this evening. :) |
Due to the possible exploits of the original code, it was easier to just write new code. I tried to keep things compatible with your existing code so that it would not be too difficult for you to modify.
I will post the main code here and your proprietary templates in a PM. Updating your HTML should be much easier now that this is using the vb3 conventions. top10 -- Main template top19bits -- Row data bits Let me know when you get it running, I would like to see the finished product. :) Code:
<?php |
All times are GMT. The time now is 10: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:
|