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
  #152  
Old 08-04-2006, 12:54 AM
fringehead fringehead is offline
 
Join Date: Nov 2004
Posts: 80
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by SilVert
i am not on 3.6, probobly wont be for some time

plus its in beta, not good for me.

3.6 is out. Anyone upgrading?

Sean
Reply With Quote
  #153  
Old 08-09-2006, 06:05 PM
SilVert SilVert is offline
 
Join Date: Oct 2003
Posts: 70
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by fringehead
3.6 is out. Anyone upgrading?

Sean
it is out now. i am goign to wait a month+ for it to be out. i dont need/want to be the 1st to find any odd bugs...

Quote:
Originally Posted by m0nde
Everything went very smoothly and I am able to browse the gallery by itself.

But, when I launch gallery2.php, I get the following while logged in as myself:

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/bostonlo/public_html/forums/gallery2.php at line 95 (galleryembed::createuser)
    * in /home/bostonlo/public_html/forums/gallery2.php at line 50
Also, if someone logs out, they get this message:

Code:
Unable to add cookies, header already sent.
File: /home/bostonlo/public_html/forums/includes/class_dm_user.php(1571) : eval()'d code
Line: 10
Thanks in advance for any help.
you are attempting to log in with userid 1 which is the gallery admin, which maps out to the VB admin(userid=1).

log in as yourself, the only way to resolve this is to go into the DB and manualy hack some values out. i havent done this in months so i dont remember which ones. it is earlyer in this thread, i think the tabel in the DB was existingusers or somethign along those lines.
Reply With Quote
  #154  
Old 08-16-2006, 01:28 PM
dtdesign dtdesign is offline
 
Join Date: Feb 2002
Location: Ireland
Posts: 44
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Has anyone an idea where the sidebar is constructed from so I can add images instead of text, it seems to be taking it's style layout from the VB style but I don't think adding a heap of style code to that from the gallery style will do much
Reply With Quote
  #155  
Old 08-18-2006, 09:47 AM
Akagi Akagi is offline
 
Join Date: Jan 2006
Posts: 47
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

hi, my setup is as follows:

vbulletin 3.5.3

/home/public_html/forums/<forum files>
/home/public_html/gallery/<gallery files>
/home/public_html/forums/gallery.php

my gallery.php is like this:
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( 
    
'gallery'
); 

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

); 

// ######################### REQUIRE BACK-END ############################ 
require_once('./global.php'); 

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

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

$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(
'../gallery/embed.php');
    
        
$data = array();
    
    
// if anonymous user, set g2 activeUser to null
        
$uid $vbulletin->userinfo['userid'] = '' $vbulletin->userinfo['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' => 'gallery.php',
                    
'embedPath' => '/forum',
                        
'relativeG2Path' => '../gallery',
                    
'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']     =   $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->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('gallery') . '");'); 

?>
it gives this error
Code:
Fatal error: Call to undefined function: iserror()
any idea how to solve it?
Reply With Quote
  #156  
Old 08-20-2006, 09:33 AM
noox noox is offline
 
Join Date: Sep 2004
Posts: 10
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

In the plugin which creates and updates the gallery user seems to be an error:

line 33:
Instead of
PHP Code:
 $ret GalleryEmbed::isExternalIdMapped($uid,$args); 
it should be:
PHP Code:
$ret GalleryEmbed::isExternalIdMapped($uid'GalleryUser'); 
Else isExternalIdMapped always returned an error - but not the expected 'ERROR_MISSING_OBJECT'. So the script always tries to update an existing user.
Reply With Quote
  #157  
Old 08-20-2006, 02:40 PM
Akagi Akagi is offline
 
Join Date: Jan 2006
Posts: 47
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by noox
In the plugin which creates and updates the gallery user seems to be an error:

line 33:
Instead of
PHP Code:
 $ret GalleryEmbed::isExternalIdMapped($uid,$args); 
it should be:
PHP Code:
$ret GalleryEmbed::isExternalIdMapped($uid'GalleryUser'); 
Else isExternalIdMapped always returned an error - but not the expected 'ERROR_MISSING_OBJECT'. So the script always tries to update an existing user.
is this in reference to my post above?
Reply With Quote
  #158  
Old 08-20-2006, 02:51 PM
noox noox is offline
 
Join Date: Sep 2004
Posts: 10
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

no, it should be referenced to the initial post with the plugin attachment. The error is in the .xml file.
Reply With Quote
  #159  
Old 08-21-2006, 01:50 PM
Akagi Akagi is offline
 
Join Date: Jan 2006
Posts: 47
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by noox
no, it should be referenced to the initial post with the plugin attachment. The error is in the .xml file.
i see...
anyone managed to get this working on my kinda setup?
Reply With Quote
  #160  
Old 08-26-2006, 02:59 PM
thenetbox thenetbox is offline
 
Join Date: Mar 2002
Posts: 184
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hi, integration worked nicely in 3.6

