Simple Machines Community Forum

SMF Support => Language Specific Support => Italiano (Italian) => Topic started by: Tanakino on May 23, 2013, 05:43:32 PM

Title: Admin, co-admin, global-mod, mod
Post by: Tanakino on May 23, 2013, 05:43:32 PM
Stavo guardando come mai simple portal, nel blocco dello staff, mostra gli utenti in maniera disordinata , mentre io vorrei che mostrasse dall'alto verso il basso:

Admin, co-admin, global-mod, mod .

Mi sono accorto che i co-admin sono considerati alla stregua dei globalmod e quindi vengono mescolati in mezzo a loro . Ho provato a guardare la funzione che gestisce questo blocco all'interno del file Subs-Portal.php e mi sono accorto che in effetti manca proprio la parte che identificherebbe i co-admin per poterli collocare separatamente dai globalmod.

Ora mi chiedo : ma SMF, come struttura fa lo stesso ? So che come gruppi sono separati, ma come struttura di programmazione, c'è la funzione per riconoscere i co-admin ? Lo chiedo perchè se non c'è immagino che non si possa sistemare questa cosa in Simple Portal, viceversa, se SMF prevedere di separare i due gruppi, immagino che si possa correggere il file Subs-Portal.php


Lo stralcio del file incriminato ( la funzione del blocco dello staff ) :



