Vai al contenuto
Domenico Addotta

3.4 Doppio Problema molto seccante (ricevi email dall'amministrazione)

Recommended Posts

Domenico Addotta

Buongiorno a tutti, ho un problema molto seccante che vi descrivo qui di seguito.....

 

Ho di recente attivato l'obbligo di login dopo aver risolto dei problemi (grazie a InvisionIta), ma permangono altri latenti e alquanto antipatici.....

 

In pratica con il login obbligatorio la maggior parte degli utenti si loggano attraverso il pulsante facebook o google... bello, veloce, affidabile....

 

Il problema di base è che con questa metodologia di login, se l'utente non è registrato in modalità classica al forum, crea un account con l'opzione "accetta le email dall'amministrazone" disattivata di default. Sono quindi costretto ad editare account per account per ripristinare il problema....

 

Credo quindi che sia da modificare il file che crea un nuovo account se non esistente quando si clicca sul logo facebook o google.

 

Il mio sito è questo: www.canonclubitalia.com

 

Aggiungo che ho notato un'altro problema, anche per chi sceglie la via della registrazione classica cliccando su "registrati".... ovvero se ti registri in modalità standard o con google, tutto ok.... l'opzione "accetta le email dall'amministrazione" viene attivata di default.... se invece dal modulo di registrazione clicchi su "facebook" la modalità è disattivata di default....  ora non so se il file che gestisce il modulo di registrazione sia sempre lo stesso... ma è una cosa molto antipatica dover fixare manualmente centinaia di utenti (sulla mia piattaforma si registrano in media 200 nuovi utenti al giorno).

 

Allego screenshot di utente appena loggatosi con facebook, il sistema ha creato automaticamente un nuovo account, lasciando l'opzione "Riceve le email dagli amministratori?" disattivata di default:

 

post-2596-0-63721600-1440746002_thumb.jp

 

Grazie anticipatamente a chi mi aiuterà...

 

;)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
BomAle

anche a me è capitato, mi sono iscritto poco fa tramite facebook nel tuo sito e come hai fatto notare quel campo è disattivato :(

basta avviare questa query SQL per impostare a tutti la ricezione di notifiche amministrative.

UPDATE ibf_members SET allow_admin_mails=1;

ibf_ è il prefisso della tabella, puoi anche toglierlo o modificarlo con il tuo prefisso.

 

o l'alternativa ma devo ancora vedere se risolve bisogna editare il file \admin\applications\core\modules_public\global\register.php linea 1860

cambia

                         'allow_admin_mails'        => intval( $this->request['allow_admin_mail'] ),

in

						 'allow_admin_mails'		=> 1,

e fare dei tentativi... ho il sospetto che reindirizzando ai moduli per completare i campi profilo obbligatori quel valore si azzera, e quindi non tiene in memoria il valore.

in questo caso si potrebbe mettere in

intval( isset($this->request['allow_admin_mail']) ? $this->request['allow_admin_mail'] : 1 )

... possiamo anche discuterne in privato per dei test ;)

 

Altro file da rivedere è \admin\sources\classes\facebook\connect.php -> finishLogin()

/* From reg, so create new account properly */					$toSave = array( 'core' 		 => array(  'name' 				     => IPSText::parseCleanValue( $safeFBName ),													 		    'members_display_name'   => IPSText::parseCleanValue( $displayName ),													 		    'members_created_remote' => 1,													 		    'member_group_id'		 => ( $this->settings['fbc_mgid'] ) ? $this->settings['fbc_mgid'] : $this->settings['member_group'],															    'email'                  => $_userData['email'],															    'fb_uid'                 => $_userData['id'],															    'time_offset'            => $_userData['timezone'],																'members_auto_dst'		 => 1,															    'fb_token'               => $rToken ),									'extendedProfile' => array( 'pp_about_me'            => IPSText::getTextClass( 'bbcode' )->stripBadWords( IPSText::convertCharsets( $_userData['about'], 'utf-8', IPS_DOC_CHAR_SET ) ),																'fb_bwoptions'    		 => $fb_bwoptions ) );											$memberData = IPSMember::create( $toSave, FALSE, FALSE, TRUE );										if ( ! $memberData['member_id'] )					{						throw new Exception( 'CREATION_FAIL' );					}													/* Sync up photo */					$this->syncMember( $memberData['member_id'] );										$pmember = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'members_partial', 'where' => "partial_member_id=" . $memberData['member_id'] ) );

