Pagina 1 van 1

Blank page mod en tekst groepsafhankelijk maken

Geplaatst: 18 sep 2005, 22:28
door Silas
Na het toevoegen van een blank page lukt het me om daar tekst op te plaatsen die voor een ingelogde user zichtbaar is, maar voor iemand die niet ingelogd is niet. Nu wil ik datzelfde ook doen met stukken content die alleen te zien zijn door gebruikers in een bepaalde groep.

Ik heb e.e.a. aan info uit dit topic gehaald, maar het wil niet werken. Hieronder resp. de testpagina.php en de testpagina.tpl

testpagina.php

Code: Selecteer alles

<?php 

// standard hack prevent 
define('IN_PHPBB', true); 
$phpbb_root_path = './'; 
include($phpbb_root_path . 'extension.inc'); 
include($phpbb_root_path . 'common.'.$phpEx); 

// standard session management 
$userdata = session_pagestart($user_ip, PAGE_TEMPLATE); 
init_userprefs($userdata); 

// hieronder = extra ivm groepherkenning

$sql = "SELECT user_id
   FROM " . USER_GROUP_TABLE . "
   WHERE user_id = " . $userdata['user_id'] . "
   AND group_id = 141
   AND user_pending = 0";
if ( !($result = $db->sql_query($sql)) )
{
   message_die(GENERAL_ERROR, 'Error getting bla', '', __LINE__, __FILE__, $sql);
}

// hierboven = extra ivm groepherkenning

// set page title 
$page_title = 'testpagina'; 

// standard page header 
include($phpbb_root_path . 'includes/page_header.'.$phpEx); 

// assign template 
$template->set_filenames(array( 
        'body' => 'testpagina.tpl') 
); 

$template->pparse('body'); 

// standard page footer 
include($phpbb_root_path . 'includes/page_tail.'.$phpEx); 

?>
testpagina.tpl

Code: Selecteer alles

<HTML>
<BR><BR>

 <!-- BEGIN switch_groups_member -->
<B>Dit zie je als je groepslid én ingelogd bent.</B><BR><BR>
<!-- END switch_groups_member -->

<!-- BEGIN switch_user_logged_in -->
<U>Dit zie je als je ingelogd bent.</U><BR><BR>
<!-- END switch_user_logged_in -->

Dit zie je altijd.<BR><BR>
</HTML>
Het zinnetje "Dit zie je als je groepslid én ingelogd bent." krijg ik niet te zien, zowel als admin als moderator als gewone user+groepslid niet.

Kan iemand mij wat verder helpen? Alvast bedankt!

Geplaatst: 19 sep 2005, 07:30
door Bee
Je maakt nergens de switch aan in de php code, en dan is het logisch dat hij niet gepakt wordt door de parser.

Geplaatst: 19 sep 2005, 07:32
door supperbas
//modderator

Code: Selecteer alles

if ( $userdata['user_level'] == 2 ) 
{



}

//admin

Code: Selecteer alles

if ( $userdata['user_level'] == 1 ) 
{



}
//edit
removed text

Geplaatst: 19 sep 2005, 07:52
door Bee
Dat is niet alles supperbas. Daarnaast is het bij de twee eerste (Moderator en Admin) beter om ADMIN (1) en MOD (2) te gebruiken.

De derde lijkt mij niet te kloppen. User_rank bevat niet de groep waarin je zit, maar het ID van de rank die je hebt.

Geplaatst: 19 sep 2005, 15:19
door supperbas
bee schreef:Dat is niet alles supperbas. Daarnaast is het bij de twee eerste (Moderator en Admin) beter om ADMIN (1) en MOD (2) te gebruiken.

De derde lijkt mij niet te kloppen. User_rank bevat niet de groep waarin je zit, maar het ID van de rank die je hebt.
euh oja
rank was idd fout :oops: maar de andere ware toch wel goed? :?

Geplaatst: 19 sep 2005, 21:03
door Silas
Ik heb nu een paar uurtjes zitten pluizen naar de juiste manier om die switch aan te sturen. Ik begrijp dat er op de plaats van de sterretjes iets moet staan dat dat doet:

Code: Selecteer alles

// hieronder = extra ivm groepherkenning

$sql = "SELECT user_id
   FROM " . USER_GROUP_TABLE . "
   WHERE user_id = " . $userdata['user_id'] . "
   AND group_id = 141
   AND user_pending = 0";
if ( !($result = $db->sql_query($sql)) )
{
   message_die(GENERAL_ERROR, 'Error getting bla', '', __LINE__, __FILE__, $sql);
}

***

// hierboven = extra ivm groepherkenning 
... maar ik kan het niet vinden. Ik heb gezocht in de scripting van groupcp.php omdat bij het bekijken van de groepen op phpbb wordt gecheckt of je een groep mag bekijken.

Ik begrijp dat er hiervoor ook geen kant-en-klare scripts zijn.

