Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 General Discussions

Reply
 
Thread Tools Display Modes
  #1  
Old 07-02-2005, 12:45 PM
Xia Xia is offline
 
Join Date: Mar 2005
Location: Belgium
Posts: 36
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Errors when including global.php

I want to implement an external user registration functionality.

I use this code to include global.php

chdir('../forum');
require_once('./global.php');

However, upon doing this I receive these errors:

Notice: Undefined variable: errfile in /home/wa/public_html/forum/includes/functions_log_error.php on line 136

Warning: array_keys(): The first argument should be an array in /includes/functions.php on line 3090

Notice: Undefined variable: errfile in /home/wa/public_html/forum/includes/functions_log_error.php on line 136

Warning: Invalid argument supplied for foreach() in /includes/functions.php on line 3090

Fatal error: Call to a member function on a non-object in /home/wa/public_html/forum/includes/functions.php on line 2379

functions.php line 2379 =
$temps = $vbulletin->db->query_read("
SELECT title, template
FROM " . TABLE_PREFIX . "template
WHERE templateid IN (" . implode(',', $templateids) . ")
");

functions.php line 3090 =
foreach(array_keys($vbulletin->forumcache) AS $forumid)
{
foreach($membergroupids AS $usergroupid)
{
$user['forumpermissions']["$forumid"] |= $vbulletin->forumcache["$forumid"]['permissions']["$usergroupid"];
}
}

Anyone know what is wrong and why?
Reply With Quote
  #2  
Old 07-02-2005, 12:53 PM
Marco van Herwaarden Marco van Herwaarden is offline
 
Join Date: Jul 2004
Posts: 25,415
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

You will find 4 arrays defined in each vB file, before the call to global.php. Just define those 4 arrays.
Reply With Quote
  #3  
Old 07-02-2005, 01:04 PM
Xia Xia is offline
 
Join Date: Mar 2005
Location: Belgium
Posts: 36
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks for your quick reply,

I added the 4 arrays but the errors still remain.

Here is the new code:

PHP Code:
echo "creating arrays..";
        
//define('THIS_SCRIPT', 'index');
        
$phrasegroups = array('holiday');
        
$specialtemplates = array(
            
'userstats',
            
'birthdaycache',
            
'maxloggedin',
            
'iconcache',
            
'eventcache',
            
'mailqueue'
        
);
        
$globaltemplates = array(
            
'FORUMHOME',
            
'forumhome_event',
            
'forumhome_forumbit_level1_nopost',
            
'forumhome_forumbit_level1_post',
            
'forumhome_forumbit_level2_nopost',
            
'forumhome_forumbit_level2_post',
            
'forumhome_lastpostby',
            
'forumhome_loggedinuser',
            
'forumhome_moderator',
            
'forumhome_pmloggedin',
            
'forumhome_subforumbit_nopost',
            
'forumhome_subforumbit_post',
            
'forumhome_subforumseparator_nopost',
            
'forumhome_subforumseparator_post'
        
);
        
$actiontemplates = array();
        
chdir('../forum');
        echo 
"requiring..";
        require_once(
'./global.php');
        echo 
"required..";
        
        
$user =& datamanager_init('User'$vbulletinERRTYPE_ARRAY);
        
        echo 
"created.."
Reply With Quote
  #4  
Old 07-02-2005, 01:07 PM
Cloudrunner's Avatar
Cloudrunner Cloudrunner is offline
 
Join Date: May 2003
Location: Butte, MT
Posts: 635
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Xia
Thanks for your quick reply,

I added the 4 arrays but the errors still remain.

Here is the new code:

PHP Code:
echo "creating arrays..";
        
//define('THIS_SCRIPT', 'index');
        
$phrasegroups = array('holiday');
        
$specialtemplates = array(
            
'userstats',
            
'birthdaycache',
            
'maxloggedin',
            
'iconcache',
            
'eventcache',
            
'mailqueue'
        
);
        
$globaltemplates = array(
            
'FORUMHOME',
            
'forumhome_event',
            
'forumhome_forumbit_level1_nopost',
            
'forumhome_forumbit_level1_post',
            
'forumhome_forumbit_level2_nopost',
            
'forumhome_forumbit_level2_post',
            
'forumhome_lastpostby',
            
'forumhome_loggedinuser',
            
'forumhome_moderator',
            
'forumhome_pmloggedin',
            
'forumhome_subforumbit_nopost',
            
'forumhome_subforumbit_post',
            
'forumhome_subforumseparator_nopost',
            
'forumhome_subforumseparator_post'
        
);
        
$actiontemplates = array();
        
chdir('../forum');
        echo 
"requiring..";
        require_once(
'./global.php');
        echo 
"required..";
        
        
$user =& datamanager_init('User'$vbulletinERRTYPE_ARRAY);
        
        echo 
"created.."
in your chdir statement, declare the full filepath (ie. /home/yourdomain/public_html/forum) to the forum directory...then after you have done the work that requires the vb files, chdir back to the directory that the file is in that you are working with. That should remove the global errors.
Reply With Quote
  #5  
Old 07-02-2005, 01:15 PM
Xia Xia is offline
 
Join Date: Mar 2005
Location: Belgium
Posts: 36
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hello,

I changed the code snippet to this:

PHP Code:
        chdir('/home/wa/public_html/forum');
        echo 
"requiring..";
        require_once(
'./global.php');
        
chdir('/home/wa/public_html/common');
        echo 
"required.."
Alas, the errors remain even with this change. Any other ideas? Thanks

Could it be that the arrays required cannot be accessed by global.php because they are created in a function inside a class? (local scope) Just guessing here..

PSEUDO :

Code:
class Registration 
  function insert
     define arrays;
     chdir;
     include global.php;
Update: Well, it definately works if I do not put it in a class or function, however this is the way my framework works and there is no way around it.

Is it possible to still have access to global.php inside a class or function?

Update2: If there isn't, is it still possible to play with the datamanager?

This is what I need global.php for:

PHP Code:
        $user =& datamanager_init('User'$vbulletinERRTYPE_ARRAY);
        
$user->set('username'$parameters['username']);
        
$user->set('email'$parameters['email']);
        
$user->set('password'$parameters['password']);

        if (
$user->errors) {
            
$this->errors =& $user->errors;
            
$this->reportInputError('register');
            die();
        } 
            
        
$userID $user->save(); 
Thanks

For anyone wanting to test: This does not work :

PHP Code:
<?php
function test() {
        
chdir('/home/wa/public_html/forum/');
        
$phrasegroups = array('holiday');
        
$specialtemplates = array(
            
'userstats',
            
'birthdaycache',
            
'maxloggedin',
            
'iconcache',
            
'eventcache',
            
'mailqueue'
        
);
        
$globaltemplates = array(
            
'FORUMHOME',
            
'forumhome_event',
            
'forumhome_forumbit_level1_nopost',
            
'forumhome_forumbit_level1_post',
            
'forumhome_forumbit_level2_nopost',
            
'forumhome_forumbit_level2_post',
            
'forumhome_lastpostby',
            
'forumhome_loggedinuser',
            
'forumhome_moderator',
            
'forumhome_pmloggedin',
            
'forumhome_subforumbit_nopost',
            
'forumhome_subforumbit_post',
            
'forumhome_subforumseparator_nopost',
            
'forumhome_subforumseparator_post'
        
);
        
$actiontemplates = array();
        require_once(
'./global.php');
        }

test();
        
?>
Errors as already said:

Code:
Warning: array_keys(): The first argument should be an array in /includes/functions.php on line 3090

Warning: Invalid argument supplied for foreach() in /includes/functions.php on line 3090

Fatal error: Call to a member function on a non-object in /home/wa/public_html/forum/includes/functions.php on line 2379

Fatal error: Call to a member function on a non-object in /home/wa/public_html/forum/includes/functions.php on line 4198
What to do?
Reply With Quote
  #6  
Old 07-02-2005, 06:22 PM
Cloudrunner's Avatar
Cloudrunner Cloudrunner is offline
 
Join Date: May 2003
Location: Butte, MT
Posts: 635
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Global the variables...

PHP Code:
<?php
function test(){
    global 
$phrasegroups$specialtemplates$globaltemplatesactiontemplates;

    
$phrasegroups = array('holiday');
    
$specialtemplates = array(
        
'userstats',
        
'birthdaycache',
        
'maxloggedin'
        
'iconcache'
        
'eventcache'
        
'mailqueue');
    
$globaltemplates = array(
        
'FORUMHOME'
        
'forumhome_event'
        
'forumhome_forumbit_level1_nopost'
         
'forumhome_forumbit_level1_post'
        
'forumhome_forumbit_level2_nopost'
        
'forumhome_forumbit_level2_post'
        
'forumhome_lastpostby'
        
'forumhome_loggedinuser'
        
'forumhome_moderator'
        
'forumhome_pmloggedin'
        
'forumhome_subforumbit_nopost'
        
'forumhome_subforumbit_post'
        
'forumhome_subforumseparator_nopost'
        
'forumhome_subforumseparator_post');
     
$actiontemplates = array(); 
     
chdir('/home/wa/public_html/forum');
     require_once(
'./global.php');
     
chdir('/home/wa/public_html/common');
}

test();
?>
Reply With Quote
  #7  
Old 07-03-2005, 09:36 AM
Xia Xia is offline
 
Join Date: Mar 2005
Location: Belgium
Posts: 36
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hi,

Just tried it, errors remain the same. Any other ideas?

Thanks
Reply With Quote
  #8  
Old 07-03-2005, 12:09 PM
Paul M's Avatar
Paul M Paul M is offline
 
Join Date: Sep 2004
Location: Nottingham, UK
Posts: 23,748
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

As a side note, do you actually need all those templates you are declaring, or did you just copy the code from somewhere ?
Reply With Quote
  #9  
Old 07-03-2005, 01:13 PM
Xia Xia is offline
 
Join Date: Mar 2005
Location: Belgium
Posts: 36
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

No i don't need them, I just copied it from index.php. Can they just be empty arrays?
Reply With Quote
  #10  
Old 07-03-2005, 01:15 PM
Marco van Herwaarden Marco van Herwaarden is offline
 
Join Date: Jul 2004
Posts: 25,415
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Like i said in my first reply, just define them.
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 04:18 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.04691 seconds
  • Memory Usage 2,310KB
  • 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
  • (6)bbcode_php
  • (1)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (1)pagenav_pagelink
  • (10)post_thanks_box
  • (10)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (10)post_thanks_postbit_info
  • (10)postbit
  • (10)postbit_onlinestatus
  • (10)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
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete