Go Back   vb.org Archive > vBulletin Article Depository > Read An Article > vBulletin 3 Articles
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools
Menalto's G2 integration into VB3
whodah
Join Date: Feb 2004
Posts: 77

 

Show Printable Version Email this Page Subscription
whodah whodah is offline 04-23-2005, 10:00 PM

NOTE: Development for G2.1 and vB 3.5 is on this page: https://vborg.vbsupport.ru/showthread.php?t=111931

I was about to post this on Menalto's site until i realized that I'd be publicly posting VB3's code... A no-no!!! heh!

So, I'll post the instructions here, and then refer people to this post on how to do it! (obviously they'll have to log on w/ their licensed account to see it)

Ok, here's how to integrate menalto's G2 gallery into VB3.

Menalto's gallery is sweet.
Menalto's gallery is free.
Menalto's gallery is here: http://gallery.menalto.com/index.php



This works on my system of vBulletin 3.0.7 and Gallery 2 Holy Hand Grenade.

Known issues: VB3 has a password structure that consists of the user's password
plus the salt md5'ed together. It is not possible to strip out just the user's
password
. Thus, this script pushes the users's password plus salt from VB3 into
G2. The outcome - the standalone G2 passwords will not match *just* the user's
password! There is talks of looking into salt'ing in the future w/ G2
integration, but that's the dealio as of this integration technique... If you
are using G2 as 'embedded only', then game on, no worries. If not, then your
users will need to log on through the VB3 install to setup their session, then
can visit the G2 standalone if they wish...

Step 1 - create a new file named 'gallery2.php' as per this thread:
https://vborg.vbsupport.ru/showthread.php?t=62164
(thx Gary King!!!)

