[horde] Extra ActiveSync attributes from iOS

Spyros Tsiolis stsiol at yahoo.co.uk
Wed Jul 20 17:01:38 UTC 2011


--- On Wed, 20/7/11, Spyros Tsiolis <stsiol at yahoo.co.uk> wrote:

> From: Spyros Tsiolis <stsiol at yahoo.co.uk>
> Subject: Re: [horde] Extra ActiveSync attributes from iOS
> To: "Michael J Rubinsky" <mrubinsk at horde.org>
> Cc: "Horde Mailing List" <horde at lists.horde.org>
> Date: Wednesday, 20 July, 2011, 19:56
> --- 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 
>  
> -- 
> Horde mailing list
> Frequently Asked Questions: http://horde.org/faq/
> To unsubscribe, mail: horde-unsubscribe at lists.horde.org


Sorry , Sorry I meant :

"turba/config/sources.php"

Right ?

s.



----
"I merely function as a channel that filters 
music through the chaos of noise"
 - Vangelis


More information about the horde mailing list