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 :) )
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"...
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
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. ;)
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
Qualche suggerimento?
Sorry, settimana presa e non molto tempo per scrivere codice... :(
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... :-(