Go Back   vb.org Archive > vBulletin 4 Discussion > vB4 Programming Discussions
  #1  
Old 04-28-2010, 04:49 AM
bpr bpr is offline
 
Join Date: Dec 2009
Location: London
Posts: 57
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default [SOLVED]Exclude Addon PHP Functions

Hi guys,
I got a question about excluding parts of my php files in combination with the db class.

First of all, lets call my file "test.php". In that file I got like 500 Lines of php code, lets say 100 lines is all over the same something like this:
PHP Code:
    $dataForSquadTodo = array();
    while (
$tododata $vbulletin->db->fetch_array($DATAFROMOUTSIDEFUNCTION) )
    {
        
//make a class so that you can adjust bg for tr
        
switch ($tododata['priority'])
        {
            case 
"Sehr Hoch":
                
$style 'rhigh';
                break;
            
            case 
"Hoch":
                
$style 'high';
                break;
            
            case 
"Mittel":
                
$style 'medium';
                break;
            
            case 
"Niedrig":
                
$style 'low';
                break;
            
        }
        
    
// nun stehen die Daten in $userdata zur Verf?gung
        
$data = array(
                
'id'            => $tododata['id'],
                
'title'         => $tododata['title'],
                
'description'   => $tododata['description'],
                
'squad'         => $tododata['squadname'],
                
'status'        => $tododata['status'],
                
'priority'      => $tododata['priority'],
                
'style'         => $style
                  
);
        
$dataForSquadTodo[] = $data;
    }
    
    foreach (
$dataForSquadTodo as $item => $value)
    {
        
$templater vB_Template::create('todo_table_list');
            
$templater->register('item'$item);
            
$templater->register('value'$value);
        
$todoDataSquad .= $templater->render();  
    } 
I tried to put this in a function such and called it something like
"
PHP Code:
getDataAndProduceArray$data 
"

However, there was no way, that I was able to use "$DATAFROMOUTSIDEFUNCTION" - I just got a blank site. It was even in the test.php and I didnt give it to another php file in includes/ or somewhere else. Does anybody know, why I cant do it like that ? Why is my script not recognising my function ?

All the best
bpr
Reply With Quote
  #2  
Old 04-28-2010, 01:38 PM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

There is no reason why you can't create a function in another file and pass it information. But, since you didn't post the exact code you wrote for the function, nor the exact code you wrote to call the function, it's impossible for us to tell you what you did wrong.
Reply With Quote
  #3  
Old 04-28-2010, 05:09 PM
bpr bpr is offline
 
Join Date: Dec 2009
Location: London
Posts: 57
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Ook - here the exactly code:

todo.php:
PHP Code:
// ######################### REQUIRE BACK-END ############################
// if your page is outside of your normal vb forums directory, you should change directories by uncommenting the next line
// chdir ('/path/to/your/forums');
require_once('./global.php');
require_once(
'./includes/class_todo.php'); 
Later on in the todo.php

PHP Code:
//Todo Class
$todoCLS = new Todo(); 
And then the usage of it in todo.php
PHP Code:
///////////////////////////////////
//TODO to do
///////////////////////////////////
$result $vbulletin->db->query_read("SELECT todo.id, todo.title, todo.description, todo_squad.title as squadname, todo_status.title as status, todo_priority.title as priority FROM " TABLE_PREFIX " todo LEFT JOIN ( todo_squad, todo_priority, todo_status) ON ( todo.squad=todo_squad.id AND todo.status=todo_status.id AND todo.priority=todo_priority.id) WHERE todo.status>=2 AND active=1 ORDER BY todo.priority ASC");
#$resultset = $vbulletin->db->fetch_array($result);
$dataForTemplate = Array();
$dataForTemplate =$todoCLS->makeArray$result );

    
//if empty dont show table
    
if ( count$dataForTemplate ) == )
    {        
        
$dataForTemplate[] = $noData;
    } 

foreach (
$dataForTemplate as $item => $value)
{
    
$templater vB_Template::create('todo_table_list');
        
$templater->register('value'$value);
    
$todoData .= $templater->render();  

So I got the line
PHP Code:
$dataForTemplate =$todoCLS->makeArray$result ); 
this was just replaced, everything was working, thats the only line I replaced.

So lets got to the file:
/includes/class_todo.php
PHP Code:
<?php

class Todo
{
    
/*
     * return Array for Todo Table creation
    */
    
public function makeArray$result )
    {
        while (
$tododata $vbulletin->db->fetch_array($result) )
        {
        
//make a class so that you can adjust bg for tr
                
switch ($tododata['priority'])
                {
                    case 
"Sehr Hoch":
                        
$style 'rhigh';
                        break;
                    
                    case 
"Hoch":
                        
$style 'high';
                        break;
                    
                    case 
"Mittel":
                        
$style 'medium';
                        break;
                    
                    case 
"Niedrig":
                        
$style 'low';
                        break;
                    
                }
                
            
// nun stehen die Daten in $userdata zur Verf?gung
                
$data = array(
                        
'id'            => $tododata['id'],
                        
'title'         => $tododata['title'],
                        
'description'   => $tododata['description'],
                        
'squad'         => $tododata['squadname'],
                        
'status'        => $tododata['status'],
                        
'priority'      => $tododata['priority'],
                        
'style'         => $style
                          
);
            
$dataForTemplate[] = $data;
        }
    }
}

?>
If I request the site I will get a white - blank page!

What did I do wrong ?
I read something about ob_start(); and so on ? Do I need to do that ?

All the best,
bpr

//edit
the problem was that i didnt have
global $vbulletin in my other php files!
Reply With Quote
Reply

Thread Tools
Display Modes

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:13 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.03879 seconds
  • Memory Usage 2,232KB
  • 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
  • (7)bbcode_php
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (3)post_thanks_box
  • (3)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (3)post_thanks_postbit_info
  • (3)postbit
  • (3)postbit_onlinestatus
  • (3)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