2025-04-27 07:49:33 -04:00

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 );
}