[horde] Multiple calendar support
Michael J Rubinsky
mrubinsk at horde.org
Sun Mar 22 14:40:22 UTC 2015
Quoting Andreas Mauser <andreas at mauser.info>:
> ----- Nachricht von Michael J Rubinsky <mrubinsk at horde.org> ---------
> Datum: Sun, 22 Mar 2015 10:03:29 -0400
> Von: Michael J Rubinsky <mrubinsk at horde.org>
> Antwort an: mrubinsk at horde.org
> Betreff: Re: [horde] Multiple calendar support
> An: Andreas Mauser <andreas at mauser.info>, horde at lists.horde.org
>
>
>> Quoting Andreas Mauser <andreas at mauser.info>:
>>
>>> ----- Nachricht von Michael J Rubinsky <mrubinsk at horde.org> ---------
>>> Datum: Sun, 22 Mar 2015 09:34:20 -0400
>>> Von: Michael J Rubinsky <mrubinsk at horde.org>
>>> Antwort an: mrubinsk at horde.org
>>> Betreff: Re: [horde] Multiple calendar support
>>> An: horde at lists.horde.org
>>>
>>>
>>>> Quoting Andreas Mauser <andreas at mauser.info>:
>>>>
>>>>> Hi Mike,
>>>>>
>>>>> ----- Nachricht von Andreas Mauser <andreas at mauser.info> ---------
>>>>> Datum: Sun, 22 Mar 2015 11:13:10 +0100
>>>>> Von: Andreas Mauser <andreas at mauser.info>
>>>>> Betreff: Re: [horde] Multiple calendar support
>>>>> An: horde at lists.horde.org
>>>>>
>>>>>> ----- Nachricht von Andreas Mauser <andreas at mauser.info> ---------
>>>>>> Datum: Sun, 22 Mar 2015 09:46:04 +0100
>>>>>> Von: Andreas Mauser <andreas at mauser.info>
>>>>>> Betreff: Re: [horde] Multiple calendar support
>>>>>> An: mrubinsk at horde.org, "Mailingliste, Horde"
>>>>> <horde at lists.horde.org>
>>>>>>
>>>>>>> Hi Mike,
>>>>>>>
>>>>>>> ----- Nachricht von Michael J Rubinsky <mrubinsk at horde.org> ---------
>>>>>>> Datum: Sat, 21 Mar 2015 23:45:10 -0400
>>>>>>> Von: Michael J Rubinsky <mrubinsk at horde.org>
>>>>>>> Antwort an: mrubinsk at horde.org
>>>>>>> Betreff: Re: [horde] Multiple calendar support
>>>>>>> An: Andreas Mauser <andreas at mauser.info>
>>>>>>>
>>>>>>>> Quoting Andreas Mauser <andreas at mauser.info>:
>>>>>>>>
>>>>>>>>> ----- Nachricht von Michael J Rubinsky <mrubinsk at horde.org> ---------
>>>>>>>>> Datum: Sat, 21 Mar 2015 15:26:23 -0400
>>>>>>>>> Von: Michael J Rubinsky <mrubinsk at horde.org>
>>>>>>>>> Antwort an: mrubinsk at horde.org
>>>>>>>>> Betreff: Re: [horde] Multiple calendar support
>>>>>>>>> An: horde at lists.horde.org
>>>>>>>>>
>>>>>>>>>> Quoting Andreas Mauser <andreas at mauser.info>:
>>>>>>>>>>
>>>>>>>>>>> ----- Nachricht von Michael J Rubinsky <mrubinsk at horde.org>
>>>>> ---------
>>>>>>>>>>> Datum: Sat, 21 Mar 2015 14:45:32 -0400
>>>>>>>>>>> Von: Michael J Rubinsky <mrubinsk at horde.org>
>>>>>>>>>>> Antwort an: mrubinsk at horde.org
>>>>>>>>>>> Betreff: Re: [horde] Multiple calendar support
>>>>>>>>>>> An: horde at lists.horde.org
>>>>>>>>>>>
>>>>>>>>>>>> Quoting Andreas Mauser <andreas at mauser.info>:
>>>>>>>>>>>>
>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>
>>>>>>>>>>>>> ----- Nachricht von Michael J Rubinsky <mrubinsk at horde.org>
>>>>>>>
>>>>>>> ---------
>>>>>>>>>>>>> Datum: Sat, 21 Mar 2015 14:18:49 -0400
>>>>>>>>>>>>> Von: Michael J Rubinsky <mrubinsk at horde.org>
>>>>>>>>>>>>> Antwort an: mrubinsk at horde.org
>>>>>>>>>>>>> Betreff: Re: [horde] Multiple calendar support
>>>>>>>>>>>>> An: horde at lists.horde.org
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Quoting Andreas Mauser <andreas at mauser.info>:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Hi Team and community,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> when I create another calendar in Kronolith.
>>>>>>>>>>>>>>> And in the settings check the box for more calendar.
>>>>>>>>>>>>>>> And choose both calendars for sync...
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> ..should the client not sync both calendars
>>>>>>>>>>>>>>> automatically, or do
>>>>>>>>>>>>>>> I need
>>>>>>>>>>>>>>> to
>>>>>>>>>>>>>>> recreate account, or anything?
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> If the client supports multiple collections, it should. However,
>>>>>>>>>>>>>> there
>>>>>>>>>>>>>> are many clients that do NOT support this. The ones we
>>>>>>>>>>>>>> know about
>>>>>>>>>>>>>> (and
>>>>>>>>>>>>>> are able to detect) are forced to "multiplex" the collections
>>>>>>>>>>>>>> together
>>>>>>>>>>>>>> so all events from all of your calendars will appear on a single
>>>>>>>>>>>>>> calendar on the client.
>>>>>>>>>>>>>
>>>>>>>>>>>>> If you get a log from me can you make it force multiplex then?
>>>>>>>>>>>>>
>>>>>>>>>>>>>> If you look at your ActiveSync device settings in the prefs (or
>>>>> on
>>>>>>>>>>>>>> the
>>>>>>>>>>>>>> admin page) you will see a value named "Forced Multiplex Value"
>>>>>>>>>>>>>> (or
>>>>>>>>>>>>>> similar). This is a bit mask that identifies what
>>>>>>>>>>>>>> collections are
>>>>>>>>>>>>>> being
>>>>>>>>>>>>>> forced to a single collection on the client.
>>>>>>>>>>>>>
>>>>>>>>>>>>> I can confirm that my client doesnt seem to use this forced
>>>>>>>>>>>>> multiplex. I can see that with other of my devices, not with this
>>>>>>>>>>>>> partuclar one.
>>>>>>>>>>>>>
>>>>>>>>>>>>>> What client are you using?
>>>>>>>>>>>>>
>>>>>>>>>>>>> This is Renovate Milestone 5, Android 4.4.4, HTC Sense 6, and I
>>>>>>>>>>>>> believe its booting with Android 5 but am not sure (they say
>>>>>>>>>>>>> something on xda-dev)
>>>>>>>>>>>>>
>>>>>>>>>>>>> The client itself is Calengoo, which is using the
>>>>>>>>>>>>> internal android
>>>>>>>>>>>>> calendar, and the exchange account I created.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Thank you,
>>>>>>>>>>>>> Andreas
>>>>>>>>>>>>
>>>>>>>>>>>> Yes, if I can find some way to sniff out this particular client I
>>>>>>>>>>>> can try to force it. FWIW, this is what the
>>>>>>>>>>>> activesync_device_modify hook is for - for those clients
>>>>>>>>>>>> that don't
>>>>>>>>>>>> play nicely with others and are not already dealt with in
>>>>>>>>>>>> the stock
>>>>>>>>>>>> code.
>>>>>>>>>>>
>>>>>>>>>>> Okay, so
>>>>>>>>>>> 1, I could fix it myself with the hook if I would know how to find
>>>>>>>>>>> out after which string to look?
>>>>>>>>>>> 2, You would need a sync log from me? A full (huge file) or just a
>>>>>>>>>>> snap?
>>>>>>>>>>
>>>>>>>>>> I basically need the data from the DEVICEINFORMATION and the User
>>>>>>>>>> Agent etc... Most of this is also listed on the device information
>>>>>>>>>> prefs page.
>>>>>>>>>
>>>>>>>>> When I go to the Activesync Page I can read:
>>>>>>>>>
>>>>>>>>> Programm: HTC-EAS-HTCOneM8
>>>>>>>>> EAS Version: 14.0
>>>>>>>>>
>>>>>>>>> What do you mean with the device information prefs page. I did not
>>>>> find
>>>>>>>>> more information ad hoc?
>>>>>>>>
>>>>>>>> That's the page I meant. It's available under both Administration and
>>>>>>>> Prefs.
>>>>>>>>
>>>>>>>> Is this a stock setup or a custom/modified rom?
>>>>>>>>
>>>>>>>> If it's a stock client, I can add something in code. In the meantime,
>>>>>>>> you can test this by checking for the userAgent property in the hook.
>>>>>>>> E.g.,
>>>>>>>>
>>>>>>>> <code>
>>>>>>>>
>>>>>>>> if ($device->userAgent == 'HTC-EAS-HTCOneM8') {
>>>>>>>> $device->multiplex =
>>>>> Horde_ActiveSync_Device::MULTIPLEX_NOTES
>>>>>>>
>>>>>>> |
>>>>>>>> Horde_ActiveSync_Device::MULTIPLEX_CONTACTS |
>>>>>>>> Horde_ActiveSync_Device::MULTIPLEX_CALENDAR |
>>>>>>>> Horde_ActiveSync_Device::MULTIPLEX_TASKS;
>>>>>>>> }
>>>>>>>>
>>>>>>>> // Be sure to return the device object regardless.
>>>>>>>> return $device;
>>>>>>>> </code>
>>>>>>>
>>>>>>> I placed the hook in imp/config/hooks.php at the very bottom, but above
>>>>>>> the last two '}' and in the ActiveSync Page I now see multiplex for my
>>>>>>> Device.
>>>>>>> Its a custom ROM by the way.
>>>>>>>
>>>>>>> Nevertheless I still cannot see any other calendar in the android
>>>>> client.
>>>>>>
>>>>>> I unchecked the box for seperate calendars and now it seems to work, I
>>>>>> can see all calendar data now in the client.
>>>>>>
>>>>>> Thank you for the hook!
>>>>>> Do I need to place it in a .local.php file?
>>>>>> Andreas
>>>>>
>>>>> One last thing.. I have 2 devices with identical user agent. One
>>>>> does the multiplexing, the other does not. Same ROM, same
>>>>> Versions.
>>>>>
>>>>> Any idea?
>>>>
>>>> My guess is either the hook was implemented incorrectly, or the
>>>> perhaps the client needs to be refreshed/account recreated. If
>>>> you see the Forced Multiplex bitmap under the device info, and it
>>>> is still not being multiplexed, I would check that all calendars
>>>> are selected to be synced in Kronolith's prefs and then recreate
>>>> the account on the client.
>>>
>>> Hm. Copy/paste your code into the horde/config/hooks.php makes my
>>> server unavailable.
>>>
>>> your code looks somehow different (for me) from the hooks.php file:
>>>
>>> // public function
>>> activesync_device_modify(Horde_ActiveSync_Device $device)
>>> // {
>>> // // Example for forcing certain device to force multiplexed
>>> // // collections for collection types they don't support multiple
>>> // // collections for. Note that this doesn't apply to email folders,
>>> // // which are NEVER sent multiplexed.
>>> // // NOTE: The Horde_ActiveSync library already determines this based
>>> // // on some userAgent and version sniffing. You should only
>>> // // perform this here if it doesn't work for you, or you have
>>> // // discovered a device that doesn't fit the logic.
>>>
>>> // // For android devices that don't advertise the android
>>> version we have
>>> // // to manually set the multiplex flag if we want to force any. E.g.,
>>> // // the Galaxy Note 3 doesn't support multiple collections prior to
>>> // // KitKat so we have to force them all.
>>> // if (empty($device->multiplex)) {
>>> // switch (strtolower($device->userAgent)) {
>>> // case 'SAMSUNG-SM-N900V/101.403':
>>> // // Note 3, Android 4.3
>>> // $device->multiplex =
>>> Horde_ActiveSync_Device::MULTIPLEX_NOTES |
>>> // Horde_ActiveSync_Device::MULTIPLEX_CONTACTS |
>>> // Horde_ActiveSync_Device::MULTIPLEX_CALENDAR |
>>> // Horde_ActiveSync_Device::MULTIPLEX_TASKS;
>>> // }
>>> // }
>>>
>>> // return $device;
>>> // }
>>>
>>> The difference for me is if (empty)...? empty I can not associate
>>> with your code.
>>> And I cant see case in your code either... is this the right file
>>> here : horde/config/hooks.php which I created from hooks.php.dist
>>>
>>> It looks now like that:
>>>
>>> public function activesync_device_modify(Horde_ActiveSync_Device $device)
>>> {
>>> // // Example for forcing certain device to force multiplexed
>>> // // collections for collection types they don't support multiple
>>> // // collections for. Note that this doesn't apply to email folders,
>>> // // which are NEVER sent multiplexed.
>>> // // NOTE: The Horde_ActiveSync library already determines this based
>>> // // on some userAgent and version sniffing. You should only
>>> // // perform this here if it doesn't work for you, or you have
>>> // // discovered a device that doesn't fit the logic.
>>>
>>> // // For android devices that don't advertise the android
>>> version we have
>>> // // to manually set the multiplex flag if we want to force any. E.g.,
>>> // // the Galaxy Note 3 doesn't support multiple collections prior to
>>> // // KitKat so we have to force them all.
>>> if (device->multiplex) {
>>> switch (strtolower($device->userAgent)) {
>>> case 'HTC-EAS-HTCOneM8':
>>> // // Note 3, Android 4.3
>>> $device->multiplex =
>>> Horde_ActiveSync_Device::MULTIPLEX_NOTES |
>>> Horde_ActiveSync_Device::MULTIPLEX_CONTACTS |
>>> Horde_ActiveSync_Device::MULTIPLEX_CALENDAR |
>>> Horde_ActiveSync_Device::MULTIPLEX_TASKS;
>>> }
>>> }
>>>
>>> return $device;
>>> }
>>>
>>>
>>> }
>>>
>>> And it does not work for me.
>>
>>
>> Yeah, the hook is incorrect. If you are going to adapt it to the
>> example code instead of just replacing it, you need to do some more
>> stuff. You reversed the logic on the if conditional so now it only
>> checks the userAgent if multiplex is already set - so if the device
>> wasn't detected by existing code as needed multiplex, the hook will
>> never set it either. You also are comparing uppercase UserAgent
>> string with a strtolower'd string so that will never match either.
>> Try replacing the entire hook with:
>>
>> // conditional prevents overwriting any existing multiplex values.
>> // It's possible that in some edge cases existing code could set an
>> // incorrect multiplex value (instead of just not setting one at all)
>> // so this check can be removed and replaced with a
>> straight-forward userAgent
>> // comparison or username/device/userAgent or whatever works in your case...
>> if (empty($device->multiplex)) {
>> switch (strtolower($device->userAgent)) {
>> case 'htc-eas-htconem8':
>> $device->multiplex =
>> Horde_ActiveSync_Device::MULTIPLEX_NOTES |
>> Horde_ActiveSync_Device::MULTIPLEX_CONTACTS |
>> Horde_ActiveSync_Device::MULTIPLEX_CALENDAR |
>> Horde_ActiveSync_Device::MULTIPLEX_TASKS;
>> }
>> }
>>
>> return $device;
>
>
> As soon as I put the code in the server responding with
> communication failed to server.
>
> It now looks like that in the file:
>
> * @return Horde_ActiveSync_Device The possibly modified device object.
> */
> // public function
> activesync_device_modify(Horde_ActiveSync_Device $device)
> // {
> // // Example for forcing certain device to force multiplexed
> // // collections for collection types they don't support multiple
> // // collections for. Note that this doesn't apply to email folders,
> // // which are NEVER sent multiplexed.
> // // NOTE: The Horde_ActiveSync library already determines this based
> // // on some userAgent and version sniffing. You should only
> // // perform this here if it doesn't work for you, or you have
> // // discovered a device that doesn't fit the logic.
>
> // // For android devices that don't advertise the android
> version we have
> // // to manually set the multiplex flag if we want to force any. E.g.,
> // // the Galaxy Note 3 doesn't support multiple collections prior to
> // // KitKat so we have to force them all.
> // if (device->multiplex) {
> // switch (strtolower($device->userAgent)) {
> // case 'HTC-EAS-HTCOneM8':
> // // Note 3, Android 4.3
> // $device->multiplex =
> Horde_ActiveSync_Device::MULTIPLEX_NOTES |
> // Horde_ActiveSync_Device::MULTIPLEX_CONTACTS |
> // Horde_ActiveSync_Device::MULTIPLEX_CALENDAR |
> // Horde_ActiveSync_Device::MULTIPLEX_TASKS;
> // }
> // }
>
> // return $device;
> // }
>
> if (empty($device->multiplex)) {
> switch (strtolower($device->userAgent)) {
> case 'htc-eas-htconem8':
> $device->multiplex =
> Horde_ActiveSync_Device::MULTIPLEX_NOTES |
> Horde_ActiveSync_Device::MULTIPLEX_CONTACTS |
> Horde_ActiveSync_Device::MULTIPLEX_CALENDAR |
> Horde_ActiveSync_Device::MULTIPLEX_TASKS;
> }
> }
>
> return $device;
>
> }
>
> And brings up the comunication problem with the server.
>
Sorry, you need to put the code within the actual hook method. I.e.,
between the public function activesync_device_modify and closing
bracket (and uncomment both)>
--
mike
The Horde Project
http://www.horde.org
https://www.facebook.com/hordeproject
https://www.twitter.com/hordeproject
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 5869 bytes
Desc: S/MIME Signature
URL: <http://lists.horde.org/archives/horde/attachments/20150322/dad3c0e3/attachment.bin>
More information about the horde
mailing list