[horde] Multiple calendar support
Andreas Mauser
andreas at mauser.info
Sun Mar 22 14:17:44 UTC 2015
----- 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.
Andreas
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-keys
Size: 3871 bytes
Desc: ?ffentlicher PGP-Schl?ssel
URL: <http://lists.horde.org/archives/horde/attachments/20150322/b557a535/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: Digitale PGP-Signatur
URL: <http://lists.horde.org/archives/horde/attachments/20150322/b557a535/attachment-0001.bin>
More information about the horde
mailing list