Go Back   vb.org Archive > vBulletin Article Depository > Read An Article > vBulletin 3 Articles

Reply
 
Thread Tools
Gallery 2.1 and vBulletin 3.5.X integration
Brent H's Avatar
Brent H
Join Date: Sep 2004
Posts: 162

Poprocks on toast, yo.

Phoenix, AZ
Show Printable Version Email this Page Subscription
Brent H Brent H is offline 03-31-2006, 10:00 PM

This tutorial will outline the steps needed to integrate your vBulletin 3.5.X and Menalto Gallery 2.1 installations. The original thread located here has become a little too scattered, and since it's original focus was on the Gallery 2.0 and vBulletin 3.0 series, I think it'd be beneficial to start this new thread so that the information is more easily found for the 3.5.X and 2.1 series.

Before we begin, you should be aware that this tutorial assumes that you'll be placing your gallery in the root directory for your forums. My directory structure looks a little like this:

public_html/Vbulletin Files
and
public_html/gallery2/Gallery Files

As long as your gallery folder is located within your root vBulletin directory, this should work just fine.

Step 1:
Install Menalto Gallery 2.1. Remember to upload the "gallery2" folder INSIDE your root vBulletin directory!

Step 2:
Create a new file containing the following, and save it as gallery2.php:
PHP Code:
<?php

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

// #################### DEFINE IMPORTANT CONSTANTS #######################
define('NO_REGISTER_GLOBALS'1);
define('THIS_SCRIPT''gallery'); // 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(
'gallery2',
);

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

);

// ######################### REQUIRE BACK-END ############################

require_once('./global.php');

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

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

$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 
$vbulletin$userinfo;
require_once(
'/home/paranorm/public_html/gallery2/embed.php');

$data = array();

// If it's an anonymous user, set the g2 activeUser to null
$uid $vbulletin->userinfo['userid'] = '' $vbulletin->userinfo['userid'];

// initiate G2
// You need to edit the following 4 lines to suit your VB3 & G2 installations
// This is set up for an install that looks like:
// public_html/VB/<vb files>
// public_html/gallery2/<gallery2 files>
// and also setup for a VB3 template 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... Like if you've changed it
// to forums.php or something of the like.

