View Single Post
  #7  
Old 03-27-2012, 02:35 PM
Pandemikk Pandemikk is offline
 
Join Date: Jul 2009
Posts: 292
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Simon2323 View Post
thank you for your answer, is there a place to get your mod? are you willing to share it?
It's in vBAnalytics. It offers more than a forumjump constructor but the below code extracted should work if you follow the steps below.

Code:
function createSelectOptions($array, $selectedid = '', $htmlise = false)
	{
		if (!is_array($array))
		{
			return '';
		}
		
		$options = '';
		foreach ($array as $key => $val)
		{
			if (is_array($val))
			{
				// Create the template
				$templater = vB_Template::create('optgroup');
					$templater->register('optgroup_label', 	($htmlise ? htmlspecialchars_uni($key) : $key));
					$templater->register('optgroup_options', createSelectOptions($val, $selectedid, $tabindex, $htmlise));
				$options .= $templater->render();
			}
			else
			{
				if (is_array($selectedid))
				{
					$selected = iif(in_array($key, $selectedid), ' selected="selected"', '');
				}
				else
				{
					$selected = iif($key == $selectedid, ' selected="selected"', '');
				}
				
				$templater = vB_Template::create('option');
					$templater->register('optionvalue', 	($key !== 'no_value' ? $key : ''));
					$templater->register('optionselected', 	$selected);
					$templater->register('optiontitle', 	($htmlise ? htmlspecialchars_uni($val) : $val));
				$options .= $templater->render();
			}
		}

		return $options;
	}

	
	function construct_forums()
	{
		global $vbulletin, $vbphrase;
		
		if (empty($vbulletin->iforumcache))
		{
			cache_ordered_forums(0, 1);
		}

		$forums = array(0 => $vbphrase['total']);
		foreach ($vbulletin->iforumcache AS $parentid => $forums_arr)
		{
			$forumperms = $vbulletin->userinfo['forumpermissions']["$parentid"];
			if ($parentid == -1
					OR (!($forumperms & $vbulletin->bf_ugp_forumpermissions['canview'])
						AND ($vbulletin->forumcache["$parentid"]['showprivate'] == 1
							OR (!$vbulletin->forumcache["$parentid"]['showprivate'] AND !$vbulletin->options['showprivateforums'])))
					OR !($vbulletin->forumcache["$parentid"]['options'] & $vbulletin->bf_misc_forumoptions['showonforumjump'])
					OR !$vbulletin->forumcache["$parentid"]['displayorder']
					OR !($vbulletin->forumcache["$parentid"]['options'] & $vbulletin->bf_misc_forumoptions['active'])
				)
			{
				continue;
			}
			$forum = $vbulletin->forumcache["$parentid"];
			$forums[$parentid] = $forum['title'];

			foreach ($forums_arr AS $forumid)
			{
				$forumperms = $vbulletin->userinfo['forumpermissions']["$forumid"];
				if ((!($forumperms & $vbulletin->bf_ugp_forumpermissions['canview']) AND ($vbulletin->forumcache["$forumid"]['showprivate'] == 1 OR (!$vbulletin->forumcache["$forumid"]['showprivate'] AND !$vbulletin->options['showprivateforums']))) OR !($vbulletin->forumcache["$forumid"]['options'] & $vbulletin->bf_misc_forumoptions['showonforumjump']) OR !$vbulletin->forumcache["$forumid"]['displayorder'] OR !($vbulletin->forumcache["$forumid"]['options'] & $vbulletin->bf_misc_forumoptions['active']))
				{
					continue;
				}
				else
				{
					$forum = $vbulletin->forumcache["$forumid"];
					$forums[$forumid] = $forum['title'];
				}
			}
		}
		return $forums;
	}
Add the above code to a hook, such as global_start.

Then you can create the the forumjump with:

Code:
$forumjump = createSelectOptions(construct_forums());
This should result in $forumjump having a list of forums available based on forum permissions for the logged-in user. This is for vB4 not vB3 btw.

Untested.
Reply With Quote
 
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.03096 seconds
  • Memory Usage 1,782KB
  • 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
  • (2)bbcode_code
  • (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