vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=15)
-   -   Accessing notifications on an external forum page (https://vborg.vbsupport.ru/showthread.php?t=258359)

Majidm 02-04-2011 10:10 PM

Accessing notifications on an external forum page
 
Here is my set up...

1) I have a header.php and footer.php file outside of vBulletin that defines the style of my entire site

2) I include these files into vBulletin via a custom plugin hooked into global_start:
PHP Code:

global $headerinclude;
ob_start(); 
require (
'/web/includes/header.php'); 
$headerinclude ob_get_contents(); 
ob_end_clean();

global 
$footerinclude;
ob_start(); 
require (
'/web/includes/footer.php'); 
$footerinclude ob_get_contents(); 
ob_end_clean(); 


Same for footer, this lets me reference my header.php file (which has a lot of custom PHP code in it) inside a vBulletin template using: $headerinclude and footer with $footerinclude

3) To make pages outside of vBulletin that can access it's resources, I do something like this:
PHP Code:

require_once("include_top.php"); //this file references forums/global.php and other files that let me access vBulletin resources
include "includes/header.php";
*
page code here*
include 
"includes/footer.php"

This lets me reference variables from vBulletin like $vbulletin->userinfo etc in my forum-external page

4) Everything works fine, I figured out that the array is called $notifications.. if I do a var_dump($notifications) in my header.php file and load my external page I get:
PHP Code:

