News:

Want to get involved in developing SMF, then why not lend a hand on our github!

Main Menu

Curiosità sulla scelta dell'avatar...

Started by ivanom., January 06, 2013, 02:43:49 AM

Previous topic - Next topic

ivanom.

Si può impedire ad un utente di scegliere un avatar già utilizzato da qualcun altro, per evitare doppioni? Nel mio forum vedo che questa scelta si può fare anche se l'avatar è utilizzato già da qualcun altro... ???

emanuele

Non esiste alcun modo (di default).
Se dai la possibilità di caricarli o di usare url esterne è sostanzialmente impossibile.
Se permetti solo avatar dalle gallerie si potrebbe fare qualcosa.


Take a peek at what I'm doing! ;D




Hai bisogno di supporto in Italiano?

Aiutateci ad aiutarvi: spiegate bene il vostro problema: no, "non funziona" non è una spiegazione!!
1) Cosa fai,
2) cosa ti aspetti,
3) cosa ottieni.

ivanom.

Sì in effetti mi interessa solo dalla galleria; cosa si può?

emanuele

Ehhh...mah...potrebbe essere facile.

In Profile-Modify.php, cerca:
Code (find) Select
if ($value == 'none')
{

appena prima aggiungi:
Code (add before) Select
elseif ($value == 'server_stored' && allowedTo('profile_server_avatar'))
{
$profile_vars_avatar = strtr(empty($_POST['file']) ? (empty($_POST['cat']) ? '' : $_POST['cat']) : $_POST['file'], array('&' => '&'));
$profile_vars_avatar = preg_match('~^([\w _!@%*=\-#()\[\]&.,]+/)?[\w _!@%*=\-#()\[\]&.,]+$~', $profile_vars['avatar']) != 0 && preg_match('/\.\./', $profile_vars['avatar']) == 0 && file_exists($modSettings['avatar_directory'] . '/' . $profile_vars['avatar']) ? ($profile_vars['avatar'] == 'blank.gif' ? '' : $profile_vars['avatar']) : '';

$avatar_request = $smcFunc['db_query']('', '
SELECT COUNT(*)
FROM {db_prefix}members
WHERE avatar = {string:avatar_name}',
array(
'avatar_name' => $profile_vars_avatar,
)
);
if ($smcFunc['db_num_rows']($avatar_request) != 0)
fatal_lang_error('attachments_duplicate', 'critical');
}


Quindi in Errors.english.php aggiungi:
$txt['attachments_duplicate'] = 'Sorry, you cannot select this avatar because someone else is already using it.';
e relativa traduzione in Errors.italian.php e/o Errors.italian-utf8.php.

Codice non provato, quindi potrebbe anche non funzionare...


Take a peek at what I'm doing! ;D




Hai bisogno di supporto in Italiano?

Aiutateci ad aiutarvi: spiegate bene il vostro problema: no, "non funziona" non è una spiegazione!!
1) Cosa fai,
2) cosa ti aspetti,
3) cosa ottieni.

ivanom.


ivanom.

Scusa Emanuele ma non funziona più. quando cambio la scelta dell'avatar mi da sempre "si è verificatouner...." anche se l'avatr non è in uso da nessuno. Tra l'altro ho notato che non trovo più i file Errors.english.php  Errors.italian.php e Errors.italian-utf8.php.ma in che cartella sono, in /httpdocs/forum/Sources giusto?
Non è che sti problemi son dovuti a qualche mod che ho installato ultimam. (ho installato Ad Managment, Advanced Contact Form e Copyright and Footer Links)? ::)

emanuele

Il messaggio d'errore completo sarebbe forse più utile. ;)

Quando tu cambi il tuo avatar ti da l'errore?
Nel log degli errori c'è per caso una descrizione più completa dell'errore stesso?

I file di lingua sono in Themes/default/languages.


Take a peek at what I'm doing! ;D




Hai bisogno di supporto in Italiano?

