web-dev-qa-db-fra.com

Comment restreindre l'enregistrement des utilisateurs en fonction du groupe d'utilisateurs

Je me demande si quelqu'un peut m'aider. J'ai développé un plugin qui me permet de limiter le nombre d'utilisateurs qui s'enregistrent sur le site, mais j'aimerais développer cela davantage en le limitant à un groupe d'utilisateurs particulier. Quelqu'un aurait-il une idée de la façon dont je l'obtiens?

C'est mon code jusqu'à présent:

<?php
defined('_JEXEC') or die;

jimport('joomla.plugin.plugin');

class plguserlimit extends JPlugin {

function __construct(&$subject, $config = array()) {
    parent::__construct($subject, $config);
}

public function onUserBeforeSave($user, $isnew, $new) {
    if ($isnew) {
        $limit   = $this->params->get('limit-text');
        $db    = JFactory::getDbo();
        $query = "select id from #__users";
        $db->setQuery($query);
        $db->query();
        $num_rows = $db->getNumRows();
        if ($limit > $num_rows) {
            echo $erMsg = "Sorry but you have exceeded your allocated number of licenses.<BR><BR>Please press the back button on your browser to go back to the previous page.<BR><BR> If you wish to purchase more licences please contact customer support team ";
            die;
            JFactory::getApplication()->redirect(JURI::base(), $erMsg, 'error');
        }
    }
}
}


<extension type="plugin" version="3.0" group="user" method="upgrade">
<name>plg_user_register_limit</name> 
<creationDate>June 2014</creationDate> 
<license>GNU General Public License version 2 or later; see LICENSE.txt</license> 
<version>1.0.0</version> 
<description>
    <![CDATA[ 
        this plugin is used for limiting user registering
    ]]> 
    </description>
<files>
    <filename plugin="registerlimit">registerlimit.php</filename> 
    <filename>index.html</filename> 
    </files>
    <languages>
        <language tag="en-GB">en-GB.plg_user_regitesrlimit.ini</language> 
        <language tag="en-GB">en-GB.plg_user_regitesrlimit.sys.ini</language> 
        </languages>
        <config>
            <fields name="params">
                <fieldset name="basic">
                    <field name="limit-text" type="text" default="" label="Enter user Limit" description="Set limit" /> 
</fieldset>
</fields>
</config>
</extension>
3
user2513528

Pour limiter l'enregistrement en fonction du groupe d'utilisateurs, vous devez utiliser la table #_user_usergroup_map pour vérifier le nombre d'utilisateurs d'un groupe particulier.

SELECT * FROM #_user_usergroup_mapgroup_id = 'GROUP_ID';

Ici, remplacez votre valeur group_id spécifique.

3
Nick