Iemand die een stukje code kan geven hiervoor, of hebben we het over meer ingewikkelde ingrepen?

(btw: mijn copyright = in orde, ik geef liever mijn url niet - beheer kan dat via pb checken)

Geplaatst: 20 sep 2005, 21:44
door Silas
Goed, ik heb de mod even opnieuw geïnstalleerd en ik heb blijkbaar iets stevig over het hoofd gezien. :oops: Ik heb geen veranderingen aangebracht zoals in de code in de openingspost staat.

Toch gaat 't niet helemaal zoals ik wil:

Als ik als "gast" testpagina.php bekijk zie ik:
Dit zie je altijd
en dat is de bedoeling

Als ik als inlog en géén groepslid ben zie ik:
Dit zie je als je ingelogd bent.

Dit zie je altijd
en dat is óók de bedoeling

Als ik als inlog en wél groepslid ben zie ik:
Je bent al lid van deze groep
Klik hier om terug te keren naar het groepen overzicht
Klik hier om terug te keren naar de Hoofdpagina
en dan wordt ik geredirect naar de pagina waar ik groepen kan bekijken... dat is niet de bedoeling, graag had ik daar gezien:
Dit zie je als je groepslid én ingelogd bent.

Dit zie je als je ingelogd bent.

Dit zie je altijd
Voor zover ik het begrijp is de groepsherkenning dus in orde, nu nog de juiste pagina-weergave.

Geplaatst: 20 sep 2005, 21:47
door supperbas
zou je je pagina.php in een txt bestan kunne zetten en een link geven en of eventueel via pb

(je moet ik de fille.php editen ik ken de mod en fille niet dus vandaar)

Geplaatst: 20 sep 2005, 22:19
door Silas
De php-file staat in de openingspost, de tekst-template waarnaar verwezen wordt staat er ook.

Wat ik van bee begrijp is dat er een switch-code na de "if... {...}" moet komen, maar ik weet niet hoe die eruit moet zien.

Zoiets dacht ik, maar dat werkt niet:

Code: Selecteer alles

if ( $s_member_groups_opt != '' )
		{
			$template->assign_block_vars('switch_groups_member', array() );
		}

Geplaatst: 20 sep 2005, 22:34
door supperbas
mijn php is neit zo gewelig maar post effe de gehele php fille

Geplaatst: 20 sep 2005, 22:35
door Silas
supperbas schreef:mijn php is neit zo gewelig maar post effe de gehele php fille
Ehm... dat is alles wat ik tot nu toe heb! :shock: :wink:

Geplaatst: 21 sep 2005, 07:25
door Bee
Kijk, deze code maakt een switch aan als de gebruiker is ingelogd. Als je bent ingelogd, zie je wat er tussen de begin en de end staat wel, anders niet. Dit kan je aanpassen:

Code: Selecteer alles

if ( $userdata['user_level'] == ADMIN )
{
	$template->assign_block_vars('switch_user_is_admin', array());
}
Je kan de if-lus aanpassen om andere voorwaarden te stellen om de switch aan te maken.

Geplaatst: 21 sep 2005, 08:32
door Silas
Dank je! Ik ga er vanavond eens mee aan de slag! :D

Geplaatst: 21 sep 2005, 22:27
door Silas
Heb nu de hele avond ge-trial-and-errored... ik krijg 't niet voor elkaar. :? Op zich werkt de switch, dat heb ik gecontroleerd door de user_id (getal dus) te vermelden achter de ==. Het lukt me alleen niet de variabelen zo te krijgen dat controle lukt op de vraag of de ingelogde user in de group_table vermeld staat bij group 212. Wat heb ik nu:

Code: Selecteer alles

$sql = "SELECT user_id
   FROM " . USER_GROUP_TABLE . "
   WHERE user_id = " . $userdata['user_id'] . "
   AND group_id = 212 ";

if ( !($result = $db->sql_query($sql)) )
{
   message_die(GENERAL_ERROR, 'Error getting groepsinfo', '', __LINE__, __FILE__, $sql);
}

if ( $userdata['user_id'] == 212 )
{
   $template->assign_block_vars('switch_groups_member', array());
}
De vraag is dus:
Hoe zet ik hier ...

Code: Selecteer alles

if ( $userdata['user_id'] == 212 )
... neer:

Code: Selecteer alles

if ("bij groep nummer 212 moet de "ingelogde user" vermeld staan in de tabel")

Geplaatst: 22 sep 2005, 15:51
door Bee
Dit werkt hopelijk wel.

Code: Selecteer alles

	$sql = "SELECT u.username, u.user_id 
		FROM " . USERS_TABLE . " u, " . USER_GROUP_TABLE . " ug
		WHERE ug.group_id = 212
			AND u.user_id = ug.user_id
			AND ug.user_pending = 0 
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Error getting user list for group', '', __LINE__, __FILE__, $sql);
	}

	$group_members = $db->sql_fetchrowset($result); 
	$members_count = count($group_members);
	$db->sql_freeresult($result);

	$is_group_member = 0;
	if ( $members_count )
	{
		for($i = 0; $i < $members_count; $i++)
		{
			if ( $group_members[$i]['user_id'] == $userdata['user_id'] && $userdata['session_logged_in'] )
			{
				$is_group_member = TRUE; 
			}
		}
	}
