[horde] Extra ActiveSync attributes from iOS
Spyros Tsiolis
stsiol at yahoo.co.uk
Wed Jul 20 16:56:21 UTC 2011
--- 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 ?
:-)
s.
----
"I merely function as a channel that filters
music through the chaos of noise"
- Vangelis
More information about the horde
mailing list