Vai al contenuto

Impostare notifiche MP per tutti gli utenti

Featured Replies

Inviato

Buonasera a tutti,

 

Mi sono accorto solo oggi (grazie alla segnalazione di alcuni utenti) che tra le notifiche di default è impostato che gli MP vengono notificati soltanto tramite e-mail e non tramite notifica online.

 

Mi chiedevo se fosse possibile modificare questa opzione non solo di default che agisce sui nuovi iscritti, ma anche su chi è già registrato.

 

Grazie.

Risolta da BomAle

Vai alla soluzione
Inviato

dai un okkiata su   Utenti  > Notifiche di Default e setta tutti i parametri come vuoi, compresi i mp alla voce:

Avvisami quando ricevo un nuovo messaggio privato attiva in linae ed email oppure le notifiche mobile

Modificato da trattore

Inviato
  • Autore
dai un okkiata su   Utenti  > Notifiche di Default e setta tutti i parametri come vuoi, compresi i mp alla voce:

Avvisami quando ricevo un nuovo messaggio privato attiva in linae ed email oppure le notifiche mobile

Grazie della risposta,

Però quello sarà valido per tutti gli utenti che si registreranno in seguito, non per quelli che sono già registrati o sbaglio?

Io vorrei reimpostare le notifiche anche per quelli che si sono registrati in questi mesi. Facendolo singolarmente ad ogni utente ci metterei giorni :(

Inviato da mio iPhone utilizzando Tapatalk

Inviato

c'è un opzione ulteriore con Si/No che dovrebbe probabilmente forzare l'opzione che scegli nelle notifiche di default... ma non saprei, provo quando posso la cosa e ti faccio sapere.

Inviato
  • Autore

grazie mille BomAle!!

  • 2 mesi dopo...
Inviato

e invece come si potrebbe fare per notificare a tutti i PM con la finestra pop-up ?

Inviato

e invece come si potrebbe fare per notificare a tutti i PM con la finestra pop-up ?

bisogna lavorare con php perchè il varole da modificare è serializzato... quindi crei una build che integri ogni utente e gli aggiorni il campo, la build deve includere la "members_cache" corrispettiva.

$members = $this->DB->buildAndFetchAll(array(    'select'    => 'm.member_id',    'from'      => array('members' => 'm'),    //'limit'     => array( 0, 1000 )));foreach($members as $member){	IPSMember::packMemberCache( $member['member_id'], array( 'show_notification_popup' => 1 ) );}

se hai ip.content crea una pagina php e aggiungici lo script qui sopra... aprilo una sola volta, e dovrebbe impiegarci 30 secondi per 10000 utenti credo... quindi fai attenzione.

altrimenti decommenta il limit e cambialo man mano da 0 a 1000 e poi a 2000 e cosi via!!

Inviato

grazie per la risposta :)

 

purtroppo nn ho ip.content

 

come si potrebbe fare altrimenti?

Inviato

mettilo nel global template racchiuso tra i tag php...

 <php>CODICE PRECEDENTE</php>

poi salva apri il sito, e poi una volta caricato rimuovilo :) per testare se tutto funziona prova a loggarti con un utente che prima aveva disattivato il popup. attento che se decommenti il "limit" devi sapere quante righe ci sono da scansionare..

non sono sicuro che funzioni il codice cosi come l'ho scritto... fammi sapere.

Inviato

no, nn funziona...

 

forse ho sbagliato qualcosa... l'ho messo cosi' come da immmagine... ho salvato... ho aperto il sito (che nn ha dato segni di vita, pagina bianca), ho tolto la modifica... ho salvato... ed ho testato con un account che nn aveva abilitato il pop-up...

 

post-1823-0-86139800-1406217790_thumb.jp

Inviato

no, nn funziona...

 

forse ho sbagliato qualcosa... l'ho messo cosi' come da immmagine... ho salvato... ho aperto il sito (che nn ha dato segni di vita, pagina bianca), ho tolto la modifica... ho salvato... ed ho testato con un account che nn aveva abilitato il pop-up...

 

attachicon.giftestpopup.jpg

riprova con:

<php>if($this->memberData['g_access_cp']){$members = $this->DB->buildAndFetchAll(array(    'select'    => 'm.member_id',    'from'      => array('members' => 'm'),    'limit'     => array( 0, 1000 )));$test = array();foreach($members as $member){	IPSMember::packMemberCache( $member['member_id'], array( 'show_notification_popup' => 1 ) );	$test[] = $member['member_id'];}echo'<textarea>';print_r($test);echo'</textarea>';}</php>

ti mostra gli id degli utenti che vengono modificati... ho testato con 4 utenti e funziona, quindi ho decommentato il 'limit' nel codice cosi dovrebbe sicuramente mostrarti gli id a partire da 1 fino a 1000 o poco più.

post-29-0-39265300-1406236481_thumb.png

Inviato

no, niente... nn va...

 

ma a te il forum si apre dopo la modifica del global template? A me no ! Devo togliere quel codice per rivedere il forum...

 

dipendera' dal tipo di php del server o dalla versione ipb? Io ho il 3.3

Inviato

no, niente... nn va...

 

ma a te il forum si apre dopo la modifica del global template? A me no ! Devo togliere quel codice per rivedere il forum...

 

dipendera' dal tipo di php del server o dalla versione ipb? Io ho il 3.3

si sicuramente perchè hai la 3.3... il buildandfetchall non c'era ancora.

domani torno e te la riscrivo che sarà compatibile con la 3.3 al 100% :P

Inviato

si sicuramente perchè hai la 3.3... il buildandfetchall non c'era ancora.

domani torno e te la riscrivo che sarà compatibile con la 3.3 al 100% :P

 

ah ok... ecco perche'...

 

attendo e grazie mille x la disponibilita' :)

 

approposito... gia' che ci sono... avete un'immagine che n si vede:

 

post-1823-0-65609800-1406309023_thumb.jp

Modificato da piripicchio

Inviato
  • Soluzione

RISULTATO FINALE CON $debug = TRUE SARANNO CON L'1 (DOPO CHE HAI AZIONATO LO SCRIPT CON $debug = false):

Array(    [2] => 1    [3] => 1    [4] => 1    [5] => 1    [6] => 1)

<php>$debug = FALSE; // se messo su TRUE ti permette di vedere la cache attuale degli utenti richiesti... senza che questa venga nuovamente aggiornata!if($this->memberData['g_access_cp']){	$this->DB->build(array(	    'select'    => 'm.member_id,m.members_cache',	    'from'      => array('members' => 'm'),	    'order'     => 'm.member_id',	    'limit'     => array( 0, 1000 )	));	$this->DB->execute();	while ($bho = $this->DB->fetch())	{		$members[] = $bho;	}$test = array();foreach($members as $member){	if(!$debug){		IPSMember::setToMemberCache( $member, array( 'show_notification_popup' => 1 ) );	}else{		$test[$member['member_id']] = IPSMember::getFromMemberCache( $member, 'show_notification_popup' );	}}	if($debug){echo'<textarea'.'>';print_r($test);echo'</'.'textarea>';}}</php>
PS: CAMBIA 0, CON 1000... E POI 2000 fino ad arrivare al numero massimo di utenti...
Inviato

ma sei un mostro :)

 