function sp_staff($parameters, $id, $return_parameters = false)
{
global $smcFunc, $sourcedir, $scripturl, $modSettings, $color_profile;

$block_parameters = array(
'lmod' => 'check',
);

if ($return_parameters)
return $block_parameters;

require_once($sourcedir . '/Subs-Members.php');

if (empty($parameters['lmod']))
{
$request = $smcFunc['db_query']('', '
SELECT id_member
FROM {db_prefix}moderators AS mods',
array(
)
);
$local_mods = array();
while ($row = $smcFunc['db_fetch_assoc']($request))
$local_mods[$row['id_member']] = $row['id_member'];
$smcFunc['db_free_result']($request);

if (count($local_mods) > 10)
$local_mods = array();
}
else
$local_mods = array();

$global_mods = membersAllowedTo('moderate_board', 0);
$admins = membersAllowedTo('admin_forum');

$all_staff = array_merge($local_mods, $global_mods, $admins);
$all_staff = array_unique($all_staff);

$request = $smcFunc['db_query']('', '
SELECT
m.id_member, m.real_name, m.avatar, mg.group_name,
a.id_attach, a.attachment_type, a.filename
FROM {db_prefix}members AS m
LEFT JOIN {db_prefix}attachments AS a ON (a.id_member = m.id_member)
LEFT JOIN {db_prefix}membergroups AS mg ON (mg.id_group = CASE WHEN m.id_group = {int:reg_group_id} THEN m.id_post_group ELSE m.id_group END)
WHERE m.id_member IN ({array_int:staff_list})',
array(
'staff_list' => $all_staff,
'reg_group_id' => 0,
)
);
$staff_list = array();
$colorids = array();
while ($row = $smcFunc['db_fetch_assoc']($request))
{
$colorids[$row['id_member']] = $row['id_member'];

if ($modSettings['avatar_action_too_large'] == 'option_html_resize' || $modSettings['avatar_action_too_large'] == 'option_js_resize')
{
$avatar_width = !empty($modSettings['avatar_max_width_external']) ? ' width="' . $modSettings['avatar_max_width_external'] . '"' : '';
$avatar_height = !empty($modSettings['avatar_max_height_external']) ? ' height="' . $modSettings['avatar_max_height_external'] . '"' : '';
}
else
{
$avatar_width = '';
$avatar_height = '';
}

if (in_array($row['id_member'], $admins))
$row['type'] = 1;
elseif (in_array($row['id_member'], $global_mods))
$row['type'] = 2;
else
$row['type'] = 3;

$staff_list[$row['type'] . '-' . $row['id_member']] = array(
'id' => $row['id_member'],
'name' => $row['real_name'],
'link' => '<a href="' . $scripturl . '?action=profile;u=' . $row['id_member'] . '">' . $row['real_name'] . '</a>',
'group' => $row['group_name'],
'type' => $row['type'],
'avatar' => array(
'name' => $row['avatar'],
'image' => $row['avatar'] == '' ? ($row['id_attach'] > 0 ? '<img src="' . (empty($row['attachment_type']) ? $scripturl . '?action=dlattach;attach=' . $row['id_attach'] . ';type=avatar' : $modSettings['custom_avatar_url'] . '/' . $row['filename']) . '" alt="" class="avatar" border="0" />' : '') : (stristr($row['avatar'], 'http://') ? '<img src="' . $row['avatar'] . '"' . $avatar_width . $avatar_height . ' alt="" class="avatar" border="0" />' : '<img src="' . $modSettings['avatar_url'] . '/' . htmlspecialchars($row['avatar']) . '" alt="" class="avatar" border="0" />'),
'href' => $row['avatar'] == '' ? ($row['id_attach'] > 0 ? (empty($row['attachment_type']) ? $scripturl . '?action=dlattach;attach=' . $row['id_attach'] . ';type=avatar' : $modSettings['custom_avatar_url'] . '/' . $row['filename']) : '') : (stristr($row['avatar'], 'http://') ? $row['avatar'] : $modSettings['avatar_url'] . '/' . $row['avatar']),
'url' => $row['avatar'] == '' ? '' : (stristr($row['avatar'], 'http://') ? $row['avatar'] : $modSettings['avatar_url'] . '/' . $row['avatar'])
),
);
}
$smcFunc['db_free_result']($request);

ksort($staff_list);
$staff_count = count($staff_list);
$count = 0;
$icons = array(1 => 'admin', 'gmod', 'lmod');

if (!empty($colorids) && sp_loadColors($colorids) !== false)
{
foreach ($staff_list as $k => $p)
{
if (!empty($color_profile[$p['id']]['link']))
$staff_list[$k]['link'] = $color_profile[$p['id']]['link'];
}
}

echo '
<table class="sp_fullwidth">';

foreach ($staff_list as $staff)
echo '
<tr>
<td class="sp_staff sp_center">', !empty($staff['avatar']['href']) ? '
<a href="' . $scripturl . '?action=profile;u=' . $staff['id'] . '"><img src="' . $staff['avatar']['href'] . '" alt="' . $staff['name'] . '" width="40" /></a>' : '', '
</td>
<td class="sp_staff_info', $staff_count != ++$count ? ' sp_staff_divider' : '', '">
', sp_embed_image($icons[$staff['type']]), ' ', $staff['link'], '<br />
', $staff['group'], '
</td>
</tr>';

echo '
</table>';
}





Grazie !

t.
Title: Re: Admin, co-admin, global-mod, mod
Post by: emanuele on May 25, 2013, 08:00:04 AM
Non testato, quindi non né se funziona, né che effetti collaterali possa avere.
Io cambierei:
$all_staff = array_merge($local_mods, $global_mods, $admins);
in:
$all_staff = array();
foreach ($local_mods as $mod)
$all_staff[] = $mod;
foreach ($global_mods as $mod)
$all_staff[] = $mod;
foreach ($admins as $mod)
$all_staff[] = $mod;
$all_staff = array_reverse($all_staff);
Title: Re: Admin, co-admin, global-mod, mod
Post by: Tanakino on May 26, 2013, 03:26:00 AM
Grazie Emanuele, ma non è cambiato nulla .. in effetti il codice da te scritto inserisce nell'array i tre valori ( localmod, globalmod, admin ) e poi ribalta il tutto, ma a me serviva una sottigliezza diversa .

Mi avrebbe fatto comodo poter gestire la sequenza dei soli globalmod, ossia intervenire sull'array soltanto di quelli, in modo da ordinarli diversamente prima di inserire questo array nel più grande array che contiene tutte e tre le figure .

