[kronolith] Default external calendar

Gerard Breiner gerard.breiner at ias.u-psud.fr
Fri Apr 6 09:46:55 UTC 2012


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.

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






More information about the kronolith mailing list