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
  #272  
Old 02-17-2008, 07:23 PM
Drew Manzella Drew Manzella is offline
 
Join Date: Jan 2008
Posts: 8
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I never saw a post saying it needed to be up a folder, just that it needed to be in my forum root (not webroot).

If I move it up into the webroot then my paths will need to be corrected.
Reply With Quote
  #273  
Old 02-17-2008, 08:18 PM
pHluid13's Avatar
pHluid13 pHluid13 is offline
 
Join Date: Feb 2008
Posts: 15
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Sorry if it wasn't clear. I have my site set up like this:

hswaves2008/forum/(forum files)
hswaves2008/forum/gallery2.php
hswaves2008/forum/index.php (vBulletin's default index)
hswaves2008/gallery/(gallery files)
hswaves2008/index.php (the vbadvanced CMPS file)

I can vouch that it works with this set up. Check the other posts in this thread, most everyone else has the same setup.
Reply With Quote
  #274  
Old 02-17-2008, 08:30 PM
Drew Manzella Drew Manzella is offline
 
Join Date: Jan 2008
Posts: 8
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Yeah that is how I am doing it now. Re-uploading the G2 folder as we speak.

I'm not running vbadvance but best I can tell that doesn't matter. This just looks at vB through the globals.php file.

--------------- Added 17 Feb 2008 at 19:56 ---------------

Ok I give up. I tried it 3 times. I am now using your exact structure and exact config.php (updated for my paths) and I am still getting the white window of death.

It is working to an extent. When I try to go to the embeded gallery link nothing happens but if I log into the gallery2 installation my vB username is carried over. I tried logging in with it though and it kicked me out.

Either I am screwing something up with the template or there is an issue in the newest version of G2.

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

Ok I got it working. I was creating a new "style" and not a new "template".

Next question - how do I set it up so users can create their own galleries - or is this some functionallity that isn't part of this? I assume it is because there would be no need to pull user info if the only purpose of this was to embed G2 in the vB page.
Reply With Quote
  #275  
Old 02-18-2008, 11:38 AM
pHluid13's Avatar
pHluid13 pHluid13 is offline
 
Join Date: Feb 2008
Posts: 15
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

there is apparently some code within this thread that puts the private album link in each persons profile. You will need to look for it. Before you do this, I would assume you'd just need to enable private albums for registered users in the gallery.

This is one function that I probably won't install on my site but if you figure it out, it would be nice if you post your solution for those who may look here later for help.
Reply With Quote
  #276  
Old 02-18-2008, 12:07 PM
Drew Manzella Drew Manzella is offline
 
Join Date: Jan 2008
Posts: 8
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Yeah I found al that stuff but I am back to getting the white screen of death - and I didn't change anything. It is exactly how it was when it was workig and all of a sudden it just stopped.



I am gonna wipe it out and try it 1 more time.

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

Ok I finally got it all working.

I figured something out - the order in which you do things MATTERS. Every edit to every file needs to be done BEFORE you hit your trigger link for the first time.

Basically my final process (which worked) consisted of:
  1. Upload Gallery to my web server
  2. Run the Gallery install
  3. Add the "user album" plugin
  4. Create my album structure down to the location where user albums will be created
  5. Configure the user album plugin to put the albums where they needed to be
  6. Set all permissions/template options and cascade them
  7. Create the gallery2.php (Or whatever you want to call it) trigger file WITH all edits including corrections and the additional code for usergroup-based creations
  8. Created the Gallery2 template. Don't make the mistake I did and confuse a template with a style. The template you need to create goes WITHIN a style.
  9. Edited the plugin xml file to correct the errors as well as make the specified changes
  10. Uploaded the plugin file to vBulletin
  11. Upload the trigger file to my vBulletin root
  12. Hit the trigger file in a browser
Instantly it created my user album. Uploads worked fine and viewing works fine. Albums are accessible to guests as well so all is working properly but I had to fight it every step of the way to get it here.

Now that it is up and running it does integrate very well. I am going to have my site staff test it for a little while and then I will release it to the masses but if my brief tests are any indication - this is a very workable option for a vB image gallery.

The thing I like the most about it is that it installs and uninstalls without touching anything in vBulletin (other than adding the plugins and template which come out easy enough).

I went through the entire process 3 or 4 times so I am familiar with its removal as well.

So for reference, here is another working install to add to the list of demos:

http://www.mazdaoca.org/community/gallery2.php
Reply With Quote
  #277  
Old 03-03-2008, 09:28 AM
m_c m_c is offline
 
Join Date: Feb 2008
Posts: 13
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I've been trying to get this integrated for the past day, and can get it integrated with vB, to the point it creates the user in Gallery2, and displays the gallery within vB.
However that's as far as I can get.

I think my problem is something to do with how the Gallery 2 permissions are set-up, but I'm not sure how they should be set-up.
I have tried setting up a 'User Ablums' album, and then setting additional permissions, but the permissions then apply to all subalbums.
Can anybody give me a few pointers on how to get past this final hurdle?

I'm running G2.2, with vB 3.6.8 and vBa CMPS v3.0.0
Reply With Quote
  #278  
Old 03-05-2008, 10:26 AM
m_c m_c is offline
 
Join Date: Feb 2008
Posts: 13
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Finally got the user album issue sorted, although I'm still not sure it's working how it's intended (users can create new albums within the defined User Albums album, but they're not created automatically).
The problem turned out to be a problem with the User Album plug-in, but uninstalling, then reinstalling it seems to of cured things. For anybody looking to install from scratch, I'd advise you install gallery2, set-up a test user, and check the test user can create albums and upload before trying to integrate.

I now just need to sort the link problem, which is causing page not found errors.
Reply With Quote
  #279  
Old 03-07-2008, 03:26 AM
Cubevisions Cubevisions is offline
 
Join Date: Aug 2007
Posts: 24
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Is this still alive? How can i integrate just the gallery and vbulletin logins (user table)?
Reply With Quote
  #280  
Old 03-29-2008, 07:56 PM
pHluid13's Avatar
pHluid13 pHluid13 is offline
 
Join Date: Feb 2008
Posts: 15
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

The problem I am having with this and this seems to be the last problem I am having is that when a user is on the gallery2.php page, the popups for private messages dont appear if a user has a message. When they click on Options to get the expandable menu, the menu doesn't expand. There are certain features that dont work only in the gallery2.php file. They work fine on the rest of the site. Im guessing there is something missing from the gallery2.php file that allows for the full functionality of the site. Maybe someone can shed some light on my problem.
Reply With Quote
  #281  
Old 04-03-2008, 12:49 PM
MrToasty MrToasty is offline
 
Join Date: May 2004
Location: Adelaide AU
Posts: 46
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I had this working with gallery 2.0b4 with the old integration scipt... I've just upgraded gallery to 2.2 and have tried every possible combination of variables in the php file and I get nothing but the white screen!!

my setup:-

/forum/(forum files)
/gallery2/(gallery files)
/forum/gallery2.php

My variables (currently, as I've tried 1000 different combinations of relative and absolute paths here):-

Code:
$ret = GalleryEmbed::init(array('embedUri' => 'gallery.php',
'g2Uri' => '/gallery2',
'loginRedirect' => 'index.php',
'activeUserId' => $uid));
Help!?
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 07:55 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.08254 seconds
  • Memory Usage 2,389KB
  • 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
  • (1)bbcode_code
  • (1)bbcode_html
  • (4)bbcode_php
  • (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
  • (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