vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vBulletin 3 Articles (https://vborg.vbsupport.ru/forumdisplay.php?f=187)
-   -   Gallery 2.1 and vBulletin 3.5.X integration (https://vborg.vbsupport.ru/showthread.php?t=111931)

Brent H 03-31-2006 10:00 PM

Gallery 2.1 and vBulletin 3.5.X integration
 
1 Attachment(s)
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!

defcon_420 04-02-2006 05:13 AM

I have an existing installation i wish to upgrade but my forum is already installed into /home directory

how would it work if if my directory structure looked like this
public_html/home/FORUM FILES HERE
public_html/gallery2/GALLERY FILES HERE

also is there a way so that "when a user uploads a photo into the forum that its automatically placed into the users gallery?"

Brent H 04-02-2006 06:04 AM

I tried messing around with a directory structure like that a while back. You'd have to make sure that every reference to an external vBulletin file like
PHP Code:

require_once('./global.php'); 

was changed to something like
PHP Code:

require_once('../home/global.php'); 

The problem I ran in to was that it expected files referenced by global.php to be located in places that they aren't...

I'm sure it's possible, but you'd have to have someone more experienced in PHP tell you how to do it. With the new 2.1 version they changed some of the integration code and I read something about being able to put your directories wherever you wanted, but I haven't tried it yet. That's something you may have to ask about in Menalto's forums.

With the user album thing, are you talking about forum attachments or something else? As far as I know there's no way to have uploaded attachments be put directly into a user's photo album.

defcon_420 04-02-2006 06:26 AM

First of all thank you Brent so much for answering my questions .

Since i would need to move my VB installation to the webroot is there a way of upgrading from my current 3.0.13 to 3.5.4 keeping my data but moving my file structure so that my vb is installed into the webroot?

Yes i wanted the attachments to be put directly into the users photo albums. If gallery 2.1 cant do this, is there another photo gallery that does?

I wonder if there isnt a way to setup a cronjob to dump user attachments in the gallery once a day? whats your thoughts on this?

Brent H 04-02-2006 06:57 AM

You can move your gallery installation by following the instructions here:
http://codex.gallery2.org/index.php/..._to_another.3F

You can move your vBulletin files without making any problems. Just move them over and edit your site URL in the Admin CP. I've done it many times.

As far as the attachments, I'd just disable them and have people upload them directly to the gallery. They can use image tags and just link to their photo :)

Edit: JohnMont has given me permission to upload his two gallery plugins... The first post has been updated.

defcon_420 04-02-2006 07:46 AM

thanks alot Brent you have been very helpful and its awesome to see JohnMont has given permission to post his plugins.
This is starting to look good :)

Attachments are disabled via forum permissions in admincp

Also is there a way to get VBulletin to dump its attachments into a single folder or user defined folders so i can manually add them to the new photo gallery i'm about to install?

thx again

noj75 04-02-2006 11:18 AM

Hi,

Have done all of the above. Getting this error when trying to view:

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/*****/public_html/boards/gallery2.php at line 95 (galleryembed::createuser)
in /home/*****/public_html/boards/gallery2.php at line 50

Any ideas please.

Kind regards.

Brent H 04-02-2006 11:41 AM

Is your gallery2 folder inside your vbulletin root directory?

defcon_420 04-02-2006 12:00 PM

i was getting that error when i logged in as admin, when i logged in as a normal user or went into gallery2.1 non embed it was fine... i created another user and gave them admin control.. i log in thru that now and i dont get the error.

johnmont 04-02-2006 01:38 PM

This is most likely because the extID already exists in the gallery database. When a user is created in gallery, the VB userid is mapped to a different Gallery userid. This is done in case gallery is also run in standalone mode or for multiple domains.

How does this mapping work?

1. VB user has a userid=8

2. Added as a gallery user and given the g_userid=12

3. In the externalID map table, an entry is made linking 8--->12.

The problem is, that if the user is deleted from within the gallery app, the user is removed. But the entry in the externalID map table is not. So all deletion of users, etc. must be done via the embedding app. But the current version that's posted here does not allow that...it never has. I don't mean to complain about the original author, as I really appreciate their work, its simply that this feature wasn't really fully implemented. So I'm writing an improved one and will hopefully have it up this week. It will also support the mapping of primary VB group to gallery group as well.


Quote:

Originally Posted by noj75
Hi,

Have done all of the above. Getting this error when trying to view:

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/*****/public_html/boards/gallery2.php at line 95 (galleryembed::createuser)
in /home/*****/public_html/boards/gallery2.php at line 50

Any ideas please.

Kind regards.



All times are GMT. The time now is 06:40 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.01705 seconds
  • Memory Usage 1,837KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)bbcode_html_printable
  • (6)bbcode_php_printable
  • (1)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (2)pagenav_pagelink
  • (1)pagenav_pagelinkrel
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (10)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.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/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.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
  • printthread_start
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete