Plugin Directory

Changeset 692097

Timestamp:
04/05/2013 08:41:25 AM (11 years ago)
Author:
stephenh1988
Message:

Fixes bugs, adds filters. 1.8.5

Location:
event-organiser/trunk
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • event-organiser/trunk/classes/class-eo-calendar-widget.php

    r688029 r692097  
    140140    $key= $month->format('YM').serialize($args).get_locale().$today->format('Y-m-d');
    141141    $calendar = get_transient('eo_widget_calendar');
    142     if( $calendar && is_array($calendar) && isset($calendar[$key]) ){
     142    if( ) ){
    143143        return $calendar[$key];
    144144    }
  • event-organiser/trunk/event-organiser.php

    r688912 r692097  
    33Plugin Name: Event Organiser
    44Plugin URI: http://www.wp-event-organiser.com
    5 Version: 1.8.4
     5Version: 1.8.
    66Description: Creates a custom post type 'events' with features such as reoccurring events, venues, Google Maps, calendar views and events and venue pages
    77Author: Stephen Harris
     
    4242 */
    4343global $eventorganiser_db_version;
    44 $eventorganiser_db_version = '1.8.4';
     44$eventorganiser_db_version = '1.8.';
    4545
    4646
  • event-organiser/trunk/includes/event-organiser-archives.php

    r688029 r692097  
    339339        $post_types = get_post_types( array('exclude_from_search' => false) );
    340340   
    341    
    342341    if( $post_types == 'event' ){
    343342        $bool = true;
     
    352351        $taxonomies = wp_list_pluck( $query->tax_query->queries, 'taxonomy' );
    353352       
    354         foreach ( get_post_types( array( 'exclude_from_search' => false ) ) as $pt ) {
    355             $object_taxonomies = $pt === 'attachment' ? get_taxonomies_for_attachments() : get_object_taxonomies( $pt );
     353        foreach ( get_post_types() as $pt ) {
     354           
     355            if( version_compare( '3.4', get_bloginfo( 'version' ) ) <= 0 ){
     356                $object_taxonomies = $pt === 'attachment' ? get_taxonomies_for_attachments() : get_object_taxonomies( $pt );
     357            }else{
     358                //Backwards compat for 3.3
     359                $object_taxonomies = $pt === 'attachment' ? array() : get_object_taxonomies( $pt );
     360            }
     361           
    356362            if ( array_intersect( $taxonomies, $object_taxonomies ) )
    357363                $post_types[] = $pt;
    358364        }
    359        
     365
    360366        if( in_array( 'event', $post_types ) ){
    361             if( $exclusive && 1 == count( $post_types ) )
     367            if( $exclusive && 1 == count( $post_types ) ){
     368                $query->set( 'post_type', 'event' );
    362369                $bool = true;
    363             elseif( !$exclusive )
     370           
    364371                $bool = true;
    365             else
     372           
    366373                $bool = false;
     374
    367375        }else{
    368376            $bool = false;
  • event-organiser/trunk/includes/event-organiser-event-functions.php

    r688912 r692097  
    99* Retrieve list of events matching criteria.
    1010*
    11 * This function is a wrapper for {@see `get_posts()`}. As such you can also use `get_posts()` or {@link http://codex.wordpress.org/Class_Reference/WP_Query `WP_Query`} instead to retrieve events.
    12 * **All the arguments listed below can be used with them**.
    13 * *Arguments from {@link http://codex.wordpress.org/Template_Tags/get_posts `get_posts()`} and {@link http://codex.wordpress.org/Class_Reference/WP_Query `WP_Query`} can also be used. Their default values are as indicated by the relevant codex page.*
    14 *
     11* This function is a wrapper for
     12* .
     13*
     14*
    1515* The `$args` array can include the following.
    1616*
    17 * * **event_start_before** - default: null
    18 * * **event_end_before** - default: null
    19 * * **event_start_after** - default: null
    20 * * **event_end_after** - default: null. This argument, and those above can take a date in 'Y-m-d' format or {@link http://wp-event-organiser.com/documentation/relative-date-formats/ relative dates}.
    21 * * **numberposts** - default is - 1 (all events)
    22 * * **orderby** - default is 'eventstart'
    23 * * **showpastevents** - default is true (it's recommended to use `event_start_after=today` or `event_end_after=today` instead)
     17* * **event_start_before** - default:
     18* * **event_end_before** - default:
     19* * **event_start_after** - default:
     20* * **event_end_after** - default: format or {@link http://wp-event-organiser.com/documentation/relative-date-formats/ relative dates}.
     21* * **numberposts** - default is (all events)
     22* * **orderby** - default is
     23* * **showpastevents** - default is (it's recommended to use `event_start_after=today` or `event_end_after=today` instead)
    2424*
    2525* If you use `get_posts()` or `WP_Query` instead then you should ensure the following:
     
    3131* ###Example
    3232*
     33
    3334*     $events = eo_get_events(array(
    3435*            'numberposts'=>5,
     
    3738*       ));
    3839*
    39 *     <?php if($events):
     40*     if($events):
    4041*        echo '<ul>';
    4142*        foreach ($events as $event):
    42 *                //Check if all day, set format accordingly
    43 *                $format = ( eo_is_all_day($event->ID) ? get_option('date_format') : get_option('date_format').' '.get_option('time_format') );
    44 *                printf('<li><a href="%s"> %s </a> on %s </li>',
    45 *                                   get_permalink($event->ID),
    46 *                                   get_the_title($event->ID),
    47 *                                   eo_get_the_start($format, $event->ID,null,$event->occurrence_id)
    48 *                               );                           
     43*             //Check if all day, set format accordingly
     44*             $format = ( eo_is_all_day($event->ID) ? get_option('date_format') : get_option('date_format').' '.get_option('time_format') );
     45*             printf(
     46*                '<li><a href="%s"> %s </a> on %s </li>',
     47*                get_permalink($event->ID),
     48*                get_the_title($event->ID),
     49*                eo_get_the_start($format, $event->ID,null,$event->occurrence_id)
     50*             );                           
    4951*        endforeach;
    50 *         echo '</ul>';
    51 *     endif; ?>
     52*        echo '</ul>';
     53*     endif;
     54*     ?>
    5255*
    5356* @since 1.0.0
     
    664667    endforeach;
    665668   
    666     return $occurrences;
     669    return ;
    667670}
    668671/**
     
    710713    }
    711714
    712     return $occurrences;
     715    return ;
    713716}
    714717
  • event-organiser/trunk/includes/event-organiser-install.php

    r683356 r692097  
    319319            foreach ( $blog_ids as $blog_id ) {
    320320                switch_to_blog( $blog_id );
    321                         eventorganiser_uninstall_install();
     321                        eventorganiser_uninstall_();
    322322                 }
    323323            switch_to_blog( $current_blog_id );
    324324        }else{
    325             eventorganiser_uninstall_install();
     325            eventorganiser_uninstall_();
    326326        }
    327327        }else {
    328             eventorganiser_uninstall_install();
     328            eventorganiser_uninstall_();
    329329        }
    330330
  • event-organiser/trunk/includes/event-organiser-register.php

    r688912 r692097  
    1010function eventorganiser_register_script() {
    1111    global $wp_locale;
    12     $version = '1.8.4';
     12    $version = '1.8.';
    1313
    1414    $ext = (defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG) ? '' : '.min';
     
    7777 */
    7878function eventorganiser_register_scripts(){
    79     $version = '1.8.4';
     79    $version = '1.8.';
    8080    $ext = (defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG) ? '' : '.min';
    8181
  • event-organiser/trunk/includes/event-organiser-venue-functions.php

    r683356 r692097  
    133133/**
    134134* Returns the name of the venue of an event.
    135 * If used with any arguments uses the venue of the current event.
     135* If used with any arguments uses the venue of the current event.
    136136*
    137137* Returns the name of a venue specified by it's slug or ID. If used inside the loop, it can return the name of the current post's venue. If specifying the venue by ID, **the ID must be an integer**.
  • event-organiser/trunk/includes/event.php

    r688912 r692097  
    3535* @return int $post_id - the post ID of the updated event
    3636*/
    37     function eo_update_event($post_id, $event_data=array(), $post_data=array() ){
    38 
    39         $post_id = (int) $post_id;
    40 
    41         if( empty($post_id) )
    42             return new WP_Error('eo_error','Empty post ID.');
    43 
    44         if( !empty($event_data['venue']) || !empty($event_data['category']) ){
    45             $post_data['taxonomy']['event-venue'] = isset($event_data['venue']) ? $event_data['venue'] : null;
    46             $post_data['taxonomy']['event-category'] = isset($event_data['category']) ? $event_data['category'] : null;
    47             unset($event_data['venue']);
    48             unset($event_data['category']);
    49         }
    50        
    51         $event_data = apply_filters( 'eventorganiser_update_event_event_data', $event_data, $post_id, $post_data, $event_data );
    52         $post_data = apply_filters( 'eventorganiser_update_event_post_data', $post_data, $post_id, $post_data, $event_data );
    53 
    54         if( !empty($post_data) ){
    55             $post_data['ID'] = $post_id;       
    56             wp_update_post( $post_data );
    57         }
    58 
    59         //Get previous data, parse with data to be updated
    60         $prev = eo_get_event_schedule($post_id);
    61         $event_data = wp_parse_args( $event_data, $prev );
    62 
    63         //If schedule is 'once' and dates are included - set to 'custom':
    64         if( ( empty($event_data['schedule']) || 'once' == $event_data['schedule'] ) && !empty($event_data['include']) ){
    65             $event_data['schedule'] = 'custom';
    66         }
    67        
    68         //Do we need to delete existing dates from db?
    69         $delete_existing = false;
    70         $diff = array();
    71         if( $prev ){
    72             foreach ( $prev as $key => $prev_value ){
    73                 if( $event_data[$key] != $prev_value ){
    74                     if('monthly' == $event_data['schedule'] && $key =='schedule_meta'){
    75                         if( $event_data['occurs_by'] != $prev['occurs_by'] ){
    76                             $diff[]=$key;
    77                             $delete_existing = true;
    78                             break;
    79                         }
    80                     }else{
     37function eo_update_event($post_id, $event_data=array(), $post_data=array() ){
     38
     39    $post_id = (int) $post_id;
     40
     41    if( empty($post_id) )
     42        return new WP_Error('eo_error','Empty post ID.');
     43
     44    if( !empty($event_data['venue']) || !empty($event_data['category']) ){
     45        $post_data['taxonomy']['event-venue'] = isset($event_data['venue']) ? $event_data['venue'] : null;
     46        $post_data['taxonomy']['event-category'] = isset($event_data['category']) ? $event_data['category'] : null;
     47        unset($event_data['venue']);
     48        unset($event_data['category']);
     49    }
     50       
     51    $event_data = apply_filters( 'eventorganiser_update_event_event_data', $event_data, $post_id, $post_data, $event_data );
     52    $post_data = apply_filters( 'eventorganiser_update_event_post_data', $post_data, $post_id, $post_data, $event_data );
     53
     54    if( !empty($post_data) ){
     55        $post_data['ID'] = $post_id;       
     56        wp_update_post( $post_data );
     57    }
     58
     59    //Get previous data, parse with data to be updated
     60    $prev = eo_get_event_schedule($post_id);
     61    $event_data = wp_parse_args( $event_data, $prev );
     62
     63    //If schedule is 'once' and dates are included - set to 'custom':
     64    if( ( empty($event_data['schedule']) || 'once' == $event_data['schedule'] ) && !empty($event_data['include']) ){
     65        $event_data['schedule'] = 'custom';
     66    }
     67       
     68    //Do we need to delete existing dates from db?
     69    $delete_existing = false;
     70    $diff = array();
     71    if( $prev ){
     72        foreach ( $prev as $key => $prev_value ){
     73            if( $event_data[$key] != $prev_value ){
     74                if('monthly' == $event_data['schedule'] && $key =='schedule_meta'){
     75                    if( $event_data['occurs_by'] != $prev['occurs_by'] ){
    8176                        $diff[]=$key;
    8277                        $delete_existing = true;
    8378                        break;
    8479                    }
     80
     81
     82
     83
    8584                }
    8685            }
    8786        }
    88 
    89         //Need to replace occurrences
    90         if( $delete_existing || !empty( $event_data['force_regenerate_dates'] ) ){
    91             //Generate occurrences
    92             $event_data = _eventorganiser_generate_occurrences($event_data);
    93 
    94             if( is_wp_error($event_data) )
    95                 return $event_data;
    96 
    97             //Delete old dates
    98             eo_delete_event_occurrences($post_id);
    99 
    100             //Insert new ones and update meta
    101             $re = _eventorganiser_insert_occurrences($post_id,$event_data);
    102         }
    103 
    104         do_action( 'eventorganiser_save_event', $post_id );
    105         return $post_id;
    106     }
     87    }
     88
     89    //Need to replace occurrences
     90    if( $delete_existing || !empty( $event_data['force_regenerate_dates'] ) ){
     91        //Generate occurrences
     92        $event_data = _eventorganiser_generate_occurrences($event_data);
     93
     94        if( is_wp_error($event_data) )
     95            return $event_data;
     96
     97        //Delete old dates
     98        eo_delete_event_occurrences($post_id);
     99
     100        //Insert new ones and update meta
     101        $re = _eventorganiser_insert_occurrences($post_id,$event_data);
     102    }
     103
     104    do_action( 'eventorganiser_save_event', $post_id );
     105    return $post_id;
     106}
    107107
    108108
     
    139139* @return int the post ID of the updated event
    140140*/
    141     function eo_insert_event($post_data=array(),$event_data=array()){
    142         global $wpdb;
    143 
    144         if( !empty($event_data['venue'] ) ){
    145             $post_data['tax_input']['event-venue'] = $event_data['venue'];
    146             unset($event_data['venue']);
    147         }
    148         if( !empty($event_data['category'] ) ){
    149             $post_data['tax_input']['event-category'] = $event_data['category'];
    150             unset($event_data['category']);
    151         }
    152        
    153         //If schedule is 'once' and dates are included - set to 'custom':
    154         if( ( empty($event_data['schedule']) || 'once' == $event_data['schedule'] ) && !empty($event_data['include']) ){
    155             $event_data['schedule'] = 'custom';
    156         }
    157 
    158         $event_data = _eventorganiser_generate_occurrences($event_data);
    159        
    160         if( is_wp_error($event_data) )
    161             return $event_data;
    162 
    163         $event_data = apply_filters( 'eventorganiser_insert_event_event_data', $event_data, $post_data, $event_data );
    164         $post_data = apply_filters( 'eventorganiser_insert_event_post_data', $post_data, $post_data, $event_data );
    165        
    166         //Finally we create event (first create the post in WP)
    167         $post_input = array_merge(array('post_title'=>'untitled event'), $post_data, array('post_type'=>'event'));         
    168         $post_id = wp_insert_post($post_input, true);
    169 
    170         //Did the event insert correctly?
    171         if ( is_wp_error( $post_id) )
    172                 return $post_id;
    173 
    174          _eventorganiser_insert_occurrences($post_id, $event_data);
     141function eo_insert_event($post_data=array(),$event_data=array()){
     142    global $wpdb;
     143
     144    if( !empty($event_data['venue'] ) ){
     145        $post_data['tax_input']['event-venue'] = $event_data['venue'];
     146        unset($event_data['venue']);
     147    }
     148    if( !empty($event_data['category'] ) ){
     149        $post_data['tax_input']['event-category'] = $event_data['category'];
     150        unset($event_data['category']);
     151    }
     152       
     153    //If schedule is 'once' and dates are included - set to 'custom':
     154    if( ( empty($event_data['schedule']) || 'once' == $event_data['schedule'] ) && !empty($event_data['include']) ){
     155        $event_data['schedule'] = 'custom';
     156    }
     157
     158    $event_data = _eventorganiser_generate_occurrences($event_data);
     159       
     160    if( is_wp_error($event_data) )
     161        return $event_data;
     162
     163    $event_data = apply_filters( 'eventorganiser_insert_event_event_data', $event_data, $post_data, $event_data );
     164    $post_data = apply_filters( 'eventorganiser_insert_event_post_data', $post_data, $post_data, $event_data );
     165       
     166    //Finally we create event (first create the post in WP)
     167    $post_input = array_merge(array('post_title'=>'untitled event'), $post_data, array('post_type'=>'event'));         
     168    $post_id = wp_insert_post($post_input, true);
     169
     170    //Did the event insert correctly?
     171    if ( is_wp_error( $post_id) )
     172            return $post_id;
     173
     174    _eventorganiser_insert_occurrences($post_id, $event_data);
    175175           
    176         //Action used to break cache & trigger Pro actions (& by other plug-ins?)
    177         do_action( 'eventorganiser_save_event', $post_id );
    178         return $post_id;
    179     }
     176    //Action used to break cache & trigger Pro actions (& by other plug-ins?)
     177    do_action( 'eventorganiser_save_event', $post_id );
     178    return $post_id;
     179}
    180180
    181181/**
     
    304304* @return array event schedule details
    305305*/
    306     function eo_get_event_schedule( $post_id=0 ){
    307 
    308         $post_id = (int) ( empty($post_id) ? get_the_ID() : $post_id);
    309 
    310         if( empty($post_id) )
    311             return false;
    312 
    313         $event_details = get_post_meta( $post_id,'_eventorganiser_event_schedule',true);
    314         $event_details = wp_parse_args($event_details, array(
    315             'schedule'=>'once',
    316             'schedule_meta'=>'',
    317             'frequency'=>1,
    318             'all_day'=>0,
    319             'duration_str'=>'',
    320             'include'=>array(),
    321             'exclude'=>array(),
    322             '_occurrences'=>array(),
    323         ));
    324 
    325         $tz = eo_get_blog_timezone();
    326         $event_details['start'] = new DateTime(get_post_meta( $post_id,'_eventorganiser_schedule_start_start', true), $tz);
    327         $event_details['end'] = new DateTime(get_post_meta( $post_id,'_eventorganiser_schedule_start_finish', true), $tz);
    328         $event_details['schedule_start'] = clone $event_details['start'];
    329         $event_details['schedule_last'] = new DateTime(get_post_meta( $post_id,'_eventorganiser_schedule_last_start', true), $tz);
    330         $event_details['schedule_finish'] = new DateTime(get_post_meta( $post_id,'_eventorganiser_schedule_last_finish', true), $tz);
    331 
    332         if( !empty($event_details['_occurrences']) ){
    333             $event_details['_occurrences'] = array_map('eventorganiser_date_create', $event_details['_occurrences']);
    334         }
    335 
    336         if( !empty($event_details['include']) ){
    337             $event_details['include'] = array_map('eventorganiser_date_create', $event_details['include'] );
    338         }
    339         if( !empty($event_details['exclude']) ){
    340             $event_details['exclude'] = array_map('eventorganiser_date_create',$event_details['exclude'] );
    341         }
    342 
    343         if($event_details['schedule'] == 'weekly'){
    344             $event_details['occurs_by'] = '';
    345         }elseif($event_details['schedule'] == 'monthly'){
    346             $bymonthday = preg_match('/BYMONTHDAY=/',$event_details['schedule_meta']);
    347             $event_details['occurs_by'] = ($bymonthday ? 'BYMONTHDAY' : 'BYDAY');
    348         }else{
    349             $event_details['occurs_by'] ='';
    350         }
    351 
    352         return $event_details;
    353     }
     306function eo_get_event_schedule( $post_id=0 ){
     307
     308    $post_id = (int) ( empty($post_id) ? get_the_ID() : $post_id);
     309
     310    if( empty($post_id) )
     311        return false;
     312
     313    $event_details = get_post_meta( $post_id,'_eventorganiser_event_schedule',true);
     314    $event_details = wp_parse_args($event_details, array(
     315        'schedule'=>'once',
     316        'schedule_meta'=>'',
     317        'frequency'=>1,
     318        'all_day'=>0,
     319        'duration_str'=>'',
     320        'include'=>array(),
     321        'exclude'=>array(),
     322        '_occurrences'=>array(),
     323    ));
     324
     325    $tz = eo_get_blog_timezone();
     326    $event_details['start'] = new DateTime(get_post_meta( $post_id,'_eventorganiser_schedule_start_start', true), $tz);
     327    $event_details['end'] = new DateTime(get_post_meta( $post_id,'_eventorganiser_schedule_start_finish', true), $tz);
     328    $event_details['schedule_start'] = clone $event_details['start'];
     329    $event_details['schedule_last'] = new DateTime(get_post_meta( $post_id,'_eventorganiser_schedule_last_start', true), $tz);
     330    $event_details['schedule_finish'] = new DateTime(get_post_meta( $post_id,'_eventorganiser_schedule_last_finish', true), $tz);
     331
     332    if( !empty($event_details['_occurrences']) ){
     333        $event_details['_occurrences'] = array_map('eventorganiser_date_create', $event_details['_occurrences']);
     334    }
     335
     336    if( !empty($event_details['include']) ){
     337        $event_details['include'] = array_map('eventorganiser_date_create', $event_details['include'] );
     338    }
     339    if( !empty($event_details['exclude']) ){
     340        $event_details['exclude'] = array_map('eventorganiser_date_create',$event_details['exclude'] );
     341    }
     342
     343    if($event_details['schedule'] == 'weekly'){
     344        $event_details['occurs_by'] = '';
     345    }elseif($event_details['schedule'] == 'monthly'){
     346        $bymonthday = preg_match('/BYMONTHDAY=/',$event_details['schedule_meta']);
     347        $event_details['occurs_by'] = ($bymonthday ? 'BYMONTHDAY' : 'BYDAY');
     348    }else{
     349        $event_details['occurs_by'] ='';
     350    }
     351
     352    ;
     353}
    354354
    355355
     
    595595        $schedule_last = clone end($occurrences);
    596596
    597         return array(
     597        array(
    598598            'start'=>$start,
    599599            'end'=>$end,
     
    608608            'occurrences'=>$occurrences
    609609        );
     610
     611
    610612    }
    611613
  • event-organiser/trunk/readme.md

    r688912 r692097  
    55**Requires at least:** 3.3 
    66**Tested up to:** 3.5 
    7 **Stable tag:** 1.8.4
     7**Stable tag:** 1.8.
    88**License:** GPLv3 
    99
     
    177177## Changelog ##
    178178
     179
     180
     181
     182
     183
     184
     185
    179186### 1.8.4 ###
    180187* Fixes bug with the widget calendar (see [this post](http://wp-event-organiser.com/forums/topic/calendar-widget-nextprevious-links-bug/))
  • event-organiser/trunk/readme.txt

    r688912 r692097  
    55Requires at least: 3.3
    66Tested up to: 3.5
    7 Stable tag: 1.8.4
     7Stable tag: 1.8.
    88License: GPLv3
    99
     
    165165== Changelog ==
    166166
     167
     168
     169
     170
     171
     172
     173
    167174= 1.8.4 =
    168175* Fixes bug with the widget calendar (see [this post](http://wp-event-organiser.com/forums/topic/calendar-widget-nextprevious-links-bug/))
Note: See TracChangeset for help on using the changeset viewer.