[DEV] Mod Admin Bump

MODs in fase di sviluppo.
Rispondi
Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3702
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

[DEV] Mod Admin Bump

Messaggio da Micogian » 09/04/2012, 16:27

Mod Admin bump
Consente di abilitare utenti o gruppi a utilizzare la funzione "bump".

La funzione "bump" consente di portare in evidenza un Topic dimenticato o al quale non c'è stata l'attenzione o la risposta desiderata.
Il "bump", oltre ad essere condizionato da un intervallo di tempo stabilito nella configurazione del PCA, è consentito solamente agli utenti che sono intervenuti nella discussione compreso l'ultimo (last_poster).
Gli Admin e tanto meno i Moderatori non possono utilizzare la funzione "bump" perchè se non sono intervenuti nella discussione non hanno i requisiti per visualizzare il link della funzione "bump".

Con alcune modifiche è possibile abilitare uno o più utenti o un Gruppo di utenti a utilizzare la funzione anche se non sono mai intervenuti.

Ci sono due modifiche da fare nei seguenti file:

1) includes/functions_content.php
2) viewtopic.php

1) il file functions_content.php

Il file functions_content contiene la function bump_topic_allowed che ha lo scopo di controllare se ci siano le condizioni di visualizzare il link "bumped".
Per default questa funzione e consentita agli utenti che sono intervenuti in quel topic.
Questa la parte di codice interessato:

Codice: Seleziona tutto

    // Check bumper, only topic poster and last poster are allowed to bump
    if ($topic_poster != $user->data['user_id'] && $last_topic_poster != $user->data['user_id'] )
    {
        return false;
    }
Per consentire ad altri utenti (Admin Moderatori o Gruppi) di visualizzare il link "bumped" il codice va modificato in questo modo:

Codice: Seleziona tutto

    // Check bumper, only topic poster and last poster are allowed to bump
    if ($topic_poster != $user->data['user_id'] && $last_topic_poster != $user->data['user_id'] && $user->data['group_id'] != '99' )
    {
        return false;
    }
In pratica è stato aggiunta la condizione che determina il risultato false solo se il group_id è diverso da quello indicato.

Questa modifica riguarda la visualizzazione del link che consente di utilizzare la funzione.
La procedura funziona ma non compare il messaggio
"Ultimo bump di xxxxxx effettuato il xxxxxxxxx"
Per fare in modo che compaia il messaggio bisogna agire sul file viewtopic.php.

2) file viewtopic.php

La parte che controlla le condizioni e fa in modo che venga creato e visualizzato il messaggio è la seguente:

Codice: Seleziona tutto

    // Bump information
    if ($topic_data['topic_bumped'] && $row['post_id'] == $topic_data['topic_last_post_id'] && isset($user_cache[$topic_data['topic_bumper']]))
    {
        // It is safe to grab the username from the user cache array, we are at the last
        // post and only the topic poster and last poster are allowed to bump.
        // Admins and mods are bound to the above rules too...
        $l_bumped_by = sprintf($user->lang['BUMPED_BY'], $user_cache[$topic_data['topic_bumper']]['username'], $user->format_date($topic_data['topic_last_post_time'], false, true));
    }
    else
    {        
        $l_bumped_by = '';
    }
Come indicato nella parte commentata le condizioni per creare il messaggio sono legate solo agli utenti che sono intervenuti nel topic.
Per aggirare l'ostacolo inseriamo una nuova condizione che consideri che il messaggio venga creato e visualizzato nel caso sia presente un ID nel campo "topic_bumper", anche se diverso dagli utenti che hanno partecipato alla discussione.

Codice: Seleziona tutto

    // Bump information
    if ($topic_data['topic_bumped'] && $row['post_id'] == $topic_data['topic_last_post_id'] && isset($user_cache[$topic_data['topic_bumper']]))
    {
        // It is safe to grab the username from the user cache array, we are at the last
        // post and only the topic poster and last poster are allowed to bump.
        // Admins and mods are bound to the above rules too...
        $l_bumped_by = sprintf($user->lang['BUMPED_BY'], $user_cache[$topic_data['topic_bumper']]['username'], $user->format_date($topic_data['topic_last_post_time'], false, true));
    }
    elseif ($topic_data['topic_bumped'] && $row['post_id'] == $topic_data['topic_last_post_id'] && isset($topic_data['topic_bumper']))
    {
        $l_bumped_by = sprintf($user->lang['BUMPED_BY'], $user->data['username'], $user->format_date($topic_data['topic_last_post_time'], false, true));
    }
    else
    {        
        $l_bumped_by = '';
    }
Con queste modifiche è possibile abilitare al "bump" anche il gruppo indicato e il messaggio di "bump effettuato" compare regolarmente nel topic.

girello
Utente
Utente
Messaggi: 191
Iscritto il: 16/02/2010, 11:36
Sesso: Maschio
Versione: 3.1.4
Server: UNIX/Linux
PHP: 5.5.19
Località: mantova
Contatta:

Re: [DEV] Mod Admin Bump

Messaggio da girello » 28/09/2012, 8:47

Bella mod davvero interessante! ma invece del 99 group id basta mettere il group id degli utenti registrati? E' un valore che bisogna settare ?


// Check bumper, only topic poster and last poster are allowed to bump
if ($topic_poster != $user->data['user_id'] && $last_topic_poster != $user->data['user_id'] && $user->data['group_id'] != '99' )
{
return false;
}
Capitan Girello

http://www.photolandia.net
phpbb V 2.0-RC1
FORUM FOTOGRAFICO

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3702
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

Re: [DEV] Mod Admin Bump

Messaggio da Micogian » 28/09/2012, 12:14

Ciao Girello.
Si, il numero '99' è stato messo solo per esempio, devi mettere il group_id del gruppo che vuoi abilitare ad usare il "bump".
Secondo me però non metetrei il gruppo "utenti registrati" ma un gruppo più limiatto, Admin o Moderatori.
Il bump è un richiamo a una discussione, che venga fatta da qualsiasi utente mi sembra esagerato.
Al bump possono essere interessati i partecipanti alla discussione e questo è previsto per default.
Admin e Moderatori potrebbero essere interessati a creare un Bump anche se non sono intervenuti e la mia modificalo permette. Farlo fare a tutti mi sembra inutile ma se si vuol fare si fa.

girello
Utente
Utente
Messaggi: 191
Iscritto il: 16/02/2010, 11:36
Sesso: Maschio
Versione: 3.1.4
Server: UNIX/Linux
PHP: 5.5.19
Località: mantova
Contatta:

Re: [DEV] Mod Admin Bump

Messaggio da girello » 28/09/2012, 12:19

effettivamente hai ragione. Provo a metterla su ;) grazie Micogian
Capitan Girello

http://www.photolandia.net
phpbb V 2.0-RC1
FORUM FOTOGRAFICO

Rispondi

Torna a “MODs in sviluppo”

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti