Groep uitsluiten van pagina

Hulp nodig bij een modificaties of op zoek naar een MOD?
Forumregels

LEES: Richtlijnen voor Support. Vul de support template in!
phpBB3.0.x
Verschaf iemand geen servertoegang tenzij het niet anders kan. Maak altijd eerst een volledige backup en verander de inloggevens na afloop. Eigen risico.
Plaats reactie
Gebruikersavatar
Jeroen
Berichten: 3639
Lid geworden op: 10 mei 2008, 21:22

Groep uitsluiten van pagina

Bericht door Jeroen » 16 apr 2009, 19:05

  • Adres van je forum: http://
    Event. modificaties op je forum: nvt
    Wanneer ontstond het probleem? nvt
    phpBB versie: 3.0.3

    Heb je onlangs iets veranderd aan je forum? nvt
    Wat is het probleem?
Hallo,

Ik wil graag een bepaalde groep uitsluiten van een pagina.
Heb al gezien dat je dat met een $auth->acl_get ding moet doen.

Welke code moet ik gebruiken om een bepaalde gebruikersgroep een pagina niet op te laten gaan. Dat ze dan een bericht krijgen met dat ze geen permissies hebben. Ik heb namelijk een AJAX chat (van Handyman) op mijn forum, en nu wil ik een gebruikersgroep maken met leden die "verbannen" zijn uit de chat. Dus dat als iemand in die groep zit, hij te zien krijgt: Je bent verbannen van de chat, of je hebt geen permissies als diegene de chat binnen probeert te komen.
Jeroen

Gebruikersavatar
Jeroen
Berichten: 3639
Lid geworden op: 10 mei 2008, 21:22

Re: Groep uitsluiten van pagina

Bericht door Jeroen » 18 apr 2009, 15:57

Ik heb nu het volgende gedaan:

In chat.php heb ik dit toegevoegd:

Code: Selecteer alles

// The ids of the allowed groups
$allowed = array(9,5);       // These are the group id's if more than one use comma between numbers

// See whether the user is member of one of these groups
$sql = 'SELECT user_id
    FROM ' . USER_GROUP_TABLE . '
    WHERE ' . $db->sql_in_set('group_id', $allowed) . '
          AND user_id = '  . $user->data['user_id'];
$result = $db->sql_query_limit($sql, 1, 0);
if (!$data = $db->sql_fetchfield('user_id', false, $result))
{
    trigger_error('NO_ACCESS');
}

// The user group can see this page! 
en in includes/functions.php dit

Code: Selecteer alles

   // sets group id's to S_GROUP_
   
   if ( !function_exists('group_memberships') )
    {
        include($phpbb_root_path . 'includes/functions_user.'.$phpEx);
    }
    $groups = group_memberships(false,$user->data['user_id']);
    foreach ($groups as $grouprec)
    {
        $template->assign_vars(array(
        'S_GROUP_' . $grouprec['group_id'] => true
        ));
    } 
en dan ergens op de chat_body.html dit (maar weet niet waar, graag uitleg)

Code: Selecteer alles

<!-- IF S_GROUP_11 -->
Met deze codes heeft iedereen die niet in die groep zit geen toegang tot de chat. Maar wat ik wil is dat iedereen die wel in die groep zit geen toegang heeft.

Hoe doe ik dat, en waar op chat_body.html moet ik die IF neerzetten?
Jeroen

Jim
Berichten: 3900
Lid geworden op: 21 feb 2007, 14:53
Locatie: Groningen
Contacteer:

Re: Groep uitsluiten van pagina

Bericht door Jim » 18 apr 2009, 16:02

Maak er dan dit van:

Code: Selecteer alles

<!-- IF not S_GROUP_11 -->
Jim Mossing Holsteyn - Beheerder
Documentatie | Algemene voorwaarden | Wiki

Heb je suggesties over het verbeteren van phpBB.nl of andere site-gerelateerde vragen? Stuur me een PB!

Gebruikersavatar
Jeroen
Berichten: 3639
Lid geworden op: 10 mei 2008, 21:22

Re: Groep uitsluiten van pagina

Bericht door Jeroen » 18 apr 2009, 16:03

Oke bedankt, en waar op de chat_body.html zal ik die IF zetten?
Dit is chat_body.html