in that thread, the first box (the gallery2.php file), the contents will be (this is the section that contains the G2 embeded code which is available on Menalto's site... i'll update this thread w/ direct links once it's in place! *only* the G2 code is on their site, no VB3 code in accordance w/ the VB license agreement! ):
Code:
<?php 

// ####################### SET PHP ENVIRONMENT ########################### 
error_reporting(E_ALL & ~E_NOTICE); 

// #################### DEFINE IMPORTANT CONSTANTS ####################### 
define('NO_REGISTER_GLOBALS', 1); 
define('THIS_SCRIPT', 'gallery2'); // change this depending on your filename 

// ################### PRE-CACHE TEMPLATES AND DATA ###################### 
// get special phrase groups 
$phrasegroups = array( 

); 

// get special data templates from the datastore 
$specialtemplates = array( 
     
); 

// pre-cache templates used by all actions 
$globaltemplates = array( 
    'galley2', 
); 

// pre-cache templates used by specific actions 
$actiontemplates = array( 

); 

// ######################### REQUIRE BACK-END ############################ 
require_once('./global.php'); 

// ####################################################################### 
// ######################## START MAIN SCRIPT ############################ 
// ####################################################################### 

$navbits = array(); 
$navbits[$parent] = 'Gallery G2'; 

$navbits = construct_navbits($navbits); 
eval('$navbar = "' . fetch_template('navbar') . '";'); 

// ####################################################################### 
// ###################### Begin G2 integration code ######################
// ####################################################################### 
$data = runGallery();
$data['title'] = (isset($data['title']) && !empty($data['title'])) ? $data['title'] : 'Gallery';

function runGallery() {
    global $bbuserinfo;
        require_once('../gallery2/embed.php');
    
        $data = array();
    
    // if anonymous user, set g2 activeUser to null
        $uid = $bbuserinfo['userid'] = 0 ? '' : $bbuserinfo['userid']; 
 
        // initiate G2 
        // you need to edit the following 4 lines to suite your VB3/G2 install!!!
        // this is setup for a install that looks like:
        //     public_html/VB/<vb files>
        //     public_html/gallery2/<gallery2 files>
        // and also setup for a VB3 tempalte name of 'gallery2'. if you have any
        // differences, make those changes here!
        // you might need to change 'loginRedirect' if you have your VB3 setup to 
        // where index.php is not the root page of VB3... i.e. if you've changed it
        // to forums.php or something of the like.
        $ret = GalleryEmbed::init(array('embedUri' => 'gallery2.php',
                    'embedPath' => '/VB',
                        'relativeG2Path' => '../gallery2',
                    'loginRedirect' => 'index.php',
                    'activeUserId' => $uid));
                        
    if ($ret->isError()) 
        { 
           if ($ret->getErrorCode() & ERROR_MISSING_OBJECT) 
           { 
             // check if there's no G2 user mapped to the activeUserId 
             $ret = GalleryEmbed::isExternalIdMapped($uid, 'GalleryUser'); 
             if ($ret->isError() && ($ret->getErrorCode() & ERROR_MISSING_OBJECT)) 
             { 
                 // user not mapped, map create G2 user now 
                 // Get Arguments for the new user: 
                 $args['fullname']     =   $bbuserinfo['username']; 
                 $args['username']    = $bbuserinfo['username']; 
                 $args['hashedpassword'] =   $bbuserinfo['password']; 
                 $args['hashmethod'] =    'md5'; 
                 $args['email']       =   $bbuserinfo['email']; 
                 $args['language']   =   $bbuserinfo['lang_code']; 
                 $args['creationtimestamp']   =   $bbuserinfo['joindate']; 
                  
                 $retcreate = GalleryEmbed :: createUser($uid, $args); 
                 if (!$retcreate->isSuccess()) 
                 { 
                    echo '<HR>line: '.__LINE__.', Failed to create G2 user with extId ['.$uid.']. Here is the error message from G2: <br />'.$retcreate->getAsHtml(); 
                    return false; 
                 } 
                                $ret = GalleryEmbed::checkActiveUser($uid); 
                if ($ret->isError()) { 
                    print $ret->getAsHtml(); 
                    return false; 
                } 
             } 
             else 
             { 
                 echo '<HR>line: '.__LINE__.', G2 did not return a success status. Here is the error message from G2: <br />'.$ret->getAsHtml(); 
                      return false;
                         } 
         } 
         else 
         { 
                         echo '<HR>line: '.__LINE__.', G2 did not return a success status. Here is the error message from G2: <br />'.$ret->getAsHtml(); 
                  return false;
                 } 
       } 

    // user interface: disable sidebar in G2 and get it as separate HTML to put it into a block
    //GalleryCapabilities::set('showSidebar', false);

    // handle the G2 request
    $g2moddata = GalleryEmbed::handleRequest();
  
    // show error message if isDone is not defined
    if (!isset($g2moddata['isDone'])) {
      $data['bodyHtml'] = 'isDone is not defined, something very bad must have happened.';
      return $data;
    }
    // die if it was a binary data (image) request
    if ($g2moddata['isDone']) {
      exit; /* uploads module does this too */
    }
   
    // put the body html from G2 into the xaraya template 
    $data['bodyHtml'] = isset($g2moddata['bodyHtml']) ? $g2moddata['bodyHtml'] : '';

    // get the page title, javascript and css links from the <head> html from G2
    $title = ''; $javascript = array();    $css = array();
 
    if (isset($g2moddata['headHtml'])) {
      list($data['title'], $css, $javascript) = GalleryEmbed::parseHead($g2moddata['headHtml']);
      $data['headHtml'] = $g2moddata['headHtml'];
    }
    
    /* Add G2 javascript  */
    if (!empty($javascript)) {
      foreach ($javascript as $script) {
         $data['javascript'] .= "\n".$script;
      }
    }

    /* Add G2 css  */
    if (!empty($css)) {
      foreach ($css as $style) {
         $data['css'] .= "\n".$style;
      }
    }

    // sidebar block
    if (isset($g2moddata['sidebarHtml']) && !empty($g2moddata['sidebarHtml'])) {
      $data['sidebarHtml'] = $g2moddata['sidebarHtml'];
    }
    
    return $data;
} 
// ####################################################################### 
// ####################### End G2 integration code #######################
// ####################################################################### 

eval('print_output("' . fetch_template('gallery2') . '");'); 

?>
in the above, you'll need to edit:
Code:
        $ret = GalleryEmbed::init(array('embedUri' => 'gallery2.php',
                    'embedPath' => '/VB',
                        'relativeG2Path' => '../gallery2',
                    'loginRedirect' => 'index.php',
                    'activeUserId' => $uid));
and
Code:
require_once('../gallery2/embed.php');
to suit your directory structure...

step 2 - creating the template
as per the same thread, https://vborg.vbsupport.ru/showthread.php?t=62164 (2nd code box) create a template named 'gallery2' (no tics) and in it, place the following code:
Code:
$stylevar[htmldoctype]
<html dir="$stylevar[textdirection]" lang="$stylevar[languagecode]">
 <head>
  $headinclude
  $data[headHtml]
 </head>
 <body>
  $header
  $navbar
  <table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" align="center">
   <tr><td class="tcat">Gallery</td></tr>
   <tr><td class="alt1">$data[bodyHtml]</td></tr>
  </table>

  $footer
 </body>
</html>
that's it, enjoy!

oh, forgot to add!

in scouring the net, i've seen a couple of posts where people have offered to pay for this solution. if you are one of them, and are serious, then here's Menalto's donation link!

(nope, i'm not affiliated w/ them... if you wanna donate to me, then i'll redirect you to the donation link to the site that this is for: a non-profit saltwater aquariast club's site! )


edit 2006.01.11
Quote:
links in navbar don't work w/ rewrite module enabled. you can enable them, but then need to 'hardcode' the links in your navbar templates and do one phrase adjustment. it's still 'dynamic' as the encoding involves vB variables and not your actual url... but a change none the less! see #41 in this thread:
https://vborg.vbsupport.ru/showpost....8&postcount=41

can you put a 'user's gallery' link near the users' posts? yup, see post #65 in this thread:
https://vborg.vbsupport.ru/showpost....2&postcount=65

does it work in 3.5.x as a NON-plugin? yup, if you read through this post, you'll find tidbits here and there on what it takes to get it to work in 3.5.x

does it work in 3.5.x as a plugin? nope, not yet. nobody has coded it as a plugin as of this edit's date.
/edit 2006.01.11
Reply With Quote
  #22  
Old 05-11-2005, 04:22 AM
kompakt's Avatar
kompakt kompakt is offline
 
Join Date: Dec 2004
Location: FL
Posts: 59
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Well I searched around and upped the memory limit from within the gallery2.php file it self to 12mb. So the gallery2.php file now shows me the gallery embedded with the forum. Its just showing the album names.

But, I cant login to the gallery with either the G2 users or my VB3 Forum users. I've tried both from gallery2.php and the normal /gallery2

-EDIT
Its working now. The short-url mod that wasnt working with the embedding, I took it off and it worked. Howevery, only people who do not have a previous account registered with G2 can log into the new embedded gallery using their VB accounts.

Thanks...
Reply With Quote
  #23  
Old 05-13-2005, 07:14 AM
JimBeam JimBeam is offline
 
Join Date: Oct 2003
Location: Singapore
Posts: 8
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hi. I'm sorry but I have encountered some problems doing the integration.
I got the below error.
Code:
Warning: main(./global.php): failed to open stream: No such file or directory in /home/iwap/public_html/gallery/gallery.php on line 32

Fatal error: main(): Failed opening required './global.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/iwap/public_html/gallery/gallery.php on line 32
What I've done is change the filename to gallery and also the gallery folder to gallery. The template is still the same gallery2.

Code:
// ######################### REQUIRE BACK-END ############################ 
require_once('./global.php'); 

// ####################################################################### 
// ######################## START MAIN SCRIPT ############################ 
// ####################################################################### 

$navbits = array(); 
$navbits[$parent] = 'Gallery G2'; 

$navbits = construct_navbits($navbits); 
eval('$navbar = "' . fetch_template('navbar') . '";'); 

// ####################################################################### 
// ###################### Begin G2 integration code ######################
// ####################################################################### 
$data = runGallery();
$data['title'] = (isset($data['title']) && !empty($data['title'])) ? $data['title'] : 'Gallery';

function runGallery() {
    global $bbuserinfo;
		require_once('../gallery/embed.php');
    
		$data = array();
	
    // if anonymous user, set g2 activeUser to null
		$uid = $bbuserinfo['userid'] = 0 ? '' : $bbuserinfo['userid']; 
 
		// initiate G2 
		// you need to edit the following 4 lines to suite your VB3/G2 install!!!
		// this is setup for a install that looks like:
		//     public_html/VB/<vb files>
		//     public_html/gallery2/<gallery2 files>
		// and also setup for a VB3 tempalte name of 'gallery2'. if you have any
		// differences, make those changes here!
		// you might need to change 'loginRedirect' if you have your VB3 setup to 
		// where index.php is not the root page of VB3... i.e. if you've changed it
		// to forums.php or something of the like.
		$ret = GalleryEmbed::init(array('embedUri' => 'gallery.php',
				    'embedPath' => '/forums',
						'relativeG2Path' => '../gallery',
				    'loginRedirect' => 'index.php',
				    'activeUserId' => $uid));
The final thing different is that the url is a sub domain. (gallery.mysite.com/gallery.php)
Reply With Quote
  #24  
Old 05-13-2005, 11:57 AM
jugo jugo is offline
 
Join Date: Feb 2004
Location: Reading your emails.
Posts: 573
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by JimBeam
require_once('./global.php');

Change that to

Code:
require_once('/full/path/to/forum/global.php');
Reply With Quote
  #25  
Old 05-13-2005, 01:26 PM
whodah whodah is offline
 
Join Date: Feb 2004
Posts: 77
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by kompakt
Well I searched around and upped the memory limit from within the gallery2.php file it self to 12mb. So the gallery2.php file now shows me the gallery embedded with the forum. Its just showing the album names.

But, I cant login to the gallery with either the G2 users or my VB3 Forum users. I've tried both from gallery2.php and the normal /gallery2

-EDIT
Its working now. The short-url mod that wasnt working with the embedding, I took it off and it worked. Howevery, only people who do not have a previous account registered with G2 can log into the new embedded gallery using their VB accounts.

Thanks...
sorry, didn't notice this reply until just now!!

glad to hear you got it worked out!!

as for the user issue: hrm.. i wonder if this directly stems from the known issue in the first post... i didn't come across this issue, but all of my gallery users were embedded in postnuke and now are embedded from G2. i.e. i had no G2 users other then the admin prior to the install of G2...
Reply With Quote
  #26  
Old 05-15-2005, 12:18 PM
JimBeam JimBeam is offline
 
Join Date: Oct 2003
Location: Singapore
Posts: 8
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Warning: main(./includes/init.php): failed to open stream: No such file or directory in /home/iwap/public_html/forums/global.php on line 54

Fatal error: main(): Failed opening required './includes/init.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/iwap/public_html/forums/global.php on line 54
The above was found after I specified the path. Can't find what's wrong I hope you can help me point it out.
Reply With Quote
  #27  
Old 05-20-2005, 08:16 PM
whodah whodah is offline
 
Join Date: Feb 2004
Posts: 77
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

heya!

a big step forward!

just thought i'd let you (others) know that i've installed G2b3, enabled/setup the mod_rewrite module (on the G2 Site Admin), copied the .htaccess file out of my G2 base dir (www/gallery2/.htaccess) and put it into my vB base dir (www/.htaccess), and it's workin!

we can now use bbcode [ i m g ] tags out of our gallery install again! (the pictures now retain their .jpg extension or whatever instead of a long database name)

w00t!

no changes to any files/templates other then the .htaccess files.

now we just gotta get that random block working...
Reply With Quote
  #28  
Old 05-21-2005, 07:59 PM
MrToasty MrToasty is offline
 
Join Date: May 2004
Location: Adelaide AU
Posts: 46
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Cheers Whodah... I've been meaning to look into this for a very very long time, as i love gallery, and love vbulletin... it looks like you've taken a lot of the hard work for me yourself, and have made it easy for us.

I'm uploading G2 as we speak, have the vb3 gallery2.php file and template at the ready.. I'll let you know how i go here...

Whodah - you da man... this installation does everything i ever hoped and dreamed for in a gallery setup linked to the forums...

I'm extremely impressed...

My only thoughts are, I slipped up with that side menu thing as well... perhaps edit the code in the first post? Other than that, you're a miracle worker!

Also, can anyone tell me what's the easiest way about adding "Viewing Gallery" to the who's online page? Looks a bit ugly at the moment?
Reply With Quote
  #29  
Old 05-22-2005, 04:19 AM
ZED28 ZED28 is offline
 
Join Date: Aug 2004
Posts: 37
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by whodah
just thought i'd let you (others) know that i've installed G2b3, enabled/setup the mod_rewrite module (on the G2 Site Admin), copied the .htaccess file out of my G2 base dir (www/gallery2/.htaccess) and put it into my vB base dir (www/.htaccess), and it's workin!
Hey Wodah, I've just implemented this and it works nicley! However, clicking on any of the thumbnails takes the Gallery out of embeded to stand-a-lone mode. I took the liberty of checking your version out and it seems to do the same.

Do you have any idea how to retain the rewrite capabilities and have the images displayed while integrated/nested in VB?

Thanks bud. BTW, Gallery2 gets better with each release!!!
Reply With Quote
  #30  
Old 05-22-2005, 05:12 AM
whodah whodah is offline
 
Join Date: Feb 2004
Posts: 77
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

heya!

MrToasty: good idea - i've edited the first post commenting out the 'disable sidebar' line...

ZED28: yes, this was brought to my attention by a couple users as well.

the issue is in our vB .htaccess file... it's skipping our integration php file...

not sure how to fix it just yet, but it should be fixable w/ the current version (G2b3) i.e. we shouldn't have to wait for the next release on this one, woot! talking to one of the programmers, it looks like the next release will skirt this issue w/ a cookie/session setting. but for now, we gotta fix our .htaccess file.

i'll probably visit this issue in the next couple of days.

i got the random block working - kinda... getting some access errors on that so i disabled it. but i'll be working on that soon too.
Reply With Quote
  #31  
Old 05-22-2005, 01:06 PM
ZED28 ZED28 is offline
 
Join Date: Aug 2004
Posts: 37
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by whodah
heya!

MrToasty: good idea - i've edited the first post commenting out the 'disable sidebar' line...

ZED28: yes, this was brought to my attention by a couple users as well.

the issue is in our vB .htaccess file... it's skipping our integration php file...

not sure how to fix it just yet, but it should be fixable w/ the current version (G2b3) i.e. we shouldn't have to wait for the next release on this one, woot! talking to one of the programmers, it looks like the next release will skirt this issue w/ a cookie/session setting. but for now, we gotta fix our .htaccess file.

i'll probably visit this issue in the next couple of days.

i got the random block working - kinda... getting some access errors on that so i disabled it. but i'll be working on that soon too.
Thanks for the update Whodah! That's GREAT news on the random block too, that will be the "cherry on the cake" for me!
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 06:30 PM.


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.06284 seconds
  • Memory Usage 2,356KB
  • Queries Executed 26 (?)
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
  • (7)bbcode_code
  • (6)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_article
  • (1)navbar
  • (4)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (4)pagenav_pagelink
  • (1)pagenav_pagelinkrel
  • (11)post_thanks_box
  • (11)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (11)post_thanks_postbit_info
  • (10)postbit
  • (11)postbit_onlinestatus
  • (11)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_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