Aiutateci ad aiutarvi: spiegate bene il vostro problema: no, "non funziona" non è una spiegazione!!
1) Cosa fai,
2) cosa ti aspetti,
3) cosa ottieni.

ivanom.

Il log errori dà:
Tipo di errore: Critico
Applica filtro: Mostra solo i messaggi di errore di questo URL
http://psicologaonlinesalerno.it/forum/index.php?action=profile;area=forumprofile;u=1;save
Applica filtro: Mostra solo gli errori con lo stesso messaggio
Spiacenti, ma l'avatar scelto è utilizzato da un altro utente

il messaggio che esce (quando tento di cambiare avatar qualsiasi) è:
Si è verificato un errore!
Spiacenti, ma l'avatar scelto è utilizzato da un altro utente(la mia traduzione).

emanuele

Ed invece quell'avatar non è in uso?
Sicuro?


Take a peek at what I'm doing! ;D




Hai bisogno di supporto in Italiano?

Aiutateci ad aiutarvi: spiegate bene il vostro problema: no, "non funziona" non è una spiegazione!!
1) Cosa fai,
2) cosa ti aspetti,
3) cosa ottieni.

emanuele

Prova con:
elseif ($value == 'server_stored' && allowedTo('profile_server_avatar'))
{
$profile_vars_avatar = strtr(empty($_POST['file']) ? (empty($_POST['cat']) ? '' : $_POST['cat']) : $_POST['file'], array('&' => '&'));
$profile_vars_avatar = preg_match('~^([\w _!@%*=\-#()\[\]&.,]+/)?[\w _!@%*=\-#()\[\]&.,]+$~', $profile_vars['avatar']) != 0 && preg_match('/\.\./', $profile_vars['avatar']) == 0 && file_exists($modSettings['avatar_directory'] . '/' . $profile_vars['avatar']) ? ($profile_vars['avatar'] == 'blank.gif' ? '' : $profile_vars['avatar']) : '';

$avatar_request = $smcFunc['db_query']('', '
SELECT id_member
FROM {db_prefix}members
WHERE avatar = {string:avatar_name}',
array(
'avatar_name' => $profile_vars_avatar,
)
);
if ($smcFunc['db_num_rows']($avatar_request) != 0)
{
list($user_avat) = $smcFunc['db_fetch_row']($avatar_request);
if (allowedTo('admin_forum'))
fatal_lang_error('attachments_duplicate_admin', 'critical', array($user_avat));
fatal_lang_error('attachments_duplicate', 'critical');
}
}


ed aggiungi a Error.english:

$txt['attachments_duplicate'] = 'Sorry, you cannot select this avatar because is already in use by %1$s.';


Dovrebbe dirti chi sta usando l'avatar...spero (se sei admin).


Take a peek at what I'm doing! ;D




Hai bisogno di supporto in Italiano?

Aiutateci ad aiutarvi: spiegate bene il vostro problema: no, "non funziona" non è una spiegazione!!
1) Cosa fai,
2) cosa ti aspetti,
3) cosa ottieni.

ivanom.

Purtroppo non va, ho seguito alla lettera: ho sosituito i codici che mi hai dato ora con quelli della risposta precedente a questa  che mi hai inviato.
esce: si è verificato un errore e non appare più "Spiacenti, ma l'avatar scelto è utilizzato da un altro utente"(la mia traduzione). appare campo vuoto e un link "indietro" :'(

emanuele

Sorry, sbagliato una riga... :-[

$txt['attachments_duplicate'] = 'Sorry, you cannot select this avatar because is already in use by %1$s.';

Cambiala in:
$txt['attachments_duplicate_admin'] = 'Sorry, you cannot select this avatar because is already in use by %1$s.';

Se traduci questa stringa, ricordati di mettere il %1$s, è importante. ;)

Ma lascia anche il precedente:
$txt['attachments_duplicate'] = 'Sorry, you cannot select this avatar because someone else is already using it.';