Code: Selecteer alles

<!-- IF S_GET_CHAT -->
	<!-- IF S_READ or S_ADD -->
		<!-- BEGIN chatrow -->
			<div id="p{chatrow.MESSAGE_ID}" class="post bg{chatrow.CLASS}">
				<div class="inner"><span class="corners-top"><span></span></span>
					<div class="postbody">
						<p class="author">{chatrow.TIME} </p>
						
						<div class="content">{chatrow.MESSAGE}</div>
					</div>
					<dl class="postprofile" id="profile{postrow.POST_ID}">
						<dt>{chatrow.USERNAME_FULL}</dt>
					</dl>
						<!-- IF U_ACP or U_MCP -->
							<ul class="profile-icons postprofile">
								<li class="delete-icon">
									<a href="javascript:void({chatrow.MESSAGE_ID})" title="{L_DELETE_POST}" onclick="delete_post('{chatrow.MESSAGE_ID}')"><span>{L_DELETE_POST}</span></a>
								</li>
							</ul>
						<!-- ENDIF -->
					<span class="corners-bottom"><span></span></span>
				</div>
			</div>
		<!-- END chatrow -->---{LAST_ID}
		<!-- IF S_WHOISONLINE -->---
			
				|
				<!-- BEGIN whoisrow -->
						
							<img src="{T_IMAGESET_PATH}/{whoisrow.USER_STATUS}.png" class="online_img" /> {whoisrow.USERNAME_FULL} | 
							
					<!-- END whoisrow -->
			---{LAST_TIME}---{DELAY}---{LAST_POST}
		<!-- ENDIF -->
	<!-- ENDIF -->
<!-- ELSE -->
	<!-- IF S_CHAT -->
		<!-- INCLUDE overall_header.html -->
		
<center>
</center>
    <span class="corners-bottom"><span></span></span></div>