Come potrei fare ?


Grazie !


T.
Title: Re: Admin, co-admin, global-mod, mod
Post by: emanuele on May 26, 2013, 05:01:14 AM
Dipende da cosa vuol dire "ordinarli diversamente", perché (ovviamente dal codice che ho scritto) quello che ho capito dal tuo primo post è probabilmente diverso da quello che vuoi ottenere...quindi dettagli. ;)
Title: Re: Admin, co-admin, global-mod, mod
Post by: Tanakino on May 26, 2013, 07:31:00 AM
Da quello che capisco, SMF tratta i co-admin come globalmod ( perchè io ho tolto ai co-admin la possibilità di amministrare ) ed infatti,  quello script , accomuna i globalmod ed i coadmin all'interno di un unico array : $global_mods.

Quando il ciclo scorre l'array quindi , vengono listati per id ( almeno credo ) e miscelati con i globalmod.

Io però vorrei invece trovare i co-admin all'inizio e poi i globalmod . Come posso agire ? Posso in qualche modo operare su quell'array prima che venga incapsulato nel successivo array $all_staff ?


Spero di essere riuscito a spiegarmi .


Grazie !!


Edit: al momento ho risolto rendendo i co-admin in gardo di amministrare il forum . Però continua non metterli in ordine di id , infatti ho : 1, 231, 241, 8 ...


T.
Title: Re: Admin, co-admin, global-mod, mod
Post by: emanuele on May 26, 2013, 05:37:47 PM
Beh, SMF non sa cosa siano i co-admin dato che è un ruolo che non esiste di default. E lo stesso vale per SP (dato che è scritto per coprire le funzioni base di SMF).

Quel che dovrai fare è trovare un permesso che hanno i co-admin, ma non hanno i moderatori globali ed aggiungere una "categoria" al codice si SP:
$global_mods = membersAllowedTo('moderate_board', 0);
$co-admins = membersAllowedTo('QUALCOSA');
$admins = membersAllowedTo('admin_forum');

e poi:
$all_staff = array_merge($local_mods, $global_mods, $co-admins, $admins);
Title: Re: Admin, co-admin, global-mod, mod
Post by: Tanakino on May 27, 2013, 06:13:46 AM
Quote from: emanuele on May 26, 2013, 05:37:47 PM
Beh, SMF non sa cosa siano i co-admin dato che è un ruolo che non esiste di default. E lo stesso vale per SP (dato che è scritto per coprire le funzioni base di SMF).

Quel che dovrai fare è trovare un permesso che hanno i co-admin, ma non hanno i moderatori globali ed aggiungere una "categoria" al codice si SP:
$global_mods = membersAllowedTo('moderate_board', 0);
$co-admins = membersAllowedTo('QUALCOSA');
$admins = membersAllowedTo('admin_forum');

e poi:
$all_staff = array_merge($local_mods, $global_mods, $co-admins, $admins);


Grande Emanuele !!

Come posso riconoscere cosa scrivere al posto di "QUALCOSA"? Ad esempio una cosa che distingue i Co-admin dai GlobalMod è "gestire gli utenti" o "inviare una email dal forum agli utenti", cose così ..

Infine : posso , una volta creato il nuovo array,ordinarlo per ID ?


Grazieee !!!

T.



EDIT:

ho provato così, ma non è cambiato niente :




        $global_mods = membersAllowedTo('moderate_board', 0);
$coadmins = membersAllowedTo('admin_users');
$admins = membersAllowedTo('admin_forum');

$all_staff = array_merge($local_mods, $global_mods, $coadmins, $admins);