So getting URL Rewrite to work wasn't too difficult.
After getting integration working:
1) Go to Vbulletin and create a new account called anything. I called mine "Administrator"
2) Then I went to http://yourdomain.com/gallery2 and logged in as the site admin.
3) Go to usergroups and add the account created in step 1 (administrator) to the Site Admin group
4) Go to Vbulletin and log off and log on as the account created in step 1 (administrator)
5) Go to http://yourdomain.com/gallery2.php
6) Inside the embedded gallery go to Site Admin.
7) Go to Modules and activate URL rewrites
8) Go create an .htaccess in your root folder /home/yourdir/public_html . Give it 666 permissions
9) Now in the URL rewrites area (embedded mode ie. inside gallery2.php) of site admin click on Setup and you'll get a new embedded option. Here enter the path of the new .htaccess (/home/yourdir/public_html/) and then below that enter the public path (if room then just type / )
10) Click save and now you'll be able to use URL_Rewrites with the fancy shmancy URLs

http://yourdomain.com/v/username/ should work now.



My question:

I'm trying to figure out if it is possible to import a users gallery into his profile. Has any one attempted that? Since the usernames are the same in gallery and vbulletin would it be possible to import using the username?
Reply With Quote
  #161  
Old 08-28-2006, 07:57 PM
SilVert SilVert is offline
 
Join Date: Oct 2003
Posts: 70
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by dtdesign
Has anyone an idea where the sidebar is constructed from so I can add images instead of text, it seems to be taking it's style layout from the VB style but I don't think adding a heap of style code to that from the gallery style will do much

so you want to add images instead of "add item"(text) right??? im sure if you look at some of the styles, you can do it... i dont know off the top of my head. try looking it up on Gallery2.org?

Quote:
Originally Posted by Akagi
hi, my setup is as follows:

vbulletin 3.5.3

/home/public_html/forums/<forum files>
/home/public_html/gallery/<gallery files>
/home/public_html/forums/gallery.php

my gallery.php is like this:
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( 
    
'gallery'
); 

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

); 

// ######################### REQUIRE BACK-END ############################ 
require_once('./global.php'); 

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

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

$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(
'../gallery/embed.php');
    
        
$data = array();
    
    
// if anonymous user, set g2 activeUser to null
        
$uid $vbulletin->userinfo['userid'] = '' $vbulletin->userinfo['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' => 'gallery.php',
                    
'embedPath' => '/forum',
                        
'relativeG2Path' => '../gallery',
                    
'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']     =   $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->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('gallery') . '");'); 

?>
it gives this error
Code:
Fatal error: Call to undefined function: iserror()
any idea how to solve it?
i had the iserror() problem a while ago. mine was related to using a RC of gallery and trying to integrate it. i will post all of my integration none the less though. see if i am hitting a setting you missed

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(
'gallery',
);

// 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/httpd/vhosts/racersden.net/httpdocs/gallery/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' => 'gallery.php',
        
'g2Uri' => '/gallery/',
        
'loginRedirect' => 'index.php',
        
'activeUserId' => $uid));

    if (
$vbulletin->userinfo[usergroupid] == or $vbulletin->userinfo[usergroupid] == or $vbulletin->userinfo[usergroupid] == or $vbulletin->userinfo[usergroupid] == 11 or $vbulletin->userinfo[usergroupid] == 12)
    {

        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', true);

// 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('gallery') . '");');

?>
the part of my script that looks like this:
PHP Code:
if ($vbulletin->userinfo[usergroupid] == or $vbulletin->userinfo[usergroupid] == or $vbulletin->userinfo[usergroupid] == or $vbulletin->userinfo[usergroupid] == 11 or $vbulletin->userinfo[usergroupid] == 12
is for locking down usergroups to create usernames... if you compare the usergroups on your board you will notice, admins, supermods, mods etc match. i have a few custom groups i have allowed access

Quote:
Originally Posted by thenetbox
Hi, integration worked nicely in 3.6

So getting URL Rewrite to work wasn't too difficult.
After getting integration working:
1) Go to Vbulletin and create a new account called anything. I called mine "Administrator"
2) Then I went to http://yourdomain.com/gallery2 and logged in as the site admin.
3) Go to usergroups and add the account created in step 1 (administrator) to the Site Admin group
4) Go to Vbulletin and log off and log on as the account created in step 1 (administrator)
5) Go to http://yourdomain.com/gallery2.php
6) Inside the embedded gallery go to Site Admin.
7) Go to Modules and activate URL rewrites
8) Go create an .htaccess in your root folder /home/yourdir/public_html . Give it 666 permissions
9) Now in the URL rewrites area (embedded mode ie. inside gallery2.php) of site admin click on Setup and you'll get a new embedded option. Here enter the path of the new .htaccess (/home/yourdir/public_html/) and then below that enter the public path (if room then just type / )
10) Click save and now you'll be able to use URL_Rewrites with the fancy shmancy URLs

http://yourdomain.com/v/username/ should work now.



My question:

I'm trying to figure out if it is possible to import a users gallery into his profile. Has any one attempted that? Since the usernames are the same in gallery and vbulletin would it be possible to import using the username?

i will test that on my site sometime this week hopefully(doubtfull knowing my schedule though )

there is a way to haev Gallery on a external page. there is some code i saw somewhere. so if you can tell it to look in VBB ID x directory in Gallery, i dont see why not
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 09:44 AM.


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.14426 seconds
  • Memory Usage 2,611KB
  • 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
  • (4)bbcode_code
  • (1)bbcode_html
  • (12)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