</div>

	<!-- ENDIF -->
	<script type="text/javascript">
	<!--
	var fieldname = 'chat';
	var last_time = 0;
	var xmlHttp = http_object();
	var last_id = {LAST_ID};
	var type = 'receive';
	var post_time = {TIME};
	var read_interval = 30000;
	var interval = setInterval('handle_send("read", last_id);', read_interval);

	function handle_send(mode, f)
	{
		if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
		{
			indicator_switch('on');
			type = 'receive';
			param = 'mode=' + mode;	
			param += '&last_id=' + last_id;
			param += '&last_time=' + last_time;			
			param += '&last_post=' + post_time;			
			param += '&read_interval=' + read_interval;			
	
			if (mode == 'add' && document.postform.message.value != '')
			{
				type = 'send';
				for(var i = 0; i < f.elements.length; i++)
				{ 
					elem = f.elements[i]; 
					param += '&' + elem.name + '=' + encodeURIComponent(elem.value); 
				}
				document.postform.message.value = '';
			}
			else if (mode == 'delete')
			{
				type = 'delete';
				param += '&chat_id=' + f;
				
			}
			xmlHttp.open("POST", '{FILENAME}', true);
			xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
			xmlHttp.onreadystatechange = handle_return;
			xmlHttp.send(param);
		}
	}
	
	function handle_return()
	{
		if (xmlHttp.readyState == 4)
		{
			if (type != 'delete')
			{
				results = xmlHttp.responseText.split('---');
				if (results[1])
				{
					if (last_id == 0)
					{
						document.getElementById(fieldname).innerHTML = results[0];
					}
					else
					{
						document.getElementById(fieldname).innerHTML = results[0] + document.getElementById(fieldname).innerHTML;
					}
					last_id = results[1];
					if (results[2])
					{
						document.getElementById('whois_online').innerHTML = results[2];
						last_time = results[3];
						if (results[4] != read_interval * 1000)
						{
							window.clearInterval(interval);
							read_interval = results[4] * 1000;
							interval = setInterval('handle_send("read", last_id);', read_interval);
							document.getElementById('update_seconds').innerHTML = results[4];
						}
						post_time = results[5];
					}
				}
			}
			indicator_switch('off');
		}
	}
	
	function delete_post(chatid)
	{
		document.getElementById('p' + chatid).style.display = 'none';
		handle_send('delete', chatid);
	}
	
	function indicator_switch(mode)
	{
		if(document.getElementById("act_indicator"))
		{
			var img = document.getElementById("act_indicator");	
			if(img.style.visibility == "hidden" && mode == 'on') 
			{
				img.style.visibility = "visible";
			}
			else if (mode == 'off')
			{
				img.style.visibility = "hidden"
			}	
		}
	}
	
	function http_object()
	{
		if (window.XMLHttpRequest)
		{
			return new XMLHttpRequest();
		}
		else if(window.ActiveXObject)
		{
			return new ActiveXObject("Microsoft.XMLHTTP");
		}
		else
		{
			document.getElementById('p_status').innerHTML = 'Status: Cound not create XmlHttpRequest Object.  Consider upgrading your browser.';
		}
	}
	-->
	</script>
	<style type="text/css">
	<!--
		#act_indicator {
			visibility:hidden;
		}
		.shouts {
			width: 80%;
			height:550px;
			overflow:auto;
			float:left;
		}
		#chat {
			width: 100%;
			text-align:left;
		}
		.postprofile {
			min-height: 5px !important;
		}
		.chatform {
			width: 90%;
			text-align:center;
		}
		.onlinelist {
			width: 15%;
			overflow:auto;
			height:300px;
		}
		.users {
			width: 90%;
			text-align: left;
			text-indent: 5px;
			margin-left:auto;
			margin-right:auto;
		}
		.user {
			width: 95%;
			font-size: 1.1em;
			font-family:Verdana, Arial, Helvetica, sans-serif;
			line-height: 1.4em;
		}
		#act_indicator {
			visibility: hidden;
		}
		.chatinput {width: 80% !important;}
		.online_img {
			vertical-align:middle;
		}
		.whoonlinelist {
			width: 100%;
			overflow:auto;
			height:auto;
			text-align:center;
		}
	-->
	</style>
	<!-- IF S_USER_LOGGED_IN -->
		<div class="forabg">
			<div class="inner">
				<span class="corners-top"><span></span></span>
				<div class="chatform" align="center">	
				
					<!-- INCLUDE posting_buttons.html -->	
					
			 
					<form name="postform" id="postform" method="post" action="javascript:void(0);" onsubmit="handle_send('add', this)" autocomplete="off">
						<strong style="color: #44551f;">{L_MESSAGE}:</strong> <input type="text" tabindex="1" name="message" id="message"  class="inputbox chatinput" />
						<input type="submit" class="button1" value="{L_SUBMIT}" name="submit" tabindex="6" accesskey="s"/><br />
					</form>
				</div>
				<span class="corners-bottom"><span></span></span>
			</div>
		</div>
	<!-- ENDIF -->
	<div class="forabg" align="left">
		<div class="inner">
			<span class="corners-top"><span></span></span>
			<div class="shouts">
				<div id="chat">
					<!-- BEGIN chatrow -->
						<div id="p{chatrow.MESSAGE_ID}" class="post bg{chatrow.CLASS}">
							<div class="inner"><span class="corners-top"><span></span></span>
								<div class="postbody">
									<p class="author">{chatrow.TIME} </p>
									
									<div class="content">{chatrow.MESSAGE}</div>
								</div>
								<dl class="postprofile" id="profile{postrow.POST_ID}">
									<dt>{chatrow.USERNAME_FULL}</dt>
								</dl>
									<!-- IF U_ACP or U_MCP -->
										<ul class="profile-icons postprofile">
											<li class="delete-icon">
												<a href="javascript:void({chatrow.MESSAGE_ID})" title="{L_DELETE_POST}" onclick="delete_post('{chatrow.MESSAGE_ID}')"><span>{L_DELETE_POST}</span></a>
											</li>
										</ul>
									<!-- ENDIF -->
								<span class="corners-bottom"><span></span></span>
							</div>
						</div>
					<!-- END chatrow -->
				</div>
			</div>
			<div class="onlinelist bg1">
				<div class="users">
					
						<div>
							<div class="inner">
								<div class="user"><!-- IF S_SMILIES_ALLOWED and .smiley --><br>
				<!-- BEGIN smiley -->
				<a href="#" onclick="insert_text('{smiley.A_SMILEY_CODE}', true); return false;"><img src="{smiley.SMILEY_IMG}" width="{smiley.SMILEY_WIDTH}" height="{smiley.SMILEY_HEIGHT}" alt="{smiley.SMILEY_CODE}" title="{smiley.SMILEY_DESC}" /></a>
			<!-- END smiley -->
		<!-- ENDIF -->
		<!-- IF S_SHOW_SMILEY_LINK and S_SMILIES_ALLOWED-->
			<br /><a href="{U_MORE_SMILIES}" onclick="window.open('{U_MORE_SMILIES}', '_phpbbsmilies', 'HEIGHT=350,resizable=yes,scrollbars=yes,WIDTH=300'); return false;">{L_MORE_SMILIES}</a>
		<!-- ENDIF --><!-- IF BBCODE_STATUS -->
		<!-- IF .smiley --><hr /><!-- ENDIF -->
		{BBCODE_STATUS}<br />
		<!-- IF S_BBCODE_ALLOWED -->
			{IMG_STATUS}<br />
			{FLASH_STATUS}<br />
			{URL_STATUS}<br />			
		<!-- ENDIF -->
{SMILIES_STATUS}
		<!-- ENDIF --></div>
							</div>
						</div>
					
				</div>
			</div>
			<span class="corners-bottom"><span></span></span>
		</div>
	</div>
	<div class="forabg">
			<div class="inner">
				<span class="corners-top"><span></span></span>
				<div class="whoonlinelist bg1" id="whois_online">
											|
				<!-- BEGIN whoisrow -->
						
							<img src="{T_IMAGESET_PATH}/{whoisrow.USER_STATUS}.png" class="online_img" /> {whoisrow.USERNAME_FULL} | 
							
					<!-- END whoisrow -->
				</div>
				
				<span class="corners-bottom"><span></span></span>
			</div>
		</div>
	<div class="forabg" align="center">
		<div class="inner">
			<span class="corners-top"><span></span></span>
			<div class="post">
				<div id="author">{L_DETAILS}
					<img src="{T_IMAGESET_PATH}/act_indicator.gif" id="act_indicator" />
					<strong>• {L_UPDATES} <span id="update_seconds">{DELAY}</span> {L_UNIT}</strong>
				</div>
			</div>
			<span class="corners-bottom"><span></span></span>
		</div>
	</div>
	<!-- IF S_CHAT -->
		<!-- INCLUDE overall_footer.html -->
	<!-- ENDIF -->