Title: Re: Admin, co-admin, global-mod, mod
Post by: emanuele on May 29, 2013, 09:56:52 AM
Onestamente mi sono un po' perso...quindi tirerò un po' ad indovinare.
$all_staff = array();
foreach ($local_mods as $mod)
$all_staff[] = $mod;
foreach ($global_mods as $mod)
$all_staff[] = $mod;
foreach ($coadmins as $mod)
$all_staff[] = $mod;
foreach ($admins as $mod)
$all_staff[] = $mod;
$all_staff = array_reverse($all_staff);
Title: Re: Admin, co-admin, global-mod, mod
Post by: Tanakino on May 30, 2013, 04:52:50 PM
Grazie Emanuele, ho provato ma non è cambiato niente .. Non riconosce l'array $coadmins .. Come posso riconoscere cosa scrivere al posto di "QUALCOSA"? Ad esempio una cosa che distingue i Co-admin dai GlobalMod è "gestire gli utenti" o "inviare una email dal forum agli utenti", cose così ..

$co-admins = membersAllowedTo('QUALCOSA');


In alternativa, senza stare a creare un nuovo array co-admins, come posso intervenire sull'array global mod e ordinarlo mettendo per primi quelli che membersAllowedTo('QUALCOSA') ?


grazie !

T.
Title: Re: Admin, co-admin, global-mod, mod
Post by: emanuele on May 30, 2013, 04:57:27 PM
moderate_forum

Lo puoi trovare dal codice html della pagina dei permessi.
Title: Re: Admin, co-admin, global-mod, mod
Post by: Tanakino on May 31, 2013, 10:36:55 AM
Grazie Emanuele,

purtroppo non funziona lo stesso .. ora ho questo codice :




....
$coadmins = membersAllowedTo('admin_users');
....

$all_staff = array_merge($local_mods, $global_mods, $coadmins, $admins);





ma anche se metto :





....
$coadmins = membersAllowedTo('admin_users');
....

$all_staff = array();
foreach ($local_mods as $mod)
$all_staff[] = $mod;
foreach ($global_mods as $mod)
$all_staff[] = $mod;
foreach ($coadmins as $mod)
$all_staff[] = $mod;
foreach ($admins as $mod)
$all_staff[] = $mod;
$all_staff = array_reverse($all_staff);





niente da fare, malgrado abbia spuntato "Gestire gli utenti del forum" ( ossia la moderate_forum indicata da te ) .

COme è possibile?

T.
Title: Re: Admin, co-admin, global-mod, mod
Post by: emanuele on May 31, 2013, 11:29:16 AM
$global_mods = membersAllowedTo('moderate_board', 0);
$coadmins = membersAllowedTo('moderate_forum');
$admins = membersAllowedTo('admin_forum');

$all_staff = array_merge($local_mods, $global_mods, $coadmins, $admins);
$all_staff = array_unique($all_staff);


Quindi più avanti dove trovi:
if (in_array($row['id_member'], $admins))
$row['type'] = 1;
elseif (in_array($row['id_member'], $global_mods))
$row['type'] = 2;
else
$row['type'] = 3;


Deve diventare:
if (in_array($row['id_member'], $admins))
$row['type'] = 1;
elseif (in_array($row['id_member'], $coadmins))
$row['type'] = 2;
elseif (in_array($row['id_member'], $global_mods))
$row['type'] = 3;
else
$row['type'] = 4;
Title: Re: Admin, co-admin, global-mod, mod
Post by: Tanakino on June 03, 2013, 03:55:30 PM
Grande Emanuele ora funziona !!!

Ultima cosa : hai vari gruppi ( ora ben 4 ) è associata una iconcina . Essendoci un gruppo in più , il numero 4 nell'ultima parte del codice da te scritto ( ri-grazie ), dovrei abbinargli una icona.. secondo te dove posso farla questa cosa ?


Ti allego il file ...



EDIT : ho risolto !


Ho semplicemente creato l'icona e modificato da :




$icons = array(1 => 'admin', 'gmod', 'lmod');



a così :




$icons = array(1 => 'admin', 'coadmin', 'gmod', 'lmod');




Grazieeeee !!


T.
Title: Re: Admin, co-admin, global-mod, mod
Post by: Tanakino on October 11, 2013, 10:14:57 AM
Strano comportamento ... da oggi ( credo ) i moderatori non fanno più parte dello staff e non vengono più elencati . Io non ho modificato i file..

