Italian SMF

Supporto SMF => SMF 2.0.x => Discussione aperta da: gpezzarini il Lunedì - 17 Febbraio 2014 - 08:20

Titolo: Mostrare elenco autorizzati ad accedere alla sezione
Inserito da: gpezzarini il Lunedì - 17 Febbraio 2014 - 08:20
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 :) )
Titolo: Re:Mostrare elenco autorizzati ad accedere alla sezione
Inserito da: 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"...
Titolo: Re:Mostrare elenco autorizzati ad accedere alla sezione
Inserito da: gpezzarini il Mercoledì - 05 Marzo 2014 - 21:27
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
Titolo: Re:Mostrare elenco autorizzati ad accedere alla sezione
Inserito da: emanuele il Mercoledì - 05 Marzo 2014 - 23:39
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. ;)
Titolo: Re:Mostrare elenco autorizzati ad accedere alla sezione
Inserito da: gpezzarini il Giovedì - 06 Marzo 2014 - 06:35
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
Titolo: Re:Mostrare elenco autorizzati ad accedere alla sezione
Inserito da: gpezzarini il Martedì - 11 Marzo 2014 - 07:55
Qualche suggerimento?
Titolo: Re:Mostrare elenco autorizzati ad accedere alla sezione
Inserito da: emanuele il Martedì - 11 Marzo 2014 - 22:13
Sorry, settimana presa e non molto tempo per scrivere codice... :(
Titolo: Re:Mostrare elenco autorizzati ad accedere alla sezione
Inserito da: emanuele il Domenica - 16 Marzo 2014 - 22:09
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... :-(