db = clone($GLOBALS['egw']->db); include(EGW_INCLUDE_ROOT.'/emailadmin/setup/tables_current.inc.php'); $this->tables = &$phpgw_baseline; unset($phpgw_baseline); $this->table = &$this->tables['phpgw_emailadmin']; } function getUserData($_accountID) { global $phpgw, $phpgw_info; $ldap = $GLOBALS['egw']->common->ldapConnect(); $filter = "(&(uidnumber=$_accountID))"; $sri = @ldap_search($ldap,$GLOBALS['egw_info']['server']['ldap_context'],$filter); if ($sri) { $allValues = ldap_get_entries($ldap, $sri); if ($allValues['count'] > 0) { #print "found something
"; $userData["mail"] = $allValues[0]["mail"][0]; $userData["mailAlternateAddress"] = $allValues[0]["mailalternateaddress"]; $userData["accountStatus"] = $allValues[0]["accountstatus"][0]; $userData["mailForwardingAddress"] = $allValues[0]["mailforwardingaddress"][0]; $userData["deliveryMode"] = $allValues[0]["deliverymode"][0]; unset($userData["mailAlternateAddress"]["count"]); unset($userData["mailForwardingAddress"]["count"]); return $userData; } } // if we did not return before, return false return false; } function saveUserData($_accountID, $_accountData) { $ldap = $GLOBALS['egw']->common->ldapConnect(); // need to be fixed if(is_numeric($_accountID)) { $filter = "uidnumber=$_accountID"; } else { $filter = "uid=$_accountID"; } $sri = @ldap_search($ldap,$GLOBALS['egw_info']['server']['ldap_context'],$filter); if ($sri) { $allValues = ldap_get_entries($ldap, $sri); $accountDN = $allValues[0]['dn']; $uid = $allValues[0]['uid'][0]; $homedirectory = $allValues[0]['homedirectory'][0]; $objectClasses = $allValues[0]['objectclass']; unset($objectClasses['count']); } else { return false; } if(empty($homedirectory)) { $homedirectory = "/home/".$uid; } // the old code for qmail ldap $newData = array ( 'mail' => $_accountData["mail"], 'mailAlternateAddress' => $_accountData["mailAlternateAddress"], 'mailForwardingAddress' => $_accountData["mailForwardingAddress"], // 'homedirectory' => $homedirectory, // 'mailMessageStore' => $homedirectory."/Maildir/", // 'gidnumber' => '1000', // 'qmailDotMode' => $_accountData["qmailDotMode"], // 'deliveryProgramPath' => $_accountData["deliveryProgramPath"] ); if(!in_array('qmailUser',$objectClasses) && !in_array('qmailuser',$objectClasses)) { $objectClasses[] = 'qmailuser'; } // the new code for postfix+cyrus+ldap $newData = array ( 'mail' => $_accountData["mail"], 'accountStatus' => $_accountData["accountStatus"], 'objectclass' => $objectClasses ); if(is_array($_accountData["mailAlternateAddress"])) { $newData['mailAlternateAddress'] = $_accountData["mailAlternateAddress"]; } else { $newData['mailAlternateAddress'] = array(); } if($_accountData["accountStatus"] == 'active') { $newData['accountStatus'] = 'active'; } else { $newData['accountStatus'] = 'disabled'; } /* if(!empty($_accountData["deliveryMode"])) { $newData['deliveryMode'] = $_accountData["deliveryMode"]; } else { $newData['deliveryMode'] = array(); } */ // if(is_array($_accountData["mailForwardingAddress"])) // { $newData['mailForwardingAddress'] = $_accountData["mailForwardingAddress"]; // } // else // { // $newData['mailForwardingAddress'] = array(); // } #print "
DN: $accountDN
"; ldap_mod_replace ($ldap, $accountDN, $newData); // also update the account_email field in egw_accounts // when using sql account storage if($GLOBALS['egw_info']['server']['account_repository'] == 'sql') { $this->db->update('egw_accounts',array( 'account_email' => $_accountData["mail"] ), array( 'account_id' => $_accountID ),__LINE__,__FILE__ ); } } } ?>