[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