Pagina 1 di 2

[RISOLTO] "Auguri" nella Welcome Mod

Inviato: 23/10/2011, 11:16
da MarcoG
Ciao a tutti...
avrei una domanda...

ho installato questa mod per far apparire un'icona al compleanno (sono giusto 2 passaggi):
http://www.phpbb.com/community/viewtopic.php?t=981935

e a seguire la Welcome MOd:
http://www.phpbb.com/customise/db/mod/w ... n_index_2/

bene... stavo pensando... vorrei che il giorno del compleanno venisse mostrato un "tanti auguri" (o simile) anche nel pannello di benvenuto...
sapete dirmi come posso fare?

Re: "Auguri" nella Welcome Mod

Inviato: 24/10/2011, 12:10
da MarcoG
ko, ve la rendo più facile...

stando alla mod del compleanno (nel viewtopic) devo aggiungere in viewtopic.php questo:

Codice: Seleziona tutto

// viewtopic birthday
				'viewtopic_birthday'	=> false,

Codice: Seleziona tutto

// viewtopic birthday
			$user_cache[$poster_id]['viewtopic_birthday'] = false;
			if ($config['allow_birthdays'] && !empty($row['user_birthday']))
			{
				list($bday_day, $bday_month) = array_map('intval', explode('-', $row['user_birthday']));

				if ($bday_day === (int) $now['mday'] && $bday_month === (int) $now['mon'])
				{
					$user_cache[$poster_id]['viewtopic_birthday'] = true;
				}
			}

Codice: Seleziona tutto

// viewtopic birthday
		'BIRTHDAY_IMG'		=> $user_cache[$poster_id]['viewtopic_birthday'] ? $user->img('icon_birthday', 'VIEWTOPIC_BIRTHDAY') : false,
il tutto in posti determinati naturalmente... quindi devo aggiungere al template:

Codice: Seleziona tutto

<!-- IF postrow.BIRTHDAY_IMG -->
		<dd>&nbsp;</dd>
		<dd>{postrow.BIRTHDAY_IMG}</dd>
		<!-- ENDIF -->
tutto il resto è già fatto in quanto ho la mod installata...

ora, ho provato a inserire nel funcions.php quello che andava nel viewtopic.php e nel template il resto, ma continuo a non vedere niente... dove sto sbagliando?

Re: "Auguri" nella Welcome Mod

Inviato: 24/10/2011, 12:27
da Micogian
BIRTHDAY di chi ? e perchè nel viewtopic ?
Il viewtopic serve a visualizzare Topic e relativi Posts. Al limite ci potrebbe essere il controllo del compleanno degli utenti legati al Topic, non degli altri.
Non capisco.

Re: "Auguri" nella Welcome Mod

Inviato: 24/10/2011, 15:26
da MarcoG
scusa ma mi devo essere spiegato male...