array(11) { ["pmunread"]=> array(4) { ["phrase"]=> string(23"Unread Private Messages" ["link"]=> string(11"private.php" ["order"]=> int(10) ["total"]=> string(3"438" } ["vmunreadcount"]=> array(4) { ["phrase"]=> string(23"Unread Visitor Messages" ["link"]=> string(40"member.php?u=2&tab=visitor_messaging" ["order"]=> int(20) ["total"]=> int(0) } ["vmmoderatedcount"]=> array(4) { ["phrase"]=> string(27"Unapproved Visitor Messages" ["link"]=> string(40"member.php?u=2&tab=visitor_messaging" ["order"]=> int(30) ["total"]=> int(0) } ["friendreqcount"]=> array(4) { ["phrase"]=> string(24"Incoming Friend Requests" ["link"]=> string(28"profile.php?do=buddylist#irc" ["order"]=> int(40) ["total"]=> int(0) } ["socgroupreqcount"]=> array(4) { ["phrase"]=> string(27"Social Groups Join Requests" ["link"]=> string(21"group.php?do=requests" ["order"]=> int(50) ["total"]=> int(0) } ["socgroupinvitecount"]=> array(4) { ["phrase"]=> string(24"Social Group Invitations" ["link"]=> string(24"group.php?do=invitations" ["order"]=> int(60) ["total"]=> int(0) } ["pcunreadcount"]=> array(4) { ["phrase"]=> string(23"Unread Picture Comments" ["link"]=> string(19"album.php?do=unread" ["order"]=> int(70) ["total"]=> int(0) } ["pcmoderatedcount"]=> array(4) { ["phrase"]=> string(34"Picture Comments Awaiting Approval" ["link"]=> string(22"album.php?do=moderated" ["order"]=> int(80) ["total"]=> int(0) } ["gmmoderatedcount"]=> array(4) { ["phrase"]=> string(25"Unapproved Group Messages" ["link"]=> string(25"group.php?do=moderatedgms" ["order"]=> int(90) ["total"]=> int(0) } ["dbtech_usertag_mentioncount"]=> array(4) { ["phrase"]=> string(12"New Mentions" ["link"]=> string(31"member.php?u=2&tab=mentions" ["order"]=> int(110) ["total"]=> int(0) } ["dbtech_usertag_tagcount"]=> &array(4) { ["phrase"]=> string(15"New Thread Tags" ["link"]=> string(31"member.php?u=2&tab=usertags" ["order"]=> int(110) ["total"]=> int(0) } } 

The problem is when I go into the Forums (which loads the same header file) I just get a NULL value for the $notifications array

Any ideas?:confused:

kh99 02-04-2011 11:01 PM

I think the problem is that the global_start hook code is called before the $notifications array is created. Maybe try a hook location that's called later on global.php, like global_setup_complete.

Majidm 02-05-2011 02:17 PM

Quote:

Originally Posted by kh99 (Post 2158887)
I think the problem is that the global_start hook code is called before the $notifications array is created. Maybe try a hook location that's called later on global.php, like global_setup_complete.

Thanks for the suggestion, unfortunately when I do that my header & footer do not get parsed before the forum loads so therefor my customize HTML/PHP doesn't get loaded in the forums

Seems like the reasoning is on the right track though... just gotta figure out how to parse it in the right location

kh99 02-05-2011 02:30 PM

Oh, right...should have thought of that. Unfortunately there's no hook between creating the notifications array and evaling the header and footer. But the html for the header and footer is stored in $header and $footer, so maybe you can modify that after the fact (like put in place holders and do a str_replace on them later).

Majidm 02-06-2011 01:39 AM

Not sure what you mean, can you give me an example?

kh99 02-06-2011 01:36 PM

Sorry - yeah, I might be wrong. After reading your OP I should have asked, what template are you putting $headerinclude and $footerinclude in? I guess I was assuming that it was the header, navbar, and/or footer templates.

ETA: ...but assuming I guessed right and you are using the "header" and "footer" templates, what I was suggesting is that instead of inserting $headerinclude and $footerinclude in the templates, change it to something like <!-- Custom Header -->, etc. Then move your plugin to global_setup_complete (where the header and footer templates will have already been processed and the $notifications array created), and add this to the end of your plugin code:

Code:

$header = str_replace('<!-- Custom Header -->', $headerinclude, $header);
$footer = str_replace('<!-- Custom Footer -->', $footerinclude, $footer);


Also, I think the way you have things set up, on your custom pages your header and footer php files will be read in the plugin and then again in your page code, so for efficiency you could surround the plugin code by an "if" statement that checks THIS_SCRIPT and doesn't do the include if it's your custom script.

(BTW, I haven't tried this code).

Majidm 02-06-2011 02:52 PM

Quote:

Originally Posted by kh99 (Post 2159389)
Sorry - yeah, I might be wrong. After reading your OP I should have asked, what template are you putting $headerinclude and $footerinclude in? I guess I was assuming that it was the header, navbar, and/or footer templates.

ETA: ...but assuming I guessed right and you are using the "header" and "footer" templates, what I was suggesting is that instead of inserting $headerinclude and $footerinclude in the templates, change it to something like <!-- Custom Header -->, etc. Then move your plugin to global_setup_complete (where the header and footer templates will have already been processed and the $notifications array created), and add this to the end of your plugin code:

Code:

$header = str_replace('<!-- Custom Header -->', $headerinclude, $header);
$footer = str_replace('<!-- Custom Footer -->', $footerinclude, $footer);


Also, I think the way you have things set up, on your custom pages your header and footer php files will be read in the plugin and then again in your page code, so for efficiency you could surround the plugin code by an "if" statement that checks THIS_SCRIPT and doesn't do the include if it's your custom script.

(BTW, I haven't tried this code).

Yes I'm putting $headerinclude in the header template, and $footerinclude in the footer template.. I will try your suggestion, thank you

--------------- Added [DATE]1297014391[/DATE] at [TIME]1297014391[/TIME] ---------------

Quote:

Originally Posted by Majidm (Post 2159414)
Yes I'm putting $headerinclude in the header template, and $footerinclude in the footer template.. I will try your suggestion, thank you

It worked!!! Thank you so much


All times are GMT. The time now is 03:09 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
  • Page Generation 0.01118 seconds
  • Memory Usage 1,776KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (2)bbcode_code_printable
  • (3)bbcode_php_printable
  • (3)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (7)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.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/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete