Mostrare elenco autorizzati ad accedere alla sezione

Aperto da gpezzarini, Lunedì - 17 Febbraio 2014 - 08:20

0 Utenti e 1 Visitatore stanno visualizzando questa discussione.

gpezzarini

Posso inserire del codice od usare una mod per mostrare a chi accede ad una sezione chi in realtà è autorizzato ad accederevi?

Abbiamo una gestione molto dinamica degli accessi a numerose sezioni, tutti basati su gruppi di apprtenenza, il problema ceh si genera è che gli utenti autorizzati non sanno chi sono gli altri autorizzati e questo genera della confusione

smf2.0.6 (sto battagliando per capire come passare alla 2.0.7 :) )
Che fatica far capire la comodità del forum

emanuele

Oooops, questo l'ho perso per strada... :(

SORRYY!!!

Dipende.
Vuoi mostrare i gruppi che hanno accesso o gli utenti?
Mostrare i gruppi potrebbe essere fattibile facilmente, mostrare gli utenti introdurrebbe una (o più) query piuttosto "lunghe"...

gpezzarini

Citazione di: emanuele il Mercoledì - 05 Marzo 2014 - 21:02
Oooops, questo l'ho perso per strada... :(

SORRYY!!!

Dipende.
Vuoi mostrare i gruppi che hanno accesso o gli utenti?
Mostrare i gruppi potrebbe essere fattibile facilmente, mostrare gli utenti introdurrebbe una (o più) query piuttosto "lunghe"...

sarebbe bello questo e quello

lo scopo è far sapere a chi è autorizzato ad accedere ad una sezione chi sono gli altri, senza dover fare la contabilità manualmente

il fatto è che abbiamo una gestione complessa e dinamica di categorie, sezioni ed utenti per cui nulla è scontato su chi entra e chi no nei vari luoghi

se ci fosse una soluzione ne sarei felice
Che fatica far capire la comodità del forum

emanuele

Giusto andando sul generico un secondo per cercare di capire.

Se è così dinamica, potrebbe anche essere che io posto oggi con certi accessi, ma il messaggio viene letto domani con altri e la/le persone a cui era rivolto non hanno più accesso a quel messaggio?
Perché se fosse *così* dinamica, probabilmente nemmeno mostrare chi ha accesso è la soluzione idea, e probabilmente qualche altro trucco garantirebbe un flusso migliore delle discussioni.

Ovviamente tutte ipotesi per capire bene la situazione. ;)

gpezzarini

beh, non cosi tragicamente, ma un certo movimento c'è

quello che conta è che le discussioni rimangano,  come storico e come attività in corso

poi le persone possono muoversi, ma alla spicciolata per cui è uno stillicidio tenere contabilita

si tratta di gruppi di lavoro che nascono e muoiono, e di attività che iniziano e terminano,  spesso sono le stesse persone ma mescolate in vario modo
Che fatica far capire la comodità del forum

gpezzarini

Che fatica far capire la comodità del forum

emanuele

Sorry, settimana presa e non molto tempo per scrivere codice... :(

emanuele

Scusa, ma non ce l'ho fatto ancora a guardare "bene", così ti do uno spunto, se conosci un po' di php può essere d'aiuto, altrimenti può essere quasi inutile.

Da "qualche parte" in MessageIndex.php puoi usare $board_info per recuperare i dati dei gruppi e mostrarli, questa è la parte facile:

global $board_info;

$request = $smcFunc['db_query']('', '
SELECT id_group, group_name, online_color
FROM {db_prefix}membergroups
WHERE id_group IN ({array_int:groups})
AND hidden = {int:not_hidden}',
array(
'groups' => $board_info['groups'],
'not_hidden' => 0
)
);

$context['boards_access_groups'] = array();
while ($row = $smcFunc['db_fetch_assoc']($request))
$context['boards_access_groups'][$row['id_group']] = $row['group_name'];

$smcFunc['db_free_result']($request);


Questo salva i nomi dei gruppi in $context['boards_access_groups'] che potrai poi usare nel template per creare qualcosa tipo:
echo '
<div class="access_groups">', implode(', ', $context['boards_access_groups']), '</div>';

con cui creerai la lista.

Se vuoi i nick degli utenti, la cosa si complica parecchio, perché oltre al blocco precedente, dovresti aggiungerci una queri per recuperare gli utenti e questa dovrebbe cercare sia in id_group della tabella members, sia nella colonna additional_groups, che però richiede un find_in_set, ma un find_in_set per quanto ne so può cercare un solo valore per volta, quindi ti toccherebbe costruire un qualcosa del tipo:
$request = $smcFunc['db_query']('', 'SELECT id_member, real_name
FROM {db_prefix}members
WHERE id_group IN ({array_int:groups}) OR
FIND_IN_SET(' . implode(', additional_groups) OR FIND_IN_SET(', array_keys($context['boards_access_groups'])) . ', additional_groups)',
array(
'groups' => array_keys($context['boards_access_groups']),
)
);

che potrebbe essere piuttosto pesante, perché deve passare sempre e comunque in rassegna tutti gli utenti dato che non può nemmeno usare un indice anche se ci fosse...

Scusa se non posso abbellire il codice, al momento è il massimo... :-(

Discussioni simili (3)