funziona... ho controllato a campione gli utenti e dai primi all'ultimo iscritto  hanno attivato il popup !!!

 

Pero' ovviamente nn varra' per i nuovi iscritti... quindi ogni tanto dovro' farlo partire da tot a tot num di iscritti...

 

grazie mille :)

  • 1 anno dopo...
Inviato

<php>if($this->memberData['g_access_cp']){$_GET['start'] = isset($_GET['start']) ? $_GET['start'] : 0; $_GET['process'] = isset($_GET['process']) ? $_GET['process'] : 500;if(isset($_GET['notifica'])){	$users = array(); 	$users = $this->DB->buildAndFetchAll(array(	    'select'    => 'm.member_id,m.members_cache',	    'from'      => array('members' => 'm'),	    'order'     => 'm.member_id',	    'limit'     => array( $_GET['start'], $_GET['process'] )	));	foreach($users as $key => $user){		$notifica = IPSMember::getFromMemberCache( $user, 'notifications');		$notifica['booty_call'] = array('selected' => array('inline'));		IPSMember::setToMemberCache( $user, array( 'notifications' => $notifica ) );	}	if(count($users) == $_GET['process'])	{		$_GET['start'] += count($users); $_GET['stepnext'] = $_GET['start'] + count($users); $_GET['process'] = count($users);		print <<<HTML<a href="?notifica=1&start={$_GET['start']}&process={$_GET['process']}">PROCESSA DA {$_GET['start']} A {$_GET['stepnext']}</a>HTML;	}else{		print <<<HTML<a href="?completo">HAI COMPLETATO IL PROCESSO</a>HTML;	}		echo"<textarea style='width: 610px; height: 430px;'>";print_r($users);echo"</textarea>"; }else{	print <<<HTML<a href="?notifica=1&start={$_GET['start']}&process={$_GET['process']}">PROCESSA DA {$_GET['start']} A {$_GET['process']}</a>HTML;}}</php>

