Istruzioni condizionali e phpBB

Regole del forum
ATTENZIONE! QUESTA SEZIONE E' STATA BLOCCATA !!
Avatar utente
slash
UtenteGold
UtenteGold
Messaggi: 1128
Iscritto il: 02/12/2011, 14:35
Versione: 3.0.10
Seo: Si
Server: UNIX/Linux
Php: 5.3.10
Database: MySQL 5.5.13-enterprise-commercial-advanced-log

Istruzioni condizionali e phpBB

Messaggio da slash » 19/01/2012, 13:38

Nella programmazione, per deviare il flusso delle scelte (ad esempio per scegliere tra l'opzione A e l'opzione B) basta porre delle condizioni che, se verificate, eseguono un pezzo di codice o altrimenti ne eseguono un altro; queste istruzioni particolari che permettono di incanalare il flusso si chiamano strutture di controllo condizionale o, più genericamente, istruzioni condizionali.

Vediamo ora nello specifico le istruzioni condizionali utilizzate più frequentemente in phpBB:

<!-- IF S_USER_LOGGED_IN --> Se l' utente è loggato
<!-- IF S_REGISTERED_USER --> Se l'utente è loggato e non è un bot
<!-- IF S_AUTOLOGIN_ENABLED --> Se l' autologin è abilitato
<!-- IF S_BOARD_DISABLED --> Se la board è disabilitata
<!-- IF S_IS_BOT --> Se è un bot
<!-- IF S_USER_PM_POPUP --> Se l avviso pop-up dei PM è attivo
<!-- IF S_DISPLAY_SEARCH --> Se si sta visualizzando la pagina "cerca"
<!-- IF S_DISPLAY_PM --> Se si sta visualizzando la pagina dei PM
<!-- IF S_USER_UNREAD_PRIVMSG --> Se l'utente ha PM non letti
<!-- IF S_DISPLAY_MEMBERLIST --> Se si sta visualizzando la pagina memberlist.php
<!-- IF U_MCP --> Se è un moderatore
<!-- IF U_ACP --> Se è un amministratore
<!-- IF S_IS_LINK --> Se è un Link
<!-- IF S_UNREAD_FORUM --> Se il forum non è letto
<!-- IF S_READ_FORUM --> Se il forum è letto
<!-- IF S_LOCKED_FORUM --> Se il forum è chiuso
<!-- IF S_LIST_SUBFORUMS --> Se è presente la lista dei subforum
<!-- IF S_SUBFORUMS --> Se è un subforum
<!-- IF S_IS_CAT --> Se è una categoria
<!-- IF S_IS_POST --> Se è un Post
<!-- IF FORUM_ID eq N°ID--> Visualizza il contenuto dell IF se l ID del forum è uguale a N°ID
<!-- IF SCRIPT_NAME == "pagina" --> Visualizza il contenuto dell IF se la pagina mostrato o la parte di essa comprende "pagina".
<!-- IF S_USERNAME eq "Username" --> Visualizza il contenuto dell IF se si è connessi come "Username"

Tutti gli operatori condizionali vanno chusi dal "tag

Codice: Seleziona tutto

<!-- ENDIF -->
Alcuni esempi:

Codice: Seleziona tutto

<!-- IF S_USER_LOGGED_IN -->Benvenuto<!-- ENDIF -->
Questo codice visualizzerà la parola "Benvenuto" solo se l utente è loggato.

Codice: Seleziona tutto

<!-- IF S_DISPLAY_PM -->sei nella pagina dei messaggi privati<!-- ENDIF -->
la frase: sei nella pagina dei messaggi privati viene visualizzata solo se si è nella pagina dei PM.

Abbinare altre istruzioni condizionali all IF:

Oltre che al semplice IF (si non lo ancora detto, ma penso sappiate tutti che IF in inglese voglia dire SE XD) esistono altri operatori che possono essere abbinati a quest'ultimo per creare operazioni più complesse.

Vediamo i più importanti:

ELSE: Può essere tradotto come "altrimenti" e indica l' azione da compiere se quella precedente non si verifica.

esempio:

Codice: Seleziona tutto

<!-- IF S_USER_LOGGED_IN -->Benvenuto utente registrato<!-- ELSE -->Benvenuto ospite<!-- ENDIF -->
Questa stringa mostrerà agli utenti loggati la dicitura: "Benvenuto utente registrato", mentre mostrerà la dicitura: "Benvenuto ospite", a quelli non loggati.

NOT: Il suo significato è non e va abbinato all'interno del tag IF. Serve per ottenere l inversione dell'IF.

Esempio:

Codice: Seleziona tutto

<!-- IF S_IS_BOT --> Ciao Bot  <!--ENDIF-->
Questa stringa mostra la dicitura: Ciao Bot ai soli bot.

Codice: Seleziona tutto

<!-- IF not S_IS_BOT--> Ciao Utente <!--ENDIF-->
Questa invece grazie alla presenza di "not" mostra la scritta "Ciao utente" a tutti gli utenti che non siano Bot.

AND: Serve per abbinare più condizioni all' interno dello stesso IF

Esempio:

Codice: Seleziona tutto

<!--IF S_DISPLAY_SEARCH and S_USER_LOGGED_IN -->Sei nella pagina di ricerca utente connesso<!--ENDIF-->
Questa score mostrerà nella pagina di ricerca la scritta: "Sei nella pagina di ricerca utente connesso" ai soli utenti connessi grazie all unione di 2 condizioni tramite il "tag" end.

EQ: è la forma contratta di equivalent ed indica e fa si che l'if si verifichi solo se un determinato dato è uguale a quello presente nel IF.

Esempio:

Poniamo di avere il nostro forum delle presentazioni all'indirizzo:

Codice: Seleziona tutto

http://www.nome sito.com/viewforum.php?f=3
come potete vedere dall'url è contraddistinto dal valore 3

per cui il seguente codice mostrerà la dicitura "sei nel forum delle presentazioni" solo se l'ID del forum corrisponderà a 3.

Codice: Seleziona tutto

<!-- IF FORUM_ID eq 3 -->sei nel forum delle presentazioni<!-- ENDIF -->
Or: Serve per unire 2 condizioni diverse e non va confuso con ELSE

Esempio:

Codice: Seleziona tutto

<!-- IF FORUM_ID eq 3 or 5 -->sei nel forum con id  3 o 5<!-- ENDIF -->
la dicitura "sei nel forum con id 3 o 5" compare solo nei forum con id 3 o 5.

Potete abbinare e giocare con tutti questi tag per ottenere i risultati che più vi aggradano.
[center]Se ti sono stato utile 1000 euro su paypal o lascia un Grazie!

Immagine[/center]

Avatar utente
Tiger
Amministratore
Amministratore
Messaggi: 2611
Iscritto il: 02/11/2011, 1:19
Versione: 3.2.X
Seo: Si
Server: UNIX/Linux
Php: 5.4.31
Database: MySQL(i) 5.1.60-community-log
Località: Roma

Re: Istruzioni condizionali e phpBB

Messaggio da Tiger » 19/01/2012, 13:41

Grande mi serviva collega! XD!
Immagine

Avatar utente
Barrnet
UtenteExpert
UtenteExpert
Messaggi: 155
Iscritto il: 05/01/2012, 5:25
Versione: 3.0.10
Seo: Si
Server: UNIX/Linux

Re: Istruzioni condizionali e phpBB

Messaggio da Barrnet » 26/01/2012, 20:57

Ti ho corretto alcuni errori di battitura e... l'uso dell'H :D
Comunque come guida è davvero ben fatta, potresti pubblicarla su phpbbitalia inserendo le fonti di bbcodeitalia.com ;)

Avatar utente
Tiger
Amministratore
Amministratore
Messaggi: 2611
Iscritto il: 02/11/2011, 1:19
Versione: 3.2.X
Seo: Si
Server: UNIX/Linux
Php: 5.4.31
Database: MySQL(i) 5.1.60-community-log
Località: Roma

