[kronolith] Default external calendar

Jan Schneider jan at horde.org
Fri Apr 6 13:04:59 UTC 2012


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

-- 
Jan Schneider
The Horde Project
http://www.horde.org/




More information about the kronolith mailing list