qui crea l'utente ma non c'è traccia di allow_admin_mails :( bisognerebbe piazzare la riga

nota:

$this->registry->getClass('output')->silentRedirect( $this->settings['base_url'] . 'app=core&module=global&section=register&do=complete_login&mid='. $memberData['member_id'].'&key='.$pmember['partial_date'] );

questo è il problema... registra il file non tenendo conto di alcune scelte... non è una richiesta generata da un form/modulo ma un redirect!!

 

questo pezzo qui sotto è presente solo nel template registerForm

						<li class='ipsField clear ipsField_checkbox'>							<input type="checkbox" name="allow_admin_mail" id="allow_admin_mail" value="1" class="input_check" <if test="defaultAAE:|:$this->request['allow_admin_mail'] || !isset( $this->request['allow_admin_mail'] )">checked='checked'</if> tabindex='0' />							<p class='ipsField_content'>								<label for='allow_admin_mail'>{$this->lang->words['receive_admin_emails']}</label>							</p>						</li>

mentre andrebbe inserito anche nel completePartialLogin... ma non sarebbe una soluzione completa (potrebbero accedere usando

http://invisionita.it/forum/index.php?app=core&module=global&section=login&serviceClick=facebook

senza lasciare scelta... quel valore non essendo definito andrà a salvarsi come 0=no

Modificato da BomAle
Alternativa

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
Domenico Addotta

ho provado a modificare register.php come da te indicato e non succede nulla, il campo per chi si logga o registra con facebook rimane sempre nullo, ora ho rimesso l'originale.... soluzioni alternative? ho letto quello che hai scritto in seguito, ma ci ho capito poco...


la soluzione:

 

UPDATE ibf_members SET allow_admin_mails=1;

 

non posso applicarla, la conoscevo, in questo modo riattiverei la ricezione delle mail per chi a suo tempo ha già deciso di non volerne ricevere più ;)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
Domenico Addotta

Dimmi le modifiche che devo apportare ai file e facciamo delle prove sulla piattaforma.... quella del file register.php non ha sortito alcun effetto..... :(

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
BomAle

bisogna modificare:

\admin\sources\classes\facebook\connect.php

$toSave = array( 'core' 		 => array(  'name' 				     => IPSText::parseCleanValue( $safeFBName ),													 		    'members_display_name'   => IPSText::parseCleanValue( $displayName ),													 		    'members_created_remote' => 1,													 		    'member_group_id'		 => ( $this->settings['fbc_mgid'] ) ? $this->settings['fbc_mgid'] : $this->settings['member_group'],															    'email'                  => $_userData['email'],															    'fb_uid'                 => $_userData['id'],															    'time_offset'            => $_userData['timezone'],																'members_auto_dst'		 => 1,															    'fb_token'               => $rToken ),									'extendedProfile' => array( 'pp_about_me'            => IPSText::getTextClass( 'bbcode' )->stripBadWords( IPSText::convertCharsets( $_userData['about'], 'utf-8', IPS_DOC_CHAR_SET ) ),																'fb_bwoptions'    		 => $fb_bwoptions ) );

aggiungendo una riga dopo di .... 'time_offset' => $_userData['timezone'],

'allow_admin_mails'		=> 1,

cosi di default quelli che usano facebook hanno la notifica...

 

dai due test che ho fatto ogni volta che clicco su "crea l'account" dopo essere stato reindirizzato da facebook (visto che non ho uno esistente da usare) mi reindirizza all'url ma la richiesta viene abortita post-29-0-14887500-1440756824_thumb.png

anche se l'account è stato completamente creato... chissa dove si inceppa ancora, occorre il supporto di invisionpower in questa faccenda :( vedi _completeRegistrationSave()

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
Domenico Addotta

questa modifica funziona.... ok.... lo stesso problema quando ci si logga con google.... anche in quel caso non mi attiva la ricezione delle mail di default... dove devo mettere mani?

 

Ho visto che ora gli utenti me li mette in validating, hai modificato qualcosa?

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
Domenico Addotta

Per google ho trovato questo file:

 

.../public/forum/admin/sources/loginauth/google/auth.php

 

e ho aggiunto subito dopo

'members_l_display_name'    =>  IPSText::mbstrtolower($name),

questo:

'allow_admin_mails'		=> 1,

ora vediamo il prossimo che si logga con google cosa succede....

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
Domenico Addotta

Confermo che la modifica al file .../public/forum/admin/sources/loginauth/google/auth.php

 

ha sortito effetto positivo, ora chi si logga con google ha di default la ricezione attiva ;)

 

 

rimane qualcosa di strano, ovvero qualche utente che non completa la procedura di login/registrazione seguendo i passi indicati, il sistema non inserisce il nome correttamente, aggiungendo tali utenti nella sezione "incompleti":

 

post-2596-0-68825700-1440759135_thumb.jp

 

ho visto che il file \admin\sources\classes\facebook\connect.php ha dei parametri riguardo il Nome d'accesso che viene regolarmente inserito, mentre il Nome da visualizzare rimane vuoto....

 

ho preso come esempio proprio il tuo login con facebook, dove il campo Nome da visualizzare rimane vuoto e quindi inserito nella sezione "incompleto".

 

E' possibile dire al sistema di prendersi direttamente il nome come fa per il nome di accesso anche per il campo nome da visualizzare ?


no vedo soltanto un utente di oggi in validating...

 

risolto, problema mio...

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
BomAle

bisogna forzare il nome reale dalle impostazioni... come per facebook dovrebbe esserci per google

  1. Impostazioni di Sistema  >  
  2. Manage Settings  >  
  3. System  >  
  4. Social Media and Sharing

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
Domenico Addotta

 

bisogna forzare il nome reale dalle impostazioni... come per facebook dovrebbe esserci per google

  1. Impostazioni di Sistema  >  
  2. Manage Settings  >  
  3. System  >  
  4. Social Media and Sharing

 

 

il parametro è già impostato correttamente, ma in alcuni casi il campo rimane vuoto, guarda:

 

post-2596-0-21501600-1440760029_thumb.jp

 

secondo me dipende dal fatto che alcuni utenti quando gli viene posta la domanda: crea un nuovo utente o usa uno già esistente e in seguito ti fa vedere il nome obbligatorio, non completa le due procedure, lasciando in ogni caso la registrazione valida, ma il campo vuoto e inserito in "incompleto"......

 

quindi deduco che, per bypassare il problema alla fonte, sia necessario che il sistema si prendi in ogni caso il valore Nome d'accesso e lo inserisca in ogni caso nel campo Nome da visualizzare , in modo che anche per chi non completa tutti i passaggi avvenga la registrazione completa e senza campi vuoti.

 

La mia domanda è: cosa modificare per far si che questo avvenga?    

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
BomAle

bisogna provare a rieditare il file \admin\sources\classes\facebook\connect.php

cambiando

'members_display_name'   => IPSText::parseCleanValue( $displayName )

in

'members_display_name'   => IPSText::parseCleanValue( $safeFBName )

e non so dirti se si sistema :(

 

oppure modifica la stringa poco sopra:

$displayName = ( $this->settings['fb_realname'] == 'enforced' ) ? $safeFBName : '';in$displayName =  $safeFBName;

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
BomAle

per gli utenti esistenti una volta sistemato questo... si dovrebbe avviare una query

https://web.archive.org/web/20141024221751/http://community.invisionpower.com/resources/bugs.html/_/ip-board/facebook-login-generate-some-log-error-members-seo-name-r44454

UPDATE ibf_members pf JOIN(SELECT member_id,nameFROM `ibf_members` mWHERE m.name <>'' and m.members_display_name=''LIMIT 0, 1000) mON pf.member_id = m.member_idSET pf.members_display_name = m.nameWHERE pf.member_id=m.member_id

e dopo fare il rebuild dei seo name dall'admin cp

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
Domenico Addotta

confermo che le modifiche ora funzionano egregiamente ;)

 

in particolare questa:

 


$displayName = ( $this->settings['fb_realname'] == 'enforced' ) ? $safeFBName : '';in$displayName = $safeFBName;

p.s. ci sono altri problemi da risolvere sulla piattaforma, ma ne parleremo nei prossimi giorni.... intanto provvedo come promesso a fare il mio dovere di sostenitore di questa community. Grazie di cuore!! ;)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
BomAle

volevo informarvi che confrontando la 3.4.6 con i file della 3.4.8 si ha rispettivamente:

\admin\sources\classes\facebook\connect.php3.4.6'members_display_name'   => IPSText::parseCleanValue( $safeFBName )3.4.8'members_display_name'   => FALSE, // Enforce a partial member here so users are presented with the option to link with an account on sign-in. We'll take care of enforced names later.

Perciò fate attenzione, agli utenti "incompleti" che trovate nella tab Members > filtro "incomplete" (admin cp) e prestate attenzione a quali di loro hanno l'email o no ecc... intanto nella 3.4.5 il facebook connect non è molto affidabile, per questo fino al prossimo aggiornamento della board su invisionita rimangono accessibili solo le iscrizioni tramite sistema interno ad ipboard!

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Crea un account o accedi per lasciare un commento

You need to be a member in order to leave a comment

Crea un account

Iscriviti per un nuovo account nella nostra comunità. È facile!

Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.

Accedi Ora

×