Take a peek at what I'm doing! ;D




Hai bisogno di supporto in Italiano?

Aiutateci ad aiutarvi: spiegate bene il vostro problema: no, "non funziona" non è una spiegazione!!
1) Cosa fai,
2) cosa ti aspetti,
3) cosa ottieni.

ivanom.

Scusami di nuovo ma mi dà lo stesso errore e mi dice in uso da utente 1 che sarei io admin (Sorry, you cannot select this avatar because is already in use by 1.). Se invece mi loggo con un fake 8) mi ridà lo stesso errore di prima "Spiacenti, ma l'avatar scelto è utilizzato da un altro utente". Però se da admin carico una mia immagine me la fa mettere...

emanuele

AHHHH....ops...ovviamente tu stai cambiando qualcosa nel tuo profilo ed ogni volta che salvi quello di dice picche...
elseif ($value == 'server_stored' && allowedTo('profile_server_avatar'))
{
$profile_vars_avatar = strtr(empty($_POST['file']) ? (empty($_POST['cat']) ? '' : $_POST['cat']) : $_POST['file'], array('&' => '&'));
$profile_vars_avatar = preg_match('~^([\w _!@%*=\-#()\[\]&.,]+/)?[\w _!@%*=\-#()\[\]&.,]+$~', $profile_vars['avatar']) != 0 && preg_match('/\.\./', $profile_vars['avatar']) == 0 && file_exists($modSettings['avatar_directory'] . '/' . $profile_vars['avatar']) ? ($profile_vars['avatar'] == 'blank.gif' ? '' : $profile_vars['avatar']) : '';

$avatar_request = $smcFunc['db_query']('', '
SELECT id_member
FROM {db_prefix}members
WHERE avatar = {string:avatar_name}',
array(
'avatar_name' => $profile_vars_avatar,
)
);
list($user_avat) = $smcFunc['db_fetch_row']($request);
$smcFunc['db_free_result']($request);
if ($smcFunc['db_num_rows']($avatar_request) != 0 && $user_avat != $memID)
fatal_lang_error('attachments_duplicate', 'critical');
}


Take a peek at what I'm doing! ;D




Hai bisogno di supporto in Italiano?

Aiutateci ad aiutarvi: spiegate bene il vostro problema: no, "non funziona" non è una spiegazione!!
1) Cosa fai,
2) cosa ti aspetti,
3) cosa ottieni.

ivanom.

