diff --git a/modules/calendar/calendar.php b/modules/calendar/calendar.php index 2d20b016..b3ea8cb2 100644 --- a/modules/calendar/calendar.php +++ b/modules/calendar/calendar.php @@ -21,7 +21,7 @@ class EF_Calendar extends EF_Module { var $max_visible_posts_per_date = 4; // total number of posts to be shown per square before 'more' link private $post_date_cache = array(); - private static $post_li_html_cache_key = 'ef_calendar_post_li_html'; + private static $post_li_details_cache_key = 'ef_calendar_post_li_html'; private int $max_weeks; private string $create_post_cap; @@ -899,20 +899,31 @@ function view_calendar() { * @return str HTML for a single post item */ function generate_post_li_html( $post, $post_date, $num = 0 ){ + + $user_can_modify_post = $this->current_user_can_modify_post( $post ); + $cache_key = $this->get_post_li_cache_key( $post->ID ); - $can_modify = ( $this->current_user_can_modify_post( $post ) ) ? 'can_modify' : 'read_only'; - $cache_key = $post->ID . $can_modify . '_' . get_current_user_id(); - $cache_val = wp_cache_get( $cache_key, self::$post_li_html_cache_key ); - // Because $num is pertinent to the display of the post LI, need to make sure that's what's in cache + $cache_val = wp_cache_get( $cache_key, self::$post_li_details_cache_key ); + + $post_details = array(); + if ( is_array( $cache_val ) && $cache_val['num'] == $num ) { $this->hidden = $cache_val['hidden']; - return $cache_val['post_li_html']; + $post_details = $cache_val['post_details']; + } else { + $post_details = $this->get_post_information_fields( $post ); + + $post_li_cache = array( + 'num' => $num, + 'post_details' => $post_details, + 'hidden' => $this->hidden, + ); + + wp_cache_set( $cache_key, $post_li_cache, self::$post_li_details_cache_key ); } - ob_start(); - $post_id = $post->ID; - $edit_post_link = get_edit_post_link( $post_id ); - $status_object = get_post_status_object( get_post_status( $post_id ) ); + $status_object = get_post_status_object( get_post_status( $post ) ); + $post_classes = array( 'day-item', @@ -921,7 +932,7 @@ function generate_post_li_html( $post, $post_date, $num = 0 ){ // Only allow the user to drag the post if they have permissions to // or if it's in an approved post status // This is checked on the ajax request too. - if ( $this->current_user_can_modify_post( $post ) && !in_array( $post->post_status, $this->published_statuses ) ) + if ( $user_can_modify_post && !in_array( $post->post_status, $this->published_statuses ) ) $post_classes[] = 'sortable'; if ( in_array( $post->post_status, $this->published_statuses ) ) @@ -934,8 +945,11 @@ function generate_post_li_html( $post, $post_date, $num = 0 ){ $post_classes[] = 'hidden'; $this->hidden++; } + $post_classes = apply_filters( 'ef_calendar_table_td_li_classes', $post_classes, $post_date, $post->ID ); + ob_start(); + ?>
| : | + + ++ + + + + + | + + + | + + | + + |
|---|