[kronolith] Default external calendar

Gerard Breiner gerard.breiner at ias.u-psud.fr
Fri Apr 6 14:24:26 UTC 2012


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


More information about the kronolith mailing list