#14
Niente da fare..non riesco a capire forse sbaglio qualcosa, adesso mi ritrovo questo in profile.modify:
      }
}
elseif ($value == 'server_stored' && allowedTo('profile_server_avatar'))
{
$profile_vars_avatar = strtr(empty($_POST['file']) ? (empty($_POST['cat']) ? '' : $_POST['cat']) : $_POST['file'], array('&' => '&'));
$profile_vars_avatar = preg_match('~^([\w _!@%*=\-#()\[\]&.,]+/)?[\w _!@%*=\-#()\[\]&.,]+$~', $profile_vars['avatar']) != 0 && preg_match('/\.\./', $profile_vars['avatar']) == 0 && file_exists($modSettings['avatar_directory'] . '/' . $profile_vars['avatar']) ? ($profile_vars['avatar'] == 'blank.gif' ? '' : $profile_vars['avatar']) : '';

$avatar_request = $smcFunc['db_query']('', '
SELECT id_member
FROM {db_prefix}members
WHERE avatar = {string:avatar_name}',
array(
'avatar_name' => $profile_vars_avatar,
)
);
list($user_avat) = $smcFunc['db_fetch_row']($request);
$smcFunc['db_free_result']($request);
if ($smcFunc['db_num_rows']($avatar_request) != 0 && $user_avat != $memID)
fatal_lang_error('attachments_duplicate', 'critical');
}
if ($value == 'none')
{


e in error.english questo:
<?php
// Version: 2.0; Errors

global $scripturl$modSettings;

$txt['attachments_duplicate'] = 'Sorry, you cannot select this avatar because someone else is already using it.';
$txt['attachments_duplicate_admin'] = 'Sorry, you cannot select this avatar because is already in use by %1$s.';
$txt['no_access'] = 'You are not allowed to access this section';

cosa non va?

ivanom.

P.s. questa volta il messaggio di errore è     Spiacenti, ma l'avatar scelto è utilizzato da un altro utente.( la mia traduzione)

emanuele

elseif ($value == 'server_stored' && allowedTo('profile_server_avatar'))
{
$profile_vars_avatar = strtr(empty($_POST['file']) ? (empty($_POST['cat']) ? '' : $_POST['cat']) : $_POST['file'], array('&amp;' => '&'));
$profile_vars_avatar = preg_match('~^([\w _!@%*=\-#()\[\]&.,]+/)?[\w _!@%*=\-#()\[\]&.,]+$~', $profile_vars_avatar) != 0 && preg_match('/\.\./', $profile_vars_avatar) == 0 && file_exists($modSettings['avatar_directory'] . '/' . $profile_vars_avatar) ? ($profile_vars_avatar == 'blank.gif' ? '' : $profile_vars_avatar) : '';

$avatar_request = $smcFunc['db_query']('', '
SELECT id_member
FROM {db_prefix}members
WHERE avatar = {string:avatar_name}',
array(
'avatar_name' => $profile_vars_avatar,
)
);
list($user_avat) = $smcFunc['db_fetch_row']($request);
$smcFunc['db_free_result']($request);
if ($smcFunc['db_num_rows']($avatar_request) != 0 && $user_avat != $memID)
fatal_lang_error('attachments_duplicate', 'critical');
}

Testato in un posto, suggerito di usarlo in un altro... ::)
Sorry.


Take a peek at what I'm doing! ;D




Hai bisogno di supporto in Italiano?

Aiutateci ad aiutarvi: spiegate bene il vostro problema: no, "non funziona" non è una spiegazione!!
1) Cosa fai,
2) cosa ti aspetti,
3) cosa ottieni.

ivanom.


emanuele

#18
ehm...no, non funziona...c'è ancora un errore (scusa, ma tra il fuoco di fila di cose che devo fare sto lasciando scadere il supporto...)
elseif ($value == 'server_stored' && allowedTo('profile_server_avatar'))
{
$profile_vars_avatar = strtr(empty($_POST['file']) ? (empty($_POST['cat']) ? '' : $_POST['cat']) : $_POST['file'], array('&amp;' => '&'));
$profile_vars_avatar = preg_match('~^([\w _!@%*=\-#()\[\]&.,]+/)?[\w _!@%*=\-#()\[\]&.,]+$~', $profile_vars_avatar) != 0 && preg_match('/\.\./', $profile_vars_avatar) == 0 && file_exists($modSettings['avatar_directory'] . '/' . $profile_vars_avatar) ? ($profile_vars_avatar == 'blank.gif' ? '' : $profile_vars_avatar) : '';

$avatar_request = $smcFunc['db_query']('', '
SELECT id_member
FROM {db_prefix}members
WHERE avatar = {string:avatar_name}',
array(
'avatar_name' => $profile_vars_avatar,
)
);
list($user_avat) = $smcFunc['db_fetch_row']($avatar_request);
if ($smcFunc['db_num_rows']($avatar_request) != 0 && $user_avat != $memID)
fatal_lang_error('attachments_duplicate', 'critical');
$smcFunc['db_free_result']($avatar_request);
}


Take a peek at what I'm doing! ;D




Hai bisogno di supporto in Italiano?

Aiutateci ad aiutarvi: spiegate bene il vostro problema: no, "non funziona" non è una spiegazione!!
1) Cosa fai,
2) cosa ti aspetti,
3) cosa ottieni.

Advertisement: