*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
+ * the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
*/
/*
#include "addrquery.h"
#include "addr_compl.h"
#include "utils.h"
+#include "alertpanel.h"
#ifndef DEV_STANDALONE
#include "prefs_gtk.h"
#include "ldapserver.h"
#include "ldapctrl.h"
#include "ldapquery.h"
+#include "ldapupdate.h"
#include "ldaputil.h"
#endif
iface = addrindex_create_interface(
ADDR_IF_LDAP, "LDAP", TAG_IF_LDAP, TAG_DS_LDAP );
#ifdef USE_LDAP
+ iface->readOnly = FALSE;
/* iface->haveLibrary = ldapsvr_test_ldap_lib(); */
iface->haveLibrary = ldaputil_test_ldap_lib();
iface->useInterface = iface->haveLibrary;
- /* iface->getModifyFlag = ( void * ) ldapsvr_get_modified; */
+ iface->getModifyFlag = ( void * ) ldapsvr_get_modified;
iface->getAccessFlag = ( void * ) ldapsvr_get_accessed;
- /* iface->getReadFlag = ( void * ) ldapsvr_get_read_flag; */
+ iface->getReadFlag = ( void * ) ldapsvr_get_read_flag;
iface->getStatusCode = ( void * ) ldapsvr_get_status;
- /* iface->getReadData = ( void * ) ldapsvr_read_data; */
+ iface->getReadData = ( void * ) ldapsvr_read_data;
iface->getRootFolder = ( void * ) ldapsvr_get_root_folder;
iface->getListFolder = ( void * ) ldapsvr_get_list_folder;
iface->getListPerson = ( void * ) ldapsvr_get_list_person;
guint prevLevel;
gint rc;
- /* printf( "addrindex_read_fragment\n" ); */
+ /* g_print( "addrindex_read_fragment\n" ); */
prevLevel = file->level;
gboolean bTLS, bSSL;
gint iMatch;
- /* printf( "addrindex_parse_ldap\n" ); */
+ /* g_print( "addrindex_parse_ldap\n" ); */
/* Set up some defaults */
bDynSearch = FALSE;
bTLS = FALSE;
else if( strcmp( name, ATTAG_LDAP_CRITERIA ) == 0 ) {
g_free( criteria );
criteria = g_strdup( value );
+ g_print("criteria %s\n", criteria);
}
else if( strcmp( name, ATTAG_LDAP_MAX_ENTRY ) == 0 ) {
ldapctl_set_max_entries( ctl, ivalue );
if( file == NULL ) {
/*
- fprintf( stdout, " file '%s' does not exist.\n", addrIndex->fileName );
+ g_print( " file '%s' does not exist.\n", addrIndex->fileName );
*/
return addrIndex->retVal;
}
* return: Status code, from addrIndex->retVal.
*/
gint addrindex_save_data( AddressIndex *addrIndex ) {
+#ifdef USE_LDAP
+ GList *nodeIf;
+ GList *nodeDS;
+#endif
+
g_return_val_if_fail( addrIndex != NULL, -1 );
+#ifdef USE_LDAP
+ nodeIf = addrIndex->interfaceList;
+ /* save LDAP interfaces */
+ while ( nodeIf ) {
+ AddressInterface *iface = nodeIf->data;
+ if( iface->type == ADDR_IF_LDAP ) {
+ nodeDS = iface->listSource;
+ while( nodeDS ) {
+ AddressDataSource *ds = nodeDS->data;
+ LdapServer *abf = ds->rawDataSource;
+ if( ldapsvr_get_read_flag( abf ) ) {
+ if( ldapsvr_get_modified( abf ) ) {
+ ldapsvr_update_book( abf, NULL );
+ if( abf->retVal != LDAPRC_SUCCESS ) {
+ alertpanel( _("Address(es) update"),
+ _("Update failed. Changes not written to Directory."),
+ GTK_STOCK_CLOSE, NULL, NULL );
+ }
+ else {
+ abf->retVal = MGU_SUCCESS;
+ ldapsvr_set_modified( abf, FALSE );
+ }
+ }
+ }
+ nodeDS = g_list_next( nodeDS );
+ }
+ break;
+ }
+ nodeIf = g_list_next( nodeIf );
+ }
+#endif
addrIndex->retVal = MGU_NO_FILE;
if( addrIndex->fileName == NULL || *addrIndex->fileName == '\0' ) return addrIndex->retVal;
if( addrIndex->filePath == NULL || *addrIndex->filePath == '\0' ) return addrIndex->retVal;
node->list = g_list_append( node->list, newNode );
}
else {
- /* printf( "invalid: !!! \n" ); */
+ /* g_print( "invalid: !!! \n" ); */
attr = xml_get_current_tag_attr( file );
}
}
if (file->level < prev_level) return;
xtag = xml_get_current_tag( file );
- /* printf( "tag : %s\n", xtag->tag ); */
+ /* g_print( "tag : %s\n", xtag->tag ); */
element = xml_get_element( file );
attr = xml_get_current_tag_attr( file );
/* show_attribs( attr ); */
- /* printf( "\ttag value : %s :\n", element ); */
+ /* g_print( "\ttag value : %s :\n", element ); */
addrindex_consume_tree( file );
}
}
if (file->level < prev_level) return;
xtag = xml_get_current_tag( file );
- /* printf( "tag : %d : %s\n", prev_level, xtag->tag ); */
+ /* g_print( "tag : %d : %s\n", prev_level, xtag->tag ); */
if( strcmp( xtag->tag, TAG_IF_OLD_COMMON ) == 0 ) {
if( addrindex_process_book( addrIndex, file, DISP_OLD_COMMON ) ) {
addrIndex->needsConversion = FALSE;
element = xml_get_element( file );
attr = xml_get_current_tag_attr( file );
/* show_attribs( attr ); */
- /* printf( "\ttag value : %s :\n", element ); */
+ /* g_print( "\ttag value : %s :\n", element ); */
addrindex_consume_tree( file );
}
}
g_free( fileSpec );
if( file == NULL ) {
- /* fprintf( stdout, " file '%s' does not exist.\n", addrIndex->fileName ); */
+ /* g_print( " file '%s' does not exist.\n", addrIndex->fileName ); */
return addrIndex->retVal;
}
if( iface->getReadData ) {
/*
gchar *name = ( iface->getName ) ( ds->rawDataSource );
- printf( "addrindex_ds_read_data...reading:::%s:::\n", name );
+ g_print( "addrindex_ds_read_data...reading:::%s:::\n", name );
*/
retVal = ( iface->getReadData ) ( ds->rawDataSource );
}
queryID = req->queryID;
qryreq_set_search_type( req, ADDRSEARCH_DYNAMIC );
- /* printf( "***> query ID ::%d::\n", queryID ); */
+ /* g_print( "***> query ID ::%d::\n", queryID ); */
return queryID;
}
GList *nodeDS;
gint type;
- /* printf( "addrindex_start_dynamic::%d::\n", req->queryID ); */
+ /* g_print( "addrindex_start_dynamic::%d::\n", req->queryID ); */
nodeIf = _addressIndex_->searchOrder;
while( nodeIf ) {
iface = nodeIf->data;
AddrQueryObject *aqo;
GList *node;
- /* printf( "addrindex_stop_search/queryID=%d\n", queryID ); */
+ /* g_print( "addrindex_stop_search/queryID=%d\n", queryID ); */
/* If query ID does not match, search has not been setup */
req = qrymgr_find_request( queryID );
if( req == NULL ) {
AddrSearchType searchType;
retVal = FALSE;
- /* printf( "addrindex_start_search/queryID=%d\n", queryID ); */
+ /* g_print( "addrindex_start_search/queryID=%d\n", queryID ); */
req = qrymgr_find_request( queryID );
if( req == NULL ) {
return retVal;
AddressCache *cache;
gint queryID = 0;
- /* printf( "addrindex_remove_results/start\n" ); */
+ /* g_print( "addrindex_remove_results/start\n" ); */
/* Test for folder */
if( folder->folderType != ADDRFOLDER_QUERY_RESULTS ) return;
- /* printf( "folder name ::%s::\n", ADDRITEM_NAME(folder) ); */
+ /* g_print( "folder name ::%s::\n", ADDRITEM_NAME(folder) ); */
adbase = ( AddrBookBase * ) ds->rawDataSource;
if( adbase == NULL ) return;
cache = adbase->addressCache;
qry = ( LdapQuery * ) folder->folderData;
queryID = ADDRQUERY_ID(qry);
- /* printf( "calling ldapquery_remove_results...queryID=%d\n", queryID ); */
+ /* g_print( "calling ldapquery_remove_results...queryID=%d\n", queryID ); */
delFlag = ldapquery_remove_results( qry );
if (delFlag) {
ldapqry_free( qry );
}
- /* printf( "calling ldapquery_remove_results...done\n" ); */
+ /* g_print( "calling ldapquery_remove_results...done\n" ); */
/*
if( delFlag ) {
- printf( "delFlag IS-TRUE\n" );
+ g_print( "delFlag IS-TRUE\n" );
}
else {
- printf( "delFlag IS-FALSE\n" );
+ g_print( "delFlag IS-FALSE\n" );
}
*/
#endif
}
- /* printf( "addrindex_remove_results/end\n" ); */
+ /* g_print( "addrindex_remove_results/end\n" ); */
/* Delete query request */
if( queryID > 0 ) {
AddressBookFile *abf = book->rawDataSource;
- debug_print("addrindex_load_completion: book %p '%s'\n", book, abf->fileName);
+ debug_print("addrindex_load_completion: book %p '%s'\n", book, abf?abf->fileName:"(null)");
addrindex_load_completion_load_persons( callBackFunc, book );