The Arcive of Official vBulletin Modifications Site.It is not a VB3 engine, just a parsed copy! |
|
Menalto's G2 integration into VB3
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') . '");'); ?> Code:
$ret = GalleryEmbed::init(array('embedUri' => 'gallery2.php', 'embedPath' => '/VB', 'relativeG2Path' => '../gallery2', 'loginRedirect' => 'index.php', 'activeUserId' => $uid)); Code:
require_once('../gallery2/embed.php'); 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> 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:
|
#52
|
|||
|
|||
Same experience here w/ 3.5 RC2 and a fresh-install of G2 - a nicely vB-wrapped G2 interface, but no user-integration. :ermm:
Thought it was cookie-related at first, but I've verified that the users aren't being created automatically in G2 by the script yet I'm not getting any errors being generated by the code, either. Anyone have any ideas? Regards, Pete |
#53
|
|||
|
|||
3.5 users: as mentioned above, i've not updated to 3.5. however, Pete's clue led me to think about this:
maybe 3.5 changed their user variable? in particular, the line: Code:
$uid = $bbuserinfo['userid'] = 0 ? '' : $bbuserinfo['userid']; food for thought! i'll probably upgrade to 3.5 once they go gold w/ it. in reading on how it'll be much easier to upgrade on a customized/hacked vB, it sounds nifty! Zed28: on another note - i upgraded to G2RC1+5 yesterday and had the cookie issue (images ended in ?G2_SID=alkjsdfo0987sdf87s987df) both logged in or not logged in. so i did the fix you linked to, thx! in particular, went to G2 Site Admin -> General Settings -> Cookies and set: Path = / Domain i left blank worded right away, didn't have to clear my cookies on the FF browser i was using! |
#54
|
|||
|
|||
Quote:
|
#55
|
|||
|
|||
thanks whodah, this is very cool!
i got it working in 3.5 even can anyone help me figure out how to make it so that only logged in users can leave comments? i'm thinking i can set the g2 permissions so that Everybody can post comments, but then restrict the link from actually showing up with some vbcode? |
#56
|
|||
|
|||
I am getting this error:
Code:
line: 96, Failed to create G2 user with extId [1]. Here is the error message from G2: Error (ERROR_COLLISION) in modules/core/classes/GalleryUser.class at line 166 (gallerystatus::error) in modules/core/classes/GalleryEmbed.class at line 300 (galleryuser::create) in /usr/www/users/oloh/silkyvenom/forums/vgfaces.php at line 93 (galleryembed::createuser) in /usr/www/users/oloh/silkyvenom/forums/vgfaces.php at line 47 Code:
<?php // ####################### SET PHP ENVIRONMENT ########################### error_reporting(E_ALL & ~E_NOTICE); // #################### DEFINE IMPORTANT CONSTANTS ####################### define('NO_REGISTER_GLOBALS', 1); define('THIS_SCRIPT', 'vgfaces'); // 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( 'cmpspages_vgfaces', ); // pre-cache templates used by specific actions $actiontemplates = array( ); // ######################### REQUIRE BACK-END ############################ require_once('./global.php'); // ####################################################################### // ######################## START MAIN SCRIPT ############################ // ####################################################################### $navbits = array(); $navbits[$parent] = 'vgFaces'; $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('../vgfaces/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' => 'vgfaces.php', 'embedPath' => '/forums', 'relativeG2Path' => '../vgfaces', '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('cmpspages_vgfaces') . '");'); ?> Anyone able to help? Note, I have Gallery 2 running under a different MySQL database than vbulletin...is that a problem? |
#57
|
|||
|
|||
Quote:
How come you can go beyond the global.php? I got this error in the 1st place. Code:
Warning: main(./global.php): failed to open stream: No such file or directory in /home/abc/public_html/gallery/gallery2.php on line 32 one thing i finally learnt is that the gallery2.php must be placed in the vb3 folder or else it can't work right? |
#58
|
|||
|
|||
Just wanted to say thanks. Been wanting to do this for quite some time. If you want to check out my integrated vb3 -> gallery2 install you can check out:
http://blendchicago.com Gallery2 Embeded: http://blendchicago.com/forums/gallery2.php Gallery2 Standalone: http://blendchicago.com/gallery Anyhow, if people care I can post the changes I made to the code in this thread. I did get mod_rewrite working in both standalone and embeded mode. I also stripped down the template since I didn't want the vb window borders around my install, and I noticed a ton of css conflicts I didn't want to work out. |
#59
|
|||
|
|||
yw zquestz!
and i'd be very greatful if you'd post your fixes. i'd love to see 'em! they address some issues that i've just kinda lived with, ha ha! (i.e. the css issues) |
#60
|
|||
|
|||
anybody gotten this to work on 3.5 yet?
|
#61
|
|||
|
|||
Am currently looking at this on a test area @ home
in vb 3.5x you need to change Code:
$bbuserinfo to $vbulletin->userinfo here change it to Code:
global $vbulletin, $userinfo; |
|
|
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
More Information | |
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|