IcalHelper.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. App::uses('AppHelper', 'View/Helper');
  3. App::uses('Helper', 'View');
  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 $helpers = array(); //'Html'
  15. public $Ical;
  16. protected $_data = array();
  17. public function __construct($View = null, $settings = array()) {
  18. parent::__construct($View, $settings);
  19. App::uses('IcalLib', 'Tools.Lib');
  20. $this->Ical = new IcalLib();
  21. }
  22. public function reset() {
  23. $this->$_data = array();
  24. }
  25. /**
  26. * add a new ical record
  27. * @return boolean $success
  28. */
  29. public function add($data = array()) {
  30. //TODO: validate!
  31. $this->_data[] = $data;
  32. return true;
  33. }
  34. /**
  35. * returns complete ical calender file content to output
  36. * 2011-10-10 ms
  37. */
  38. public function generate($globalData = array(), $addStartAndEnd = true) {
  39. $res = array();
  40. foreach ($this->_data as $data) {
  41. $res[] = $this->Ical->build($data);
  42. }
  43. $res = implode(PHP_EOL.PHP_EOL, $res);
  44. if ($addStartAndEnd) {
  45. $res = $this->Ical->createStart($globalData).PHP_EOL.PHP_EOL.$res.PHP_EOL.PHP_EOL.$this->Ical->createEnd();
  46. }
  47. return $res;
  48. }
  49. }