Blame view

application/libs/PHPMailer/extras/EasyPeasyICS.php 2.19 KB
8d65d0ce   andryeyev   init
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
  <?php
  
  /* ------------------------------------------------------------------------ */
  /* EasyPeasyICS
  /* ------------------------------------------------------------------------ */
  /* Manuel Reinhard, manu@sprain.ch
  /* Twitter: @sprain
  /* Web: www.sprain.ch
  /*
  /* Built with inspiration by
  /" http://stackoverflow.com/questions/1463480/how-can-i-use-php-to-dynamically-publish-an-ical-file-to-be-read-by-google-calend/1464355#1464355
  /* ------------------------------------------------------------------------ */
  /* History:
  /* 2010/12/17 - Manuel Reinhard - when it all started
  /* ------------------------------------------------------------------------ */  
  
  class EasyPeasyICS {
  
  	protected $calendarName;
  	protected $events = array();
  	
  
  	/**
  	 * Constructor
  	 * @param string $calendarName
  	 */	
  	public function __construct($calendarName=""){
  		$this->calendarName = $calendarName;
  	}//function
  
  
  	/**
  	 * Add event to calendar
  	 * @param string $calendarName
  	 */	
  	public function addEvent($start, $end, $summary="", $description="", $url=""){
  		$this->events[] = array(
  			"start" => $start,
  			"end"   => $end,
  			"summary" => $summary,
  			"description" => $description,
  			"url" => $url
  		);
  	}//function
  	
  	
  	public function render($output = true){
  		
  		//start Variable
  		$ics = "";
  	
  		//Add header
  		$ics .= "BEGIN:VCALENDAR
  METHOD:PUBLISH
  VERSION:2.0
  X-WR-CALNAME:".$this->calendarName."
  PRODID:-//hacksw/handcal//NONSGML v1.0//EN";
  		
  		//Add events
  		foreach($this->events as $event){
  			$ics .= "
  BEGIN:VEVENT
  UID:". md5(uniqid(mt_rand(), true)) ."@EasyPeasyICS.php
  DTSTAMP:" . gmdate('Ymd').'T'. gmdate('His') . "Z
  DTSTART:".gmdate('Ymd', $event["start"])."T".gmdate('His', $event["start"])."Z
  DTEND:".gmdate('Ymd', $event["end"])."T".gmdate('His', $event["end"])."Z
  SUMMARY:".str_replace("\n", "\\n", $event['summary'])."
  DESCRIPTION:".str_replace("\n", "\\n", $event['description'])."
  URL;VALUE=URI:".$event['url']."
  END:VEVENT";
  		}//foreach
  		
  		
  		//Footer
  		$ics .= "
  END:VCALENDAR";
  
  
  		if ($output) {
  			//Output
  			header('Content-type: text/calendar; charset=utf-8');
  			header('Content-Disposition: inline; filename='.$this->calendarName.'.ics');
  			echo $ics;
  		} else {
  			return $ics;
  		}
  
  	}//function
  
  }//class