View Single Post
  #1  
Old 11-13-2012, 12:51 AM
Sangheili Sangheili is offline
 
Join Date: Mar 2007
Posts: 19
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by DrPrepper View Post
In the mean time a couple of years later, but I wanted this bridge between mediawiki and vbulletin too, and got it working, albeit with a few tweaks.

My setup:

* vBulletin 4.2.0 PL3
* Mediawiki 1.19.2
* PHP 5.3.17

I added a custom usergroup 'wiki' to vB. Members of this group (and admins and mods) are granted to log in to the wiki.

I used the code from the quoted extention above, but ran into 2 things:
  1. Group selection was to 'tight' for me. I wanted to control the wiki access with an additional custom usergroup (so not the primary group)
  2. I wanted to allow spaces, dashes and dots in usernames, since both Mediawiki as vB allow that currently

@group selection

In the functions userExists (and authenticate subsequently) I changed the query from

PHP Code:
$vb_find_user_query "SELECT usergroupid FROM " $this->vb_prefix "user WHERE LOWER(username)=LOWER('" $username "')"
to

PHP Code:
$vb_find_user_query "SELECT CONCAT_WS(',',usergroupid,membergroupids) as groups FROM " $this->vb_prefix "user WHERE LOWER(username)=LOWER('" $username "')"
With this, you can query both usergroup & membersgroups together.
Since you can have multiple id's in this 'group', the code to match it to the $this->allowed_usergroups needed a little tweaking.

I changed the bottom part of the same 2 functions from

PHP Code:
if (in_array($vb_userinfo['usergroupid'], $this->allowed_usergroups)) {
   return 
TRUE;

to

PHP Code:
if (count(array_intersect($this->allowed_usergroupsexplode(",",$vb_userinfo['groups']))) >= 1) {
   return 
TRUE;

This way it doesn't matter if a member had one or more matching groups with the allowed_usergroups.

@allowed characters

Unfortunately I didn't succeed in modifying the search pattern to only accept alphanumeric or underscore characters in usernames. I did a dirty workaround to bypass the whole check.

I replaced

PHP Code:
(!preg_match($this->searchpattern$username)) 
with

PHP Code:
(count_chars($username) > 
in both functions.
If someone has a better solution I'd like to hear it. I'm not that kind of a guru at PHP
I've applied all the edits above and it stops it from working, I get incorrect password errors. Did you miss anything out? Is anything posted incorrectly?

Edit:

I did this in a different way and it worked.
Reply With Quote
 
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01173 seconds
  • Memory Usage 1,806KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD_SHOWPOST
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (6)bbcode_php
  • (1)bbcode_quote
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_box
  • (1)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit_info
  • (1)postbit
  • (1)postbit_onlinestatus
  • (1)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • reputationlevel
  • showthread
Included Files:
  • ./showpost.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
  • showpost_start
  • bbcode_fetch_tags
  • bbcode_create
  • postbit_factory
  • showpost_post
  • 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
  • showpost_complete