]> err.no Git - scalable-opengroupware.org/blobdiff - ChangeLog
git-svn-id: http://svn.opengroupware.org/SOGo/inverse/trunk@1071 d1b88da0-ebda-0310...
[scalable-opengroupware.org] / ChangeLog
index 11f9fae3af2c286c6f1648a9330fb4cba86b7895..681ee4de67d48fcbf84f7205d49d80dc21cea886 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,503 @@
+2007-05-30  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/Common/UIxObjectActions.m ([UIxObjectActions
+       -addUserInAclsAction]): send an acl addition mail.
+       ([UIxObjectActions -removeUserFromAclsAction]): send an acl
+       removal mail.
+
+       * UI/Common/UIxFolderActions.m ([UIxFolderActions
+       -_realActionWithFolderName:folderDict]): handle the possible
+       presence of the "mail-invitation" url parameter. If present, the
+       user will be redirected to the relevant folder.
+
+       * SoObjects/SOGo/SOGoUser.m ([SOGoUser -fullEmail]): new proxy method.
+       ([SOGoUser -language]): new method that returns the user's
+       preferred language, or the system's if none has been set yet.
+
+       * SoObjects/SOGo/SOGoObject.m ([SOGoObject -davURL]): new method
+       that returns the full dav url to self.
+       ([SOGoObject -soURL]): same as above but for the so url (Web UI).
+       ([SOGoObject -soURLToBaseContainerForUser:uid]): new method that
+       returns the full so url to the base of the SOGo module to which
+       self belongs, and for the specified user.
+       ([SOGoObject -soURLToBaseContainerForCurrentUser]): same as above
+       but for the current user.
+       ([SOGoObject -httpURLForAdvisoryToUser:uid]): new protocol method
+       required by the acl advisory templates and which returns a link
+       the target user can click to activate its new subscription.
+       ([SOGoObject -resourceURLForAdvisoryToUser:uid]): same as above
+       but for inclusion of the application/x-sogo-notification part,
+       which will be handled by the Lightning enhancer plugin.
+
+       * UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions -subscribeAction]) 
+       ([UIxMailFolderActions -unsubscribeAction]): new stub methods that
+       do nothing yet since imap folder subscription is not handled yet.
+
+       * SoObjects/SOGo/SOGoContentObject.m
+       ([-hasSupportForDefaultRoles]): removed method.
+
+       * SoObjects/SOGo/LDAPUserManager.m ([LDAPUserManager
+       -getFullEmailForUID:uid]): new method that returns the username +
+       email pair.
+
+       * SoObjects/Appointments/SOGoCalendarComponent.m
+       ([SOGoCalendarComponent +initialize]): the default language for
+       mail templates is now set to English.
+
+       * UI/SOGoUI/SOGoACLFrenchRemovalAdvisory.[hm]: new subclass of
+       SOGoACLAdvisory implementing the french template for user removal
+       from acls.
+
+       * UI/SOGoUI/SOGoACLFrenchAdditionAdvisory.[hm]: new subclass of
+       SOGoACLAdvisory implementing the french template for user
+       additions to acls.
+
+       * UI/SOGoUI/SOGoACLEnglishRemovalAdvisory.[hm]: new subclass of
+       SOGoACLAdvisory implementing the english template for user removal
+       from acls.
+
+       * UI/SOGoUI/SOGoACLEnglishAdditionAdvisory.[hm]: new subclass of
+       SOGoACLAdvisory implementing the english template for user
+       additions to acls.
+
+       * UI/SOGoUI/SOGoACLAdvisory.[hm]: new class module implemented the
+       supercall of all the acl advistory templates. The model is based
+       on SOGoAptMailNotification except that the template encapsulates
+       the message to be sent. Later, we might create a superclass common
+       to all template-based emails.
+
+       * SoObjects/SOGo/NSArray+Utilities.m ([NSMutableArray
+       -addRange:newRange]): new method that store a string
+       representation of the NSRange passed as parameter.
+       ([NSMutableArray -hasRangeIntersection:testRange]): tests whether
+       any range contained in self intersect with the one passed as parameter.
+
+       * SoObjects/SOGo/NSString+Utilities.m ([-stringByDetectingURLs]):
+       store ranges in an array to prevent them from intersecting with
+       each other during the passes.
+
+2007-05-29  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder
+       -primaryFetchMailboxInfo]): useless method. Removed.
+
+2007-05-28  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder
+       -toManyRelationshipKeys]): invoke [self subfolders].
+       ([SOGoMailFolder -subfolders]): new method containing what used to
+       be in toManyRelationshipKeys.
+       ([SOGoMailFolder -subfoldersURL]): same as above but returns imap
+       urls.
+
+       * SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount
+       -allFolderPaths]): renamed version of "allFolderPathes", sorted by
+       named and at the beginning of which we put the predefined folders.
+
+       * UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions
+       -emptyTrashAction]): new method inspired by a similar one from
+       UIxMailListView, to which we added the ability to remove
+       subfolders.
+
+       * UI/MailerUI/UIxMailListView.m ([-emptyTrashAction]): removed
+       method. Replaced with a similar one in UIxMailFolderActions.
+
+       * UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions
+       -renameFolderAction]): implemented method.
+       ([UIxMailFolderActions -deleteFolderAction]): no longer delete the
+       specified folder. Instead, we put it in the trash folder.
+
+       * UI/MailerUI/UIxMailListView.m ([-createFolderAction]): removed
+       method, replaced with a similar method in the new
+       UIxMailFolderAction class module.
+       ([-deleteFolderAction]): idem.
+
+       * UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions
+       -createFolderAction]): new method implementing subfolder creation.
+       ([UIxMailFolderActions -renameFolderAction]): new method
+       implementing subfolder renaming (basic implementation to be
+       finalized later).
+       ([UIxMailFolderActions -deleteFolderAction]): new method
+       implementing folder deletion.
+
+       * UI/MailerUI/UIxMailFolderActions.[hm]: new module implementing
+       web actions related to the handling of imap folder.
+
+2007-05-25  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder
+       -ownerInContext:localContext]): overriden method because we are an
+       IMAP4 client and we need a bit more intelligence to deduce the
+       owner of the current folder.
+       ([SOGoMailFolder -aclsForUser:uid]): aclForMailboxAtURL might
+       return an NSException so we need to be careful here to avoid a
+       crash.
+       ([SOGoMailFolder -aclUsers]): aclForMailboxAtURL might return an
+       NSException so we need to be careful here to avoid a crash.
+
+       * SoObjects/Mailer/SOGoMailAccounts.m
+       ([SOGoMailAccounts -fetchIdentitiesWithOnlyEmitterAccess:_flag])
+       there is no longer any concept of Intranet or Internet connection
+       handling.
+
+       * SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount
+       -sharedFolderName]): new method.
+       ([SOGoMailAccount -otherUsersFolderName]): new method.
+
+       * UI/MailerUI/UIxMailFolderMenu.[hm]: removed module, obsoleted by
+       new javascript code and the new UIxMailAccountActions class.
+
+       * UI/MailerUI/UIxMailTree.[hm]: removed module, obsoleted by new
+       javascript code and the new UIxMailAccountActions class.
+
+       * UI/MailerUI/UIxMailTreeBlock.[hm]: removed module, obsoleted by
+       new javascript code and the new UIxMailAccountActions class.
+
+       * UI/MailerUI/UIxMailAccountActions.m ([UIxMailAccountActions
+       -listMailboxesAction]): new method that returns a json-formatted
+       tree of all the mailboxes available to the current user.
+
+       * UI/MailerUI/UIxMailAccountActions.[hm]: new module implementing
+       web actions related to the handling of mail accounts.
+
+       * SoObjects/SOGo/NSDictionary+Utilities.[hm]: new extension
+       module.
+
+       * SoObjects/SOGo/NSObject+Utilities.m ([NSObject
+       -jsonRepresentation]): new interface method meant to be overriden
+       by the primitive classes.
+
+2007-05-23  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/MailerUI/UIxMailSplashView.m: removed.
+
+       * SoObjects/Appointments/SOGoCalendarComponent.m
+       ([SOGoCalendarComponent -getUIDsForICalPersons:iCalPersons]): add
+       the uid to the list only when the user email is recognized by the
+       user manager.
+
+2007-05-22  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
+       -isDeletionAllowed]): completed method with the new imap acl api.
+
+       * SoObjects/SOGo/SOGoObject.m ([SOGoObject -defaultAclRoles]):
+       removed method.
+
+       * SoObjects/SOGo/SOGoPermissions.m: added the new role
+       "SOGoMailRole_MessageEraser".
+
+       * UI/Common/UIxAclEditor.m ([UIxAclEditor -defaultUserID]) 
+       ([UIxAclEditor -_prepareUsers]): take the new SOGoObject's
+       "defaultUserID" method into account.
+
+       * UI/Common/UIxUserRightsEditor.m ([UIxUserRightsEditor -userIsDefaultUser]) 
+       ([UIxUserRightsEditor -_initRights]): take the new SOGoObject's
+       "defaultUserID" method into account.
+
+       * UI/MailerUI/UIxMailUserRightsEditor.m: added all the missing
+       methods to support the IMAP acls mentionned in the RFC 4314,
+       removed the ones specific to Cyrus.
+
+       * SoObjects/SOGo/SOGoObject.m ([SOGoObject -defaultUserID]): new
+       mandatory method for subclasses. Removed the SOGoDefaultUserID
+       global var.
+
+       * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder -defaultUserID]):
+       overriden method to return @"<default>".
+
+       * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject
+       -defaultUserID]): overriden method to return @"<default>".
+
+       * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder
+       -aclsForUser:uid]): overriden method.
+       ([SOGoMailFolder -removeAclsForUsers:users]): overriden method.
+       ([SOGoMailFolder -setRoles:rolesforUser:uid]): overriden method.
+       ([SOGoMailFolder -defaultUserID]): overriden method.
+       ([SOGoMailFolder -hasSupportForDefaultRoles]): overriden method.
+
+2007-05-18  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder
+       -aclUsersForObjectAtPath:objectPathArray]): new method that being
+       forwarded the calles to aclUsers for the GCS-based subclasses of
+       SOGoObject.
+
+       * SoObjects/Mailer/SOGoMailFolder.m: removed all the previous
+       methods that would have been used to support IMAP acls. Replaced
+       them with the new protocol for them that has been implemented in
+       SOGo during the last few weeks.
+
+       * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject
+       -hasSupportForDefaultRoles]): override method by returning "YES".
+
+       * SoObjects/SOGo/NSArray+Utilities.m ([NSMutableArray
+       -addObjectUniquely:object]): new method with an explicit name.
+
+       * SoObjects/SOGo/SOGoObject.m ([SOGoObject -aclUsers]): renamed
+       "acl" to "aclUsers". Now designed to return only the uid of the
+       users involved in an ACL.
+       ([SOGoObject -hasSupportForDefaultRoles]): new method returning
+       "NO" by default. To indicate to the acl editor that we don't want
+       to handle a default user.
+
+       * SoObjects/SOGo/SOGoPermissions.[hm]: added the
+       SOGoRole_ObjectReader, SOGoRole_Folder*, and SOGoMailRole_*
+       symbols.
+
+       * UI/MailerUI/UIxMailUserRightsEditor.[hm]: new class module that
+       provides a view to the IMAP acls.
+
+       * UI/MailerUI/UIxMailFolderACLEditor.m: removed obsolete module.
+
+       * UI/WebServerResources/MailerUI.js: replaced all invocations of
+       addEventListener to the use of prototype's Event object. Also,
+       configured all menus programmatically following descriptions lists
+       containing their callbacks, or nulls, submenus id or separators.
+
+2007-05-17  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/Common/UIxObjectActions.m ([UIxObjectActions
+       -addUserInAclsAction]): save the previous roles of the user
+       (unlikely) or the default roles, or None instead of saving the
+       roles that should appear the first time in the role editor when no
+       default has been set...
+
+       * SoObjects/SOGo/SOGoObject.m: defined a new constant
+       "SOGoDefaultUserID".
+
+       * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder
+       -setRoles:rolesforUser:uidforObjectAtPath:objectPathArray]):
+       ignore the "AuthorizedSubscriber" role and add the "None" role
+       when no other role is found.
+
+       * UI/Common/UIxAclEditor.m: added a button for the new default
+       user roles feature.
+
+       * UI/Common/UIxUserRightsEditor.m ([UIxUserRightsEditor
+       -_initRights]): don't take the "None" role into account when
+       initializing the list of current roles.
+
+       * SoObjects/SOGo/SOGoPermissions.m: added a new void role
+       "SOGoRole_None".
+
+2007-05-16  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/SOGo/NSString+Utilities.m ([NSString
+       -_rangeOfURLInRange:refRange]): urls cannot end with "&" nor "=".
+       There is no need to subscract the start from the length if a space
+       is not found since the range has not changed either. Finally, the
+       first character before the url might also be a tab or a cr, so we
+       match it against the "urlAfterEndingChars" custom NSCharacterSet.
+       ([NSString -stringByDetectingURLs]): modified to handle email
+       addresses and add a correct "mailto:" link.
+
+2007-05-15  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/Appointments/SOGoAppointmentFolder.m
+       ([SOGoAppointmentFolder -fetchContentObjectNames]): override
+       method to return the events in the range of 2 weeks ago up to 4
+       weeks from "now".
+
+       * UI/MailPartViewers/UIxMailPartTextViewer.m
+       ([UIxMailPartTextViewer -flatContentAsString]): use the new
+       "stringByDetectingURLs" method to offer clickable urls.
+
+       * SoObjects/SOGo/NSString+Utilities.m ([NSString
+       -stringByDetectingURLs]): this new method replaces passive URLS
+       with active ones for HTML resolution of the text.
+
+2007-05-14  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/Mailer/SOGoDraftObject.m ([NSString
+       -asQPSubjectString:encoding]): simplified method.
+       The headers indicates "utf-8" again thank to our fix in
+       sope-mime.
+
+       * SoObjects/SOGo/SOGoObject.m: fail to build if libFoundation is
+       being used.
+
+2007-05-11  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/Common/UIxObjectActions.m ([UIxObjectActions
+       -removeUserFromAclsAction]): implemented this method which was
+       missing and is required to remove users from ACLs.
+
+       * UI/Common/UIxFolderActions.m ([UIxFolderActions
+       -subscribeAction]): folderDict was not autoreleased, resulting in
+       a leak...
+
+       * SoObjects/SOGo/AgenorUserDefaults.m ([AgenorUserDefaults
+       -primaryFetchProfile]): when building with libFoundation, don't
+       use the "propertyList" method from NSString. Rather, we convert
+       the string to an NSData instance and passit as parameter to
+       NSDeserializer. This way, we obtain a mutable dictionary rather
+       than an immutable one.
+
+       * SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject -bodyPartForText]) 
+       ([SOGoDraftObject -mimeMessageForContentWithHeaderMap:]): use the
+       constant string "contentTypeValue".
+       contentTypeValue is now set back to iso-8859-1 since NGMime
+       converts extracts the data in that encoding.
+
+2007-05-10  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/SOGo/LDAPSource.m ([LDAPSource
+       -checkLogin:loginToCheckandPassword:passwordToCheck]): if a
+       "bindFields" value is present in the user defaults, use the
+       specified fields to find the dn of the user to bind.
+       ([LDAPSource -allEntryIDs]) 
+       ([LDAPSource -fetchContactsMatching:match]) 
+       ([LDAPSource -lookupContactEntry:entryID]) 
+       ([LDAPSource -lookupContactEntryWithUIDorEmail:uid]):
+       bind and unbind the connection on each request.
+
+       * UI/MailerUI/UIxMailAddressbook.m: removed obsolete module.
+
+       * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView
+       -contactSearchAction]): simplified method to use the facilities
+       provided by the LDAPUserManager. No longer takes care of the
+       "ldap-only" url parameter since all requests are handled by the
+       usermanager now.
+
+       * SoObjects/SOGo/AgenorUserDefaults.m ([AgenorUserDefaults
+       -primaryFetchProfile]): check that the value returned is not null
+       before interpreting it.
+
+       * SoObjects/SOGo/LDAPUserManager.m ([LDAPUserManager
+       -contactInfosForUserWithUIDorEmail:uid]): check that uid is not empty.
+       ([LDAPUserManager -_fillContactMailRecords:contact]): if the
+       system email is already present, remove it before adding it.
+
+       * SoObjects/SOGo/LDAPSource.m ([LDAPSource
+       -checkLogin:loginToCheckandPassword:passwordToCheck]): check that
+       loginToCheck is not empty.
+       ([LDAPSource -fetchContactsMatching:match]): check that match is
+       not empty.
+       ([LDAPSource -lookupContactEntry:entryID]): check that entryID is
+       not empty.
+       ([LDAPSource -lookupContactEntryWithUIDorEmail:uid]): check that
+       uid is not empty.
+
+2007-05-09  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/SOGo/SOGoUser.m ([SOGoUser -primaryEmail]): new name
+       for "mail" method.
+       ([SOGoUser -systemEmail]): returns the email formed from the
+       username and the default mail domain.
+       ([SOGoUser -hasEmail:email]): test whether the user has the
+       specified email, in a case-insensitive way.
+
+       * SoObjects/SOGo/SOGoAuthenticator.m ([SOGoAuthenticator
+       -LDAPCheckLogin:_loginpassword:_pwd]): use the user manager to
+       check login information.
+
+       * SoObjects/Contacts/SOGoContactLDAPFolder.m
+       ([SOGoContactLDAPFolder
+       +contactFolderWithName:aNameandDisplayName:aDisplayNameinContainer:aContainer]):
+       no longer manage LDAP connections. The requests are forwarded to
+       the relevant LDAPSource instead.
+
+       * SoObjects/Contacts/SOGoContactFolders.m ([SOGoContactFolders
+       -appendSystemSources]): pass LDAPSource objects to
+       SOGoContactLDAPFolder instances.
+
+       * SoObjects/Mailer/SOGoDraftObject.m: extract the raw email
+       address of the "from" field before sending the message. Otherwise,
+       sending the mail won't work.
+
+       * UI/MailerUI/UIxMailEditor.m ([UIxMailEditor -fromEMails]):
+       rewrote this method to request all the available email identities
+       for the current user. Also, the from field also contains the full
+       name of the user, not just his/her email address.
+
+       * SoObjects/Appointments/SOGoCalendarComponent.m
+       ([SOGoCalendarComponent -iCalPersonWithUID:uid]): new method taken
+       from the previous module iCalEntityObject+Agenor.
+       ([SOGoCalendarComponent -getUIDForICalPerson:person]): idem.
+       ([SOGoCalendarComponent -getUIDsForICalPersons:iCalPersons]):
+       idem.
+
+       * SoObjects/Contacts/SOGoContactLDIFEntry.[hm]: new class module
+       replacing the SOGoContactLDAPEntry module. It was renamed as such
+       because it now receives a dictionary instead of an NGLdapEntry.
+       It thus can now handle data from any source of LDIF data, not
+       only coming from LDAP.
+
+       * SoObjects/SOGo/LDAPUserManager.[hm]: new class module
+       implementing most of what used to be the AgenorUserManager class.
+       The difference is that users are cached in the forme of
+       dictionaries and many sources are used. Also, it can be used to
+       search LDAP contacts.
+
+       * SoObjects/SOGo/LDAPSource.[hm]: new class module implementing
+       the concept of "ldap source", to be used by all the classes
+       needing access to LDAP-provided information: addressbooks and the
+       user manager. Most the method thereing are transcriptions of
+       methods previously found in SOGoContactLDAPFolder. It also contain
+       utility methods for user matching and authentification.
+
+       * SoObjects/Appointments/iCalEntityObject+Agenor.[hm]: removed
+       module, rendered useless by code refactoring.
+
+       * SoObjects/SOGo/AgenorUserManager.[hm]: removed module, replaced
+       with the freshly written "LDAPUserManager".
+
+2007-05-08  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/Contacts/SOGoContactLDAPEntry.[hm]: renamed to
+       SOGOContactLDIFEntry.
+
+       * SoObjects/Contacts/NGLdapEntry+Contact.[hm]: removed class
+       module, obsoleted by code in SOGo/LDAPSource.[hm].
+
+2007-05-04  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/Common/UIxAclEditor.m ([UIxAclEditor -currentUserIsOwner]):
+       new method with an explicit name.
+
+2007-05-03  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/Appointments/SOGoCalendarComponent.m
+       ([SOGoCalendarComponent -isOrganizerOrOwner:user]): new method
+       replacing "isOrganizer:orOwner:" by taking only one instance of
+       SOGoUser as parameter.
+       ([SOGoCalendarComponent -participant:user]): new method replacing
+       the previous "isParticipant" boolean method by returning the first
+       participant matching the user passed as parameter. This method is
+       used so that both the regular email address and the "system email
+       address" of the user are matched against the participants emails.
+
+       * SoObjects/SOGo/AgenorUserManager.m ([AgenorUserManager
+       -getSystemEMailForUID:uid]): new method that returns the email
+       formed with the user's uid and the default mail domain.
+
+       * SoObjects/Appointments/SOGoCalendarComponent.m
+       ([SOGoCalendarComponent -rolesOfUser:login]): removed method that
+       was previously commented out.
+
+       * SoObjects/SOGo/SOGoUser.m ([SOGoUser -systemEmail]): new method
+       forwared to [AgenorUserManager getSystemEmailForUID:].
+
+       * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
+       -toolbar]): method replacing the one with the same name in the
+       task and appointment editor classes. This method makes also use of
+       the new method "isOrganizerOrOwner:" and "participant:" in
+       SOGoCalendarComponent.
+
+       * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
+       -toolbar]): removed method, replaced with a method with the same
+       name in UIxComponentEditor.
+
+       * UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -toolbar]): removed
+       method, replaced with a method with the same name in
+       UIxComponentEditor.
+
+       * SoObjects/SOGo/AgenorUserDefaults.m ([AgenorUserDefaults
+       -primaryFetchProfile]): the values returned from the database are
+       converted to a put dictionary first, since the dictionary returned
+       is actually an immutable one, which can cause a crash afterwards.
+
 2007-04-27  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
 
        * SoObjects/SOGo/SOGoPermissions.m: added "SOGoRole_ObjectViewer"