diff --git a/phpgwapi/inc/class.accounts_ldap_wip.inc.php b/phpgwapi/inc/class.accounts_ldap_wip.inc.php index 0df15726e3..b1189866a1 100644 --- a/phpgwapi/inc/class.accounts_ldap_wip.inc.php +++ b/phpgwapi/inc/class.accounts_ldap_wip.inc.php @@ -62,7 +62,6 @@ class accounts_ { - var $db; var $account_id; var $acct_type = ''; var $data; @@ -70,7 +69,6 @@ function accounts_() { global $phpgw; - $this->db = $phpgw->db; } function read_repository() @@ -306,9 +304,9 @@ return ($i!=count($haystack)); } - function add($account_name, $account_type, $first_name, $last_name, $passwd = False) + function add($account_info) { - $this->create($account_name, $account_type, $first_name, $last_name, $passwd); + $this->create($account_info); } function delete($accountid = '') @@ -335,12 +333,6 @@ $del = ldap_delete($ds, $allValues[0]['dn']); } } - - // Do this last since we are depending upon this record to get the account_lid above - $tables_array = Array('phpgw_accounts'); - $this->db->lock($tables_array); - $this->db->query('DELETE FROM phpgw_accounts WHERE account_id='.$account_id); - $this->db->unlock(); } function get_list($_type='both', $start = '',$sort = '', $order = '', $query = '', $offset = '') @@ -372,46 +364,35 @@ $ds = $phpgw->common->ldapConnect(); - switch($_type) + if ($_type == 'both' || $_type == 'accounts') { - case 'accounts': - $whereclause = "where account_type = 'u'"; - break; - case 'groups': - $whereclause = "where account_type = 'g'"; - break; - default: - $whereclause = ""; - } - - $sql = "select * from phpgw_accounts $whereclause $orderclause $limitclause"; - $this->db->query($sql,__LINE__,__FILE__); - while ($this->db->next_record()) { - // get user information from ldap only, if it's a user, not a group - if ($this->db->f("account_type") == 'u') + $sri = ldap_search($ds, $phpgw_info["server"]["ldap_context"], '|((uidnumber=*)(phpgwaccounttype=u))'); + $allValues = ldap_get_entries($ds, $sri); + while ($allVals = @each($allValues)) { - $sri = ldap_search($ds, $phpgw_info["server"]["ldap_context"], "uidnumber=".$this->db->f("account_id")); - $allValues = ldap_get_entries($ds, $sri); $accounts[] = Array( - "account_id" => $allValues[0]["uidnumber"][0], - "account_lid" => $allValues[0]["uid"][0], - "account_type" => $this->db->f("account_type"), - "account_firstname" => $allValues[0]["givenname"][0], - "account_lastname" => $allValues[0]["sn"][0], - "account_status" => $this->db->f("account_status") + 'account_id' => $allVals['uidnumber'][0], + 'account_lid' => $allVals['uid'][0], + 'account_type' => $allVals['phpgwaccounttype'], + 'account_firstname' => $allVals['givenname'][0], + 'account_lastname' => $allVals['sn'][0], + 'account_status' => $allVals['phpgwaccountstatus'][0] ); } - else + } + elseif ($_type == 'both' || $_type == 'groups') + { + $sri = ldap_search($ds, $phpgw_info['server']['ldap_group_context'], '|((gidnumber=*)(phpgwaccounttype=g))'); + $allValues = ldap_get_entries($ds, $sri); + while ($allVals = @each($allValues)) { - $sri = ldap_search($ds, $phpgw_info["server"]["ldap_group_context"], "gidnumber=".$this->db->f("account_id")); - $allValues = ldap_get_entries($ds, $sri); $accounts[] = Array( - "account_id" => $allValues[0]["gidnumber"][0], - "account_lid" => $allValues[0]["cn"][0], - "account_type" => $this->db->f("account_type"), - "account_firstname" => $this->db->f("account_firstname"), - "account_lastname" => $this->db->f("account_lastname"), - "account_status" => $this->db->f("account_status") + 'account_id' => $allVals['gidnumber'][0], + 'account_lid' => $allVals['uid'][0], + 'account_type' => $allVals['phpgwaccounttype'], + 'account_firstname' => $allVals['givenname'][0], + 'account_lastname' => $allVals['sn'][0], + 'account_status' => $allVals['phpgwaccountstatus'][0] ); } } @@ -424,6 +405,7 @@ global $phpgw, $phpgw_info; $this->db->query("SELECT account_id FROM phpgw_accounts WHERE account_lid='".$account_lid."'",__LINE__,__FILE__); + if($this->db->num_rows()) { $this->db->next_record(); @@ -485,31 +467,9 @@ $account_id = $this->name2id($account_lid); } - if($searchlid) - { - //echo '
searching SQL for lid: '.$account_lid; - $this->db->query("SELECT count(*) FROM phpgw_accounts WHERE account_lid='".$account_lid."'",__LINE__,__FILE__); - } - else - { - //echo '
searching SQL for id: '.$account_id; - $this->db->query("SELECT count(*) FROM phpgw_accounts WHERE account_id=".$account_id,__LINE__,__FILE__); - } - $this->db->next_record(); - if ($this->db->f(0)) - { - $insql = True; - //echo ' - found in SQL'; - } - else - { - $insql = False; - //echo ' - not found in SQL'; - } - $ds = $phpgw->common->ldapConnect(); $acct_type = $this->acct_type; - + if ($acct_type == 'g' && $phpgw_info["server"]["ldap_group_context"]) { if($searchlid) @@ -540,17 +500,12 @@ if ($allValues[0]["dn"]) { - $inldap = True; - //echo ' - found in LDAP'; + return True; } else { - $inldap = False; - //echo ' - not found in LDAP'; + return False; } - - $rtrn = $insql || $inldap; - return $rtrn; } function create($account_type, $account_lid, $account_pwd, $account_firstname, $account_lastname, $account_status, $account_id='',$account_home='',$account_shell='')