[kronolith] Default external calendar
Gerard Breiner
gerard.breiner at ias.u-psud.fr
Tue Apr 10 15:42:15 UTC 2012
Le 06/04/2012 16:24, Gerard Breiner a écrit :
> Le 06/04/2012 16:16, Gerard Breiner a écrit :
>> Le 06/04/2012 15:58, Gerard Breiner a écrit :
>>> Le 06/04/2012 15:04, Jan Schneider a écrit :
>>>>
>>>> Zitat von Gerard Breiner <gerard.breiner at ias.u-psud.fr>:
>>>>
>>>>> Le 06/04/2012 13:40, Jan Schneider a écrit :
>>>>>>
>>>>>> Zitat von Gerard Breiner <gerard.breiner at ias.u-psud.fr>:
>>>>>>
>>>>>>> Le 19/03/2012 16:41, Gerard Breiner a écrit :
>>>>>>>> Le 19/03/2012 09:36, Jan Schneider a écrit :
>>>>>>>>>
>>>>>>>>> Zitat von gerard breiner <gerard.breiner at ias.u-psud.fr>:
>>>>>>>>>
>>>>>>>>>> gerard breiner <gerard.breiner at ias.u-psud.fr> a écrit :
>>>>>>>>>>
>>>>>>>>>>> Jan Schneider <jan at horde.org> a écrit :
>>>>>>>>>>>
>>>>>>>>>>>> Zitat von gerard breiner <gerard.breiner at ias.u-psud.fr>:
>>>>>>>>>>>>
>>>>>>>>>>>>> Jan Schneider <jan at horde.org> a écrit :
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Zitat von Gerard Breiner <gerard.breiner at ias.u-psud.fr>:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Le 14/02/2012 15:37, Jan Schneider a écrit :
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Zitat von Martin Hochreiter <linuxbox at wavenet.at>:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> You cannot simply replace strings in the value copied
>>>>>>>>>>>>>>>>>> from the database, because it is a serialized hash.
>>>>>>>>>>>>>>>>>> Using $registry in prefs.local.php is not a good idea
>>>>>>>>>>>>>>>>>> either.
>>>>>>>>>>>>>>>>>> Instead you should create a preference hook that
>>>>>>>>>>>>>>>>>> builds the hash, and return it serialized.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> what a pitty :) ... ok, thank you I will create a
>>>>>>>>>>>>>>>>> hook for that (new world for me...)
>>>>>>>>>>>>>>>>> What should I use instead of the $registry variable to
>>>>>>>>>>>>>>>>> get the credentials - or is it ok
>>>>>>>>>>>>>>>>> to use it in the hooks?
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> The prefs_init hook already gets the user name passed.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Hello ,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I'm working on this too... So I followed the above Jan's
>>>>>>>>>>>>>>> advice and as well as read the very good doc
>>>>>>>>>>>>>>> /horde/config/hooks.php.dist (many thanks for all the
>>>>>>>>>>>>>>> work). The result is that I managed to create the remote
>>>>>>>>>>>>>>> calendar by working with prefs and hooks.local.php.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Here is what I've done :
>>>>>>>>>>>>>>> kronolit/config/prefs.local.php
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> [CODE]
>>>>>>>>>>>>>>> // remote calendars
>>>>>>>>>>>>>>> $_prefs['remote_cals'] = array(
>>>>>>>>>>>>>>> 'value' => '',
>>>>>>>>>>>>>>> 'hook' => 'true',
>>>>>>>>>>>>>>> 'locked' => 'false'
>>>>>>>>>>>>>>> );
>>>>>>>>>>>>>>> [/CODE]
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> [CODE]
>>>>>>>>>>>>>>> kronolith/config/hooks.local.phpclass Kronolith_Hooks
>>>>>>>>>>>>>>> {
>>>>>>>>>>>>>>> public function prefs_init($prefs, $value, $username,
>>>>>>>>>>>>>>> $scope_ob)
>>>>>>>>>>>>>>> {
>>>>>>>>>>>>>>> switch ($prefs) {
>>>>>>>>>>>>>>> case 'remote_cals':
>>>>>>>>>>>>>>> $no_serialize = array(array('name'=>'Calendar',
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> 'url'=>'https://myurl/caldav.php/' .$username. '/agenda',
>>>>>>>>>>>>>>> 'user'=> $username
>>>>>>>>>>>>>>> // 'password' =>
>>>>>>>>>>>>>>> $password
>>>>>>>>>>>>>>> )
>>>>>>>>>>>>>>> );
>>>>>>>>>>>>>>> $value = serialize($no_serialize);
>>>>>>>>>>>>>>> return $value;
>>>>>>>>>>>>>>> }
>>>>>>>>>>>>>>> }
>>>>>>>>>>>>>>> }
>>>>>>>>>>>>>>> [/CODE]
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Nevertheless at this time I don't know how to catch the
>>>>>>>>>>>>>>> password... If Jan look at this again I would appreciate
>>>>>>>>>>>>>>> a little more hints about this last issue.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Try $GLOBALS['registry']->getAuthCredential('password')
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Jan.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> --
>>>>>>>>>>>>>> The Horde Project
>>>>>>>>>>>>>> http://www.horde.org/
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> --
>>>>>>>>>>>>>> Kronolith mailing list
>>>>>>>>>>>>>> Frequently Asked Questions: http://horde.org/faq/
>>>>>>>>>>>>>> To unsubscribe, mail: kronolith-unsubscribe at lists.horde.org
>>>>>>>>>>>>>
>>>>>>>>>>>>> Many thanks Jan for this advice... This command give the
>>>>>>>>>>>>> password without encodage (I tried it in
>>>>>>>>>>>>> admin/phpshell.php ). Nevertheless it seems that username
>>>>>>>>>>>>> and password are expecting as something like :
>>>>>>>>>>>>> s:4:"user";s:12:"PYnhqb8tbok=";s:8:"password";s:15:"PQ7F+FGnp7t=";
>>>>>>>>>>>>> .
>>>>>>>>>>>>
>>>>>>>>>>>> Sorry?
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> The Horde Project
>>>>>>>>>>>> http://www.horde.org/
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> Kronolith mailing list
>>>>>>>>>>>> Frequently Asked Questions: http://horde.org/faq/
>>>>>>>>>>>> To unsubscribe, mail: kronolith-unsubscribe at lists.horde.org
>>>>>>>>>>>
>>>>>>>>>>> Probably misunderstanding from me... So followed your idea
>>>>>>>>>>> for catching the password, here is what is my code now :
>>>>>>>>>>>
>>>>>>>>>>> kronolith/config/hooks.local.php
>>>>>>>>>>>
>>>>>>>>>>> [CODE]
>>>>>>>>>>> class Kronolith_Hooks
>>>>>>>>>>> {
>>>>>>>>>>> public function prefs_init($prefs, $value, $username,
>>>>>>>>>>> $scope_ob)
>>>>>>>>>>> {
>>>>>>>>>>> switch ($prefs) {
>>>>>>>>>>> case 'remote_cals':
>>>>>>>>>>> $no_serialize = array(array('name'=>'Calendar',
>>>>>>>>>>>
>>>>>>>>>>> 'url'=>'https://calendar.ias.u-psud.fr/caldav.php/'
>>>>>>>>>>> .$username. '/calendar',
>>>>>>>>>>> 'user'=> $username,
>>>>>>>>>>> 'password' =>
>>>>>>>>>>> $GLOBALS['registry']->getAuthCredential('password')
>>>>>>>>>>> )
>>>>>>>>>>> );
>>>>>>>>>>> $value = serialize($no_serialize);
>>>>>>>>>>> return $value;
>>>>>>>>>>> }
>>>>>>>>>>> }
>>>>>>>>>>> }
>>>>>>>>>>> [/CODE]
>>>>>>>>>>>
>>>>>>>>>>> The remote calendar show up in the kronolith's interface but
>>>>>>>>>>> credentials are still requested despite the user and
>>>>>>>>>>> password in hooks.local.php.
>>>>>>>>>>>
>>>>>>>>>>> Best regards
>>>>>>>>>>>
>>>>>>>>>>> Gerard Breiner
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Kronolith mailing list
>>>>>>>>>>> Frequently Asked Questions: http://horde.org/faq/
>>>>>>>>>>> To unsubscribe, mail: kronolith-unsubscribe at lists.horde.org
>>>>>>>>>>
>>>>>>>>>> Hello
>>>>>>>>>> Just for tests I added a few lines in the above code so that
>>>>>>>>>> to save the $value variable in a file. We can see that each
>>>>>>>>>> keys has respectively their values and the password is do
>>>>>>>>>> catching.
>>>>>>>>>>
>>>>>>>>>> a:1:{i:0;a:4:{s:4:"name";s:10:"MyCalendar";s:3:"url";s:59:"https://davicalserver/caldav.php/gbreiner/calendar";s:4:"user";s:8:"gbreiner";s:8:"password";s:7:"1testpass2";}}
>>>>>>>>>> Having said When I click on agenda (kronolith) and then click
>>>>>>>>>> on "MyCalendar" I get the message (color red) saying that
>>>>>>>>>> login and password are requested.
>>>>>>>>>> So I read again the docs into which it is said : "This hook
>>>>>>>>>> is ONLY executed on login and preferences are cached during a
>>>>>>>>>> user's session". So I'm wondering why I have to put again
>>>>>>>>>> login and password in the form of "MyCalendar".
>>>>>>>>>>
>>>>>>>>>> I'm wondering where am I wrong....
>>>>>>>>>
>>>>>>>>> User name and password need to be encrypted with the user's
>>>>>>>>> password and base64 encoded. See
>>>>>>>>> Kronolith::subscribeRemoteCalendar(). Or even better: *use*
>>>>>>>>> subscribeRemoteCalendar().
>>>>>>>>>
>>>>>>>>> Jan.
>>>>>>>>>
>>>>>>>> Many thanks Jan! Works very fine now .....
>>>>>>>> The code is now :
>>>>>>>>
>>>>>>>> kronolith/config/hooks.local.php
>>>>>>>>
>>>>>>>> [CODE]
>>>>>>>> namespace Kronolith\subscribeRemoteCalendar;
>>>>>>>> use Kronolith\subscribeRemoteCalendar;
>>>>>>>> class Kronolith_Hooks
>>>>>>>> {
>>>>>>>> public function prefs_init($prefs, $value, $username, $scope_ob)
>>>>>>>> {
>>>>>>>> switch ($prefs) {
>>>>>>>> case 'remote_cals':
>>>>>>>> $password =
>>>>>>>> $GLOBALS['registry']->getAuthCredential('password');
>>>>>>>> $info = array(array('name'=>'MyCalendar',
>>>>>>>>
>>>>>>>> 'url'=>'https://calendar.ias.u-psud.fr/caldav.php/' .$username.
>>>>>>>> '/calendar',
>>>>>>>> 'user'=> $user,
>>>>>>>> 'password' =>
>>>>>>>> $password
>>>>>>>> )
>>>>>>>> );
>>>>>>>> $value = subscribeRemoteCalendar($info);
>>>>>>>> return $value;
>>>>>>>> }
>>>>
>>>>>>>> }
>>>>>>>> }
>>>>>>>> [/CODE]
>>>>>>>>
>>>>>>>> kronolith/config/prefs.local.php
>>>>>>>>
>>>>>>>> [CODE]
>>>>>>>> $_prefs['remote_cals'] = array(
>>>>>>>> 'value' => '',
>>>>>>>> 'hook' => 'true'
>>>>>>>> );
>>>>>>>>
>>>>>>>> Best regards.
>>>>>>>>
>>>>>>>> Gérard Breiner
>>>>>>>> [/CODE]
>>>>>>>>
>>>>>>>>
>>>>>>> Hello Jan and alls,
>>>>>>>
>>>>>>> I come back again about this subject because what I believed
>>>>>>> was working doesn't longer works... I have to recognized that
>>>>>>> the use of namespace and *use* keywords are new for me. So for
>>>>>>> doing "simple" I use $value =
>>>>>>> Kronolith::subscribeRemoteCalendar($info); . Nevertheless, it
>>>>>>> seems that $value is empty.
>>>>>>
>>>>>> Yes. The method doesn't return anything. It does exactly what the
>>>>>> method name says. It subscribes a remote calendar.
>>>>>>
>>>>>>> Kronolith is 3.016.
>>>>>>>
>>>>>>> Here is the kronolith/config/hooks.php :
>>>>>>>
>>>>>>> [CODE]
>>>>>>> class Kronolith_Hooks
>>>>>>> {
>>>>>>> public function prefs_init($prefs, $value, $username, $scope_ob)
>>>>>>> {
>>>>>>> $user = $username;
>>>>>>> switch ($prefs) {
>>>>>>> case 'remote_cals':
>>>>>>> $password =
>>>>>>> $GLOBALS['registry']->getAuthCredential('password');
>>>>>>> $info = array(array('name' => $username,
>>>>>>> 'url' =>
>>>>>>> 'https://calendar.ias.u-psud.fr/caldav.php/' .$username.
>>>>>>> '/calendar',
>>>>>>> 'user' => $user,
>>>>>>> 'password' => $password
>>>>>>> )
>>>>>>> );
>>>>>>> $value = subscribeRemoteCalendar($info);
>>>>>>> return $value;
>>>>>>> }
>>>>>>> }
>>>>>>>
>>>>>>> [/CODE]
>>>>>>>
>>>>>>> And the prefs['remote-cals'] in kronolith/config/prefs.local.php
>>>>>>>
>>>>>>> [CODE]
>>>>>>> // remote calendars
>>>>>>> $_prefs['remote_cals'] = array(
>>>>>>> 'value' => '',
>>>>>>> 'hook' => 'true'
>>>>>>> );
>>>>>>> [/CODE]
>>>>>>>
>>>>>>> And the horde.log about kronolith :
>>>>>>>
>>>>>>> [LOG]
>>>>>>> 2012-04-06T11:40:53+02:00 DEBUG: HORDE4 [kronolith] Load config
>>>>>>> file (conf.php; app: kronolith) [pid 28322 on line 865 of
>>>>>>> "/ww
>>>>>>> w/horde4/pear/php/Horde.php"]
>>>>>>> 2012-04-06T11:40:53+02:00 DEBUG: HORDE4 [kronolith] Load config
>>>>>>> file (hooks.php; app: kronolith) [pid 28322 on line 865 of
>>>>>>> "/w
>>>>>>> ww/horde4/pear/php/Horde.php"]
>>>>>>> 2012-04-06T11:40:53+02:00 DEBUG: HORDE4 [kronolith] SQL (0,0002s)
>>>>>>> SELECT DISTINCT s.* FROM kronolith_shares s LEFT JOIN
>>>>>>> kronolith_shares_users u ON u.share_id = s.share_id
>>>>>>> LEFT JOIN
>>>>>>> kronolith_shares_groups g ON g.share_id = s.share_id WHERE
>>>>>>> 2012-04-06T11:40:53+02:00 DEBUG: HORDE4 [kronolith] SQL (0,0001s)
>>>>>>> SELECT share_id, user_uid, perm FROM
>>>>>>> kronolith_shares_users WHERE
>>>>>>> 2012-04-06T11:40:53+02:00 DEBUG: HORDE4 [kronolith] SQL (0,0001s)
>>>>>>> SELECT share_id, group_uid, perm FROM
>>>>>>> kronolith_shares_groups WHERE
>>>>>>> 2012-04-06T11:40:53+02:00 DEBUG: HORDE4 [kronolith] Horde_Prefs:
>>>>>>> Storing preference value (display_remote_cals) [pid 28322
>>>>>>> on line 200 of
>>>>>>> "/www/horde4/pear/php/Horde/Prefs.php"]
>>>>>>> 2012-04-06T11:40:53+02:00 DEBUG: HORDE4 [kronolith] Horde_Prefs:
>>>>>>> Storing preference value (holiday_drivers) [pid 28322 on
>>>>>>> line 200 of
>>>>>>> "/www/horde4/pear/php/Horde/Prefs.php"]
>>>>>>> 2012-04-06T11:40:53+02:00 DEBUG: HORDE4 [kronolith] Horde_Prefs:
>>>>>>> Storing preference value (display_external_cals) [pid 28322
>>>>>>> o n line 200 of
>>>>>>> "/www/horde4/pear/php/Horde/Prefs.php"]
>>>>>>> 2012-04-06T11:40:53+02:00 DEBUG: HORDE4 [kronolith] SQL (0,0001s)
>>>>>>> SELECT DISTINCT s.* FROM kronolith_shares s LEFT JOIN
>>>>>>> kronolith_shares_users u ON u.share_id = s.share_id
>>>>>>> LEFT JOIN
>>>>>>> kronolith_shares_groups g ON g.share_id = s.share_id WHERE
>>>>>>> 2012-04-06T11:40:53+02:00 DEBUG: HORDE4 [kronolith] SQL (0,0001s)
>>>>>>> SELECT share_id, user_uid, perm FROM
>>>>>>> kronolith_shares_users WHERE
>>>>>>> 2012-04-06T11:40:53+02:00 DEBUG: HORDE4 [kronolith] SQL (0,0006s)
>>>>>>> 2012-04-06T11:40:53+02:00 DEBUG: HORDE4 [kronolith] Max memory
>>>>>>> usage: 35913728 bytes [pid 28322 on line 476 of
>>>>>>> "/www/horde4/pe
>>>>>>> ar/php/Horde/Registry.php"]
>>>>>>> [/LOG]
>>>>>>>
>>>>>>> Thanks in advance.
>>>>>>>
>>>>>>> Best regards.
>>>>>>>
>>>>>>> Gérard Breiner
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> kronolith mailing list
>>>>>>> Frequently Asked Questions: http://wiki.horde.org/FAQ
>>>>>>> To unsubscribe, mail: kronolith-unsubscribe at lists.horde.org
>>>>>>
>>>>> So, how I can see the subscribe is performed whereas "Remote
>>>>> Calendars" doesn't show up anything ?
>>>>> It doesn't work since I've removed the one I had created via the
>>>>> hook and changed the name of the remote calendar in the hook by
>>>>> $username.
>>>>
>>>> Either don't call this method from a preference hook, or take a
>>>> look at the code of that method and use it inside the preference hook.
>>>>
>>>>> (I recently upgrade by pear, so horde is now 4.0.14 and kronolith
>>>>> is 3.0.16). I also migrate again the database horde3 to horde4 to
>>>>> assume that all is "right". Nevertheless there is certainly
>>>>> something I missed but after working several days on this issue I
>>>>> have to recognize I need help. If you could give me some others
>>>>> hints for tracking this that would be friendly.
>>>>>
>>>>> Many thanks.
>>>>>
>>>>> Best regards.
>>>>>
>>>>> Gérard Breiner
>>>>> --
>>>>> kronolith mailing list
>>>>> Frequently Asked Questions: http://wiki.horde.org/FAQ
>>>>> To unsubscribe, mail: kronolith-unsubscribe at lists.horde.org
>>>>
>>> Thanks Jan,
>>> I'd already look at the code of this method but maybe not enough.
>>> It seems that I should a little more look at
>>> 'display_remote_calendars'.
>>>
>>> Best regards
>>>
>>> Gérard Breiner
>>>
>> An idea that comes in my mind... If I don't put 'name' and 'url' in
>> the hook I should have to rise an exception according the code of
>> subscribeRemoteCalendar but I do not get the message "You must
>> specify a name and a URL." So I'm wondering if the methode is indeed
>> executed....
>>
>> [CODE]
>> if (!(strlen($info['name']) && strlen($info['url']))) {
>> throw new Kronolith_Exception(_("You must specify a name
>> and a URL."));
>> }
>> [/CODE]
>>
>>
>> Gérard Breiner
>>
>>
> Oh sorry, the exception is do rised, so the method is do executed.
>
> Gérard
Hello,
Good news, this time my hook works very fine. When a user logged into
webmail the prefs_init hook subscribe for him at his remote calendar
davical and use $username as calendar name.
So, the final code of kronolith/config/hook.php is :
[CODE]
class Kronolith_Hooks
{
public function prefs_init($prefs, $value, $username, $scope_ob)
{
$user = $username;
switch ($prefs) {
case 'remote_cals':
$password =
$GLOBALS['registry']->getAuthCredential('password');
// $info = array(array('name' => $username,
$info = array('name' => $username,
'url' =>
'https://calendar.ias.u-psud.fr/caldav.php/' .$username. '/calendar',
'user' => $user,
'password' => $password
);
Kronolith::subscribeRemoteCalendar($info);
}
$remote_calendars = $GLOBALS['prefs']->getValue('remote_cals');
return ($remote_calendars);
}
}
In the kronolith/config/prefs.local.php
$_prefs['remote_cals'] = array(
'value' => '',
'hook' => true
);
Hoping that can help others...
Best regards.
Gérard Breiner
[/CODE]
More information about the kronolith
mailing list