Cosa può essere ? sembra quasi che i moderatori (lmod) non esistano più ..

MaH?!


T.
Title: Re: Admin, co-admin, global-mod, mod
Post by: emanuele on October 12, 2013, 07:37:32 AM
Hai cambiato qualcosa...cosa non mi è dato sapere. (E sì, qualcosa hai fatto, perché SMF non decide di "fare altro" a suo piacimento.)
Title: Re: Admin, co-admin, global-mod, mod
Post by: Tanakino on October 14, 2013, 04:34:22 AM
L'unica cosa che ricordo è aver attivato in admin/permessi/impostazioni "Abilita i permessi per i gruppi basati sul numero di post", perchè mi serviva poter creare differenti permessi , cioè "inibire" gli allegati a coloro che hanno post zero .
Il massimo sarebbe stato poterlo fare per chi ha post 0 in una certa sezione, ma temo non sia fattibile, vero ?


Tornando a noi .. non ci capisco un acca .. in sostanza i moderatori locali ricompaiono solo se gli attivo gli stessi permessi dei moderatori globali ..
SEMBRA , ripeto sembra, cambiato il modo di Simple Portal di  considerare i mod.

Se ti do accesso all'amministrazione, credi di poter dare un occhiatina ?


Grazie !


T.
Title: Re: Admin, co-admin, global-mod, mod
Post by: emanuele on October 16, 2013, 07:47:09 AM
Hai per caso aggiornato SP?
In tal caso avresti perso le modifiche fatte in precedenza, ma non mi risulta ci siano stati aggiornamenti di recente.

Riallega il file che hai modificato.
Title: Re: Admin, co-admin, global-mod, mod
Post by: Tanakino on October 16, 2013, 09:40:42 AM
Ciao Emanuele e grazie, ecco il file .

Hey, sei dimagrito troppo, prima eri più carino . ;D


T.
Title: Re: Admin, co-admin, global-mod, mod
Post by: emanuele on October 16, 2013, 02:38:50 PM
Sicuro di non aver modificato il blocco ed aver escluso i moderatori locali dalla lista?
Title: Re: Admin, co-admin, global-mod, mod
Post by: Tanakino on October 21, 2013, 05:58:34 AM
Sicurissimo, non saprei neanche come fare .. Unico dubbio che mi viene è che io abbia ricaricato qualche file da un precedente backup e che quello fosse senza modifiche del caso, ma non saprei proprio dove guardare e come ..

Hai qualche idea ?

Grazie !!

T.
Title: Re: Admin, co-admin, global-mod, mod
Post by: emanuele on October 21, 2013, 07:18:11 AM
Beh, non è che ci vuole molto a disabilitare i moderatori locali, basta andare nella configurazione del blocco e togliere la spunta.

Per controllare non devi fare altro che verificare che le modifiche apportare siano al loro posto. ;)
Title: Re: Admin, co-admin, global-mod, mod
Post by: Tanakino on October 21, 2013, 04:38:41 PM
Ah, scusa, ora ho capito .. credevo parlassi a livello di codice !

No, la spunta non c'è per cui i moderatori dovrebbero vedersi, invece .. niente !

E' davvero strano e non so cosa pensare.

T.

Title: Re: Admin, co-admin, global-mod, mod
Post by: emanuele on October 22, 2013, 08:10:54 AM
Non saprei cosa dire.
Se il codice è lo stesso e le impostazioni sono le stesse...sei sicuro di avere moderatori locali? (sparo a caso lol)
Title: Re: Admin, co-admin, global-mod, mod
Post by: Tanakino on October 22, 2013, 09:07:09 AM
Grazie Emanuele, ti sto chiedendo più del solito, in effetti .
Io ho dei moderatori locali, 4 per l'esattezza.

MI domando : può dipendere dal db ? Qualcosa che è andato perduto ? Loro comunque risultano ancora tutti lì, se si guardano le sezioni nell'indice . Perchè non li lista più ?

