PageRenderTime 42ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/wp-content/plugins/events-manager/em-ical.php

https://gitlab.com/Blueprint-Marketing/interoccupy.net
PHP | 56 lines | 36 code | 4 blank | 16 comment | 8 complexity | 4ce0dcc4ea5683382f9b0681eb593aa5 MD5 | raw file
  1. <?php
  2. /**
  3. * generates an ical feed on init if url is correct
  4. */
  5. function em_ical( $regenerate = false ){
  6. //check if this is a calendar request for all events
  7. $cal_file_request = preg_match('/events.ics$/', $_SERVER['REQUEST_URI']); //are we askig for the ics file directly but doesn't exist?
  8. if ( $cal_file_request || $_SERVER['REQUEST_URI'] == '/?ical=1' || $regenerate ) {
  9. $calendar = em_ical_events();
  10. //let's create a cache file
  11. /*
  12. if( get_option('dbem_regenerate_ical') || !file_exists(ABSPATH . "/events.ics") ){
  13. $file = fopen( ABSPATH . "/events.ics", 'w');
  14. if($file){
  15. fwrite($file, $calendar, strlen($calendar));
  16. fclose($file);
  17. update_option('dbem_regenerate_ical',false);
  18. }
  19. }
  20. */
  21. echo $calendar;
  22. die ();
  23. }
  24. }
  25. add_action ( 'init', 'em_ical' );
  26. function em_ical_event(){
  27. global $wpdb, $wp_query;
  28. //add endpoints to events
  29. if( !empty($wp_query) && $wp_query->get(EM_POST_TYPE_EVENT) && $wp_query->get('ical') ){
  30. $event_id = $wpdb->get_var('SELECT event_id FROM '.EM_EVENTS_TABLE." WHERE event_slug='".$wp_query->get(EM_POST_TYPE_EVENT)."' AND event_status=1 LIMIT 1");
  31. if( !empty($event_id) ){
  32. global $EM_Event;
  33. $EM_Event = em_get_event($event_id);
  34. ob_start();
  35. em_locate_template('templates/ical-event.php', true);
  36. echo preg_replace("/([^\r])\n/", "$1\r\n", ob_get_clean());
  37. exit();
  38. }
  39. }
  40. }
  41. add_action ( 'parse_query', 'em_ical_event' );
  42. function em_ical_events(){
  43. ob_start();
  44. em_locate_template('templates/ical.php', true);
  45. return preg_replace("/([^\r])\n/", "$1\r\n", ob_get_clean());//get the contents to output and clean crlf issues
  46. }
  47. function em_update_ical($result){
  48. update_option('dbem_regenerate_ical',true);
  49. return $result;
  50. }
  51. add_filter('em_event_save','em_update_ical', 1, 1);
  52. ?>