IcalHelper.php 1.3 KB

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