PageRenderTime 40ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 0ms

/modules/Calendar/iCalExport.php

https://bitbucket.org/yousef_fadila/vtiger
PHP | 113 lines | 94 code | 15 blank | 4 comment | 15 complexity | c38fffbd7781fff87907d78f74b202e5 MD5 | raw file
Possible License(s): LGPL-2.1, GPL-2.0
  1. <?php
  2. define('_BENNU_VERSION', '0.1');
  3. require_once('include/utils/utils.php');
  4. require_once('modules/Calendar/CalendarCommon.php');
  5. include('modules/Calendar/iCal/iCalendar_rfc2445.php');
  6. include('modules/Calendar/iCal/iCalendar_components.php');
  7. include('modules/Calendar/iCal/iCalendar_properties.php');
  8. include('modules/Calendar/iCal/iCalendar_parameters.php');
  9. //$ical_query = "SELECT * FROM vtiger_activity WHERE (( STATUS != 'Completed' AND STATUS != 'Deferred' ) OR STATUS IS NULL)
  10. // AND (( eventstatus != 'Held' AND eventstatus != 'Not Held' ) OR eventstatus IS NULL )";
  11. global $current_user,$adb,$default_timezone;
  12. $filename = $_REQUEST['filename'];
  13. $ical_query = "select vtiger_activity.*,vtiger_crmentity.description,vtiger_activity_reminder.reminder_time from vtiger_activity inner join vtiger_crmentity on vtiger_activity.activityid = vtiger_crmentity.crmid " .
  14. " LEFT JOIN vtiger_activity_reminder ON vtiger_activity_reminder.activity_id=vtiger_activity.activityid AND vtiger_activity_reminder.recurringid=0" .
  15. " where vtiger_crmentity.deleted = 0 and vtiger_crmentity.smownerid = " . $current_user->id .
  16. " and vtiger_activity.activitytype NOT IN ('Emails')";
  17. $calendar_results = $adb->query($ical_query);
  18. // Send the right content type and filename
  19. header ("Content-type: text/calendar");
  20. header('Content-Disposition: attachment; '."filename={$filename}.ics");
  21. $todo_fields = getColumnFields('Calendar');
  22. $event_fields = getColumnFields('Events');
  23. $event = $todo = array();
  24. $keys_to_replace = array(
  25. 'events'=>array('taskpriority'),
  26. 'todo'=>array('taskpriority','taskstatus')
  27. );
  28. $keyvals_to_replace = array(
  29. 'events'=>array('taskpriority'=>'priority'),
  30. 'todo'=>array('taskpriority'=>'priority','taskstatus'=>'status')
  31. );
  32. foreach($todo_fields as $key=>$val){
  33. if(getFieldVisibilityPermission('Calendar',$current_user->id,$key)==0){
  34. if(!in_array($key,$keys_to_replace['todo'])){
  35. $todo[$key] = 'yes';
  36. } else {
  37. $todo[$keyvals_to_replace['todo'][$key]] = 'yes';
  38. }
  39. }
  40. }
  41. foreach($event_fields as $key=>$val){
  42. if(getFieldVisibilityPermission('Events',$current_user->id,$key)==0){
  43. if(!in_array($key,$keys_to_replace['events'])){
  44. $event[$key] = 'yes';
  45. } else {
  46. $event[$keyvals_to_replace['events'][$key]] = 'yes';
  47. }
  48. }
  49. }
  50. $tz = new iCalendar_timezone;
  51. if(!empty($default_timezone)){
  52. $tzid = split('/',$default_timezone);
  53. } else {
  54. $default_timezone = date_default_timezone_get();
  55. $tzid = split('/',$default_timezone);
  56. }
  57. if(!empty($tzid[1])){
  58. $tz->add_property('TZID', $tzid[1]);
  59. } else {
  60. $tz->add_property('TZID', $tzid[0]);
  61. }
  62. $tz->add_property('TZOFFSETTO', date('O'));
  63. if(date('I')==1){
  64. $tz->add_property('DAYLIGHTC', date('I'));
  65. } else {
  66. $tz->add_property('STANDARDC', date('I'));
  67. }
  68. $myical = new iCalendar;
  69. $myical->add_component($tz);
  70. while (!$calendar_results->EOF) {
  71. $this_event = $calendar_results->fields;
  72. $id = $this_event['activityid'];
  73. $type = $this_event['activitytype'];
  74. if($type!='Task'){
  75. $temp = $event;
  76. foreach($temp as $key=>$val){
  77. $temp[$key] = $this_event[$key];
  78. }
  79. $temp['id'] = $id;
  80. $ev = new iCalendar_event;
  81. $ev->assign_values($temp);
  82. $al = new iCalendar_alarm;
  83. $al->assign_values($temp);
  84. $ev->add_component($al);
  85. } else {
  86. $temp = $todo;
  87. foreach($temp as $key=>$val){
  88. $temp[$key] = $this_event[$key];
  89. }
  90. $ev = new iCalendar_todo;
  91. $ev->assign_values($temp);
  92. }
  93. $myical->add_component($ev);
  94. $calendar_results->MoveNext();
  95. }
  96. // Print the actual calendar
  97. echo $myical->serialize();
  98. ?>