vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vBulletin 3 Articles (https://vborg.vbsupport.ru/forumdisplay.php?f=187)
-   -   Menalto's G2 integration into VB3 (https://vborg.vbsupport.ru/showthread.php?t=80478)

whodah 04-23-2005 10:00 PM

Menalto's G2 integration into VB3
 
NOTE: Development for G2.1 and vB 3.5 is on this page: https://vborg.vbsupport.ru/showthread.php?t=111931

I was about to post this on Menalto's site until i realized that I'd be publicly posting VB3's code... A no-no!!! heh!

So, I'll post the instructions here, and then refer people to this post on how to do it! :) (obviously they'll have to log on w/ their licensed account to see it)

Ok, here's how to integrate menalto's G2 gallery into VB3.

Menalto's gallery is sweet.
Menalto's gallery is free.
Menalto's gallery is here: http://gallery.menalto.com/index.php

:D

This works on my system of vBulletin 3.0.7 and Gallery 2 Holy Hand Grenade.

Known issues: VB3 has a password structure that consists of the user's password
plus the salt md5'ed together. It is not possible to strip out just the user's
password
. Thus, this script pushes the users's password plus salt from VB3 into
G2. The outcome - the standalone G2 passwords will not match *just* the user's
password! There is talks of looking into salt'ing in the future w/ G2
integration, but that's the dealio as of this integration technique... If you
are using G2 as 'embedded only', then game on, no worries. If not, then your
users will need to log on through the VB3 install to setup their session, then
can visit the G2 standalone if they wish...

Step 1 - create a new file named 'gallery2.php' as per this thread:
https://vborg.vbsupport.ru/showthread.php?t=62164
(thx Gary King!!!)

in that thread, the first box (the gallery2.php file), the contents will be (this is the section that contains the G2 embeded code which is available on Menalto's site... i'll update this thread w/ direct links once it's in place! *only* the G2 code is on their site, no VB3 code in accordance w/ the VB license agreement! :) ):
Code:

<?php

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

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

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

);

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

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

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

$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 $bbuserinfo;
        require_once('../gallery2/embed.php');
   
        $data = array();
   
    // if anonymous user, set g2 activeUser to null
        $uid = $bbuserinfo['userid'] = 0 ? '' : $bbuserinfo['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' => 'gallery2.php',
                    'embedPath' => '/VB',
                        'relativeG2Path' => '../gallery2',
                    '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']    =  $bbuserinfo['username'];
                $args['username']    = $bbuserinfo['username'];
                $args['hashedpassword'] =  $bbuserinfo['password'];
                $args['hashmethod'] =    'md5';
                $args['email']      =  $bbuserinfo['email'];
                $args['language']  =  $bbuserinfo['lang_code'];
                $args['creationtimestamp']  =  $bbuserinfo['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('gallery2') . '");');

?>

in the above, you'll need to edit:
Code:

        $ret = GalleryEmbed::init(array('embedUri' => 'gallery2.php',
                    'embedPath' => '/VB',
                        'relativeG2Path' => '../gallery2',
                    'loginRedirect' => 'index.php',
                    'activeUserId' => $uid));

and
Code:

require_once('../gallery2/embed.php');
to suit your directory structure...

step 2 - creating the template
as per the same thread, https://vborg.vbsupport.ru/showthread.php?t=62164 (2nd code box) create a template named 'gallery2' (no tics) and in it, place the following code:
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>

that's it, enjoy! :)

oh, forgot to add!

in scouring the net, i've seen a couple of posts where people have offered to pay for this solution. if you are one of them, and are serious, then here's Menalto's donation link! ;)

(nope, i'm not affiliated w/ them... if you wanna donate to me, then i'll redirect you to the donation link to the site that this is for: a non-profit saltwater aquariast club's site! :) )


edit 2006.01.11
Quote:

links in navbar don't work w/ rewrite module enabled. you can enable them, but then need to 'hardcode' the links in your navbar templates and do one phrase adjustment. it's still 'dynamic' as the encoding involves vB variables and not your actual url... but a change none the less! see #41 in this thread:
https://vborg.vbsupport.ru/showpost....8&postcount=41

can you put a 'user's gallery' link near the users' posts? yup, see post #65 in this thread:
https://vborg.vbsupport.ru/showpost....2&postcount=65

does it work in 3.5.x as a NON-plugin? yup, if you read through this post, you'll find tidbits here and there on what it takes to get it to work in 3.5.x

does it work in 3.5.x as a plugin? nope, not yet. nobody has coded it as a plugin as of this edit's date.
/edit 2006.01.11

Reeve of shinra 04-24-2005 11:16 PM

Glad to see you got it working. So your solution entails running Gallery in embedded mode which basically allows Gallery to utilize the Vbulletin log in system?

Do you have a link to your site for people to see what the results are?

whodah 04-25-2005 12:13 AM

hello Reeve of shinra!

yup, that's the solution! :)

G2 was written w/ integration in mind from day one from what i understand. whether it's postnuke, vBulletin, or your own user table you custom coded.

here's a link to how it looks. this site isn't live yet (the live site is just the root domain running postnuke). i hope to have the site migrated and live on VB this week! :)

just a couple things i need to do still... (banner integration for our sponsors being the sole thing from making it live i think... i've yet to search, but betting there's a solution on these forums, heh!)

i'll probably edit the G2 css to match the VB3 css. i havn't done it yet because i'm not sure what style/colors we'll use in VB3 yet, so why edit G2's twice? ;)

at first i disabled G2's css and of course then VB3's kicks in and G2 matches perfectly. but you loose functionality in G2 if you do that (slideshow and such).

so, w/ the help over at menalto - G2's css is in place as well.

and here's the link! this link will be broken eventually as the site goes live, but then it'll just be the root domain.

http://www.cvreefers.org/VB/gallery2.php

jugo 04-25-2005 05:17 PM

Awesome work dude. Glad to see someone finally took on this task of integrating the Best Gallery on the planet with the Best Forums System on the Planet.

Thanks a lot!!!

whodah 04-25-2005 05:54 PM

:) yer welcome jugo!

and i agree on the gallery/forum combo! :D

subnet_rx 05-03-2005 08:17 PM

anyone get this working and has a demo for me to look at?

kyouens 05-03-2005 08:26 PM

Quote:

Originally Posted by subnet_rx
anyone get this working and has a demo for me to look at?

http://www.cvreefers.org

subnet_rx 05-03-2005 09:16 PM

thanks!

whodah 05-03-2005 09:44 PM

currently fighting a couple of things... didn't notice them right off the bat until it had been running a while...

a) mod_rewrite - i can enable mod_rewrite and it works for the gallery2 installation, but not the embedded installation. i've done preliminary research on it and see that some embeded mod_rewrite issues were resolved w/ the latest CVS which i'm not runnin...

b) the menu to the left to add/edit/delete items is not appearing for all users... again - i've yet to dig too deep into this.

remember that G2 is still beta! :)

jugo 05-04-2005 01:01 AM

<a href="http://www.ao1-squad.com/bb/gallery2.php" target="_blank">http://www.ao1-squad.com/bb/gallery2.php</a>

And yes to the issues stated above. I was going to post those.

But so far the installation works as far as integration where users are concerned

It' be cool if the theme would be inherited as well.


All times are GMT. The time now is 08:59 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.01435 seconds
  • Memory Usage 1,796KB
  • 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
  • (4)bbcode_code_printable
  • (2)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