201 lines
5.1 KiB
C++
201 lines
5.1 KiB
C++
//
|
|
// ldapdl.cpp -- This file contains implementations for
|
|
// CLdapDistList
|
|
//
|
|
// Created:
|
|
// May 5, 1997 -- Milan Shah (milans)
|
|
//
|
|
// Changes:
|
|
//
|
|
|
|
#include "precomp.h"
|
|
#include "ldapdl.h"
|
|
|
|
//+----------------------------------------------------------------------------
|
|
//
|
|
// Function: CLdapDistList::CLdapDistList
|
|
//
|
|
// Synopsis: Constructor for a LDAP server based distribution list store.
|
|
//
|
|
// Arguments: [szName] -- For LDAP, this points to an array of member names
|
|
// [pParameter] -- Not used
|
|
//
|
|
// Returns: Nothing
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
|
|
CLdapDistList::CLdapDistList(
|
|
LPSTR szName,
|
|
LPVOID pParameter)
|
|
{
|
|
m_rgszMembers = (LPSTR *) szName;
|
|
|
|
m_nNextMember = 0;
|
|
}
|
|
|
|
//+----------------------------------------------------------------------------
|
|
//
|
|
// Function: CLdapDistList::~CLdapDistList
|
|
//
|
|
// Synopsis: Destructor
|
|
//
|
|
// Arguments: None
|
|
//
|
|
// Returns: Nothing
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
|
|
CLdapDistList::~CLdapDistList()
|
|
{
|
|
if (m_rgszMembers != NULL)
|
|
ldap_value_free( m_rgszMembers );
|
|
|
|
}
|
|
|
|
//+----------------------------------------------------------------------------
|
|
//
|
|
// Function: CLdapDistList::InsertMember
|
|
//
|
|
// Synopsis: Adds a new member to the distribution list.
|
|
//
|
|
// Arguments: [szEmailID] -- Email ID of the new member
|
|
//
|
|
// Returns: TRUE if success, FALSE otherwise
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
|
|
BOOL CLdapDistList::InsertMember(
|
|
LPSTR szEmailID)
|
|
{
|
|
SetLastError(CAT_E_TRANX_FAILED);
|
|
|
|
return( FALSE );
|
|
}
|
|
|
|
//+----------------------------------------------------------------------------
|
|
//
|
|
// Function: CLdapDistList::DeleteMember
|
|
//
|
|
// Synopsis: Removes the specified member from the distribution list
|
|
//
|
|
// Arguments: [szEmailID] -- Email ID to remove
|
|
//
|
|
// Returns: TRUE if success, FALSE otherwise
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
|
|
BOOL CLdapDistList::DeleteMember(
|
|
LPSTR szEmailID)
|
|
{
|
|
SetLastError(CAT_E_TRANX_FAILED);
|
|
|
|
return( FALSE );
|
|
}
|
|
|
|
//+----------------------------------------------------------------------------
|
|
//
|
|
// Function: CLdapDistList::Compact
|
|
//
|
|
// Synopsis: Compacts the DL store - nothing to do for LDAP.
|
|
//
|
|
// Arguments: None
|
|
//
|
|
// Returns: TRUE always
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
|
|
BOOL CLdapDistList::Compact()
|
|
{
|
|
return( TRUE );
|
|
}
|
|
|
|
//+----------------------------------------------------------------------------
|
|
//
|
|
// Function: CLdapDistList::GetFirstMember()
|
|
//
|
|
// Synopsis: Returns the first member of the distribution list
|
|
//
|
|
// Arguments: [szEmailID] -- Buffer to copy email ID of member to.
|
|
//
|
|
// Returns: TRUE if success, FALSE if there are no members
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
|
|
BOOL CLdapDistList::GetFirstMember(
|
|
LPSTR szEmailID)
|
|
{
|
|
if (m_rgszMembers != NULL && m_rgszMembers[0] != NULL) {
|
|
lstrcpy(szEmailID, m_rgszMembers[0]);
|
|
m_nNextMember = 1;
|
|
return(TRUE);
|
|
} else {
|
|
SetLastError(ERROR_NO_MORE_ITEMS);
|
|
return(FALSE);
|
|
}
|
|
}
|
|
|
|
//+----------------------------------------------------------------------------
|
|
//
|
|
// Function: CLdapDistList::GetNextMember
|
|
//
|
|
// Synopsis: Returns the next member in sequence of the distribution list.
|
|
// This must be preceeded with a call to GetFirstMember or
|
|
// GetNextMember.
|
|
//
|
|
// Arguments: [szEmailID] -- Buffer to copy email ID of member to.
|
|
//
|
|
// Returns: TRUE if success, FALSE if at end of list
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
|
|
BOOL CLdapDistList::GetNextMember(
|
|
LPSTR szEmailID)
|
|
{
|
|
_ASSERT(m_rgszMembers != NULL);
|
|
_ASSERT(m_nNextMember > 0);
|
|
|
|
if (m_rgszMembers[m_nNextMember] != NULL) {
|
|
lstrcpy(szEmailID, m_rgszMembers[m_nNextMember]);
|
|
m_nNextMember++;
|
|
return(TRUE);
|
|
} else {
|
|
SetLastError(ERROR_NO_MORE_ITEMS);
|
|
return( FALSE );
|
|
}
|
|
}
|
|
|
|
//+----------------------------------------------------------------------------
|
|
//
|
|
// Function: CLdapDistList::Sort()
|
|
//
|
|
// Synopsis: Sorts the members of the distribution list.
|
|
//
|
|
// Arguments: None
|
|
//
|
|
// Returns: TRUE always
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
|
|
BOOL CLdapDistList::Sort()
|
|
{
|
|
return( TRUE );
|
|
}
|
|
|
|
//+----------------------------------------------------------------------------
|
|
//
|
|
// Function: CLdapDistList::DeleteDL()
|
|
//
|
|
// Synopsis: Deletes the distribution list from the LDAP store
|
|
//
|
|
// Arguments: None
|
|
//
|
|
// Returns: TRUE if success, FALSE otherwise
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
|
|
BOOL CLdapDistList::DeleteDL()
|
|
{
|
|
return( FALSE );
|
|
}
|
|
|