[dev] Littles questions for using API's methods
Jan Schneider
jan at horde.org
Mon Aug 6 07:28:44 UTC 2012
Zitat von Gerard Breiner <gerard.breiner at ias.u-psud.fr>:
> Hello,
>
> At this time I can export/import all main calendars kronolith to
> davical but it seems there is an issue about permission. In fact
> each of all ics files ì get has a SUMMARY:busy...
> I found it is due to kronolith/lib/Event.php getTitle method in
> which it seems the current user has not permissions.
> [CODE]
> // We explicitly allow admin access here for the alarms notifications.
> if (!$GLOBALS['registry']->isAdmin() && $this->private &&
> $this->creator != $user) {
> return _("busy");
> } elseif ($GLOBALS['registry']->isAdmin() ||
> $this->hasPermission(Horde_Perms::READ, $user)) {
> return strlen($this->title) ? $this->title :
> _("[Unnamed event]");
> } else {
> return _("busy");
> }
> [/CODE]
>
> Could you please indicate me how to set up the permissions in my script :
>
> [CODE]
> #!/usr/bin/env php
> <?php
> set_include_path('/www/horde4/pear/php' . PATH_SEPARATOR .
> get_include_path());
> if (file_exists(dirname(__FILE__) .
> '/../../kronolith/lib/Application.php')) {
> $baseDir = dirname(__FILE__) . '/../';
> } else {
> require_once 'PEAR/Config.php';
> $baseDir = PEAR_Config::singleton()
> ->get('horde_dir', null, 'pear.horde.org') . '/kronolith/';
> }
>
> require_once dirname(__FILE__) . '/../lib/Application.php';
> Horde_Registry::appInit('kronolith', array(
> 'cli' => true
> ));
> // Call a Registry method.
> // Retrieve a list of users associated with each calendar, and
> // thus a list of users who have used kronolith and
> // potentially have an agenda preference set.
> $calendars = $GLOBALS['kronolith_shares']->listAllShares();
> $users = array();
> foreach (array_keys($calendars) as $calendarId) {
> try {
> $calendar = $GLOBALS['kronolith_shares']->getShare($calendarId);
> } catch (Exception $e) {
> die($e->getMessage());
> }
> $users = array_merge($users,
> $calendar->listUsers(Horde_Perms::READ));
> }
> // Remove duplicates.
> $users = array_unique($users);
> natcasesort($users);
> // Tell the registry that we are doing authentication ourselves.
> define('AUTH_HANDLER', true);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This is H3 code.
> $contentType = 'text/calendar';
> foreach ($users as $user) {
> $registry->setAuth($user, array('password' => ''));
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
You are explicitely setting a user here that is *not* an admin.
> $cals[$user] = $registry->call('calendar/listCalendars',
> array(true, HORDE_PERMS::READ));
> if ($cals[$user]['0'] != '') {
> if (strpbrk($user, '*') != true) {
> if ($user != 'mmiville') {
> $export[$user] =
> $registry->call('calendar/exportCalendar', array($cals[$user]['0'],
> $contentType, Horde_Perms::READ));
> $file = '/home/webadm/exported_calendars/' . $user . '.ics';
> $hdl = fopen ($file, a);
> fwrite($hdl,($export[$user]));
>
> }
> }
> } //end of foreach
> fclose($hdl);
> [/CODE]
>
> Any help would be appreciated.
>
> Best regards.
>
> Gérard Breiner
>
> Le 15 juin 2012 à 22:05, Gerard Breiner a écrit :
>
>> Many thanks again Jan? I read the doc? No doubt that Xdebug is a
>> very suitable tool for debugging?
>> However for this time I finally chose to debug by adding
>> temporarily a var_dump(events) at the line 845 in
>> kronolith/lib/Api.php... I found a event_recurtype field set to 1
>> which I replace by the NULL value and afterwards the calendar has
>> been exported without another error.
>>
>> Best regards.
>>
>> Gérard
>>
>>
>> Le 14 juin 2012 à 14:29, Jan Schneider a écrit :
>>
>>>
>>> Zitat von Gerard Breiner <gerard.breiner at ias.u-psud.fr>:
>>>
>>>> Many thanks Jan for your fast answer?. However, I Installed
>>>> Xdebug but I'm trying to use it without result?
>>>> Yet it is installed? php -m list : [
>>>> Zend Modules]
>>>> Xdebug
>>>>
>>>> In my Cli php.ini I added :
>>>>
>>>> [CODE]
>>>> error_reporting = E_ALL & E_NOTICE
>>>>
>>>> [xdebug]
>>>> zend_extension="/usr/lib64/php5/20090626/xdebug.so"
>>>> ;xdebug.default_enable=Off
>>>> xdebug.default_enable=1
>>>> xdebug.show_local_vars=1
>>>> xdebug.trace_format=2
>>>> xdebug.trace_output_dir="/www/horde4/log"
>>>> xdebug.trace_output_name="xdebug.log"
>>>>
>>>> [/CODE]
>>>>
>>>> When I run my script "exportCalendars.phpt" for the calendars
>>>> which has a bad event I get :
>>>>
>>>> PHP Notice: Undefined index: SERVER_NAME in
>>>> /www/horde4/config/horde.local.php on line 12
>>>> PHP Stack trace:
>>>> PHP 1. {main}() /www/horde4/pear/exportcals.php:0
>>>> PHP 2. require_once() /www/horde4/pear/exportcals.php:12
>>>> PHP 3. require_once() /www/horde4/lib/Application.php:18
>>>> PHP 4. include_once() /www/horde4/lib/core.php:40
>>>> PHP Notice: Undefined index: SERVER_PORT in
>>>> /www/horde4/config/horde.local.php on line 13
>>>> PHP Stack trace:
>>>> PHP 1. {main}() /www/horde4/pear/exportcals.php:0
>>>> PHP 2. require_once() /www/horde4/pear/exportcals.php:12
>>>> PHP 3. require_once() /www/horde4/lib/Application.php:18
>>>> PHP 4. include_once() /www/horde4/lib/core.php:40
>>>> PHP Notice: Undefined index: SERVER_NAME in
>>>> /www/horde4/config/horde.local.php on line 22
>>>> PHP Stack trace:
>>>> PHP 1. {main}() /www/horde4/pear/exportcals.php:0
>>>> PHP 2. require_once() /www/horde4/pear/exportcals.php:12
>>>> PHP 3. require_once() /www/horde4/lib/Application.php:18
>>>> PHP 4. include_once() /www/horde4/lib/core.php:40
>>>>
>>>> ====================
>>>>
>>>> Fatal Error:
>>>> DateTime::__construct(): Failed to parse time string (-001-11-01)
>>>> at position 7 (-): Double timezone specification
>>>>
>>>> 1. Horde_Registry->call() /www/horde4/pear/exportcals.php:68
>>>> 2. Horde_Registry->callByPackage()
>>>> /www/horde4/pear/php/Horde/Registry.php:979
>>>> 3. call_user_func_array() /www/horde4/pear/php/Horde/Registry.php:1020
>>>> 4. Kronolith_Api->exportCalendar()
>>>> 5. Kronolith_Event->toiCalendar() /www/horde4/kronolith/lib/Api.php:846
>>>> 6. Horde_Date->__construct() /www/horde4/kronolith/lib/Event.php:842
>>>> 7. Horde_Date->_initializeFromArgs()
>>>> /www/horde4/pear/php/Horde/Date.php:201
>>>> 8. Horde_Date->_initializeFromArray()
>>>> /www/horde4/pear/php/Horde/Date.php:1045
>>>> 9. Horde_Date->_correct() /www/horde4/pear/php/Horde/Date.php:1076
>>>> 10. Horde_Date_Utils::daysInMonth()
>>>> /www/horde4/pear/php/Horde/Date.php:1009
>>>> 11. DateTime->__construct() /www/horde4/pear/php/Horde/Date/Utils.php:58
>>>>
>>>> I wonder what else I have to configure for Xdebug works.
>>>
>>> See http://xdebug.org/docs/stack_trace especially xdebug.collect_params
>>>
>>>>
>>>> Best regards.
>>>>
>>>> Gérard
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> Le 11 juin 2012 à 16:58, Jan Schneider a écrit :
>>>>
>>>>> Install Xdebug and you should get a backtrace with function call
>>>>> parameter that would help identifying the broken event.
>>>>>
>>>>> Zitat von Gerard Breiner <gerard.breiner at ias.u-psud.fr>:
>>>>>
>>>>>> Hello,
>>>>>>
>>>>>> I come here back for saying my script works and do what he is
>>>>>> supposed to do? I think to have identified the calendar for
>>>>>> which "calendar/exportCalendars" rise the error "Double
>>>>>> timezone specification".
>>>>>> Is there a way for identifying what is not clean inside this calendar ?
>>>>>>
>>>>>> Many thanks in advance.
>>>>>>
>>>>>> Best regards.
>>>>>>
>>>>>> Gérard
>>>>>>
>>>>>>
>>>>>> Le 6 juin 2012 à 17:08, Gerard Breiner a écrit :
>>>>>>
>>>>>>> Many thanks Jan, Mike?.
>>>>>>>
>>>>>>> I picked up a few pieces of code and now I might expect to
>>>>>>> get an export of all the calendar but I'm facing an error when
>>>>>>> I run 'calendar/exportCalendars' method :
>>>>>>> It seems this error occurs for calendars whose owners has
>>>>>>> never create an event.
>>>>>>>
>>>>>>> Fatal Error:
>>>>>>> DateTime::__construct(): Failed to parse time string
>>>>>>> (-001-11-01) at position 7 (-): Double timezone specification
>>>>>>>
>>>>>>> It seems this error is raised at :
>>>>>>> DateTime->__construct() /www/horde4/pear/php/Horde/Date/Utils.php:58
>>>>>>>
>>>>>>> At this time my code is :
>>>>>>>
>>>>>>> [CODE]
>>>>>>> #!/usr/bin/env php
>>>>>>> <?php
>>>>>>> set_include_path('/www/horde4/pear/php' . PATH_SEPARATOR .
>>>>>>> get_include_path());
>>>>>>> if (file_exists(dirname(__FILE__) .
>>>>>>> '/../../kronolith/lib/Application.php')) {
>>>>>>> $baseDir = dirname(__FILE__) . '/../';
>>>>>>> } else {
>>>>>>> require_once 'PEAR/Config.php';
>>>>>>> $baseDir = PEAR_Config::singleton()
>>>>>>> ->get('horde_dir', null, 'pear.horde.org') . '/kronolith/';
>>>>>>> }
>>>>>>>
>>>>>>> require_once dirname(__FILE__) . '/../lib/Application.php';
>>>>>>> Horde_Registry::appInit('kronolith', array(
>>>>>>> 'cli' => true
>>>>>>> ));
>>>>>>> // Call a Registry method.
>>>>>>> // Retrieve a list of users associated with each calendar, and
>>>>>>> // thus a list of users who have used kronolith and
>>>>>>> // potentially have an agenda preference set.
>>>>>>> $calendars = $GLOBALS['kronolith_shares']->listAllShares();
>>>>>>> $users = array();
>>>>>>> foreach (array_keys($calendars) as $calendarId) {
>>>>>>> try {
>>>>>>> $calendar =
>>>>>>> $GLOBALS['kronolith_shares']->getShare($calendarId);
>>>>>>> } catch (Exception $e) {
>>>>>>> continue;
>>>>>>> }
>>>>>>> $users = array_merge($users,
>>>>>>> $calendar->listUsers(Horde_Perms::READ));
>>>>>>> }
>>>>>>> // Remove duplicates.
>>>>>>> $users = array_unique($users);
>>>>>>>
>>>>>>> // Tell the registry that we are doing authentication ourselves.
>>>>>>> define('AUTH_HANDLER', true);
>>>>>>>
>>>>>>> $contentType = 'text/calendar';
>>>>>>> foreach ($users as $user) {
>>>>>>> $registry->setAuth($user, array('password' => ''));
>>>>>>> $cals[$user] = $registry->call('calendar/listCalendars',
>>>>>>> array('true', 'HORDE_PERMS::READ'));
>>>>>>> if ($cals[$user]['0'] != '') {
>>>>>>> $export[$user] = $registry->call('calendar/exportCalendar',
>>>>>>> array($cals[$user]['0'], $contentType, 'Horde_Perms::READ'));
>>>>>>> $file = '/home/webadm/exportCalendars/' . $user . '.ics';
>>>>>>> $hdl = fopen($file, a);
>>>>>>> fwrite($hdl, $export[$user]);
>>>>>>> }
>>>>>>>
>>>>>>> }
>>>>>>> fclose($hdl);
>>>>>>> [/CODE]
>>>>>>>
>>>>>>> Best regards.
>>>>>>>
>>>>>>> Gérard
>>>>>>>
>>>>>>>
>>>>>>> Le 4 juin 2012 à 17:20, Michael J Rubinsky a écrit :
>>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>> Quoting Gerard Breiner <gerard.breiner at ias.u-psud.fr>:
>>>>>>>>
>>>>>>>>> Hello Mike,
>>>>>>>>>
>>>>>>>>> Thanks for these precisions? It make me understand what Jan meant?
>>>>>>>>> I will try soon to reduce registry.local.php and kept only
>>>>>>>>> what is necessary.
>>>>>>>>>
>>>>>>>>> I have another question about calendar permissions and listCalendars.
>>>>>>>>> In the admin interface admin/perms I have assigned the
>>>>>>>>> permissions 'show' and 'read' to allow the user webadm
>>>>>>>>> access to all agendas.
>>>>>>>>> I dont understand why with the below code I do not list all
>>>>>>>>> the calendars but only the others users shares with "webadm"
>>>>>>>>> user? It is like the perms I setup has not been validated.
>>>>>>>>
>>>>>>>> Permissions for calendars are set by the owner of the
>>>>>>>> calendar, from within Kronolith - not from the administrative
>>>>>>>> interface. Look on the calendar's property view.
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> mike
>>>>>>>>
>>>>>>>> The Horde Project (www.horde.org)
>>>>>>>> mrubinsk at horde.org
>>>>>>>
>>>>>>> --
>>>>>>> dev mailing list
>>>>>>> Frequently Asked Questions: http://wiki.horde.org/FAQ
>>>>>>> To unsubscribe, mail: dev-unsubscribe at lists.horde.org
>>>>>>
>>>>>> --
>>>>>> dev mailing list
>>>>>> Frequently Asked Questions: http://wiki.horde.org/FAQ
>>>>>> To unsubscribe, mail: dev-unsubscribe at lists.horde.org
>>>>>
>>>>> --
>>>>> Jan Schneider
>>>>> The Horde Project
>>>>> http://www.horde.org/
>>>>>
>>>>>
>>>>> --
>>>>> dev mailing list
>>>>> Frequently Asked Questions: http://wiki.horde.org/FAQ
>>>>> To unsubscribe, mail: dev-unsubscribe at lists.horde.org
>>>
>>> --
>>> Jan Schneider
>>> The Horde Project
>>> http://www.horde.org/
>>>
>>>
>>
>> --
>> dev mailing list
>> Frequently Asked Questions: http://wiki.horde.org/FAQ
>> To unsubscribe, mail: dev-unsubscribe at lists.horde.org
--
Jan Schneider
The Horde Project
http://www.horde.org/
More information about the dev
mailing list