en dan dit:

Code: Selecteer alles

if ( $is_group_member == TRUE ) 
{ 
   $template->assign_block_vars('switch_user_is_admin', array()); 
}

Geplaatst: 22 sep 2005, 18:24
door Silas
Wow... :shock: zo'n lap php had ik niet kunnen maken.

't Gaat nog niet vlekkeloos:
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /data/www/blabla/testpagina.php on line 35
Line 35:

Code: Selecteer alles

if ( $group_members[$i]['user_id'] == $userdata['user_id'] && $userdata['session_logged_in'] )

Geplaatst: 22 sep 2005, 19:24
door Silas
OK, even e.e.a. uitgeprobeerd.

Er bleek in plaats van:

Code: Selecteer alles

AND ug.user_pending = 0 
te moeten staan:

Code: Selecteer alles

AND ug.user_pending = 0 ";
Bedankt voor de support! Deze mogelijkheid gaat op deze manier voor de gebruikers van de site die ik (mede) behere een hoop extra mogelijkheden krijgen. :bier: Drink ik eentje op.

Geplaatst: 22 sep 2005, 19:41
door Silas
Omdat het misschien ook voor anderen een handige mod op een mod is, hieronder even de dingen op een rij.

Functie mod-mod: op de Blank Page Mod het verschijnen van tekst afhankelijk laten zijn van:
- is een gebruiker admin
- is een gebruiker moderator
- is een gebruiker ingelogd
- is een gebruiker groepslid

Credits
Blank Page Template: Brent Upton
Bewerking: bee

Pagina template.php:

Code: Selecteer alles

<?php 

// standard hack prevent 
define('IN_PHPBB', true); 
$phpbb_root_path = './'; 
include($phpbb_root_path . 'extension.inc'); 
include($phpbb_root_path . 'common.'.$phpEx); 

// standard session management 
$userdata = session_pagestart($user_ip, PAGE_template); 
init_userprefs($userdata); 

// hieronder *** vervangen door het nummer van de groep
   $sql = "SELECT u.username, u.user_id
      FROM " . USERS_TABLE . " u, " . USER_GROUP_TABLE . " ug
      WHERE ug.group_id = ***
         AND u.user_id = ug.user_id
         AND ug.user_pending = 0";
   if ( !($result = $db->sql_query($sql)) )
   {
      message_die(GENERAL_ERROR, 'Error getting user list for group', '', __LINE__, __FILE__, $sql);
   }

   $group_members = $db->sql_fetchrowset($result);
   $members_count = count($group_members);
   $db->sql_freeresult($result);

   $is_group_member = 0;
   if ( $members_count )
   {
      for($i = 0; $i < $members_count; $i++)
      {
          if ( $group_members[$i]['user_id'] == $userdata['user_id'] && $userdata['session_logged_in'] ) 
         {
            $is_group_member = TRUE;
         }
      }
   }

if ( $is_group_member == TRUE )
{
   $template->assign_block_vars('switch_groups_member', array());
}

if ( $userdata['user_level'] == ADMIN )
{
   $template->assign_block_vars('switch_user_is_admin', array());
}

if ( $userdata['user_level'] == MOD )
{
   $template->assign_block_vars('switch_user_is_moderator', array());
} 

// set page title 
$page_title = 'template'; 

// standard page header 
include($phpbb_root_path . 'includes/page_header.'.$phpEx); 

// assign template 
$template->set_filenames(array( 'body' => 'template.tpl' )); 

$template->pparse('body'); 

// standard page footer 
include($phpbb_root_path . 'includes/page_tail.'.$phpEx); 

?>
Pagina template.tpl

Code: Selecteer alles

<BR><BR>

<!-- BEGIN switch_groups_member -->
<B>Dit zie je als je groepslid én ingelogd bent.</B><BR><BR>
<!-- END switch_groups_member -->

<!-- BEGIN switch_user_logged_in -->
<U>Dit zie je als je ingelogd bent.</U><BR><BR>
<!-- END switch_user_logged_in -->

<!-- BEGIN switch_user_is_admin -->
<I>Dit ziet de ADMIN.</I><BR><BR>
<!-- END switch_user_is_admin -->

<!-- BEGIN switch_user_is_moderator -->
<I>Dit ziet de MODERATOR.</I><BR><BR>
<!-- END switch_user_is_moderator -->

Dit zie je altijd.<BR><BR>

Geplaatst: 22 sep 2005, 19:48
door Bee
De HTML tag is niet nodig, omdat de overall_header en de overall_footer worden ingeladen.

Geplaatst: 22 sep 2005, 19:50
door Silas
Aldus! Bedankt bee!