Файловый менеджер - Редактировать - /home/harasnat/www/labour/wp-content/plugins/events-manager/em-wpfc.php
Назад
<?php /** * Integration with WP FullCalendar - http://wordpress.org/plugins/wp-fullcalendar/ * Initiallizes EM stuff by overriding some shortcodes, filters and actions in the WP FullCalendar plugin * Admin functions are located in admin/wpfc-admin.php */ //overrides the ajax calls for event data if( defined('DOING_AJAX') && DOING_AJAX && !empty($_REQUEST['type']) && $_REQUEST['type'] == EM_POST_TYPE_EVENT ){ //only needed during ajax requests anyway remove_action('wp_ajax_WP_FullCalendar', array('WP_FullCalendar','ajax')); remove_action('wp_ajax_nopriv_WP_FullCalendar', array('WP_FullCalendar','ajax')); add_action('wp_ajax_WP_FullCalendar', 'wpfc_em_ajax'); add_action('wp_ajax_nopriv_WP_FullCalendar', 'wpfc_em_ajax'); } //overrides some EM stuff with FullCalendar depending on some extra settings if ( get_option('dbem_emfc_override_shortcode') ){ remove_shortcode('events_calendar'); add_shortcode('events_calendar', array('WP_FullCalendar','calendar')); } if( get_option('dbem_emfc_override_calendar') ){ add_filter ('em_content_pre', 'wpfc_em_content',10,2); } /** * Replaces the event page with the FullCalendar if requested in settings * @param unknown_type $page_content * @return Ambigous <mixed, string> */ function wpfc_em_content($content = '', $page_content=''){ global $wpdb, $post; if ( em_is_events_page() ){ $calendar_content = WP_FullCalendar::calendar(); //Now, we either replace CONTENTS or just replace the whole page if( preg_match('/CONTENTS/', $page_content) ){ $content = str_replace('CONTENTS',$calendar_content,$page_content); }else{ $content = $calendar_content; } } return $content; } /** * Adds extra non-taxonomy fields to the calendar search * @param array $args */ function wpfc_em_calendar_search($args){ if( defined('EM_VERSION') && $args['type'] == 'event' ){ $country = !empty($args['country']) ? $args['country']:''; ?> <?php if( empty($country) ): ?> <!-- START Country Search --> <select name="country" class="em-events-search-country wpfc-taxonomy"> <option value=''><?php echo get_option('dbem_search_form_countries_label'); ?></option> <?php //get the counties from locations table global $wpdb; $countries = em_get_countries(); $em_countries = $wpdb->get_results("SELECT DISTINCT location_country FROM ".EM_LOCATIONS_TABLE." WHERE location_country IS NOT NULL AND location_country != '' ORDER BY location_country ASC", ARRAY_N); foreach($em_countries as $em_country): ?> <option value="<?php echo $em_country[0]; ?>" <?php echo (!empty($country) && $country == $em_country[0]) ? 'selected="selected"':''; ?>><?php echo $countries[$em_country[0]]; ?></option> <?php endforeach; ?> </select> <!-- END Country Search --> <?php endif; ?> <?php if( !empty($country) ): ?> <!-- START Region Search --> <select name="region" class="em-events-search-region wpfc-taxonomy"> <option value=''><?php echo get_option('dbem_search_form_regions_label'); ?></option> <?php if( !empty($country) ){ //get the counties from locations table global $wpdb; $em_states = $wpdb->get_results($wpdb->prepare("SELECT DISTINCT location_region FROM ".EM_LOCATIONS_TABLE." WHERE location_region IS NOT NULL AND location_region != '' AND location_country=%s ORDER BY location_region", $country), ARRAY_N); foreach($em_states as $state){ ?> <option <?php echo (!empty($_REQUEST['region']) && $_REQUEST['region'] == $state[0]) ? 'selected="selected"':''; ?>><?php echo $state[0]; ?></option> <?php } } ?> </select> <!-- END Region Search --> <!-- START State/County Search --> <select name="state" class="em-events-search-state wpfc-taxonomy"> <option value=''><?php echo get_option('dbem_search_form_states_label'); ?></option> <?php if( !empty($country) ){ //get the counties from locations table global $wpdb; $cond = !empty($_REQUEST['region']) ? $wpdb->prepare(" AND location_region=%s ", $_REQUEST['region']):''; $em_states = $wpdb->get_results($wpdb->prepare("SELECT DISTINCT location_state FROM ".EM_LOCATIONS_TABLE." WHERE location_state IS NOT NULL AND location_state != '' AND location_country=%s $cond ORDER BY location_state", $country), ARRAY_N); foreach($em_states as $state){ ?> <option <?php echo (!empty($_REQUEST['state']) && $_REQUEST['state'] == $state[0]) ? 'selected="selected"':''; ?>><?php echo $state[0]; ?></option> <?php } } ?> </select> <!-- END State/County Search --> <!-- START City Search --> <select name="town" class="em-events-search-town wpfc-taxonomy"> <option value=''><?php echo get_option('dbem_search_form_towns_label'); ?></option> <?php if( !empty($country) ){ //get the counties from locations table global $wpdb; $cond = !empty($_REQUEST['region']) ? $wpdb->prepare(" AND location_region=%s ", $_REQUEST['region']):''; $cond .= !empty($_REQUEST['state']) ? $wpdb->prepare(" AND location_state=%s ", $_REQUEST['state']):''; $em_towns = $wpdb->get_results($wpdb->prepare("SELECT DISTINCT location_town FROM ".EM_LOCATIONS_TABLE." WHERE location_town IS NOT NULL AND location_town != '' AND location_country=%s $cond ORDER BY location_town", $country), ARRAY_N); foreach($em_towns as $town){ ?> <option <?php echo (!empty($_REQUEST['town']) && $_REQUEST['town'] == $town[0]) ? 'selected="selected"':''; ?>><?php echo $town[0]; ?></option> <?php } } ?> </select> <!-- END City Search --> <?php endif; } } //this never worked because the action was never correctly called, until we add a setting for this in the options page, uncomment the line below or paste it in your functions.php file //add_action('wpfc_calendar_search','wpfc_em_calendar_search', 10, 1); /** * Replaces the normal WPFC ajax and uses the EM query system to provide event specific results. */ function wpfc_em_ajax() { $_REQUEST['month'] = false; //no need for these two, they are the original month and year requested $_REQUEST['year'] = false; //get the month/year between the start/end dates and feed these to EM $EM_DateTime = new EM_DateTime(substr($_REQUEST['start'],0,10)); $scope_start = $EM_DateTime->getTimestamp(); $scope_end = $EM_DateTime->modify(substr($_REQUEST['end'],0,10))->getTimestamp(); $scope_middle = $scope_start + ($scope_end - $scope_start)/2; $month = $EM_DateTime->setTimestamp($scope_middle)->format('n'); $year = $EM_DateTime->format('Y'); $args = array ('month'=>$month, 'year'=>$year, 'owner'=>false, 'status'=>1, 'orderby'=>'event_start_time, event_name'); //since wpfc handles date sorting we only care about time and name ordering here $args['number_of_weeks'] = 6; //WPFC always has 6 weeks $limit = $args['limit'] = get_option('wpfc_limit',3); $args['long_events'] = ( isset($_REQUEST['long_events']) && $_REQUEST['long_events'] == 0 ) ? 0:1; //long events are enabled, unless explicitly told not to in the shortcode //do some corrections for EM query if( isset($_REQUEST[EM_TAXONOMY_CATEGORY]) || empty($_REQUEST['category']) ) $_REQUEST['category'] = !empty($_REQUEST[EM_TAXONOMY_CATEGORY]) ? $_REQUEST[EM_TAXONOMY_CATEGORY]:false; $_REQUEST['tag'] = !empty($_REQUEST[EM_TAXONOMY_TAG]) ? $_REQUEST[EM_TAXONOMY_TAG]:false; $args = apply_filters('wpfc_fullcalendar_args', array_merge($_REQUEST, $args)); $calendar_array = EM_Calendar::get($args); $parentArray = $events = $event_ids = $event_date_counts = $event_dates_more = $event_day_counts = array(); //get day link template global $wp_rewrite; if( get_option("dbem_events_page") > 0 ){ $event_page_link = get_permalink(get_option("dbem_events_page")); //PAGE URI OF EM if( $wp_rewrite->using_permalinks() ){ $event_page_link = trailingslashit($event_page_link); } }else{ if( $wp_rewrite->using_permalinks() ){ $event_page_link = trailingslashit(home_url()).EM_POST_TYPE_EVENT_SLUG.'/'; //don't use EM_URI here, since ajax calls this before EM_URI is defined. }else{ $event_page_link = home_url().'?post_type='.EM_POST_TYPE_EVENT; //don't use EM_URI here, since ajax calls this before EM_URI is defined. } } if( $wp_rewrite->using_permalinks() && !defined('EM_DISABLE_PERMALINKS') ){ $event_page_link .= "%s/"; }else{ $joiner = (stristr($event_page_link, "?")) ? "&" : "?"; $event_page_link .= $joiner."calendar_day=%s"; } foreach ( $calendar_array['cells'] as $date => $cell_data ) { if( empty($event_day_counts[$date]) ) $event_day_counts[$date] = 0; /* @var $EM_Event EM_Event */ $orig_color = get_option('dbem_category_default_color'); foreach( $cell_data['events'] as $EM_Event ){ $color = $borderColor = $orig_color; $textColor = '#fff'; if ( get_option('dbem_categories_enabled') && !empty ( $EM_Event->get_categories()->categories )) { foreach($EM_Event->get_categories()->categories as $EM_Category){ /* @var $EM_Category EM_Category */ if( $EM_Category->get_color() != '' ){ $color = $borderColor = $EM_Category->get_color(); if( preg_match("/#fff(fff)?/i",$color) ){ $textColor = '#777'; $borderColor = '#ccc'; } break; } } } if( !in_array($EM_Event->event_id, $event_ids) ){ //count events for all days this event may span if( $EM_Event->start()->getDate() != $EM_Event->end()->getDate() ){ $EM_DateTime = $EM_Event->start()->copy(); while( $EM_DateTime <= $EM_Event->end() ){ $EM_DateTime->add('P1D'); empty($event_day_counts[$EM_DateTime->getDate()]) ? $event_day_counts[$EM_DateTime->getDate()] = 1 : $event_day_counts[$EM_DateTime->getDate()]++; } }else{ $event_day_counts[$date]++; } if( $event_day_counts[$date] <= $limit ){ $title = $EM_Event->output( $EM_Event->get_option('dbem_emfc_full_calendar_event_format', '#_EVENTNAME'), 'raw'); $allDay = $EM_Event->event_all_day == true; if( $allDay ){ $start_date = $EM_Event->start()->format('Y-m-d\T00:00:00'); $end_date = $EM_Event->end()->copy()->add('P1D')->format('Y-m-d\T00:00:00'); //on all day events the end date/time is next day of end date at 00:00:00 - see end attribute on http://fullcalendar.io/docs/event_data/Event_Object/ }else{ $start_date = $EM_Event->start()->format('Y-m-d\TH:i:s'); $end_date = $EM_Event->end()->format('Y-m-d\TH:i:s'); } $event_array = array ("title" => $title, "color" => $color, 'textColor'=>$textColor, 'borderColor'=>$borderColor, "start" => $start_date, "end" => $end_date, "url" => $EM_Event->get_permalink(), 'post_id' => $EM_Event->post_id, 'event_id' => $EM_Event->event_id, 'allDay' => $allDay, 'nonce' => wp_create_nonce('wpfc_event_nonce_'.$EM_Event->event_id) ); if( $args['long_events'] == 0 ) $event_array['end'] = $event_array['start']; //if long events aren't wanted, make the end date same as start so it shows this way on the calendar $events[] = apply_filters('wpfc_events_event', $event_array, $EM_Event); $event_ids[] = $EM_Event->event_id; } } } if( $cell_data['events_count'] > $limit ){ $event_dates_more[$date] = 1; $day_ending = $date."T23:59:59"; $events[] = apply_filters('wpfc_events_more', array ("title" => get_option('wpfc_limit_txt','more ...'), "color" => get_option('wpfc_limit_color','#fbbe30'), "start" => $day_ending, "url" => str_replace('%s',$date,$event_page_link), 'post_id' => 0, 'event_id' => 0 , 'className' => 'wpfc-more'), $date); } } echo EM_Object::json_encode( apply_filters('wpfc_events', $events) ); die(); } /** * Overrides the original qtip_content function and provides Event Manager formatted event information * @param string $content * @return string */ function wpfc_em_qtip_content( $content='' ){ if( !empty($_REQUEST['event_id'] ) && !empty($_REQUEST['nonce']) && wp_verify_nonce($_REQUEST['nonce'], 'wpfc_event_nonce_'.$_REQUEST['event_id']) && trim(get_option('dbem_emfc_qtips_format')) != '' ){ global $EM_Event; $EM_Event = em_get_event( absint($_REQUEST['event_id']) ); if( !empty($EM_Event->event_id) ){ $content = $EM_Event->output( $EM_Event->get_option('dbem_emfc_qtips_format', '#_EXCERPT')); } } return $content; } add_filter('wpfc_qtip_content', 'wpfc_em_qtip_content'); /** * Changes the walker object so we can inject color values into the options * @param array $args * @param object $taxonomy * @return WPFC_EM_Categories_Walker */ function wpmfc_em_taxonomy_args($args, $taxonomy){ if( $taxonomy->name == EM_TAXONOMY_CATEGORY ){ $args['walker'] = new WPFC_EM_Categories_Walker; } return $args; } add_filter('wpmfc_calendar_taxonomy_args', 'wpmfc_em_taxonomy_args',10,2); /** * Copy and alteration of the Walker_CategoryDropdown object * @author marcus * */ class WPFC_EM_Categories_Walker extends Walker { var $tree_type = EM_TAXONOMY_CATEGORY; var $db_fields = array ('parent' => 'parent', 'id' => 'term_id'); /** * @see Walker::start_el() */ function start_el(&$output, $object, $depth = 0, $args = array(), $current_object_id = 0){ global $wpdb; $pad = str_repeat(' ', $depth * 3); $cat_name = apply_filters('list_cats', $object->name, $object); $color = $wpdb->get_var('SELECT meta_value FROM '.EM_META_TABLE." WHERE object_id='{$object->term_id}' AND meta_key='category-bgcolor' LIMIT 1"); $color = ($color != '') ? $color:'#a8d144'; $output .= "<option class=\"level-$depth\" value=\"".$object->term_id."\""; if ( $object->term_id == $args['selected'] ) $output .= ' selected="selected"'; $output .= '>'; $output .= $pad.$color.' - '.$cat_name; if ( !empty($args['show_count']) ) $output .= ' ('. $object->count .')'; if ( !empty($args['show_last_update']) ) { $format = 'Y-m-d'; if( !empty($object->last_update_timestamp) ){ $output .= ' ' . gmdate($format, $object->last_update_timestamp); } } $output .= "</option>"; } } /** * Deprecated - changed default taxonomy defenitions to EM taxonomies, not needed as automatically deduced. If you really need this, use * add_filter('wpfc_fullcalendar_args', 'wpfc_em_fullcalendar_args'); * @param array $args * @return array */ function wpfc_em_fullcalendar_args($args){ if( !empty($args['type']) && $args['type'] == 'event'){ if( !empty($args['category']) ){ $args[EM_TAXONOMY_CATEGORY] = $args['category']; } if( !empty($args['tag']) ){ $args[EM_TAXONOMY_TAG] = $args['tag']; } } return $args; } if( is_admin() ){ include('admin/settings/wpfc-admin.php'); }
| ver. 1.4 |
Github
|
.
| PHP 8.1.33 | Генерация страницы: 0.01 |
proxy
|
phpinfo
|
Настройка