$ret GalleryEmbed::init(array('embedUri' => '/gallery2.php',
'g2Uri' => 'http://www.paranormalis.com/gallery2/',
'loginRedirect' => 'index.php',
'activeUserId' => $uid));
if (
$ret)
{
if (
$ret->getErrorCode() & ERROR_MISSING_OBJECT)
{
// Check if there's no G2 user mapped to the activeUserId
$ret GalleryEmbed::isExternalIdMapped($uid'GalleryUser');
if (
$ret && ($ret->getErrorCode() & ERROR_MISSING_OBJECT))
{
// User not mapped, create G2 user now
// Get Arguments for the new user:
$args['fullname'] = $vbulletin->userinfo['username'];
$args['username'] = $vbulletin->userinfo['username'];
$args['hashedpassword'] = $vbulletin->userinfo['password'];
$args['hashmethod'] = 'md5';
$args['email'] = $vbulletin->userinfo['email'];
$args['language'] = $vbulletin->userinfo['lang_code'];
$args['creationtimestamp'] = $vbulletin->userinfo['joindate'];

$retcreate GalleryEmbed :: createUser($uid$args);
if (
$retcreate)
{
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) {
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') . '");');

?>
(or download the attached gallery2.php)

Step 3:
Find and edit the following code to suit your site setup:
PHP Code:
 require_once('/home/paranorm/public_html/gallery2/embed.php'); 
and
PHP Code:
 $ret GalleryEmbed::init(array('embedUri' => '/gallery2.php',
'g2Uri' => 'http://www.yoursite.com/gallery2/',
'loginRedirect' => 'index.php'
Save and upload the file to your root vBulletin directory.

Step 4:
Create a new template in your style manager called gallery2 containing the following:
HTML 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>
And that's basically it! Your gallery should now be accessable via www.yoursite.com/gallery2.php or www.yoursite.com/forums/gallery2.php (depending on how you have it set up).

You can achieve further integration by using johnmont's plugins which will:
  1. Delete users from the Gallery when you delete them from the vBulletin control panel.
  2. Update user information in the gallery when they change their information in the User CP.
John has given me permission to post them The attached gallery-plugins.xml file will create two new plugins called Delete Gallery User and Update Gallery User. You'll need to edit both of these plugins after installation and change
PHP Code:
require_once('/home/paranorm/public_html/gallery2/embed.php''); 
(it's the very first line in both of them) to match your site setup.

Hopefully this tutorial sparks a little more interest in this area and we can get some additional people contributing solutions to achieve tighter integration :banana:

As the integration progresses, I'll update this thread to keep everything together and accessable.

Enjoy!
Attached Files
File Type: php gallery2.php (5.5 KB, 751 views)
File Type: xml gallery-plugins.xml (1.8 KB, 722 views)
Reply With Quote
  #162  
Old 08-29-2006, 10:58 AM
Akagi Akagi is offline
 
Join Date: Jan 2006
Posts: 47
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

thanks SilVert!!! it's finally working fine now!

One question, i installed the plugin on the first page..apparently, it deletes gallery users and update the vb users to gallery..why is it that it doesn't really mirror the vb users in gallery? still see the same default gallery users on my gallery site admin
Reply With Quote
  #163  
Old 08-29-2006, 11:26 AM
Svobi Svobi is offline
 
Join Date: Sep 2005
Posts: 2
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hiyas!
I got a gallery2 with about 180 Users and I'm interested in using them together with or within vBull. How do these scripts / hacks work exactely? Is this possible what I want?

Cheers!
Reply With Quote
  #164  
Old 08-30-2006, 07:23 PM
SilVert SilVert is offline
 
Join Date: Oct 2003
Posts: 70
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Akagi
thanks SilVert!!! it's finally working fine now!

One question, i installed the plugin on the first page..apparently, it deletes gallery users and update the vb users to gallery..why is it that it doesn't really mirror the vb users in gallery? still see the same default gallery users on my gallery site admin
glad i could help. i know i focused a TON of time into getting the script to work when i had that error

can you be a bitmore specific with your question? they are two seperate Databases, they both track users differently. if you look at the database table ?externalid's? it mapps the VBB userid to the gallery userid. that table is there for the sole purpose of integration.

is that the anwser you were looking for?

Quote:
Originally Posted by Svobi
Hiyas!
I got a gallery2 with about 180 Users and I'm interested in using them together with or within vBull. How do these scripts / hacks work exactely? Is this possible what I want?

Cheers!
so you already have Gallery installed and VBB installed but as 2 seperate entities all together correct?

without creating a SQL script, manualy manipulating the table in gallery, or getting the plugin to work, i dont really see an easyer way to do it.

as far as i know there is no automated script out there already to do what you are looking for. now i can help you with what i know about the gallery and vbb ID's to track ID's and groups
Reply With Quote
  #165  
Old 08-30-2006, 08:59 PM
Svobi Svobi is offline
 
Join Date: Sep 2005
Posts: 2
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by SilVert
so you already have Gallery installed and VBB installed but as 2 seperate entities all together correct?

without creating a SQL script, manualy manipulating the table in gallery, or getting the plugin to work, i dont really see an easyer way to do it.

as far as i know there is no automated script out there already to do what you are looking for. now i can help you with what i know about the gallery and vbb ID's to track ID's and groups
Hiyas!

No, atm I only got a gallery2 installed but I'm looking for a board solution to add! I already know vBull so of course this is my first idea if it'd work to bring the gallery users into vBull - syncing or whatever. If this works flawless I'd prefer it more then seeking fore phpBB solution....
Reply With Quote
  #166  
Old 09-06-2006, 05:05 PM
Jon.'s Avatar
Jon. Jon. is offline
 
Join Date: Dec 2005
Location: Kent, UK
Posts: 79
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Having problems

I'm running 3.6, and when i visit the gallery2.php logged in as me (member #1) it gives me the error that m0nde gets. When i log out completely, or log in as someone else, i just get a blank screen with no source code. Any ideas?

EDIT

I wasn't using the skin that i'd put the template in :blush:

Now, though, there's this php error at the top:
Code:
line: 98, 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 154 (gallerycoreapi::error)
    * in modules/core/classes/GalleryEmbed.class at line 360 (galleryuser::create)
    * in /home/jonf/public_html/forum/gallery2.php at line 95 (galleryembed::createuser)
    * in /home/jonf/public_html/forum/gallery2.php at line 50
and my forum below with nothing under the "Gallery" header.

Screenies:
http://img347.imageshack.us/my.php?i...6191204wz8.jpg
http://img347.imageshack.us/my.php?i...6191231xz2.jpg

EDIT2
Only happens when logged in as me. Everyone else gets a working page, but no images in the gallery section...
http://img347.imageshack.us/my.php?i...6191554uh5.jpg

EDIT3

Ok, plan B. Could somebody alter the gallery2.php file so that it just creates the user accounts for the gallery? I can then add a redirect or link to the main gallery. I understand this isn't really the place to ask, but i wondered if anyone else had done the same.
Reply With Quote
  #167  
Old 09-07-2006, 08:53 AM
Akagi Akagi is offline
 
Join Date: Jan 2006
Posts: 47
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by SilVert
glad i could help. i know i focused a TON of time into getting the script to work when i had that error

can you be a bitmore specific with your question? they are two seperate Databases, they both track users differently. if you look at the database table ?externalid's? it mapps the VBB userid to the gallery userid. that table is there for the sole purpose of integration.

is that the anwser you were looking for?
actually, the problem that i'm having is that the VBB users ain't mapped on my gallery user database. VBB has 6k users and gallery has only 2. Any idea?
Reply With Quote
  #168  
Old 09-09-2006, 07:10 PM
Jon.'s Avatar
Jon. Jon. is offline
 
Join Date: Dec 2005
Location: Kent, UK
Posts: 79
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Are you getting your users to visit the gallery2.php file? To my knowledge, it won't auto-create them until you visit that page.
Reply With Quote
  #169  
Old 09-13-2006, 09:04 PM
SilVert SilVert is offline
 
Join Date: Oct 2003
Posts: 70
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Jon.
Having problems

I'm running 3.6, and when i visit the gallery2.php logged in as me (member #1) it gives me the error that m0nde gets. When i log out completely, or log in as someone else, i just get a blank screen with no source code. Any ideas?

EDIT

I wasn't using the skin that i'd put the template in :blush:

Now, though, there's this php error at the top:
Code:
line: 98, 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 154 (gallerycoreapi::error)
    * in modules/core/classes/GalleryEmbed.class at line 360 (galleryuser::create)
    * in /home/jonf/public_html/forum/gallery2.php at line 95 (galleryembed::createuser)
    * in /home/jonf/public_html/forum/gallery2.php at line 50
and my forum below with nothing under the "Gallery" header.

Screenies:
http://img347.imageshack.us/my.php?i...6191204wz8.jpg
http://img347.imageshack.us/my.php?i...6191231xz2.jpg

EDIT2
Only happens when logged in as me. Everyone else gets a working page, but no images in the gallery section...
http://img347.imageshack.us/my.php?i...6191554uh5.jpg

EDIT3

Ok, plan B. Could somebody alter the gallery2.php file so that it just creates the user accounts for the gallery? I can then add a redirect or link to the main gallery. I understand this isn't really the place to ask, but i wondered if anyone else had done the same.
the problem is that you are using ID #1 in VBB, in gallery #1 is already assigned so you are getting a collision of sorts.... i know i have mentioned how to fix this previously so i dotn truthfully remember EXACTLY how to resolve this. but here is somewhat what i remember:

there is a table in the gallery 2 database called ?extIDs?(external ID's). this table houses the VBB user ID and then maps it to the Gallery 2 user ID. so if you find the gallery users ID 1, map it to VBB's userID 1. i THINK that will do it. if not it is something along those lines.

Quote:
Originally Posted by Jon.
Are you getting your users to visit the gallery2.php file? To my knowledge, it won't auto-create them until you visit that page.
Quote:
Originally Posted by Akagi
actually, the problem that i'm having is that the VBB users ain't mapped on my gallery user database. VBB has 6k users and gallery has only 2. Any idea?
he speaks the troof!

the integration script HAS TO BE VISITED for VBB/Gallery to integrate. how it works is basically as 2 totaly seperate islands with a small bridge. so when you cross the brodge you get an account. if you do not cross the bridge, you dont get an account.

hows that for a beach like explination
Reply With Quote
  #170  
Old 09-17-2006, 12:57 PM
Codeman05 Codeman05 is offline
 
Join Date: Oct 2002
Location: Tx
Posts: 76
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hi SilVert,

Quick question that maybe you can help me with. I have a few different usergroups on my board and I would like to have different quotas for them in the gallery 2 integration.

I've already setup corresponding usergroups in Gallery 2 with the same usergroup names and IDs as those on the forum.

Should the Update/Integration script be reading my members usergroup ID off of the forum and setting that same ID into Gallery (because it is not).....or do I need to modify the script?

Everything else is working great however

Edit
One other issue I have noticed is that users trying to use Gallery remote are unable to authenticate. Not a huge deal, I just wanted to make sure this was "normal"
Reply With Quote
  #171  
Old 09-18-2006, 02:00 PM
SilVert SilVert is offline
 
Join Date: Oct 2003
Posts: 70
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Codeman05
Hi SilVert,

Quick question that maybe you can help me with. I have a few different usergroups on my board and I would like to have different quotas for them in the gallery 2 integration.

I've already setup corresponding usergroups in Gallery 2 with the same usergroup names and IDs as those on the forum.

Should the Update/Integration script be reading my members usergroup ID off of the forum and setting that same ID into Gallery (because it is not).....or do I need to modify the script?

Everything else is working great however


Edit
One other issue I have noticed is that users trying to use Gallery remote are unable to authenticate. Not a huge deal, I just wanted to make sure this was "normal"

i was experimenting with the group memberships a while ago, and never made much headway. it was mostly due to not haveing the script work originaly. but i think it is possible.... basically you would haev the create user part go through, then insert some code saying if in this VBB group ID put them in the Gallery group.

it is doable, but i dont haev the code infront of me

Gallery remote, i belive that problem has to do with pointing to the wrogn location. if your deisgn is:
root\gallery
root\forum
root\forum\gallery.php

you would have to point the Remote to root/gallery to get it to work... i dont think the remote understands embed'd sites.....
Reply With Quote
Reply

Thread Tools

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 02: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.07888 seconds
  • Memory Usage 2,399KB
  • 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
  • (2)bbcode_code
  • (1)bbcode_html
  • (4)bbcode_php
  • (8)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
  • (2)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
  • (2)postbit_attachment
  • (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_attachment
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete