bacheche gdrcd 5.1 e età automatica pg
bacheche gdrcd 5.1 e età automatica pg postato il 11/04/2013 01:10:31 nel forum programmazione, open source e hosting
Salve
Sì, ho un altro problema, sul quale sto impazzendo da giorni. Anzi, più che uno, ho alcuni problemi, tutti riguardanti le bacheche del gdrcd 5.1. Mi scuso per il titolo forse troppo generico, ma non sapevo come accorpare nel titolo del topic i vari problemi, e volevi evitare di fare una lista della spesa (che, invece, ora mi accingo a fare).
Problema 1) Vorrei rendere invisibili le bacheche ai non autorizzati. Per come è fatto il gdrcd, permette ai non autorizzati di vedere le bacheche ma non di entrarci. Io vorrei fare in modo che, se non sei autorizzato, non puoi proprio vedere l'esistenza di quella bacheca. Ho trovato qui nel forum una discussione che trattava proprio di quello, ma non è spiegato come si faccia. La discussione è la seguente: https://www.gdr-online.com/readforum.asp?id=149808 ↗. Ho anche risposto a quel topic, sperando che qualcuno mi aiuti, ma visto che c'ero ho riportato il problema anche qui, visto che sto trattando i problemi che ho con le bacheche, sperando che in almeno uno dei due topic qualcuno mi aiuti.
Problema 2) Attualmente nel gdrcd vi sono esclusivamente i tipi IN GIOCO, PER TUTTI, SOLO GILDE, SOLO RAZZE, SOLO MASTER, SOLO MODERATORI. Io vorrei aggiungere anche altri tipi di bacheche. Ho capito quali modifiche apportare al file che ne gestisce la creazione, quali al file vocabulary, ma non riesco a trovare il file in cui vengono dati i permessi. Mi spiego meglio: prendiamo il seguente pezzo di codice del file gestione_bacheche.inc.php
<select name="tipo">
<option value="<?php echo INGIOCO; ?>"
<?php if ($loaded_record['tipo']==INGIOCO){echo "selected";} ?>>
<?php echo gdrcd_filter('out',$MESSAGE['interface']['forums']['type'][INGIOCO]);?>
</option>
<option value="<?php echo PERTUTTI; ?>"
<?php if ($loaded_record['tipo']==PERTUTTI){echo "selected";} ?>>
<?php echo gdrcd_filter('out',$MESSAGE['interface']['forums']['type'][PERTUTTI]);?>
</option>
<option value="<?php echo SOLORAZZA; ?>"
<?php if ($loaded_record['tipo']==SOLORAZZA){echo "selected";} ?>>
<?php echo gdrcd_filter('out',$MESSAGE['interface']['forums']['type'][SOLORAZZA]); ?>
</option>
<option value="<?php echo SOLOGILDA; ?>"
<?php if ($loaded_record['tipo']==SOLOGILDA){echo "selected";} ?>>
<?php echo gdrcd_filter('out',$MESSAGE['interface']['forums']['type'][SOLOGILDA]); ?>
</option>
<option value="<?php echo SOLOMASTERS; ?>"
<?php if ($loaded_record['tipo']==SOLOMASTERS){echo "selected";} ?>>
<?php echo gdrcd_filter('out',$MESSAGE['interface']['forums']['type'][SOLOMASTERS]); ?>
</option>
<option value="<?php echo SOLOMODERATORS; ?>"
<?php if ($loaded_record['tipo']==SOLOMODERATORS){echo "selected";} ?>>
<?php echo gdrcd_filter('out',$MESSAGE['interface']['forums']['type'][SOLOMODERATORS]); ?>
</option>
</select>
Questo codice serve per creare il menu a tendina con i vari tipi di bacheche tra le quali, attraverso il pannello di gestione, il gestore può scegliere. Inserire altri tipi sembra una cosa facile, ma io non capisco da quale file venga fatto il richiamo in questa parte di codice (ne prendo uno a caso, vale per ogni altro pezzo di codice):
$MESSAGE['interface']['forums']['type'][SOLOMASTERS]
Cioè: dove si trova la restrizione che per la scritta SOLOMASTERS quelle sono bacheche riservate a chi ha almeno la carica di master? Ho smontato ogni singolo file non so nemmeno io quante volte, inutilmente.
Problema 3) Per far capire il seguente problema faccio un esempio che, spero, possa aiutare a capire velocemente. Non so a quanti di voi piacciano le land su Harry Potter (io, personalmente, preferisco le land storiche, ma ho giocato anche a land fantasy, land su HP e land moderne), ma ritengo che questo sia il genere che meglio mi aiuta a spiegare il problema. Supponiamo di essere riusciti a risolvere il problema del punto 2 e che, quindi, siamo riusciti a creare altri tipi di bacheche oltre a quelli già esistenti. Supponiamo di creare il tipo di bacheca VOTI in cui i docenti, nelle apposite discussioni, scrivono i voti che danno o sottraggono agli studenti. Io vorrei far in modo che tale bacheca sia visibile a tutti ma che solo chi ha la carica di docente e chi ha la carica di admin o gestore può scriverci. Ora, so come creare l'IF necessario per fare la restrizione ai vari id, cariche, etc. Quello che non so scrivere, è il contenuto dell'IF (ossia quello che deve trovarsi tra le parentesi graffe).
Problema 4) Per le bacheche volevo fare una cosa simile a quella che qui su gdr-online viene fatta per la divisione in generi dei giochi, ossia dei link che, quando ci passi sopra il mouse, fanno comparire un menu a tendina dove compaiono tutti i sottogeneri (per esempio, se passo il mouse sopra il genere "fantasy" nel menu a tendina compaiono i generi "fantasy classico", "fantasy epico", etc). Creare questo menu a tendina non è un problema, l'ho già fatto. Il problema è che non so come fargli capire che deve considerare un solo tipo di bacheca (cioè, se clicco su BACHECHE ON mi deve aprire la pagina delle sole bacheche on, e non devono comparire tutte le bacheche una sotto l'altra come fa di suo il gdrcd).
Problema 5) Forse il più difficile e, forse, impossibile da realizzare. Per spiegare, spero, più chiaramente quale sia il problema riprende l'esempio della land su Harry Potter del punto 3. Abbiamo detto che abbiamo creato questa bacheca VOTI in cui i docenti possono inserire i voti e che sia visibile a tutti. Secondo la mia idea, in questa bacheca vi dovrebbero comparire i topic ognuno riportante il nome dei pg studenti, e qui i docenti scrivono i voti che hanno dato allo studente che è "argomento" del topic (per esempio, se clicco sul topic FRANCESCO ROSSI (per scrivere un nome a caso) lì devo scrivere solo i voti che ho dato allo studente Francesco Rossi). Siccome mettersi a creare ogni volta un nuovo topic ad ogni iscrizione di un nuovo pg diventa una cosa pesante, pensavo di far sì che la creazione di un topic con il nome del pg avvenga automaticamente al momento dell'iscrizione e che si cancelli in automatico quando il pg o viene cancellato o supera il limite di età per stare nella scuola (nel mondo di HP, all'età di 18 anni (ossia al termine del settimo anno di scuola) non si è più studenti e, quindi, la bacheca in cui inserire i voti diventa inutile). In poche parole, vorrei una bacheca i cui topic abbiano le seguenti caratteristiche:
1) che si generino automaticamente all'iscrizione di un pg che abbia età compresa tra X e Y, mentre se l'età del pg è maggiore di Y i topic non devono generarsi (ogni topic dovrà avere, come titolo, il nome del pg)
2) che si cancellino da soli se il pg viene cancellato o se l'età del pg si modifica (automaticamente (vedere Problema 6) o manualmente)
3) che, al momento della creazione, i topic si dispongano in automatico in ordine alfabetico secondo il nome (e non il cognome) dei vari pg
So che è assai complesso da fare, forse impossibile, ma se fosse possibile vorrei sapere come, perché io non ci riesco.
Cambiamo adesso argomento e passiamo al secondo punto del titolo di questo topic: l'età del pg.
Problema 6) Al momento dell'iscrizione è possibile scegliere (per come ho modificato io il file di iscrizione) l'anno di nascita del pg. Io vorrei far sì che nella scheda compaia (facendo automaticamente i conti) l'età del pg basandosi su giorno, mese e anno di nascita scelti all'iscrizione (e modificabili dalla scheda esclusivamente dai gestori in caso di richiesta). Inoltre, vorrei che questa aumenti con il passare degli anni (quindi, se il 11/04/2013 ho 20 anni, il 11/04/2014 avrò 21 anni) e che tale aumento venga registrato in scheda. Riuscire a fare questa cosa darebbe anche più senso al tipo di bacheca che volevo creare nel Problema 5.
Spero che gli esempi sulle land di HP che ho fatto vi abbiano aiutato a capire quali siano i miei problemi (secondo me, basandomi sulla mia esperienza personale, sono quelle che meglio aiutano a spiegarli, anche se a me servono ad altro) e che qualcuno di voi possa aiutarmi a risolverli, anche perché non vorrei prendere il gdrcd, caricarlo su un host, apportargli si e no due modifiche e spacciarlo come nuova land, perché non sarebbe vero. Vorrei "rendere gdrcd meno gdrcd", diciamo così, per quanto possibile.
p.s. prima di scrivere questo topic ho cercato sul forum se erano già stati aperti topic per queste domande, ma ne ho trovato solo uno (come ho scritto nel Problema 1). Se dovessero essercene altri in cui è presente la soluzione, mi scuso in anticipo ma io non li ho trovati nemmeno con il tasto "cerca").
12/04/2013 09:47:02
Premetto che solo il leggere tutti i punti mi ha fatto desistere dal risponderti >.> poi notando dopo giorni che nessuno ti ha risposto ho riconsiderato l'idea. Ti consiglio la prossima volta di aprire più thread, uno per ogni argomento che vuoi trattare
1) Ecco il codice che effettua il check di restrizione basta che lo metti nella visualizzazione normale del forum
/*Restrizione di accesso i forum admin e master*/
if ((($row['permessi']==SOLORAZZA)&&($_SESSION['id_razza']!=$row['proprietari'])&&($_SESSION['permessi']<MODERATOR))||
(($row['permessi']==SOLOGILDA)&&(strpos($_SESSION['gilda'],'*'.$row['proprietari'].'*')===FALSE)&&($_SESSION['permessi']<MODERATOR))||
(($row['permessi']>=SOLOMASTERS)&&($_SESSION['permessi']<GAMEMASTER))||
(($row['permessi']>=SOLOMODERATORS)&&($_SESSION['permessi']<MODERATOR))){
echo '<div class="error">'.gdrcd_filter('out',$MESSAGE['error']['not_allowed']).'</div>';
} else { ?>
2) Il codice sopra è quello che devi modificare per aggiungere altri casi
3) Devi modificare
<?php /*Creazione nuovi messaggi e topic*/
Metterci un if del tipo se l'id_araldo è uguale a id della bacheca che vuoi proteggere allora controlla che il tipo faccia parte della gilda x. Questo è il metodo più semplice altrimenti crei una tabella per la gestione permessi e crei un codice più complesso, ma sicuramente più duttile
4) Devi cambiare i link, ad esempio page=forum&sezione=1 dove tramite sezione prendi l'id del tipo (on, off, etc) crei il codice per "filtrare" i record, ti basta un semplice WHERE.
5) Niente è impossibile, basta saperlo fare.
5.1) Basta creare la query nel file di iscrizione, puoi trovare un esempio con la query di invio messaggio iniziale.
5.2) Basta creare la query nel file di cancellazione pg, per l'età devi creare un check nel form dove viene modificata. Esempio se è in scheda metti un check del tipo se non è compreso tra x e y esegui la query di cancellazione.
5.3) Devi interagire con l'ORDER BY della query di selezione. A sto punto non ti conviene creare un modulo apposito per la gestione dei voti invece che fare tutte queste modifiche alle bacheche?
6) Esistono vari modi per farlo. Per aumentare l'età il automatico la soluzione migliore sono i cronjob. Lo fai partire a mezzanotte di ogni giorno e se è il compleanno del pg fai un +1 al campo età. Se il tuo servizio di host non ti permette i cronjob fai un campo check_eta di tipo DATE nella tabella personaggio. Ogni login del personaggio fai fare un check, se la data di oggi è diversa da check_eta fai il check_eta ovvero controlla se è il compleanno. Se è il suo compleanno aggiungi 1 anno. Il check_eta è facoltativo ma è utile per risparmiare 1 query in caso di login multipli nell'arco dello stesso giorno.
12/04/2013 22:01:15
Innanzitutto grazie per aver risposto. Avevo creato un solo topic per evitare di aprirne 3000 con argomenti riguardanti la stessa cosa (le bacheche). Forse, però, la lunghezza del topic ha anche fatto desistere molti dal leggerlo. La prossima volta farò come mi hai consigliato tu.
1) Che il codice di restrizione era quello ci ero arrivato anche io, l'avevo trovato. Non capisco cosa intendi con "basta che lo metti nella visualizzazione normale del forum". Cosa intendi con "visualizzazione normale"? In quale parte del codice devo infilarlo? Prima della parte di compilazione del forum o dove?
2) Forse mi sono spiegato male io, o non riesco a capire la modifica da fare. Io ho capito che devo aggiungere lì i casi che voglio creare io. Il mio problema è il seguente: dove c'è scritto GAMEMASTER significa che quelle bacheche sono riservate ai master, dove è scritto SOLORAZZA significa che sono riservate ai soli appartenenti a quella razza, e così via. Ma da qualche parte del codice deve esserci scritto che la parola GAMEMASTER si riferisce ai master, che la parola SOLORAZZA indica solo gli appartenenti a quella determinata razza, che la parola MODERATOR indica Admin e Gestori, che, nelle bacheche, dove è scritto INGIOCO indica le bacheche On, etc. Il mio problema è che non riesco a trovare la parte di codice con tutte queste definizioni.
3) Ok, ho capito.
4) Ok, ho capito cosa devo fare. Non dovrei avere problemi. xD
5) Concettualmente ho capito quello che hai detto, ma forse hai ragione, un modulo apposito forse è meglio.
[p.s. a me non serve per i voti, non sto cercando di creare una land su Harry Potter; l'ho usato come esempio perché pensavo/speravo che potesse aiutare a capire; a me serve per una cosa assai diversa]
6) Secoli fa utilizzai i cronjob. Spero di ricordare come si usa o, almeno, di trovare una guida che me lo rispieghi xD
12/04/2013 22:34:02
1) per normale intendo op=FALSE
2) Essendo costanti 90% lo troverai nel file includes/costant_values.inc.php
13/04/2013 21:56:21 e modificato da astro991 il 13/04/2013 21:57:37
4) Devi cambiare i link, ad esempio page=forum&sezione=1 dove tramite sezione prendi l'id del tipo (on, off, etc) crei il codice per "filtrare" i record, ti basta un semplice WHERE.
Sto avendo un problema nel farlo. Ho provato in questo modo:
<? php
<? php
$loaded_record=gdrcd_query("SELECT * FROM araldo WHERE id_araldo=".gdrcd_filter('num',$_POST['id_record'])." LIMIT 1 ");
?>
<a href="main.php?page=forumON&sessione="<?php $loaded_record['tipo']==INGIOCO; ?>">forum</a>
Ma non funziona, quindi c'è qualcosa di sbagliato, ma non capisco cosa.
p.s. dimenticavo: ho preso questo codice da un file preesistente, quindi pensavo andasse bene, ma a quanto pare mi sbagliavo.
14/04/2013 03:12:50
<a href="main.php?page=forumON&sessione="<?php $loaded_record['tipo']==INGIOCO; ?>">forum</a>
dove lo hai preso?
<a href="main.php?page=forum&sezione="<?php echo $loaded_record['tipo']; ?>"><?php echo $MESSAGE['bacheca']['tipo'][$loaded_record['tipo']]; ?></a>
qualcosa del genere dovrebbe andare
14/04/2013 03:45:50
La parte del %loaded_record l'ho trovata nella pagina di gestione delle bacheche, l'altro pezzo sinceramente non lo ricordo, ne trovai uno simile gironzolando per tutti i file presenti nel pacchetto.
Comunque, non funziona nemmeno quello che mi hai dato te. Se ci lascio la parte dentro le <?php ?>, ossia questa:
<?php echo $MESSAGE['bacheca']['tipo'][$loaded_record['tipo']]; ?>
non compare nessuna scritta, se al posto del codice ci inserisco una scitta io (tipo "Bacheche ON") compare la scritta che ho inserito io (ovviamente). Inoltre, il problema persiste: mi apre sempre e solo l'intero forum, ossia mi mostra tutte le bacheche e non solo quelle ON, e in alto non compare nemmeno il numero della sessione, resta una cosa così:
www.nomeland.dominio.ext/main.php?page=forum&sezione=
14/04/2013 12:08:03
Scusa ho dato per scontato che modificavi il file vocabulary inserendo le nuove voci
14/04/2013 16:25:47
si, in effetti, dopo aver scritto la risposta al topic, ci ho ripensato e le ho fatte le modifiche al file vocabulary, ma non mi funziona lo stesso, mi apre sempre tutte le bacheche..
15/04/2013 02:04:42
ovvio che te le apre sempre tutte, questo è un codice per il menu.
Devi creare nel if op=FALSE un ulteriore if o switch che mostri solo la sezione desiderata
15/04/2013 14:33:14
Lo so, e l'ho fatto. Ma il problema persiste: mi appare l'elenco ti tutti i tipi di bacheche (on, off, solo razze, etc) ma mostra solo quelle che io ho selezionato nell'if. Mi spiego meglio: supponiamo che io abbia limitato, con un if, la visualizzazione alle sole bacheche ON. Quello che mi appare è una cosa del genere:
BACHECHE ON
-bacheca 1
-bacheca 2
-...
BACHECHE OFF
(spazio vuoto)
BACHECHE SOLO RAZZA
(spazio vuoto)
BACHECHE SOLO MASTER
(spazio vuoto)
Quello che non riesco a fare io è fargli creare esclusivamente le bacheche ON senza che vengano inserite quelle dopo. Forse mi ero spiegato male io prima, ma fino all'inserimento dell'if per limitarne la visualizzazione c'ero arrivato. Il problema è che l'if che ho creato io limita la visualizzazione delle bacheche, non la creazione (cosa che, invece, io sto cercando di fare, altrimenti continua a visualizzarmi la roba scritta prima)
Discussione seguita da
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
Foundation Galactic Frontier ↗
Exclusive Villa GdR ↗
Enlisted ↗
Hero Wars ↗
Tiles Survive ↗
CRSED: F.O.A.D. ↗
Crossout ↗
Tibia ↗