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
  #202  
Old 12-12-2006, 07:21 AM
jonathanhodd jonathanhodd is offline
 
Join Date: Feb 2006
Posts: 1
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Ive just installed gallery 2.1.2 on vb3.6.4 and just thought i'd share my experiences based on having vb installed under /forums and the gallery under /forums/gallery2

After following the instructions in the first post none of the g2 images/javascript/css files were being called correctly (the html was showing src="forums/gallery2.." instead of src="/forums/gallery2..")

The important variables were originally set like this:

require_once('/home/thrasher/public_html/forums/gallery2/embed.php');
'embedUri' => '/gallery2.php'
'g2Uri' => 'http://www.mysite.com/forums/gallery2'

i found changing these two got everything working:

'embedUri' => 'gallery2.php'
'g2Uri' => '/forums/gallery2'
Reply With Quote
  #203  
Old 12-14-2006, 07:27 PM
SilVert SilVert is offline
 
Join Date: Oct 2003
Posts: 70
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by jonathanhodd View Post
Ive just installed gallery 2.1.2 on vb3.6.4 and just thought i'd share my experiences based on having vb installed under /forums and the gallery under /forums/gallery2

After following the instructions in the first post none of the g2 images/javascript/css files were being called correctly (the html was showing src="forums/gallery2.." instead of src="/forums/gallery2..")

The important variables were originally set like this:

require_once('/home/thrasher/public_html/forums/gallery2/embed.php');
'embedUri' => '/gallery2.php'
'g2Uri' => 'http://www.mysite.com/forums/gallery2'

i found changing these two got everything working:

'embedUri' => 'gallery2.php'
'g2Uri' => '/forums/gallery2'


i still have to upgrade.. thanks for the headsup man!
Reply With Quote
  #204  
Old 12-15-2006, 07:15 PM
Mr Peabody Mr Peabody is offline
 
Join Date: May 2004
Posts: 105
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by SilVert View Post
can you send me a link to what you mean? the users when they are CREATED shoudl come in as "users" not guests.... or that is how i remember it working.. look at the some of the gallery sections in the admin panel and see if there is a config setting that is not right
Sorry for the late reply.
I've attached a pic with a dummy user I made to show you what I mean. There are no options to add pics when a new account is made automatically.
Cheers
Travis
Reply With Quote
  #205  
Old 12-15-2006, 07:17 PM
scan-pa scan-pa is offline
 
Join Date: May 2006
Location: Lebanon Co. Pa. USA
Posts: 189
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Never mind, I figured it out.

Fatal error: Call to a member function on a non-object in /home/********/public_html/forum/gallery2.php on line ###

this error is caused by deleting a user in gallery2's user db, but not removing there external id from the db. after I did that, it all works again.
Reply With Quote
  #206  
Old 12-17-2006, 08:59 AM
extremesanity extremesanity is offline
 
Join Date: Dec 2006
Posts: 22
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Mr Peabody View Post
There are no options to add pics when a new account is made automatically.
I believe this is caused by permission problems.

The problems I have so far with this integration are:
- no default sub-album built for each new user
- users can set own permissions and settings for albums (I don't need 5 mb raw pictures on my web server)

The script needs to built a default album set off of the main gallery album permissions, then set permissions for the each user and the registered user group automatically.

Is it supposed to do that now or is that something I need to add?
Attached Images
File Type: gif galleryProblem.gif (13.1 KB, 0 views)
Reply With Quote
  #207  
Old 12-17-2006, 03:46 PM
scan-pa scan-pa is offline
 
Join Date: May 2006
Location: Lebanon Co. Pa. USA
Posts: 189
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by extremesanity View Post
I believe this is caused by permission problems.

The problems I have so far with this integration are:
- no default sub-album built for each new user
- users can set own permissions and settings for albums (I don't need 5 mb raw pictures on my web server)

The script needs to built a default album set off of the main gallery album permissions, then set permissions for the each user and the registered user group automatically.

Is it supposed to do that now or is that something I need to add?
Do you have your vB 3.6.4 usergroup permisions set in the gallery2.php file?
It should go after this line (aprox line 76)
'activeUserId' => $uid));

Add this line after:
----------------------------------------
if ($vbulletin->userinfo[usergroupid] == 5 or $vbulletin->userinfo[usergroupid] == 6 or $vbulletin->userinfo[usergroupid] == 7 or $vbulletin->userinfo[usergroupid] == 39 or $vbulletin->userinfo[usergroupid] == 43)
{
----------------------------------------

Change the number after the == to whatever vB usergroups ID# you want to allow Album & photo posting access to.

and add a } after this line of the 2nd. else statement to make 3 }

ex:
Should look like this (aprox line to add in area of line 123:

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;
}
}
} //<----- Add this } //

-------------------------------------------

With the owner admin account on gallery 2 be sure edit your guest, regestered user permisions for the main gallery page.


hope that helps.
Reply With Quote
  #208  
Old 12-20-2006, 01:09 AM
extremesanity extremesanity is offline
 
Join Date: Dec 2006
Posts: 22
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by scan-pa View Post
With the owner admin account on gallery 2 be sure edit your guest, regestered user permisions for the main gallery page.
Yeah, thats the problem, those instructions aren't included in the original post.

Basically the way I did it was I logged into the standalone login as the admin and created a gallery. I then set permissions on that gallery to allow registered users to create albums of their own.

The problem arises because a register user has way to much freedom when creating their own album. I want a user to be able to create sub-albums, but force them to use the settings from the parent albums so they are not uploading 2000 pixel images.

In addition, the standalone version will create a default album for the user and switch them to that album when they are first created. The integration script does not yet do that. I will probably change that here fairly soon, as soon as I can get the permissions problem figured out.
Reply With Quote
  #209  
Old 12-21-2006, 01:29 PM
reverse1312 reverse1312 is offline
 
Join Date: Jan 2006
Location: Europa
Posts: 53
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hello All,

my question :

Would it be possible

- to have Gallery on one server and vB on another (to save bandwidth on the vB server ) and though just 1 login system ?

or

- to have Gallery and vB on the same server (which would share the same registration process) and store all the media files on another server ?

By other server I mean another domain

Thanks
Reply With Quote
  #210  
Old 12-27-2006, 06:09 PM
rjdpa rjdpa is offline
 
Join Date: May 2002
Location: PA
Posts: 14
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I'm getting this error when trying to add a user in the VB Admin Control Panel after installing the plugins. I modified the paths and followed all of the directions...

User Manager

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /home/rjmdiam/public_html/olfaithful/forums/includes/class_dm_user.php(1657) : eval()'d code on line 10
Reply With Quote
  #211  
Old 12-29-2006, 07:51 AM
Aken's Avatar
Aken Aken is offline
 
Join Date: Jul 2004
Location: Wisconsin, USA
Posts: 129
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

For anyone who experienced blank pages: I kept getting a normal page when every unregistered guest got a blank one. Turns out it was simply a matter of I had added the 'gallery2' template to one style set, and my default style set was something different.

Felt really stupid, but at least it was an easily fix Just something to keep in mind!
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 11:49 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.08995 seconds
  • Memory Usage 2,403KB
  • 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_html
  • (4)bbcode_php
  • (5)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
  • (3)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