<!-- ENDIF -->
Als ik de IF bovenaan en de endif onderaan de pagina plaats, krijg ik een blanke pagina :(
Waar moet ik hem zetten en wat kan er fout zijn?
Laatst gewijzigd door Paul op 18 apr 2009, 19:41, 2 keer totaal gewijzigd.
Reden: Aangezien dit tot een modificatie uitloopt, verplaatst ik dit topic naar modificaties.
Jeroen

Gebruikersavatar
Paul
Beheerder
Beheerder
Berichten: 20316
Lid geworden op: 23 okt 2003, 11:38
Locatie: Utrecht
Contacteer:

Re: Groep uitsluiten van pagina

Bericht door Paul » 18 apr 2009, 19:41

Graag niet dubbelposten, maar je vorige bericht bewerken. Ik heb je posts nu samengevoegd.

Gebruikersavatar
Derky
Berichten: 4466
Lid geworden op: 07 apr 2005, 16:24
Locatie: Nederland
Contacteer:

Re: Groep uitsluiten van pagina

Bericht door Derky » 18 apr 2009, 22:08

<!-- IF S_GET_CHAT and not S_GROUP_11 -->

Gebruikersavatar
Jeroen
Berichten: 3639
Lid geworden op: 10 mei 2008, 21:22

Re: Groep uitsluiten van pagina

Bericht door Jeroen » 18 apr 2009, 23:27

Derky, met die code kan je als je geen toegang zou moeten hebben de chat alsnog in....
Heb het dus geprobeerd maar met die code werkt het niet.
Wijziging: Als ik het op een andere nieuw toegevoegde pagina probeer lukt het wel.... Het ligt dus aan de plaats van de IF in de chat.php denk ik....
Jeroen

Plaats reactie