Blank page mod en tekst groepsafhankelijk maken

Hulp nodig bij een modificaties of op zoek naar een MOD? Bekijk ons archief. Support wordt helaas niet meer verleend.
Forumregels

Sinds 1 januari 2009 wordt phpBB2 niet meer ondersteund.
Onderstaande informatie is verouderd en dient uitsluitend als archief.
phpBB2.0.x
Gesloten
Silas
Berichten: 53
Lid geworden op: 31 dec 2003, 10:52

Blank page mod en tekst groepsafhankelijk maken

Bericht door Silas » 18 sep 2005, 22:28

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!

Gebruikersavatar
Bee
Berichten: 13403
Lid geworden op: 29 aug 2004, 10:30

Bericht door Bee » 19 sep 2005, 07:30

Je maakt nergens de switch aan in de php code, en dan is het logisch dat hij niet gepakt wordt door de parser.
... Maar ik modereer (nog) niet.

Gebruikersavatar
supperbas
Berichten: 389
Lid geworden op: 05 jun 2005, 10:02
Locatie: zeeland
Contacteer:

Bericht door supperbas » 19 sep 2005, 07:32

//modderator

Code: Selecteer alles

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



}

//admin

Code: Selecteer alles

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



}
//edit
removed text
Laatst gewijzigd door supperbas op 19 sep 2005, 15:19, 1 keer totaal gewijzigd.

Gebruikersavatar
Bee
Berichten: 13403
Lid geworden op: 29 aug 2004, 10:30

Bericht door Bee » 19 sep 2005, 07:52

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.
... Maar ik modereer (nog) niet.

Gebruikersavatar
supperbas
Berichten: 389
Lid geworden op: 05 jun 2005, 10:02
Locatie: zeeland
Contacteer:

Bericht door supperbas » 19 sep 2005, 15:19

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? :?

Silas
Berichten: 53
Lid geworden op: 31 dec 2003, 10:52

Bericht door Silas » 19 sep 2005, 21:03

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)

Silas
Berichten: 53
Lid geworden op: 31 dec 2003, 10:52

Bericht door Silas » 20 sep 2005, 21:44

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.

Gebruikersavatar
supperbas
Berichten: 389
Lid geworden op: 05 jun 2005, 10:02
Locatie: zeeland
Contacteer:

Bericht door supperbas » 20 sep 2005, 21:47

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)

Silas
Berichten: 53
Lid geworden op: 31 dec 2003, 10:52

Bericht door Silas » 20 sep 2005, 22:19

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() );
		}

Gebruikersavatar
supperbas
Berichten: 389
Lid geworden op: 05 jun 2005, 10:02
Locatie: zeeland
Contacteer:

Bericht door supperbas » 20 sep 2005, 22:34

mijn php is neit zo gewelig maar post effe de gehele php fille

Silas
Berichten: 53
Lid geworden op: 31 dec 2003, 10:52

Bericht door Silas » 20 sep 2005, 22:35

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:

Gebruikersavatar
Bee
Berichten: 13403
Lid geworden op: 29 aug 2004, 10:30

Bericht door Bee » 21 sep 2005, 07:25

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.
... Maar ik modereer (nog) niet.

Silas
Berichten: 53
Lid geworden op: 31 dec 2003, 10:52

Bericht door Silas » 21 sep 2005, 08:32

Dank je! Ik ga er vanavond eens mee aan de slag! :D

Silas
Berichten: 53
Lid geworden op: 31 dec 2003, 10:52

Bericht door Silas » 21 sep 2005, 22:27

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")

Gebruikersavatar
Bee
Berichten: 13403
Lid geworden op: 29 aug 2004, 10:30

Bericht door Bee » 22 sep 2005, 15:51

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()); 
}
... Maar ik modereer (nog) niet.

Silas
Berichten: 53
Lid geworden op: 31 dec 2003, 10:52

Bericht door Silas » 22 sep 2005, 18:24

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'] )

Silas
Berichten: 53
Lid geworden op: 31 dec 2003, 10:52

Bericht door Silas » 22 sep 2005, 19:24

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.

Silas
Berichten: 53
Lid geworden op: 31 dec 2003, 10:52

Bericht door Silas » 22 sep 2005, 19:41

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>
Laatst gewijzigd door Silas op 22 sep 2005, 20:20, 3 keer totaal gewijzigd.

Gebruikersavatar
Bee
Berichten: 13403
Lid geworden op: 29 aug 2004, 10:30

Bericht door Bee » 22 sep 2005, 19:48

De HTML tag is niet nodig, omdat de overall_header en de overall_footer worden ingeladen.
... Maar ik modereer (nog) niet.

Silas
Berichten: 53
Lid geworden op: 31 dec 2003, 10:52

Bericht door Silas » 22 sep 2005, 19:50

Aldus! Bedankt bee!

Gesloten