start)][] = $EM_Event; } foreach ($events_dates as $year => $events){ echo '

'.$year.'

'; echo EM_Events::output($events, $atts); } break; case 'monthly': //go through the events and put them into a monthly array $format = (!empty($args['date_format'])) ? $args['date_format']:'M Y'; $events_dates = array(); foreach($EM_Events as $EM_Event){ $events_dates[date_i18n($format,$EM_Event->start)][] = $EM_Event; } foreach ($events_dates as $month => $events){ echo '

'.$month.'

'; echo EM_Events::output($events, $atts); } break; case 'weekly': $format = (!empty($args['date_format'])) ? $args['date_format']:get_option('date_format'); $events_dates = array(); foreach($EM_Events as $EM_Event){ $start_of_week = get_option('start_of_week'); $day_of_week = date('w',$EM_Event->start); $day_of_week = date('w',$EM_Event->start); $offset = $day_of_week - $start_of_week; if($offset<0){ $offset += 7; } $offset = $offset * 60*60*24; //days in seconds $start_day = strtotime($EM_Event->start_date); $events_dates[$start_day - $offset][] = $EM_Event; } foreach ($events_dates as $event_day_ts => $events){ echo '

'.date_i18n($format,$event_day_ts).' - '.date_i18n($format,$event_day_ts+(60*60*24*6)).'

'; echo EM_Events::output($events, $atts); } break; default: //daily //go through the events and put them into a daily array $format = (!empty($args['date_format'])) ? $args['date_format']:get_option('date_format'); $events_dates = array(); foreach($EM_Events as $EM_Event){ $events_dates[strtotime($EM_Event->start_date)][] = $EM_Event; } foreach ($events_dates as $event_day_ts => $events){ echo '

'.date_i18n($format,$event_day_ts).'

'; echo EM_Events::output($events, $atts); } break; } if( !empty($args['limit']) && $events_count > $args['limit'] && (!empty($args['pagination']) || !isset($args['pagination'])) ){ //Show the pagination links (unless there's less than $limit events) $page_link_template = add_query_arg(array('page'=>'%PAGE%')); echo em_paginate( $page_link_template, $events_count, $args['limit'], $args['page']); } return ob_get_clean(); } /** * Print a grouped list of events by year, month, week or day. * @since 4.213 * @param array $args * @param string $format * @return string */ function em_events_list_grouped($args, $format=''){ echo em_get_events_list_grouped($args, $format); } /** * Creates an html link to the events page. * @param string $text * @return string */ function em_get_link( $text = '' ) { $text = ($text == '') ? get_option ( "dbem_events_page_title" ) : $text; $text = ($text == '') ? __('Events','dbem') : $text; //In case options aren't there.... return "$text"; } /** * Prints the result of em_get_link() * @param string $text * @uses em_get_link() */ function em_link($text = ''){ echo em_get_link($text); } /** * Creates an html link to the RSS feed * @param string $text * @return string */ function em_get_rss_link($text = "RSS") { $text = ($text == '') ? 'RSS' : $text; return "$text"; } /** * Prints the result of em_get_rss_link() * @param string $text * @uses em_get_rss_link() */ function em_rss_link($text = "RSS"){ echo em_get_rss_link($text); } /* * --------------------------------------------------------------------- * User Interfaces - Forms, Tables etc. * --------------------------------------------------------------------- */ //Event Forms /** * Outputs the event submission form for guests and members. * @param array $args */ function em_event_form($args = array()){ global $EM_Event; if( !is_user_logged_in() && get_option('dbem_events_anonymous_submissions') && em_locate_template('forms/event-editor-guest.php') ){ em_locate_template('forms/event-editor-guest.php',true, array('args'=>$args)); }else{ if( empty($EM_Event->event_id) ){ $EM_Event = ( is_object($EM_Event) && get_class($EM_Event) == 'EM_Event') ? $EM_Event : new EM_Event(); //Give a default location & category $default_cat = get_option('dbem_default_category'); $default_loc = get_option('dbem_default_location'); if( is_numeric($default_cat) && $default_cat > 0 && !empty($EM_Event->get_categories->categories) ){ $EM_Category = new EM_Category($default_cat); $EM_Event->get_categories()->categories[] = $EM_Category; } if( is_numeric($default_loc) && $default_loc > 0 && ( empty($EM_Event->get_location()->location_id) && empty($EM_Event->get_location()->location_name) && empty($EM_Event->get_location()->location_address) && empty($EM_Event->get_location()->location_town) ) ){ $EM_Event->location_id = $default_loc; $EM_Event->location = new EM_Location($default_loc); } } em_locate_template('forms/event-editor.php',true, array('args'=>$args)); } } /** * Retreives the event submission form for guests and members. * @param array $args */ function em_get_event_form( $args = array() ){ ob_start(); em_event_form($args); return ob_get_clean(); } /** * Outputs table of events belonging to user * @param array $args */ function em_events_admin($args = array()){ global $EM_Event, $bp; if( is_user_logged_in() && current_user_can('edit_events') ){ if( !empty($_GET['action']) && $_GET['action']=='edit' ){ if( empty($_REQUEST['redirect_to']) ){ $_REQUEST['redirect_to'] = em_add_get_params($_SERVER['REQUEST_URI'], array('action'=>null, 'event_id'=>null)); } em_event_form(); }else{ $limit = ( !empty($_REQUEST['limit']) ) ? $_REQUEST['limit'] : 20;//Default limit $page = ( !empty($_REQUEST['pno']) ) ? $_REQUEST['pno']:1; $offset = ( $page > 1 ) ? ($page-1)*$limit : 0; $order = ( !empty($_REQUEST ['order']) ) ? $_REQUEST ['order']:'ASC'; $scope_names = em_get_scopes(); $scope = ( !empty($_REQUEST ['scope']) && array_key_exists($_REQUEST ['scope'], $scope_names) ) ? $_REQUEST ['scope']:'future'; if( array_key_exists('status', $_REQUEST) ){ $status = ($_REQUEST['status']) ? 1:0; }else{ $status = false; } $search = ( !empty($_REQUEST['em_search']) ) ? $_REQUEST['em_search']:''; $args = array( 'scope' => $scope, 'order' => $order, 'search' => $search, 'owner' => get_current_user_id(),'status' => $status); $events_count = EM_Events::count( $args ); //count events without limits for pagination $args['limit'] = $limit; $args['offset'] = $offset; $EM_Events = EM_Events::get( $args ); if($scope != 'future'){ $future_count = EM_Events::count( array('status'=>1, 'owner' =>get_current_user_id(), 'scope' => 'future')); }else{ $future_count = $events_count; } $pending_count = EM_Events::count( array('status'=>0, 'owner' =>get_current_user_id(), 'scope' => 'all') ); em_locate_template('tables/events.php',true, array( 'args'=>$args, 'EM_Events'=>$EM_Events, 'events_count'=>$events_count, 'future_count'=>$future_count, 'pending_count'=>$pending_count, 'page' => $page, 'limit' => $limit, 'offset' => $offset, 'show_add_new' => true )); } }else{ echo __("You must log in to view and manage your events.",'dbem'); } } /** * Retreives table of events belonging to user * @param array $args */ function em_get_events_admin( $args = array() ){ ob_start(); em_events_admin($args); return ob_get_clean(); } /** * Outputs the event search form. * @param array $args */ function em_event_search_form($args = array()){ em_locate_template('templates/events-search.php',true, array('args'=>$args)); } /** * Retreives the event search form. * @param array $args */ function em_get_event_search_form( $args = array() ){ ob_start(); em_event_search_form($args); return ob_get_clean(); } //Location Forms /** * Outputs the location submission form for guests and members. * @param array $args */ function em_location_form($args = array()){ global $EM_Location; $EM_Location = ( is_object($EM_Location) && get_class($EM_Location) == 'EM_Location') ? $EM_Location : new EM_Location(); em_locate_template('forms/location-editor.php',true); } /** * Retreives the location submission form for guests and members. * @param array $args */ function em_get_location_form( $args = array() ){ ob_start(); em_location_form($args); return ob_get_clean(); } /** * Outputs table of locations belonging to user * @param array $args */ function em_locations_admin($args = array()){ global $EM_Location; if( is_user_logged_in() && current_user_can('edit_locations') ){ if( !empty($_GET['action']) && $_GET['action']=='edit' ){ if( empty($_REQUEST['redirect_to']) ){ $_REQUEST['redirect_to'] = em_add_get_params($_SERVER['REQUEST_URI'], array('action'=>null, 'location_id'=>null)); } em_location_form(); }else{ $url = empty($url) ? $_SERVER['REQUEST_URI']:$url; //url to this page $limit = ( !empty($_REQUEST['limit']) ) ? $_REQUEST['limit'] : 20;//Default limit $page = ( !empty($_REQUEST['pno']) ) ? $_REQUEST['pno']:1; $offset = ( $page > 1 ) ? ($page-1)*$limit : 0; $args = array('limit'=>$limit, 'offset'=>$offset, 'status'=>false, 'blog'=>false); if( !empty($_REQUEST['view']) && $_REQUEST['view'] == 'others' && current_user_can('read_others_locations') ){ $locations = EM_Locations::get($args); $locations_count = EM_Locations::count(array('status'=>false, 'blog'=>false, 'owner'=>false)); }else{ $locations = EM_Locations::get( array_merge($args, array('owner'=>get_current_user_id())) ); $locations_count = EM_Locations::count(array('status'=>false, 'blog'=>false, 'owner'=>get_current_user_id())); } $locations_mine_count = EM_Locations::count( array('owner'=>get_current_user_id(), 'blog'=>false, 'status'=>false) ); $locations_all_count = current_user_can('read_others_locations') ? EM_Locations::count(array('blog'=>false, 'status'=>false)):0; em_locate_template('tables/locations.php',true, array( 'args'=>$args, 'locations'=>$locations, 'locations_count'=>$locations_count, 'locations_mine_count'=>$locations_mine_count, 'locations_all_count'=>$locations_all_count, 'url' => $url, 'page' => $page, 'limit' => $limit, 'offset' => $offset, 'show_add_new' => true )); } }else{ echo __("You must log in to view and manage your locations.",'dbem'); } } /** * Retreives table of locations belonging to user * @param array $args */ function em_get_locations_admin( $args = array() ){ ob_start(); em_locations_admin($args); return ob_get_clean(); } //Bookings Pages function em_bookings_admin(){ if( is_user_logged_in() && current_user_can('manage_bookings') ){ em_locate_template('buddypress/my-bookings.php', true); }else{ echo __("You must log in to view and manage your bookings.",'dbem'); } } function em_get_bookings_admin(){ ob_start(); em_bookings_admin(); return ob_get_clean(); } function em_my_bookings(){ em_locate_template('templates/my-bookings.php', true); } function em_get_my_bookings(){ ob_start(); em_my_bookings(); return ob_get_clean(); } /* * --------------------------------------------------------------------- * Conditionals - Yes/No functions * --------------------------------------------------------------------- */ /** * Returns true if there are any events that exist in the given scope (default is future events). * @param string $scope * @return boolean */ function em_are_events_available($scope = "future") { $scope = ($scope == "") ? "future":$scope; $events = EM_Events::get( array('limit'=>1, 'scope'=>$scope) ); return ( count($events) > 0 ); } /** * Returns true if the page is the events page. this is now only an events page, before v4.0.83 this would be true for any multiple page (e.g. locations) * @return boolean */ function em_is_events_page() { global $post; return em_get_page_type() == 'events'; } /** * Is this a a single event page? * @return boolean */ function em_is_event_page(){ return em_get_page_type() == 'event'; } /** * Is this a a single calendar day page? * @return boolean */ function em_is_calendar_day_page(){ return em_get_page_type() == 'calendar_day'; } /** * Is this a a single category page? * @return boolean */ function em_is_category_page(){ return em_get_page_type() == 'category'; } /** * Is this a categories list page? * @return boolean */ function em_is_categories_page(){ return em_get_page_type() == 'categories'; } /** * Is this a a single location page? * @return boolean */ function em_is_location_page(){ return em_get_page_type() == 'location'; } /** * Is this a locations list page? * @return boolean */ function em_is_locations_page(){ return em_get_page_type() == 'locations'; } /** * Is this my bookings page? * @return boolean */ function em_is_my_bookings_page(){ return em_get_page_type() == 'my_bookings'; } /** * Returns true if this is a single events page and the event is RSVPable * @return boolean */ function em_is_event_rsvpable() { //We assume that we're on a single event (or recurring event) page here, so $EM_Event must be loaded global $EM_Event; return ( em_is_event_page() && $EM_Event->rsvp ); } ?>