Re: Istruzioni condizionali e phpBB

Messaggio da Tiger » 26/01/2012, 21:07

Hai ragione Barrnet,bell'idea,per le fonti non importa,l'importante e' che sia utile agli utenti.
Immagine

Avatar utente
slash
UtenteGold
UtenteGold
Messaggi: 1128
Iscritto il: 02/12/2011, 14:35
Versione: 3.0.10
Seo: Si
Server: UNIX/Linux
Php: 5.3.10
Database: MySQL 5.5.13-enterprise-commercial-advanced-log

Re: Istruzioni condizionali e phpBB

Messaggio da slash » 26/01/2012, 23:25

Grazie barrnet! l ho scritta di fretta..XD

Su phpbb italia dopo l ultima volta mi spiace ma non va nulla di mio.. ;)
[center]Se ti sono stato utile 1000 euro su paypal o lascia un Grazie!

Immagine[/center]

Avatar utente
tuxmax
UtenteExpert
UtenteExpert
Messaggi: 999
Iscritto il: 10/02/2012, 21:32
Versione: 3.0.11
Seo: Si
Server: UNIX/Linux
Php: 5.3.8
Database: MySQL 5.1.49-community-log

Re: Istruzioni condizionali e phpBB

Messaggio da tuxmax » 22/02/2012, 12:39

Azz...bravo hash non l'avevo vista ancora, me la copio immediatamente.... ;)

Grazie.
[center]Immagine[/center]

Avatar utente
systemcrack
Utente
Utente
Messaggi: 149
Iscritto il: 22/09/2013, 17:57
Versione: 3.0.12
Seo: No
Server: UNIX/Linux

Re: Istruzioni condizionali e phpBB

Messaggio da systemcrack » 18/02/2014, 12:32

E' interessante la questione, ma non riesco a farla andare con gli id dei gruppi d'utenza.. cioè vorrei che alcuni gruppi visualizzino alcune cose ed altri altre (giocando appunto con gli IF).. in proposito leggevo anche una discussione qui in cui viene spiegato come fare.. ma quando faccio la prova non va.. .........? cioè il blocco continuo a visualizzarlo sebbene stia provando i permessi di un utente che fa parte del gruppo che non dovrebbe vederlo.

In pratica nel file include/function.php ho inserito questo:

Codice: Seleziona tutto

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
   ));
   }
Poi nel file interessato che in questo caso per me è sidebar_right.html ho provato sia così:

Codice: Seleziona tutto

<!-- IF not S_GROUP_11 -->
che così:

Codice: Seleziona tutto

<!-- IF S_GROUP_5 or S_GROUP_8 or S_GROUP_4 or S_GROUP_1 or S_GROUP_9 or S_GROUP_7 or S_GROUP_2 or S_GROUP_12 -->
Tenendo conto che è il gruppo con ID_11 è quello a cui non voglio fare visualizzare certe cose.. Dove sbaglio..?

Avatar utente
Tiger
Amministratore
Amministratore
Messaggi: 2611
Iscritto il: 02/11/2011, 1:19
Versione: 3.2.X
Seo: Si
Server: UNIX/Linux
Php: 5.4.31
Database: MySQL(i) 5.1.60-community-log
Località: Roma

Re: Istruzioni condizionali e phpBB

Messaggio da Tiger » 18/02/2014, 13:42

Calcola che la funzione prova permessi e' relativa,dovresti provare con un account di prova dell'id stesso,il codice mi sembra corretto.
Immagine

Avatar utente
systemcrack
Utente
Utente
Messaggi: 149
Iscritto il: 22/09/2013, 17:57
Versione: 3.0.12
Seo: No
Server: UNIX/Linux

Re: Istruzioni condizionali e phpBB

Messaggio da systemcrack » 18/02/2014, 16:04

Si è come hai detto tu.. perfetto!!! ....?