Fixes for get_next_id() and exists()

This commit is contained in:
Miles Lott 2001-09-02 14:33:13 +00:00
parent a4a65ffcd5
commit 4d676d8259
2 changed files with 16 additions and 12 deletions

View File

@ -519,7 +519,8 @@
if(gettype($account) == 'integer')
{
$ldapname = 'cn';
$ldapgroup = 'gidnumber';
$ldapacct = 'uidnumber';
/* If data is cached, use it. */
if(@isset($by_id[$account]))
{
@ -528,7 +529,8 @@
}
else
{
$ldapname = 'gidnumber';
$ldapgroup = 'cn';
$ldapacct = 'uid';
/* If data is cached, use it. */
if(@isset($by_lid[$account]))
{
@ -537,14 +539,14 @@
}
$ds = $GLOBALS['phpgw']->common->ldapConnect();
$acct_type = $this->get_type($account_id);
$acct_type = $this->get_type($account);
if ($acct_type == 'g' && $this->group_context)
{
$sri = ldap_search($ds, $this->group_context, $ldapname . '=' . $account);
$sri = ldap_search($ds, $this->group_context, $ldapgroup . '=' . $account);
$groups = ldap_get_entries($ds, $sri);
}
$sri = ldap_search($ds, $this->user_context, 'uid=' . $account);
$sri = ldap_search($ds, $this->user_context, $ldapacct . '=' . $account);
$users = ldap_get_entries($ds, $sri);
if ($users[0]['dn'])
@ -556,7 +558,7 @@
$in += 2;
}
/* This sets up internal caching for this function */
if($ldapname == 'gidnumber')
if($ldapgroup == 'gidnumber')
{
$by_id[$account] = $in;
$by_lid[$this->id2name($account)] = $in;

View File

@ -131,8 +131,8 @@
*/
function get_nextid($account_type='u')
{
if ($GLOBALS['phpgw_info']['server']['account_min_id']) { $min = $GLOBALS['phpgw_info']['server']['account_min_id']; }
if ($GLOBALS['phpgw_info']['server']['account_max_id']) { $max = $GLOBALS['phpgw_info']['server']['account_max_id']; }
$min = $GLOBALS['phpgw_info']['server']['account_min_id'] ? $GLOBALS['phpgw_info']['server']['account_min_id'] : 0;
$max = $GLOBALS['phpgw_info']['server']['account_max_id'] ? $GLOBALS['phpgw_info']['server']['account_max_id'] : 0;
if ($account_type == 'g')
{
@ -142,23 +142,25 @@
{
$type = 'accounts';
}
$nextid = $GLOBALS['phpgw']->common->last_id($type,$min,$max);
$nextid = intval($GLOBALS['phpgw']->common->last_id($type,$min,$max));
/* Loop until we find a free id */
$free = 0;
while (!$free)
{
$account_lid = '';
//echo '<br>calling search for id: '.$nextid;
if ($this->exists($nextid))
{
$nextid = $GLOBALS['phpgw']->common->next_id($type,$min,$max);
$nextid = intval($GLOBALS['phpgw']->common->next_id($type,$min,$max));
}
else
{
/* echo '<br>calling search for lid: '.$account_lid; */
$account_lid = $this->id2name($nextid);
/* echo '<br>calling search for lid: '.$account_lid . '(from account_id=' . $nextid . ')'; */
if ($this->exists($account_lid))
{
$nextid = $GLOBALS['phpgw']->common->next_id($type,$min,$max);
$nextid = intval($GLOBALS['phpgw']->common->next_id($type,$min,$max));
}
else
{