Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 General Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 12-06-2005, 08:22 PM
Cyricx Cyricx is offline
 
Join Date: Aug 2002
Location: Missouri
Posts: 1,144
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Wrong Datatype in bbcode_class file

Okay, so I'm trying to work the usergroup smilies hack to be more secure by replacing the smilies with text instead of the image if the smilie is in a particular category (102) and the user is not in the secondary usergroup (44).

I've tried the below, and I'm getting an error for "wrong data type in second argument"

Any ideas?

Code:
// ##### START HACK - Usergroup Smilies #####
if ($smilie['imagecategoryid'] == "102")
{
  if (in_array("44", $this->registry->userinfo['membergroupids']))
  {
	if ($this->is_wysiwyg())
	{
	 $replace = "<img src=\"$smilie[smiliepath]\" border=\"0\" alt=\"\" title=\"$smilie[title]\" smilieid=\"$smilie[smilieid]\" class=\"inlineimg\" />";
	}
	else
	{
	 $replace = "<img src=\"$smilie[smiliepath]\" border=\"0\" alt=\"\" title=\"$smilie[title]\" class=\"inlineimg\" />";
	}
  }
  else
  {
 $replace = "*censored_smilie*";
  }
}
else
{
// ##### END HACK - Usergroup Smilies #####
 
	// if you change this HTML tag, make sure you change the smilie remover in code/php/html tag handlers!
	if ($this->is_wysiwyg())
	{
	 $replace = "<img src=\"$smilie[smiliepath]\" border=\"0\" alt=\"\" title=\"$smilie[title]\" smilieid=\"$smilie[smilieid]\" class=\"inlineimg\" />";
	}
	else
	{
	 $replace = "<img src=\"$smilie[smiliepath]\" border=\"0\" alt=\"\" title=\"$smilie[title]\" class=\"inlineimg\" />";
	}
 
// ##### START HACK - Usergroup Smilies #####
}
// ##### END HACK - Usergroup Smilies #####
   $sc["$find"] = $replace;
I'm trying to hardcode in the category and usergroup numbers first.

Thanks so much for any help
Reply With Quote
  #2  
Old 12-07-2005, 05:26 AM
Marco van Herwaarden Marco van Herwaarden is offline
 
Join Date: Jul 2004
Posts: 25,415
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

You don't point us to the line where you are getting this error, so i am just guessing here. I think (not checked) that $this->registry->userinfo['membergroupids'] is not an array, but a comma seperated list. Also $this will only work inside classes.
Reply With Quote
  #3  
Old 12-07-2005, 09:19 AM
merk merk is offline
 
Join Date: Nov 2001
Location: Canberra, Australia
Posts: 601
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

membergroupids is indeed just a comma seperated list. Use is_member_of (thats whats causing the message too, as Marco pointed out)
Reply With Quote
  #4  
Old 12-07-2005, 12:10 PM
Cyricx Cyricx is offline
 
Join Date: Aug 2002
Location: Missouri
Posts: 1,144
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Sorry

It's in the class_bbcode.php file.

So $this should work. I'm adding this on line around 452.

So I tried a strpos

Code:
// ##### START HACK - Usergroup Smilies #####
if ($smilie['imagecategoryid'] == "102")
{
$groupids = $this->registry->userinfo['membergroupids'];
$allowedgroup = "44";
$pos = strpos($groupids, $allowedgroup);
if ($pos === false)
{
	$replace = "*Censored Smilies*";
}
}
else
{
// ##### END HACK - Usergroup Smilies #####
 
				// if you change this HTML tag, make sure you change the smilie remover in code/php/html tag handlers!
				if ($this->is_wysiwyg())
				{
					$replace = "<img src=\"$smilie[smiliepath]\" border=\"0\" alt=\"\" title=\"$smilie[title]\" smilieid=\"$smilie[smilieid]\" class=\"inlineimg\" />";
				}
				else
				{
					$replace = "<img src=\"$smilie[smiliepath]\" border=\"0\" alt=\"\" title=\"$smilie[title]\" class=\"inlineimg\" />";
				}
 
// ##### START HACK - Usergroup Smilies #####
}
// ##### END HACK - Usergroup Smilies #####
Now for some freak of nature reason, it does recognize the usergroup.. however it parses the smilie as the previous smilieid that is now in category 102.

The one I'm testing it with is smilie id 867, the smilie it shows is 866

LOL

Any clues where else I might need to look?

Thanks tons for help with the array problem

W00t! Got it working with this code

Code:
// ##### START HACK - Usergroup Smilies #####
if ($smilie['imagecategoryid'] == "102")
{
  $groupids = $this->registry->userinfo['membergroupids'];
  $allowedgroup = "150";
$pos = strpos($groupids, $allowedgroup);
if ($pos === false)
  {
	$replace = "*Censored Smilies*";
  }
  else
  {
    				if ($this->is_wysiwyg())
				{
					$replace = "<img src=\"$smilie[smiliepath]\" border=\"0\" alt=\"\" title=\"$smilie[title]\" smilieid=\"$smilie[smilieid]\" class=\"inlineimg\" />";
				}
				else
				{
					$replace = "<img src=\"$smilie[smiliepath]\" border=\"0\" alt=\"\" title=\"$smilie[title]\" class=\"inlineimg\" />";
				}
  }
}
else
{
// ##### END HACK - Usergroup Smilies #####

				// if you change this HTML tag, make sure you change the smilie remover in code/php/html tag handlers!
				if ($this->is_wysiwyg())
				{
					$replace = "<img src=\"$smilie[smiliepath]\" border=\"0\" alt=\"\" title=\"$smilie[title]\" smilieid=\"$smilie[smilieid]\" class=\"inlineimg\" />";
				}
				else
				{
					$replace = "<img src=\"$smilie[smiliepath]\" border=\"0\" alt=\"\" title=\"$smilie[title]\" class=\"inlineimg\" />";
				}

// ##### START HACK - Usergroup Smilies #####
}
// ##### END HACK - Usergroup Smilies #####
Thanks guys for helping to point me in the right direction
Reply With Quote
  #5  
Old 12-07-2005, 08:58 PM
merk merk is offline
 
Join Date: Nov 2001
Location: Canberra, Australia
Posts: 601
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

You should use the function is_member_of.
Reply With Quote
  #6  
Old 12-08-2005, 02:00 PM
Cyricx Cyricx is offline
 
Join Date: Aug 2002
Location: Missouri
Posts: 1,144
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Can I use is_member_of in a php file? I thought it was a template conditional only.
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 07:53 PM.


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.03932 seconds
  • Memory Usage 2,219KB
  • Queries Executed 13 (?)
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
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (3)bbcode_code
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (6)post_thanks_box
  • (6)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (6)post_thanks_postbit_info
  • (6)postbit
  • (6)postbit_onlinestatus
  • (6)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
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete