IcalHelper.php 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. App::uses('Helper', 'View');
  3. /**
  4. * uses ical lib
  5. * tipps see http://labs.iamkoa.net/2007/09/07/create-downloadable-ical-events-via-cake/
  6. *
  7. * needs ical layout
  8. * needs Router::parseExtensions('ics') in router.php
  9. *
  10. * 2011-10-10 ms
  11. */
  12. class IcalHelper extends AppHelper {
  13. public $helpers = array(); //'Html'
  14. public $Ical;
  15. protected $_data = array();
  16. public function __construct($View = null, $settings = array()) {
  17. parent::__construct($View, $settings);
  18. App::uses('IcalLib', 'Tools.Lib');
  19. $this->Ical = new IcalLib();
  20. }
  21. public function reset() {
  22. $this->$_data = array();
  23. }
  24. /**
  25. * add a new ical record
  26. * @return boolean $success
  27. */
  28. public function add($data = array()) {
  29. //TODO: validate!
  30. $this->_data[] = $data;
  31. return true;
  32. }
  33. /**
  34. * returns complete ical calender file content to output
  35. * 2011-10-10 ms
  36. */
  37. public function generate($globalData = array(), $addStartAndEnd = true) {
  38. $res = array();
  39. foreach ($this->_data as $data) {
  40. $res[] = $this->Ical->build($data);
  41. }
  42. $res = implode(PHP_EOL.PHP_EOL, $res);
  43. if ($addStartAndEnd) {
  44. $res = $this->Ical->createStart($globalData).PHP_EOL.PHP_EOL.$res.PHP_EOL.PHP_EOL.$this->Ical->createEnd();
  45. }
  46. return $res;
  47. }
  48. }