Autore Topic: Limitare il numero di registrazioni  (Letto 2183 volte)

Offline MisterNo

  • Nuovo arrivato
  • *
  • Post: 40
  • Sesso: Maschio
    • Mostra profilo
Limitare il numero di registrazioni
« il: 09 Feb 2007, 18:20:30 »
Salve a tutti, vorrei sapere se esiste un modo per limitare il numero di registrazioni in joomla, in modo che ad esempio dopo tot utenti registrati al tot+1 appaia un messaggio del tipo "numero massimo di registrazioni raggiunto"
Ho provato a modificare il codice del mambot mosregblocker, che ha  le funzionalità di blocco utenti un base a nome utente e email che si inseriscono nel mambot,ma invano.. qualche suggerimento?
Grazie

Offline surfbit

  • Instancabile
  • ******
  • Post: 7316
  • Sesso: Maschio
  • Verranno ignorati mp tecnici
    • Mostra profilo
Re: Limitare il numero di registrazioni
« Risposta #1 il: 09 Feb 2007, 21:20:21 »
Dovresti fare un chiamata al db che ti restituisca il numero dei registrati. A quel punto metti un controllo, che se viene superato il numero da tè fissato non è più possibile registrarsi.
A volte basta un sorriso per far felice una persona.

La guida alla scelta dell'hosting per Joomla!  Joomlaspace.it: l'hosting per Joomla

Offline MisterNo

  • Nuovo arrivato
  • *
  • Post: 40
  • Sesso: Maschio
    • Mostra profilo
Re: Limitare il numero di registrazioni
« Risposta #2 il: 12 Feb 2007, 14:47:59 »
Grazie del consiglio, purtroppo sono ancora un novizio del php, non so bene come scrivere il controllo.. Ho fatto la query al database così:

"SELECT COUNT('id') FROM `jos_users`"; e l'ho assegnata a una variabile $numuser, poi dovrei confrontare questo numero appena trovato con quello di un'altra variabile $maxreguser , alla quale dò il valore massimo di utenti che possono registrarsi giusto?
E alla fine con un if effettuo il controllo...

Offline surfbit

  • Instancabile
  • ******
  • Post: 7316
  • Sesso: Maschio
  • Verranno ignorati mp tecnici
    • Mostra profilo
Re: Limitare il numero di registrazioni
« Risposta #3 il: 12 Feb 2007, 14:50:32 »
Eventualmente prova a vedere se c'è qualche estensione: http://extensions.joomla.org/

Non ricordo ma qualcosa c'è sulle registrazioni  ;)
A volte basta un sorriso per far felice una persona.

La guida alla scelta dell'hosting per Joomla!  Joomlaspace.it: l'hosting per Joomla

Offline MisterNo

  • Nuovo arrivato
  • *
  • Post: 40
  • Sesso: Maschio
    • Mostra profilo
Re: Limitare il numero di registrazioni
« Risposta #4 il: 12 Feb 2007, 15:42:59 »
Eventualmente prova a vedere se c'è qualche estensione: http://extensions.joomla.org/

Non ricordo ma qualcosa c'è sulle registrazioni  ;)

Ho guardato ma non ho trovato nulla che faccia al caso mio.. Se ti viene in mente qualcosa fammi sapere
Grazie ;)

Offline MisterNo

  • Nuovo arrivato
  • *
  • Post: 40
  • Sesso: Maschio
    • Mostra profilo
Re: Limitare il numero di registrazioni
« Risposta #5 il: 13 Feb 2007, 11:39:36 »
Ho provato a modificare il mambot mosregblocker per adattarlo alla mia esigenza,ecco il codice:

File mosreglimit.xml:(omettendo la parte di installazione)
Codice: [Seleziona]
<files>
<filename mambot="mosreglimit">mosreglimit.php</filename>
</files>
<params>
<param name="maxreguser" type="text" default="" label="Numero massimo di utenti che possono registrarsi al sito" description="Inserite il numero massimo di utenti che possono registrarsi al sito."/>
<param name="maxregusermsg" type="text" default="Spiacente, è stato raggiunto il numero massimo di utenti che possono registrarsi" label="Messaggio di errore quando si raggiunge il numero massimo di utenti registrati al sito" description="Testo da mostrare quando è stato raggiunto il numero massimo di registrazioni consentite."/>
</params>
</mosinstall>

file mosreglimit.php:

Codice: [Seleziona]
<?php

/*

RegistrationLimit 1.0 vi permette di definire il numero massimo di 
utenti che si possono registrare.

*/
defined'_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );

$_MAMBOTS->registerFunction'onStart''botRegLimit' );

function 
botRegLimit() {
// Prima controllo se c'è qualcosa da fare
$option strtolower (strval(  mosGetParam$_REQUEST'option' ) ) );
$task strtolower (strval(  mosGetParam$_REQUEST'task' ) ) );
if(!in_array($option, array('com_registration''com_comprofiler')) || $task!='saveregistration') return true;

global $database;

// carica i parametri dal mambot mosreglimit, definiti nel file xml
$query "SELECT params FROM jos_mambots WHERE element = 'mosreglimit' AND folder = 'system'";
// assegna alla variabile database il valore di $query
$database->setQuery$query );
// carica il mambot
$database->loadObject($mambot); 
$botParams = new mosParameters$mambot->params );
// assegna a $maxreguser il valore impostato nel file xml 
$maxreguser $botParams->def('maxreguser');
// la query che ritorna il numero di utenti attualmente registrati, chiamiamo la variabile $numuser
    $id "SELECT COUNT('id') FROM `jos_users`";
$database->setQuery$id );
$numuser $id;
$database->loadObject($mambot);
// definisce il messaggio di errore
        
