user limit

Estou executando um código para limitar a quantidade de usuários no sistema. Mas quando atinge o limite de usuários, ele impede a edição de usuários antigos e aciona a mensagem de erro. Gostaria de evitar a adição de novos usuários, mas não impedir a edição de usuários já adicionados anteriormente. Alguma dicas?

code:

class limit_users {
    function limit_user_count(&$bean, $event, $arguments)
    {
        $id = $this->bean->id;
        $query = "SELECT COUNT(id) FROM users WHERE deleted = 0";
        $result = $GLOBALS['db']->getOne($query);

        //$GLOBALS['log']->fatal('no of users: '.$result);

        if($result >= 10){

           //redirct
            SugarApplication::appendErrorMessage('Prohibited Action: You have exceeded the maximum number of users. Contact Administrator.');
                $params = array(
                'module'=> 'Users',
                'action'=>'ListView'
            );

            SugarApplication::redirect('index.php?' . http_build_query($params));

            exit;
        }
    }
}

Não sei responder, lamento. Mas parece-me que esse código não é o suficiente para entender o que você está tentando fazer… afinal, de onde é chamada essa função?

This code is in: /custom/modules/Users/maxusers.php

There is still a reference in: /custom/modules/Users/logic_hooks.php

$hook_array['before_save'] = Array();
$hook_array['before_save'][] = Array(1, 'prevent users', 'custom/modules/Users/maxusers.php','limit_users', 'limit_user_count');

You can look at fetched_row to detect if you are in a new record creation, or in an edit of a previously existing record.

if (empty($bean->fetched_row['id']) {
    // Do custom logic for only a newly created record
}
1 Like

@pgr,
thanks a lot for the tip, it worked fine.