phpBB Italia chiude!
phpBB Italia ringrazia tutti gli utenti che hanno dato fiducia al nostro progetto per ben 9 anni, e che, grazie al grande lavoro fatto da tutto lo Staff (rigorosamente a titolo gratuito), hanno portato il portale a diventare il principale punto di riferimento italiano alla piattaforma phpBB.

Purtroppo, causa motivi personali, non ho più modo di gestirlo e portarlo avanti. Il forum viene ora posto in uno stato di sola lettura, nonché un archivio storico per permettere a chiunque di fruire di tutte le discussioni trattate.

Il nuovo portale di assistenza per l'Italia di phpBB diventa phpBB-Store.it, cui ringrazio per aver deciso di portare avanti questo grande progetto.

Grazie ancora,
Carlo - Amministratore di phpBB Italia

Bump argomento esteso

Cerchi una MOD? Chiedi in questo forum.
Questa sezione è supportata dagli utenti del forum, pertanto lo Staff potrebbe non eseguire tali richieste.
Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3704
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: Bump argomento esteso

Messaggio da Micogian » 09/04/2012, 11:09

Vediamo di ricapitolare:
1) per default il "bump" è possibile a determinate condizioni, da un lato c'è un intervallo di tempo minimo che va gestito nel PCA.
2) sono ammessi al dump l'autore del Topic e l'autore dell'ultima risposta. Queste condizioni consentono di visualizzare il link "bump"
3) La modifica che abbiamo fatto aggira l'ostacolo relativo agli utenti ammessi e aggiunge il link anche agli utenti autorizzati (utenti singoli o gruppi)
4) La mod funziona ma non compare il messaggio "bump di xxxxx....." nel post.
5) il messaggio viene creato nel file viewtopic.php, attorno alle righe 1481, questo è il codice:

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 = '';
    }
Condizioni perchè venga creato il messaggio sono che il campo "topic_bumbed" sia attivato, che il "post_id" sia uguale a "topic_last_post_id" e che nella cache ci sia il "topic_bumper" cioè l'user_id che ha creato il bump.
Nel caso del bump eseguito da utente diverso da quelli previsti pere default le condizioni non ci sono, probabilmente è la variabile di cache che non ha i valori richiesti, la soluzione è creare una condizione simile che consenta di creare il messaggio anche per questi utenti.
Secondo me farei questa modifica alla parte precedente:

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 = '';
    } 
In sostanza, con la condizione ($topic_data['topic_bumped'] && $row['post_id'] == $topic_data['topic_last_post_id'] && isset($topic_data['topic_bumper'])) controllo che ci sia un valore "topic_bumber" nella tabella TOPICS_TABLE, che "post_id" sia uguale a "topic_last_post_id" e che ci sia un valore diverso da '0' in "topic_bumber".
In pratica, se ci sono le condizioni di default oppure le condizioni appena citate il messaggio viene creato, altrimenti resta vuoto.

Io ho fatto una veloce prova in locale e sembra funzionare ma non ho approfondito.

Angolo
Leader Traduttori
Leader Traduttori
Messaggi: 7237
Iscritto il: 11/03/2011, 17:37
Sesso: Maschio
Versione: 3.0.12
Server: UNIX/Linux
PHP: 5.6.18
Database: MySQL 5.6.33-log
Contatta:

Re: Bump argomento esteso

Messaggio da Angolo » 09/04/2012, 16:12

Funziona! Grazie Mille MIcogian. Riassumo per utilità generale.


Apri il file includes/functions_content.php

Trova:

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;
	}



Sostituisci con:

Codice: Seleziona tutto

// MOD Bump esteso Micogian Inizio
// 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'] != 'ID del gruppo')
    {
        return false;
    }
// MOD Bump esteso Micogian Fine   


Dove l'ID del gruppo deve essere definito.



Apri il fiel viewtopic_body.php

Trova:

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));
	}


Sostituisci con:

Codice: Seleziona tutto

// MOD Bump esteso Micogian Inizio
// 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 = '';
    } 
// MOD Bump esteso Micogian Fine  

E ovviamente regolare il tempo da PCA. Spettacolare.

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3704
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: Bump argomento esteso

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

Come vedi basta capire il funzionamento del sistema per poter trovare le alternative.

Ho creato un file apposito in "Mod in sviluppo": http://www.phpbbitalia.net/forum/mods-i ... t7169.html

Rispondi

Torna a “Richiesta MOD”

Chi c’è in linea

Visitano il forum: Nessuno e 64 ospiti