[horde] Extra ActiveSync attributes from iOS
Simon Wilson
simon at simonandkate.net
Sun Jul 24 07:32:29 UTC 2011
Quoting Michael J Rubinsky <mrubinsk at horde.org>:
> 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
http://bugs.horde.org/ticket/10373
Patches done, enhancement request logged. Working a treat in my setup,
although there are some attributes that cannot be mapped as they
appear to be in a different schema (CONTACTS2 instead of CONTACTS) and
enabling them borks everything LOL.
I have broken the enhancement into generic capability improvement, and
then a specific optimised iOS setup.
Cheers
Simon.
More information about the horde
mailing list