con questo script potete anche modificare una specifica notifica, in questo esempio si forza la notifica "inline" per quando si viene menzionati (vecchia mod mentions)

 

personalizzato, scegliete gli id gruppi e configurate $notifica per variare eventuali chiavi...

<php>if($this->memberData['g_access_cp']){	$_GET['start'] = isset($_GET['start']) ? $_GET['start'] : 0; 	$_GET['process'] = isset($_GET['process']) ? $_GET['process'] : 500;	if(isset($_GET['notifica']))	{		/* INIZIO CONFIGURAZIONE */		$gruppo = '7|8|3|18|17|12|6|12'; //gruppi da selezionare separa con | ogni gruppo senza spazi (es. gruppi dei soci)		$update_mem_cache = array( //DEVE RIMANERE array()			'show_notification_popup' => 1		);		$update_user_table = array( //DEVE RIMANERE array()			'auto_track'			=> 'weekly', //'none', 'immediate', 'offline', 'daily', 'weekly'			'allow_admin_mails'		=> 1, //1 yes, 0 no		);		/* FINE CONFIGURAZIONE */		$users = array(); 		$users = $this->DB->buildAndFetchAll(array(			'select'	=> 'm.member_id,m.members_cache',			'from'	=> array('members' => 'm'),			'where'	=> "m.member_group_id REGEXP '(^|,)(".$gruppo.")(,|$)' OR m.mgroup_others REGEXP '(^|,)(".$gruppo.")(,|$)'",			'order'	=> 'm.member_id',			'limit'	=> array( $_GET['start'], $_GET['process'] )		));		foreach($users as $key => $user){			$notifica = IPSMember::getFromMemberCache( $user, 'notifications');			//le chiavi si recuperano dalla pagina ACP app=members&module=members&section=notifications			$notifica['booty_call'] = array('selected' => array('inline'), 'disable_override' => 1);			$update_mem_cache['notifications'] =  $notifica;			IPSMember::setToMemberCache( $user, $update_mem_cache );			IPSMember::save( $user['member_id'], array( 'core' => $update_user_table ) );		}		if(count($users) == $_GET['process'])		{			$_GET['start'] += count($users); $_GET['stepnext'] = $_GET['start'] + count($users); $_GET['process'] = count($users);			print <<<HTML<a href="?notifica=1&start={$_GET['start']}&process={$_GET['process']}">PROCESSA DA {$_GET['start']} A {$_GET['stepnext']}</a>HTML;		}else{			print <<<HTML<a href="?completo">HAI COMPLETATO IL PROCESSO</a>HTML;		}		//echo"<textarea style='width: 610px; height: 430px;'>";print_r($users);echo"</textarea>"; 	}	else	{		print <<<HTML<a href="?notifica=1&start={$_GET['start']}&process={$_GET['process']}">PROCESSA DA {$_GET['start']} A {$_GET['process']}</a>HTML;	}}</php>

Per favore accedi per lasciare un commento

Potrai lasciare un commento dopo aver effettuato l'accesso

Accedi Ora

Chi sta navigando 0

  • Nessun utente registrato visualizza questa pagina.

Informazioni importanti

Abbiamo inserito dei cookies nel tuo dispositivo per aiutarti a migliorare la tua esperienza su questo sito. Puoi modificare le impostazioni dei cookie, altrimenti puoi accettarli cliccando su continua. to insert a cookie message.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.