praticamente ho installato la mod sul compleanno che ho linkato sopra... praticamente mostra nei topic (con i dati dell'utente sulla destra) anche una torta di compleanno se è il suo compleanno, così che gli altri utenti lo sappiano.

Volevo inserire anche nel pannello di benvenuto questa funzione. Cioè volevo che apparisse una torta (che poi avrei cambiato con un "tanti auguri") nella welcome mod agli utenti che compiono il compleanno.
Ho così preso il codice della prima modifica tentando di adattarlo alla welcome mod.

ho preso ciò che la prima mod inseriva nel viewtopic.php e l'ho copiato nel functions.php (per averlo a disposizione nell'index) e quindi ho preso il codice del file html e l'ho messo con la welcome mod nell'indexbody (dove ho inserito la welcome mod).
Non ho nessun errore, ma non viene visualizzato il messaggio nella welcome anche se l'utente fa il compleanno quel giorno...invece si vede correttamente nei vari topic...
quindi sbaglio qualcosa con il codice della funzione (non nell'html perché se metto un qualsiasi testo - al posto della funzione if - si vede), ma non ho capito cosa...

In sostanza mi serve sapere cosa fare per far apparire un Tanti Auguri nella welcome mod quando qualcuno fa il compleanno...

Re: "Auguri" nella Welcome Mod

Inviato: 24/10/2011, 18:21
da Micogian
Non si può portare un codice da un file ad un altro senza sapere che dati elabora.

La Welcome Mod viene inserita nel file index, vero ?
C'è già il controllo del compleanno nel file index.php, senza scomodare altre Mod si potrebbe intervenire nella elaborazione della Lista Compleanni.
Questo codice predispone la Lista degli utenti che compiono gli anni:

Codice: Seleziona tutto

// Generate birthday list if required ...
$birthday_list = '';
if ($config['load_birthdays'] && $config['allow_birthdays'])
{
	$now = getdate(time() + $user->timezone + $user->dst - date('Z'));
	$sql = 'SELECT u.user_id, u.username, u.user_colour, u.user_birthday
		FROM ' . USERS_TABLE . ' u
		LEFT JOIN ' . BANLIST_TABLE . " b ON (u.user_id = b.ban_userid)
		WHERE (b.ban_id IS NULL
			OR b.ban_exclude = 1)
			AND u.user_birthday LIKE '" . $db->sql_escape(sprintf('%2d-%2d-', $now['mday'], $now['mon'])) . "%'
			AND u.user_type IN (" . USER_NORMAL . ', ' . USER_FOUNDER . ')';
	$result = $db->sql_query($sql);

	while ($row = $db->sql_fetchrow($result))
	{
		$birthday_list .= (($birthday_list != '') ? ', ' : '') . get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']);

		if ($age = (int) substr($row['user_birthday'], -4))
		{
			$birthday_list .= ' (' . ($now['year'] - $age) . ')';
		}
	}
	$db->sql_freeresult($result);
}
A questo punto basterebbe controllare se l'utente connesso è presente in questa lista e creare una variabile da utilizzare nel template:
trova la parte di codice

Codice: Seleziona tutto

$birthday_list .= (($birthday_list != '') ? ', ' : '') . get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']);
Inserisci prima (o dopo, non cambia nulla)

Codice: Seleziona tutto

if ($user_data['user_id'] == $row['user_id'])
{
$template->assign_var('USER_BIRTHDAY', 'true');
}
Se l'utente compie gli anni la variabile USER_BIRTHDAY sara 'true' e nel template ci metti

Codice: Seleziona tutto

<!-- IF USER_BIRTHDAY -->il codice che visualizza la torta<!-- ENDIF -->
Non ho provato ma mi sembra plausibile.

Re: "Auguri" nella Welcome Mod

Inviato: 24/10/2011, 19:06
da MarcoG
ok.. ho capito...e provato, ma qualcosa non funziona...

ecco il mio index - nella parte relativa - aggiungendo la modifica che mi hai indicato:
// Generate birthday list if required ...
$birthday_list = '';
if ($config['load_birthdays'] && $config['allow_birthdays'])
{
$now = getdate(time() + $user->timezone + $user->dst - date('Z'));
$sql = 'SELECT u.user_id, u.username, u.user_colour, u.user_birthday
FROM ' . USERS_TABLE . ' u
LEFT JOIN ' . BANLIST_TABLE . " b ON (u.user_id = b.ban_userid)
WHERE (b.ban_id IS NULL
OR b.ban_exclude = 1)
AND u.user_birthday LIKE '" . $db->sql_escape(sprintf('%2d-%2d-', $now['mday'], $now['mon'])) . "%'
AND u.user_type IN (" . USER_NORMAL . ', ' . USER_FOUNDER . ')';
$result = $db->sql_query($sql);

while ($row = $db->sql_fetchrow($result))
{
$birthday_list .= (($birthday_list != '') ? ', ' : '') . get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']);
if ($user_data['user_id'] == $row['user_id'])
{
$template->assign_var('USER_BIRTHDAY', 'true');
}

if ($age = (int) substr($row['user_birthday'], -4))
{
$birthday_list .= ' (' . ($now['year'] - $age) . ')';
}
}
$db->sql_freeresult($result);
}
Ora... se io tolgo l'if e assegno solo il valore alla variabile, vedo ciò che devo vedere sul template (naturalmente di tutti), quindi nel template non ho sbagliato niente. L'errore sta nell'if che per qualche ragione non risulta verificato e quindi non assegna il valore true alla variabile se è il giorno del compleanno..

Re: "Auguri" nella Welcome Mod

Inviato: 24/10/2011, 20:04
da Micogian
E' un errore stupido che a volte mi scappa, la variabile che stabilisce l'utente connesso è $user->data['user_id'], non $user_data

Quindi $user->data['user_id'] è l'utente connesso mentre $row['user_id'] è l'utente che viene aggiunto alla Lista dei Compleanni. Se i due user_id combaciano la Variabile è "true"

Re: "Auguri" nella Welcome Mod

Inviato: 24/10/2011, 21:46
da MarcoG
Perfetto, funziona alla grande ;)

sei grande :ugeek:

Re: "Auguri" nella Welcome Mod

Inviato: 24/10/2011, 21:50
da Micogian
Sono contento.
Come hai visto con due righette hai risolto.
A volte non serve installare Mod complicate e che soprattutto non si capiscono.
Basta un pò di conoscenza di come funziona il Forum e un pò di fantasia e il gioco è fatto.

Il consiglio che vi posso dare è che quando si fa una Modifica bisognerebbe cercare di capire quello che fa, inserire dei codici solo copiandoli non serve a nulla.

Re: [RISOLTO] "Auguri" nella Welcome Mod

Inviato: 24/10/2011, 22:32
da MarcoG
lo so.. ma purtroppo, come puoi immaginare, spesso il tempo che si può dedicare ad un sito è molto limitato.. fra lavoro e altro mi ritrovo a fare mille modifiche tutte insieme..

comunque grazie ancora, negli ultimi giorni mi hai risolto tantissimi problemi, e se hai bisogno di qualcosa non esitare a contattarmi ;)