$msg $botParams->def('maxregusermsg');
if ($numuser $maxreguser) {
mosErrorAlert($msg);
} return 
true;
}
?>


Ora sono riuscito a far apparire il messaggio di errore, solo che ho un altro problema... Ho 2 utenti registrati, e come numero massimo di utenti che possono registrarsi ho messo 3, quindi la finestra di segnalazione errore dovrebbe comparire quando il 4° utente prova a registrarsi, e non il terzo.. Se vado a cambiare il valore maxreguser non ne tiene conto e dà sempre lo stesso messaggio... Qualche idea?  ???
« Ultima modifica: 13 Feb 2007, 17:20:10 da MisterNo »

Offline kappe

  • Esploratore
  • **
  • Post: 92
    • Mostra profilo
Re: Limitare il numero di registrazioni
« Risposta #6 il: 13 Feb 2007, 23:13:02 »
Non so bene se è quello che vuoi fare tu, in alternativa puoi comunque bloccare la registrazione degli utenti tu stesso una volta raggiunta la quota da te desiderata.

Dovrebbe essere una voce da spuntare nel configuration.php.


Offline GMarche

  • Appassionato
  • ***
  • Post: 493
  • Sesso: Maschio
    • Mostra profilo
Re: Limitare il numero di registrazioni
« Risposta #7 il: 14 Feb 2007, 03:23:51 »
Una curiosità... come mai una necessità del genere?

Ciao ciao

Offline MisterNo

  • Nuovo arrivato
  • *
  • Post: 40
  • Sesso: Maschio
    • Mostra profilo
Re: Limitare il numero di registrazioni
« Risposta #8 il: 14 Feb 2007, 18:40:39 »
Ci sono riuscito!! Sbagliavo la funzione che recuperava il valore del numero di utenti dal database... Ecco il codice funzionante, se vi può interessare...  :P

File mosreglimit.xml

Codice: [Seleziona]
<description>
<![CDATA[
<b>RegistrationLimit</b> vi permette di definire il numero massimo di utenti che possono registrarsi.

]]>
</description>
<files>
<filename mambot="mosreglimit">mosreglimit.php</filename>
</files>
<params>
<param name="maxreguser" type="text" label="Numero massimo di utenti che possono registrarsi al sito" description="Inserite il numero massimo di utenti che possono registrarsi al sito."/>
<param name="maxregusermsg" type="text" default="Spiacente, è stato raggiunto il numero massimo di utenti che possono registrarsi" label="Messaggio di errore quando si raggiunge il numero massimo di utenti registrati al sito" description="Testo da mostrare quando è stato raggiunto il numero massimo di registrazioni consentite."/>
</params>
</mosinstall>

File MosRegLimit.php:

Codice: [Seleziona]
<?php

/*

RegistrationLimit 1.0 vi permette di definire il numero massimo di 
utenti che si possono registrare.

*/

defined'_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );

$_MAMBOTS->registerFunction'onStart''botRegLimit' );

function 
botRegLimit() {
// Prima controllo se c'è qualcosa da fare
$option strtolower (strval(  mosGetParam$_REQUEST'option' ) ) );
$task strtolower (strval(  mosGetParam$_REQUEST'task' ) ) );
if(!in_array($option, array('com_registration''com_comprofiler')) || $task!='saveregistration') return true;

global $database;

// carica i parametri dal mambot mosreglimit, definiti nel file xml
$query "SELECT params FROM #__mambots WHERE element = 'mosreglimit' AND folder = 'system'";
// assegna alla variabile database il valore di $query
$database->setQuery$query );
// carica il mambot
$database->loadObject($mambot); 
$botParams = new mosParameters$mambot->params );

// la query che ritorna il numero di utenti attualmente registrati, chiamiamo la variabile $numuser
    $sql "SELECT COUNT('id') FROM `#__users`";
$database->setQuery$sql );
$numuser $database->loadResult($sql);
$botParams = new mosParameters$mambot->params );
// definisce il messaggio di errore
        
$msg $botParams->def('maxregusermsg');
// assegna a $maxreguser il valore impostato nel file xml 
        
$maxreguser $botParams->get('maxreguser');
if ($numuser >= $maxreguser) {
mosErrorAlert($msg);
}
}
?>


Offline surfbit

  • Instancabile
  • ******
  • Post: 7316
  • Sesso: Maschio
  • Verranno ignorati mp tecnici
    • Mostra profilo
Re: Limitare il numero di registrazioni
« Risposta #9 il: 14 Feb 2007, 18:46:42 »
Anch'io non  capisco a cosa possa servire  ??? Ma ti faccio i compliementi per il giusto approccio con Joomla e il forum  :)
A volte basta un sorriso per far felice una persona.

La guida alla scelta dell'hosting per Joomla!  Joomlaspace.it: l'hosting per Joomla

Offline MisterNo

  • Nuovo arrivato
  • *
  • Post: 40
  • Sesso: Maschio
    • Mostra profilo
Re: Limitare il numero di registrazioni
« Risposta #10 il: 15 Feb 2007, 14:51:21 »
Non so se vi possa interessare, comunque allego il mambot completato.  ;)
P.s.Dovrebbe funzionare anche con community builder, ma non l'ho ancora provato  :-[

[allegato eliminato da un amministratore]

Offline GMarche

  • Appassionato
  • ***
  • Post: 493
  • Sesso: Maschio
    • Mostra profilo
Re: Limitare il numero di registrazioni
« Risposta #11 il: 15 Feb 2007, 18:08:55 »
Scusa se embro insistente ma... come mai questa esigenza?  :-X

 

Host

Torna su