Grr !! Che fastidio !


T.
Title: Re: Admin, co-admin, global-mod, mod
Post by: emanuele on October 22, 2013, 09:37:29 AM
Se i moderatori sono al loro posto non c'è niente che non va nel db.
Prova a disabilitare i moderatori locali nel blocco e vedere se cambia qualcosa, poi li riabiliti.
Title: Re: Admin, co-admin, global-mod, mod
Post by: Tanakino on October 22, 2013, 05:03:08 PM
Quote from: emanuele on October 22, 2013, 09:37:29 AM
Se i moderatori sono al loro posto non c'è niente che non va nel db.
Prova a disabilitare i moderatori locali nel blocco e vedere se cambia qualcosa, poi li riabiliti.

Ho già provato ... niente da fare !

Sto impazzendo. Non capisco se il problema è nei file ( e non mi sembra ) , nei permessi o in qualche altra cosa che dipende dal database..

Grazie Emanuele !

Se ti viene in mente qualcosa, non esitare.

T.
Title: Re: Admin, co-admin, global-mod, mod
Post by: Tanakino on October 24, 2013, 09:27:09 AM
Fermi tutti , ho scoperto che i lproblema è nel database .
Infatti ,se mi ricolelgo ad uno vecchio, funziona perfettamente .

Cosa dovrei cercare, secondo voi ? quali tabelle ?
Sto provando a guardare quelle che riguardano Simple Portal, ma mi sembra tutto ok .

Dove trovo i permessi dei gruppi ? E i gruppi ?

Grazieeeeeeeeeee

T.
Title: Re: Admin, co-admin, global-mod, mod
Post by: emanuele on October 24, 2013, 09:34:00 AM
Beh, cos'hai fatto tra un database e l'altro?
Title: Re: Admin, co-admin, global-mod, mod
Post by: Tanakino on October 24, 2013, 10:15:58 AM
Quote from: emanuele on October 24, 2013, 09:34:00 AM
Beh, cos'hai fatto tra un database e l'altro?

Uh, non ricordo ; è un backup di Agosto .. penso di aver modificato alcuni permessi , aperto delle sezioni e forse installato una mod, ma non ricordo proprio ..

Ad esempio i permessi dei gruppi , dove sono nel database ?

T.

Title: Re: Admin, co-admin, global-mod, mod
Post by: Tanakino on October 25, 2013, 10:09:40 AM
Ehm .. me ne vergogno, lo ammetto . Dopo una stancante ricerca all'interno del database per vedere dove fosse l'inghippo e avendo scartato le opzioni più semplici, perchè " è ovvio che il problema non è lì.. " , ho risolto semplicemente ricaricando la tabella "moderators" del vecchio backup .

Perchè non l'ho guardata per prima ? Perchè "lì non può essere, sarebbe troppo semplice" .. mannaggia a me !


T.
Title: Re: Admin, co-admin, global-mod, mod
Post by: emanuele on October 25, 2013, 11:49:36 AM
Beh, se hai dovuto ricaricare la tabella moderators, mi spieghi come i moderatori potevano funzionare?
SMF usa quella per sapere chi è moderatore di una certa sezione, se quella non funziona i moderatori locali non possono funzionare (e non possono nemmeno essere elencati di fianco alla board).
Title: Re: Admin, co-admin, global-mod, mod
Post by: Tanakino on October 25, 2013, 01:23:07 PM
Davvero non ne ho idea, Emanuele . Nessuno dei moderatori mi ha detto nulla .. magari non si erano neanche accorti che qualcosa non funzionava.

la cosa che mi risulta strana è che nell'index del forum, dove si vedono tutte le board, ognuno era al proprio posto, regolarmente.
Non so neanche cosa sia cambiato, ricaricando la vecchia tabella , però di fatto si è messo a posto l'elenco dei moderatori e quindi sono felice .. :)


Grazie per la mano !!!

T.