[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Dolibarr-dev] [task #8450] Export iCal of commercial events
From: |
Yannick Warnier |
Subject: |
[Dolibarr-dev] [task #8450] Export iCal of commercial events |
Date: |
Fri, 01 Aug 2008 16:37:53 +0000 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.1) Gecko/2008072820 Firefox/3.0.1 |
URL:
<http://savannah.nongnu.org/task/?8450>
Summary: Export iCal of commercial events
Project: Dolibarr
Submitted by: ywarnier
Submitted on: vendredi 01.08.2008 à 16:37
Category: None
Should Start On: dimanche 10.08.2008 à 00:00
Should be Finished on: mercredi 01.10.2008 à 00:00
Priority: 5 - Normal
Status: None
Assigned to: ywarnier
Open/Closed: Open
Discussion Lock: Any
Task open to external developers: None
_______________________________________________________
Details:
In the commercial actions interface, offer an iCal export icon (general
"prospect" tab or new tab "export" for event details).
Good export library available in LGPL here:
http://www.kigkonsult.se/iCalcreator/index.php
Implementation could look like something like this (excerpt from the Dokeos
project):
$ical = new vcalendar();
$ical->setConfig('unique_id',api_get_path(WEB_PATH));
$ical->setProperty( 'method', 'PUBLISH' );
$ical->setConfig('url',api_get_path(WEB_PATH));
$vevent = new vevent();
switch($_GET['class'])
{
case 'public':
$vevent->setClass('PUBLIC');
break;
case 'private':
$vevent->setClass('PRIVATE');
break;
case 'confidential':
$vevent->setClass('CONFIDENTIAL');
break;
default:
$vevent->setClass('PRIVATE');
break;
}
switch($_GET['type'])
{
case 'personal':
require_once
(api_get_path(SYS_CODE_PATH).'calendar/myagenda.inc.php');
$ai = get_personal_agenda_item($_GET['id']);
$vevent->setProperty( 'summary',
mb_convert_encoding($ai['title'],'UTF-8',$charset));
if(empty($ai['date'])){header('location:'.$_SERVER['REFERER_URI']);}
list($y,$m,$d,$h,$M,$s) =
preg_split('/[\s:-]/',$ai['date']);
$vevent->setProperty('dtstart',array('year'=>$y,'month'=>$m,'day'=>$d,'hour'=>$h,'min'=>$M,'sec'=>$s));
if(empty($ai['enddate']))
{
$y2=$y;$m2=$m;$d2=$d;$h2=$h;$M2=$M+15;$s2=$s;
if($M2>60){$M2=$M2-60;$h2+=1;}
}
else
{
list($y2,$m2,$d2,$h2,$M2,$s2) =
preg_split('/[\s:-]/',$ai['enddate']);
}
$vevent->setProperty('dtend',array('year'=>$y2,'month'=>$m2,'day'=>$d2,'hour'=>$h2,'min'=>$M2,'sec'=>$s2));
//$vevent->setProperty( 'LOCATION',
get_lang('Unknown') ); // property
name - case independent
$vevent->setProperty( 'description',
mb_convert_encoding($ai['text'],'UTF-8',$charset));
//$vevent->setProperty( 'comment', 'This is a
comment' );
$user = api_get_user_info($ai['user']);
$vevent->setProperty('organizer',$user['mail']);
$vevent->setProperty('attendee',$user['mail']);
//$vevent->setProperty( 'rrule', array( 'FREQ'
=> 'WEEKLY', 'count' =>
4));// occurs also four next weeks
$ical->setConfig('filename',$y.$m.$d.$h.$M.$s.'-'.rand(1,1000).'.ics');
$ical->setComponent ($vevent); // add event to
calendar
$ical->returnCalendar();
break;
case 'course':
$TABLEAGENDA =
Database::get_course_table(TABLE_AGENDA);
$TABLE_ITEM_PROPERTY =
Database::get_course_table(TABLE_ITEM_PROPERTY);
require_once
(api_get_path(SYS_CODE_PATH).'calendar/agenda.inc.php');
$ai = get_agenda_item($_GET['id']);
$vevent->setProperty( 'summary',
mb_convert_encoding($ai['title'],'UTF-8',$charset));
if(empty($ai['start_date'])){header('location:'.$_SERVER['REFERER_URI']);}
list($y,$m,$d,$h,$M,$s) =
preg_split('/[\s:-]/',$ai['start_date']);
$vevent->setProperty('dtstart',array('year'=>$y,'month'=>$m,'day'=>$d,'hour'=>$h,'min'=>$M,'sec'=>$s));
if(empty($ai['end_date']))
{
$y2=$y;$m2=$m;$d2=$d;$h2=$h;$M2=$M+15;$s2=$s;
if($M2>60){$M2=$M2-60;$h2+=1;}
}
else
{
list($y2,$m2,$d2,$h2,$M2,$s2) =
preg_split('/[\s:-]/',$ai['end_date']);
}
$vevent->setProperty('dtend',array('year'=>$y2,'month'=>$m2,'day'=>$d2,'hour'=>$h2,'min'=>$M2,'sec'=>$s2));
$vevent->setProperty( 'description',
mb_convert_encoding($ai['content'],'UTF-8',$charset));
//$vevent->setProperty( 'comment', 'This is a
comment' );
$user = api_get_user_info($ai['user']);
$vevent->setProperty('organizer',$user['mail']);
//$vevent->setProperty('attendee',$user['mail']);
$course = api_get_course_info();
$vevent->setProperty('location',
$course['name']); // property name -
case independent
if($ai['repeat'])
{
$trans =
array('daily'=>'DAILY','weekly'=>'WEEKLY','monthlyByDate'=>'MONTHLY','yearly'=>'YEARLY');
$freq = $trans[$ai['repeat_type']];
list($e_y,$e_m,$e_d) =
split('/',date('Y/m/d',$ai['repeat_end']));
$vevent->setProperty('rrule',array('FREQ'=>$freq,'UNTIL'=>array('year'=>$e_y,'month'=>$e_m,'day'=>$e_d),'INTERVAL'=>'1'));
}
//$vevent->setProperty( 'rrule', array( 'FREQ'
=> 'WEEKLY', 'count' =>
4));// occurs also four next weeks
$ical->setConfig('filename',$y.$m.$d.$h.$M.$s.'-'.rand(1,1000).'.ics');
$ical->setComponent ($vevent); // add event to
calendar
$ical->returnCalendar();
break;
_______________________________________________________
Reply to this item at:
<http://savannah.nongnu.org/task/?8450>
_______________________________________________
Message posté via/par Savannah
http://savannah.nongnu.org/
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Dolibarr-dev] [task #8450] Export iCal of commercial events,
Yannick Warnier <=