[horde] Extra ActiveSync attributes from iOS
Michael J Rubinsky
mrubinsk at horde.org
Wed Jul 20 17:01:16 UTC 2011
Quoting Spyros Tsiolis <stsiol at yahoo.co.uk>:
> --- On Wed, 20/7/11, Michael J Rubinsky <mrubinsk at horde.org> wrote:
>
>> From: Michael J Rubinsky <mrubinsk at horde.org>
>> Subject: Re: [horde] Extra ActiveSync attributes from iOS
>> To: "Spyros Tsiolis" <stsiol at yahoo.co.uk>
>> Cc: "Horde Mailing List" <horde at lists.horde.org>
>> Date: Wednesday, 20 July, 2011, 19:52
>>
>> Quoting Spyros Tsiolis <stsiol at yahoo.co.uk>:
>>
>> > --- On Wed, 20/7/11, Michael J Rubinsky <mrubinsk at horde.org>
>> wrote:
>> >
>> >> From: Michael J Rubinsky <mrubinsk at horde.org>
>> >> Subject: Re: [horde] Extra ActiveSync attributes
>> from iOS
>> >> To: horde at lists.horde.org
>> >> Date: Wednesday, 20 July, 2011, 17:01
>> >>
>> >> Quoting Simon Wilson <simon at simonandkate.net>:
>> >>
>> >> > Now that I have ActiveSync working nicely,
>> I'm in the
>> >> process of switching my wife's huge set of
>> contacts into
>> >> Horde for ActiveSync. She has a very broad usage
>> of contacts
>> >> - many phone numbers, addresses, postal addresses,
>> etc.
>> >> Natively It's not going to work. Sooooo....
>> >> >
>> >> > When an iOS device connects contacts to
>> Activesync it
>> >> announces a set of capabilities (fields).
>> >> >
>> >> > From what I can see an Activesync field needs
>> to be
>> >> mapped in turba/lib/Driver.php to a valid and
>> defined Turba
>> >> attribute (turba/config/attributes.php). Turba
>> then needs to
>> >> have a defined place to put the data (e.g. an SQL
>> database
>> >> with a field defined in
>> turba/config/backends.local.php).
>> >> >
>> >> > Am I correct so far?
>> >>
>> >> Sounds right.
>> >>
>> >>
>> >> > From digging through I get the following
>> default
>> >> mappings:
>> >> >
>> >> > iOS Field =>
>> >> Turba attribute => mySQL
>> >> >
>> >>
>> -------------------------------------------------------------
>> >> > Anniversary =>
>> >> anniversary => NONE
>> >> > Birthday =>
>> >> birthday =>
>> >> object_bday
>> >> > Body
>> >> => notes
>> >> => object_notes
>> >> > WebPage
>> >> => website
>> >> => object_url
>> >> > BusinessCountry =>
>> >> workcountry =>
>> >> object_workcountry
>> >> > Department =>
>> >> department => NONE
>> >> > Email1Address =>
>> >> email =>
>> >> object_email
>> >> > Email2Address =>
>> >> homeEmail => NONE
>> >> > Email3Address =>
>> >> workEmail => NONE
>> >> > BusinessFaxNumber => fax
>> >> => object_fax
>> >> > FileAs =>
>> >> name
>> >> => array
>> >> > FirstName =>
>> >> firstname =>
>> >> object_firstname
>> >> > HomeCity =>
>> >> homeCity =>
>> >> object_homecity
>> >> > HomeCountry =>
>> >> homeCountry =>
>> >> object_homecountry
>> >> > HomeFaxNumber => NONE
>> >> =>
>> >> NONE
>> >> > HomePhoneNumber => homePhone
>> >> => object_homephone
>> >> > Home2PhoneNumber => NONE
>> >> => NONE
>> >> > HomePostalCode => homePostalCode
>> >> => object_homepostalcode
>> >> > HomeState =>
>> >> homeProvince =>
>> >> object_homeprovince
>> >> > HomeStreet =>
>> >> homeStreet =>
>> >> object_homestreet
>> >> > BusinessCity => workCity
>> >> =>
>> >> object_workcity
>> >> > MiddleName =>
>> >> middlenames =>
>> >> object_middlenames
>> >> > MobilePhoneNumber => cellPhone
>> >> => object_cellphone
>> >> > Suffix =>
>> >> nameSuffix =>
>> >> object_namesuffix
>> >> > CompanyName =>
>> >> company =>
>> >> object_company
>> >> > OtherCity =>
>> >> NONE
>> >> => NONE
>> >> > OtherCountry => NONE
>> >> =>
>> >> NONE
>> >> > CarPhoneNumber => NONE
>> >> => NONE
>> >> > OtherPostalCode => NONE
>> >> =>
>> >> NONE
>> >> > OtherState => NONE
>> >> =>
>> >> NONE
>> >> > OtherStreet =>
>> >> NONE
>> >> => NONE
>> >> > PagerNumber =>
>> >> pager =>
>> >> object_pager
>> >> > Picture
>> >> => photo
>> >> => object_photo
>> >> > Title
>> >> => namePrefix
>> >> => object_nameprefix
>> >> > BusinessPostalCode => workPostalCode
>> >> => objectworkpostalcode
>> >> > AssistantName =>
>> >> assistant => NONE
>> >> > AssistnamePhoneNumber => NONE
>> >> => NONE
>> >> > LastName =>
>> >> lastname =>
>> >> object_lastname
>> >> > Spouse =>
>> >> spouse
>> >> => NONE This one is
>> >> advertised by iOS, but there's nowhere to enter /
>> view
>> >> > BusinessState =>
>> >> workProvince =>
>> >> object_workprovince
>> >> > BusinessStreet => workStreet
>> >> => workstreet
>> >> > BusinessPhoneNumber => workPhone
>> >> => object_workphone
>> >> > Business2PhoneNumber => NONE
>> >> => NONE
>> >> > JobTitle =>
>> >> title =>
>> >> object_title
>> >> > YomiFirstName => NONE
>> >> =>
>> >> NONE
>> >> > YomiLastName => NONE
>> >> =>
>> >> NONE
>> >> > RadioPhoneNumber => NONE
>> >> => NONE
>> >> > IMAddress =>
>> >> NONE
>> >> => NONE
>> >> > IMAddress2 => NONE
>> >> =>
>> >> NONE
>> >> > IMAddress3 => NONE
>> >> =>
>> >> NONE
>> >> > ManagerName =>
>> >> NONE
>> >> => NONE
>> >> > CompanyMainPhone => NONE
>> >> => NONE
>> >> > NickName =>
>> >> should be alias => object_alias, but not mapped
>> in
>> >> Driver.php.
>> >> >
>> >> > Where there is a Turba attribute but no SQL
>> mapping
>> >> it's an easy fix, just create the field in SQL and
>> go for
>> >> it, but where it is not mapped in Driver.php it's
>> a bit more
>> >> complex.
>> >> >
>> >> > What I would like to do is add some support
>> for some
>> >> of the missing pieces into Driver.php,
>> particularly the
>> >> third address group (other), and some extra phone
>> numbers.
>> >> Is this just a case of adding both direction
>> mappings to the
>> >> ActiveSync Contact message sections of Driver.php
>> (Convert
>> >> contact to an AS contact message; and convert an
>> AS contact
>> >> message into a hash for import)? Or are there
>> other places
>> >> that will need work?
>> >>
>> >> That should work, assuming you add the
>> appropriate
>> >> attribtues to turba/config/attributes.php and have
>> a field
>> >> to store the values in. Also, you should read
>> through the
>> >> mapping code in Turba_Driver::, there are already
>> some cases
>> >> where the mappings don't neccessarily work as you
>> would
>> >> expect, I don't have the code in front of me at
>> the moment,
>> >> but IIRC, the email mappings are not a 1:1 mapping
>> as you
>> >> show above. If the work/home email fields are
>> presented,
>> >> then *only* those are used ... otherwise the
>> "plain" email
>> >> field is used.
>> >>
>> >> Finally, I'd have to verify that all of those
>> fields are
>> >> supported by the version of AS that is supported
>> by Horde
>> >> (some AS fields were introduced in later
>> versions). I assume
>> >> they are since the device should know what version
>> it's
>> >> using, but I'd have to check the wbxml codepages
>> to be
>> >> sure.
>> >>
>> >> > If I make those changes to Drivers.php I
>> assume it's
>> >> not a "Drivers.local.php" version, which means
>> next upgrade
>> >> will break my changes - is it worth me doing those
>> and
>> >> submitting a patch file back to Horde?
>> >>
>> >> The bottom line is, if the changes you introduce
>> do not
>> >> conflict with any existing mappings and make
>> sense, then
>> >> they can be included in future releases.
>> >>
>> >> Thanks!
>> >>
>> >> --mike
>> >>
>> >> The Horde Project (www.horde.org)
>> >> mrubinsk at horde.org
>> >>
>> >> --Horde mailing list
>> >> Frequently Asked Questions: http://horde.org/faq/
>> >> To unsubscribe, mail: horde-unsubscribe at lists.horde.org
>> >
>> >
>> >
>> > Could this be adapted not for MySQL but for LDAP ?
>> > I have a similar scenario with Dovecot/Horde/LDAP
>>
>> There is nothing here that is *really* specific to mySQL.
>> For LDAP the
>> process would be basically the same...you just need to
>> ensure that
>> your storage backend can accept the data and in
>> backends.local.php you
>> properly map the turba attributes to the fields in your
>> storage backend.
>>
>> --
>> mike
>>
>> The Horde Project (www.horde.org)
>> mrubinsk at horde.org
>
>
>
> Or "/var/www/horde/turba/config/drivers.php" for Horde v3.x right ?
If you mean "turba/config/sources.php", then yes. Though H3 does not
have support for ActiveSync, which this thread is about, so I assumed
we were all talking about Horde 4.
--
mike
The Horde Project (www.horde.org)
mrubinsk at horde.org
More information about the horde
mailing list