Go Back   vb.org Archive > vBulletin Article Depository > Read An Article > vBulletin 3 Articles
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools
Menalto's G2 integration into VB3
whodah
Join Date: Feb 2004
Posts: 77

 

Show Printable Version Email this Page Subscription
whodah whodah is offline 04-23-2005, 10:00 PM

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



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
Reply With Quote
  #42  
Old 06-13-2005, 11:12 PM
whodah whodah is offline
 
Join Date: Feb 2004
Posts: 77
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

an update!

i'm running a nightly build (from June 2nd) w/ core: 0.9.22

this includes the new url rewrite module - which works!

i had to hardcode some links though as the gallery url rewrite takes over the vB relative links.

so i had to make the relative links 'static' in 1 template and hard code a phrase too...

the phrase i had to edit was:
private_messages_nav

from:
Code:
<a href="private.php?{3}">Private Messages</a>: {1}, {2}.
to:
Code:
<a href="http://www.domain.com/private.php?{3}">Private Messages</a>: {1}, {2}.
the template i had to edit was: navbar

and i changed all links that looked like:
Code:
<a href="profile.php?$session[sessionurl]do=editprofile">
to:
Code:
<a href="$vboptions[bburl]/profile.php?$session[sessionurl]do=editprofile">
basically added:
Code:
$vboptions[bburl]/
in front of all of the links in that page that actually go somewhere. (not the # links) there's like 20 of 'em.

you can also do random blocks and such. i'm not sure the cleanest way to do it... i've done it on our site, but it uses vbadvanced. basically, look in the gallery site admin under:
Blocks -> Random/Popular

and note the 'External Image Block' section.

at some point in yer code, you need to call a php variable to get yer random block. since we cannot do this directly from templates, we have to do it in one of the .php files and then reference the variable which introduces a level of difficulty. for instance, as that page indicates, the code:
Code:
<?php @readfile('http://www.cvreefers.org/gallery2.php?g2_view=imageblock.External&g2_blocks=randomImage&g2_show=owner'); ?>
will generate a random image. as you cannot call php from our templates, i kinda kludged this together w/ vbadvanced's help.

you can then get real jiggy w/ it by calling those links in yer postbit (or postbit_legacy in our case) to produce things like each users latest album or each users random pic.

an example is here, note beneath the posters' avatar:
http://www.cvreefers.org/showthread.php?t=2614

however, each time u look up a random pic, i get a delay on a p4 3.06 w/ 1 gig of ram. so if u have 10 users browsing 17 posts w/ 10 random pic genreators at once... well... u get the idea. actually read that thread if you want to see the outcome...

so - i'm using a cron job and a hidden field to do the tricks on that page.

i hesitate to mention those above tricks because i know the first thing that's going to be asked is 'how did you do this?' and it's pretty entailed. to get the user's gallery links beneath each user involves naming an album identicle to that user, creating two hidden user profile fields, and setting up a cron job. for the daily random block, another hidden user profile field, and another cron job. i really doubt that i'm doing it 'the right way' nor the most eloquant nor the most effecient way. heck, i'm establishing my own mysql connection on those cron jobs and i'm sure i could mooch off of vB's connection if i researched how, heh! so i just wanted to show that it can be done if that makes sence! i'm sure someone more advanced then i could make it generically fit any vB install.
Reply With Quote
  #43  
Old 07-23-2005, 07:09 PM
zylstra zylstra is offline
 
Join Date: Aug 2004
Posts: 144
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by whodah
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.
whodah,

I just signed up for your forum at cvreefers.org and can't see the add/edit/delete menu. I thought you fixed it with post #12. Did you perhaps overwrite your last mods?

Thanks.
Reply With Quote
  #44  
Old 07-24-2005, 02:30 AM
whodah whodah is offline
 
Join Date: Feb 2004
Posts: 77
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

that all works fine now. i'd imagine it's cause you don't have permissions on any album to add things



i setup a test album w/ permissions for your account:
http://www.cvreefers.org/v/CVR_membe...c/whodah_test/
Reply With Quote
  #45  
Old 07-30-2005, 01:41 PM
ZED28 ZED28 is offline
 
Join Date: Aug 2004
Posts: 37
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Whodah,

Thanks for the update! I DO watch this thread to keep abreast of your progress and try to implement your changes/suggestions as soon as I get the chance.

I've implemented the re-write module and have modified the links in VB so that the re-write doesn't screw them up, this all works as expected. I still have a nagging problem (and this is the only real reason I want re-write) where extra crap is tagged onto the end of the shorter URL's - after the jpg extension:-

http://www.gmlsxs.org/d/4376-2/DSCN2...4cfff638c4e698


Now if I view the Gallery in stand-a-lone mode, the link looks like this:-

http://www.gmlsxs.org//gallery2/d/4376-2/DSCN2202.JPG


Both of these links will work if you click on them, the downside for me is that when used inside VB, I can't get the URL's to appear without the crap at the end. Of course, if you simply copy up to the JPG extension, this works - I just don't wanna explain how to do that to all our members over and over and over... LOL

I looked at your Gallery implementation and noticed you have the same problem too.

I also installed the module for displaying the URL's for BB Code and HTML from Gallery's site. I noticed you were involved in that and I've had a few issued with that also (didn't generate the shorter URL's, still added the crap at the end anyways) so I may or may not use that.

Any help you could provide would be greatly appreciated. BTW, thanks for sticking with this, it's an excellent integration!

You can view my Gallery2 install using the following links (same Gallery install)

http://www.gmlsxs.org/gallery2.php? <-- Integrated
http://www.gmlsxs.org/gallery2/main.php <-- Stand-a-lone


An Update:

Whodah, stop the press! LOL The nice folk at Menalto's Gallery have clued me in on this problem, see the following (a simple fix!)

http://gallery.menalto.com/index.php...wtopic&t=33488

Thanks bud!
Reply With Quote
  #46  
Old 07-30-2005, 07:16 PM
whodah whodah is offline
 
Join Date: Feb 2004
Posts: 77
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

heya Zed28!

cool beans!

can you show me on my site an example of the issue you were talking about resolved by the cookie settings? i cannot find an example and would like to straighten it out on my site!

also - the URLs/BBCODE: VERY VERY VERY nifty module!! i'll be revisiting it again here shortly to add some other fixes. time has been short for me lately, heh!

cya, and thx!
Reply With Quote
  #47  
Old 07-30-2005, 07:33 PM
ZED28 ZED28 is offline
 
Join Date: Aug 2004
Posts: 37
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Here ya go, this is the Clown fish from your Gallery within VB...
http://www.cvreefers.org/d/13045-3/a...36b0b4feb7e28e

The same picture from your Gallery in stand-a-lone mode...
http://www.cvreefers.org/./gallery2/d/13045-3/aeg.jpg

It was a simple fix, in the Site Admin section under General, theres a Cookie section towards the bottom. You'll obviously enter "cvreefers.org" for the domain and try a "/" for the path, that worked for me.

That should do it!
Reply With Quote
  #48  
Old 07-30-2005, 07:38 PM
whodah whodah is offline
 
Join Date: Feb 2004
Posts: 77
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

interesting...

i couldn't replicate that - until i logged off... it appears this is an issue for anonymous users (at least on my site)

thx for pointing it out!
Reply With Quote
  #49  
Old 08-12-2005, 03:20 PM
Karri's Avatar
Karri Karri is offline
 
Join Date: Feb 2002
Posts: 98
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

is this available for 3.5 yet?
Reply With Quote
  #50  
Old 08-12-2005, 03:45 PM
whodah whodah is offline
 
Join Date: Feb 2004
Posts: 77
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

heya!

i'd imagine that we won't be moving to 3.5.x for quite a while. our site is extensively customized and it'll take a lot of work for me to upgrade it.

it can't be much different - but i have not done it myself.
Reply With Quote
  #51  
Old 08-12-2005, 04:01 PM
Karri's Avatar
Karri Karri is offline
 
Join Date: Feb 2002
Posts: 98
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Ah. Well thanks for the info. I have tried playing with it with no luck. Just get a gallery wrapped with vbulletin headers and footers and no user integration. I will keep on eye on this thread in case you decide to upgrade.
Reply With Quote
Reply


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 04:17 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.05624 seconds
  • Memory Usage 2,361KB
  • Queries Executed 28 (?)
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
  • (10)bbcode_code
  • (2)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
  • (11)post_thanks_box
  • (11)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (11)post_thanks_postbit_info
  • (10)postbit
  • (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_postinfo_query
  • fetch_postinfo
  • 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_display_complete
  • post_thanks_function_can_thank_this_post_start
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete