vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   Modification Requests/Questions (Unpaid) (https://vborg.vbsupport.ru/forumdisplay.php?f=112)
-   -   could someone take a look at this script? (https://vborg.vbsupport.ru/showthread.php?t=274705)

AK Houston 11-27-2011 05:17 AM

could someone take a look at this script?
 
can someone look at this script and explain or show why the Gold member users only see the default color in the postbit?

Code:

global $vbulletin;

/// NOTE - Make sure that the $user information includes the MembergroupIDs
if (!array_key_exists('membergroupids', $user) || !array_key_exists('usergroupid', $user))
{
    global $vbulletin;
    $tempuser = $vbulletin->db->query_first(sprintf("SELECT usergroupid,membergroupids FROM " . TABLE_PREFIX . "user WHERE userid=%d",$user['userid']));
    $user['membergroupids'] = $tempuser['membergroupids'];
    $user['membergroupids'] .= ','.$tempuser['usergroupid'];
}
else
{
    $user['membergroupids'] .= ','.$user['usergroupid'];
}


if (in_array(24,explode(',',$user['membergroupids'])))
{
  /// NOTE - Make sure that the $user information includes the field we are checking for
  if (!array_key_exists('field16', $user))
  {
    global $vbulletin;
    $tempuserfield = $vbulletin->db->query_first(sprintf("SELECT field16 FROM " . TABLE_PREFIX . "userfield WHERE userid=%d",$user['userid']));
    $user['field16'] = $tempuserfield['field16'];
  }
  $my_special_color = ($user['field16']) ? $user['field16'] : 'olive';
  $user['musername'] = '<span style="display:-moz-inline-stack;display:inline-block;font-weight:bold;color:'.$my_special_color.';">'.$user['username'].'</span>';
  if (strtolower($my_special_color) == 'rainbow')
  {
    $len = 16;
    $base='123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $max=strlen($base)-1;
    $randstr='';
    mt_srand((double)microtime()*1000000);
    while (strlen($randstr)<$len+1) {$randstr .= $base[mt_rand(0,$max)];}
    $user['musername'] = '
  <span id="spastic_username_container_'.$randstr.'">' . $user['username'] . '</span>
  <script type="text/javascript">
  set_as_spastic(document.getElementById(\'spastic_username_container_'.$randstr.'\'),\''.$user['username'].'\');
  </script>'; 
  }
}

administrators see everyones name correctly the way the color should be. on the other hand, gold members and registered users, etc. users that dont have an admincp or modcp see the username with the people with the plugin as the default color. in this case "olive" and gold member usergroup id "24"
and i get a database error on the "who's online" page for those users
and the product "vsa - advanced forum statistics" does not show up for those users.

could someone help me?

thanks, Houston

kh99 12-01-2011 09:30 PM

I can't see anything wrong in what's posted - is this a plugin? Which hook?

AK Houston 12-01-2011 09:37 PM

Quote:

Originally Posted by kh99 (Post 2273834)
I can't see anything wrong in what's posted - is this a plugin? Which hook?


yes its a hook. its a fetch_musername

kh99 12-01-2011 10:06 PM

OK, looks like the problem is that you're changing $user['membergroupids'] and messing up some stuff that tries to use it later (a reference is passed to the function so any changes will affect the variable that's passed to fetch_musername() even after it returns).

So I would make these changes (lines in blue added, lines in red can be deleted):

Code:

global $vbulletin;

/// NOTE - Make sure that the $user information includes the MembergroupIDs
if (!array_key_exists('membergroupids', $user) || !array_key_exists('usergroupid', $user))
{
    global $vbulletin;
    $tempuser = $vbulletin->db->query_first(sprintf("SELECT usergroupid,membergroupids FROM " . TABLE_PREFIX . "user WHERE userid=%d",$user['userid']));
    $user['membergroupids'] = $tempuser['membergroupids'];
    $user['usergroupid'] = $tempuser['usergroupid'];
    //$user['membergroupids'] .= ','.$tempuser['usergroupid'];
}
//else
//{
//    $user['membergroupids'] .= ','.$user['usergroupid'];
//}


//if (in_array(24,explode(',',$user['membergroupids'])))
if (is_member_of($user, 24))
{


but I'm not sure that fixes everything. I noticed "rainbow" didn't seem to work, and I don't know why the problems only happened with non-admin or mod users.

AK Houston 12-02-2011 08:53 PM

Quote:

Originally Posted by kh99 (Post 2273844)
OK, looks like the problem is that you're changing $user['membergroupids'] and messing up some stuff that tries to use it later (a reference is passed to the function so any changes will affect the variable that's passed to fetch_musername() even after it returns).

So I would make these changes (lines in blue added, lines in red can be deleted):

Code:

global $vbulletin;

/// NOTE - Make sure that the $user information includes the MembergroupIDs
if (!array_key_exists('membergroupids', $user) || !array_key_exists('usergroupid', $user))
{
    global $vbulletin;
    $tempuser = $vbulletin->db->query_first(sprintf("SELECT usergroupid,membergroupids FROM " . TABLE_PREFIX . "user WHERE userid=%d",$user['userid']));
    $user['membergroupids'] = $tempuser['membergroupids'];
    $user['usergroupid'] = $tempuser['usergroupid'];
    //$user['membergroupids'] .= ','.$tempuser['usergroupid'];
}
//else
//{
//    $user['membergroupids'] .= ','.$user['usergroupid'];
//}


//if (in_array(24,explode(',',$user['membergroupids'])))
if (is_member_of($user, 24))
{


but I'm not sure that fixes everything. I noticed "rainbow" didn't seem to work, and I don't know why the problems only happened with non-admin or mod users.

well that fixes that problem :)

now its just that in the post bit, if I'm a regular member, i see all the people who have a colored name just the default color. 'olive'

how do i make it where they can see everyones individual color?

kh99 12-02-2011 09:37 PM

Quote:

Originally Posted by AK Houston (Post 2274134)
how do i make it where they can see everyones individual color?

I don't have that problem on my test forum - admins and Registered Users are able to see special colors, as long as the user with the color is a member of the special group. You're going to have to put in some debug lines to see if you can figure out what's going on (like maybe echo() some values to an html comment and then view the page source to see them).


All times are GMT. The time now is 12:49 AM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01595 seconds
  • Memory Usage 1,735KB
  • 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
  • (3)bbcode_code_printable
  • (3)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (6)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
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete