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>
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_map
OÙ group_id
= 'GROUP_ID';
Ici, remplacez votre valeur group_id spécifique.