WordPress.org

Plugin Directory

Changeset 1529064


Ignore:
Timestamp:
11/06/16 02:40:35 (10 months ago)
Author:
travislopes
Message:

Entry Expiration for Gravity Forms (1.2.3)

  • Added additional logging
  • Added filter for setting entry expiration time for each form
Location:
gravity-forms-entry-expiration
Files:
4 added
3 edited

Legend:

Unmodified
Added
Removed
  • gravity-forms-entry-expiration/trunk/class-gf-entryexpiration.php

    r1222985 r1529064  
    11<?php 
    2      
     2 
    33GFForms::include_addon_framework(); 
    44 
     5/** 
     6 * Gravity Forms Entry Expiration. 
     7 * 
     8 * @since     1.0 
     9 * @author    Travis Lopes 
     10 * @copyright Copyright (c) 2016, Travis Lopes 
     11 */ 
    512class GFEntryExpiration extends GFAddOn { 
    613 
     14    /** 
     15     * Contains an instance of this class, if available. 
     16     * 
     17     * @since  1.0 
     18     * @access private 
     19     * @var    object $_instance If available, contains an instance of this class. 
     20     */ 
     21    private static $_instance = null; 
     22 
     23    /** 
     24     * Defines the version of Gravity Forms Entry Expiration. 
     25     * 
     26     * @since  1.0 
     27     * @access protected 
     28     * @var    string $_version Contains the version, defined from entryexpiration.php 
     29     */ 
    730    protected $_version = GF_ENTRYEXPIRATION_VERSION; 
     31 
     32    /** 
     33     * Defines the minimum Gravity Forms version required. 
     34     * 
     35     * @since  1.0 
     36     * @access protected 
     37     * @var    string $_min_gravityforms_version The minimum version required. 
     38     */ 
    839    protected $_min_gravityforms_version = '1.9.13'; 
     40 
     41    /** 
     42     * Defines the plugin slug. 
     43     * 
     44     * @since  1.0 
     45     * @access protected 
     46     * @var    string $_slug The slug used for this plugin. 
     47     */ 
    948    protected $_slug = 'gravity-forms-entry-expiration'; 
     49 
     50    /** 
     51     * Defines the main plugin file. 
     52     * 
     53     * @since  1.0 
     54     * @access protected 
     55     * @var    string $_path The path to the main plugin file, relative to the plugins folder. 
     56     */ 
    1057    protected $_path = 'gravity-forms-entry-expiration/entryexpiration.php'; 
     58 
     59    /** 
     60     * Defines the full path to this class file. 
     61     * 
     62     * @since  1.0 
     63     * @access protected 
     64     * @var    string $_full_path The full path. 
     65     */ 
    1166    protected $_full_path = __FILE__; 
     67 
     68    /** 
     69     * Defines the URL where this Add-On can be found. 
     70     * 
     71     * @since  1.0 
     72     * @access protected 
     73     * @var    string The URL of the Add-On. 
     74     */ 
    1275    protected $_url = 'http://travislop.es/plugins/gravity-forms-entry-expiration'; 
     76 
     77    /** 
     78     * Defines the title of this Add-On. 
     79     * 
     80     * @since  1.0 
     81     * @access protected 
     82     * @var    string $_title The title of the Add-On. 
     83     */ 
    1384    protected $_title = 'Gravity Forms Entry Expiration'; 
     85 
     86    /** 
     87     * Defines the short title of the Add-On. 
     88     * 
     89     * @since  1.0 
     90     * @access protected 
     91     * @var    string $_short_title The short title. 
     92     */ 
    1493    protected $_short_title = 'Entry Expiration'; 
    15     private static $_instance = null; 
    16      
     94 
     95    /** 
     96     * Defines the expiration time types. 
     97     * 
     98     * @since  1.0 
     99     * @access protected 
     100     * @var    array $expiration_time_types Expiration time types. 
     101     */ 
    17102    protected $expiration_time_types = array( 'hours', 'days', 'weeks', 'months' ); 
    18103 
    19104    /** 
    20105     * Get instance of this class. 
    21      *  
     106     * 
     107     * @since  1.0 
    22108     * @access public 
    23109     * @static 
     110     * 
    24111     * @return $_instance 
    25112     */ 
    26113    public static function get_instance() { 
    27          
    28         if ( self::$_instance == null ) { 
     114 
     115        if ( null === self::$_instance ) { 
    29116            self::$_instance = new self; 
    30117        } 
    31118 
    32119        return self::$_instance; 
    33          
    34     } 
    35      
     120 
     121    } 
     122 
    36123    /** 
    37124     * Register needed hooks. 
    38      *  
    39      * @access public 
    40      * @return void 
     125     * 
     126     * @since  1.0 
     127     * @access public 
    41128     */ 
    42129    public function init() { 
    43          
     130 
    44131        parent::init(); 
    45          
     132 
    46133        add_filter( 'gform_form_settings', array( $this, 'add_form_setting' ), 10, 2 ); 
    47134        add_filter( 'gform_pre_form_settings_save', array( $this, 'save_form_setting' ) ); 
    48          
    49     } 
    50      
     135 
     136    } 
     137 
     138 
     139 
     140 
     141 
     142    // # PLUGIN SETTINGS ----------------------------------------------------------------------------------------------- 
     143 
    51144    /** 
    52145     * Setup plugin settings fields. 
    53      *  
    54      * @access public 
     146     * 
     147     * @since  1.0 
     148     * @access public 
     149     * 
    55150     * @return array 
    56151     */ 
    57152    public function plugin_settings_fields() { 
    58          
     153 
    59154        return array( 
    60155            array( 
    61                 'title'         => '', 
    62                 'description'   => '<p>' . esc_html__( 'Gravity Forms Entry Expiration reviews your forms every hour. If the form is selected for entry expiration, any entries older than the timeframe below will be deleted.', 'gravityformsentryexpiration' ) . '</p>', 
    63                 'fields'        => array( 
     156                'title'       => '', 
     157                'description' => '<p>' . esc_html__( 'Gravity Forms Entry Expiration reviews your forms every hour. If the form is selected for entry expiration, any entries older than the timeframe below will be deleted.', 'gravityformsentryexpiration' ) . '</p>', 
     158                'fields'      => array( 
    64159                    array( 
    65                         'name'          => 'gf_entryexpiration_expire_time', 
    66                         'label'         => __( 'Delete Entries After', 'gravityformsentryexpiration' ), 
    67                         'type'          => 'expiration_time', 
     160                        'name'          => 'gf_entryexpiration_expire_time', 
     161                        'label'         => __( 'Delete Entries After', 'gravityformsentryexpiration' ), 
     162                        'type'          => 'expiration_time', 
    68163                        'class'         => 'small', 
    69164                        'default_value' => array( 
    70                             'amount'        =>  30, 
    71                             'type'          =>  'days' 
     165                            'amount' =>  30, 
     166                            'type'   => 'days', 
    72167                        ), 
    73168                    ), 
    74169                    array( 
    75                         'type'      => 'save', 
    76                         'messages'  => array( 
    77                             'success'   => __( 'Settings have been saved.', 'gravityformsentryexpiration' ) 
     170                        'type'     => 'save', 
     171                        'messages' => array( 
     172                            'success' => __( 'Settings have been saved.', 'gravityformsentryexpiration' ), 
    78173                        ), 
    79174                    ), 
     
    81176            ), 
    82177        ); 
    83          
     178 
    84179    } 
    85180 
    86181    /** 
    87182     * Entry Expiration time settings field. 
    88      *  
    89      * @access public 
    90      * @param array $field 
    91      * @param bool $echo (default: true) 
     183     * 
     184     * @since  1.0 
     185     * @access public 
     186     * @param  array $field 
     187     * @param  bool  $echo (default: true) 
     188     * 
    92189     * @return string $html 
    93190     */ 
    94191    public function settings_expiration_time( $field, $echo = true ) { 
    95192 
    96         $field['type'] = 'text'; //making sure type is set to text 
    97         $attributes    = $this->get_field_attributes( $field ); 
    98         $default_value = rgar( $field, 'value' ) ? rgar( $field, 'value' ) : rgar( $field, 'default_value' ); 
    99         $value         = $this->get_setting( $field['name'], $default_value ); 
    100  
    101         $name    = esc_attr( $field['name'] ); 
    102         $tooltip = isset( $choice['tooltip'] ) ? gform_tooltip( $choice['tooltip'], rgar( $choice, 'tooltip_class' ), true ) : ''; 
    103         $html    = ''; 
    104  
    105         /* Add amount field */ 
    106         $html .= '<input type="number" name="_gaddon_setting_' . esc_attr( $field['name'] ) . '[amount]" value="' . esc_attr( $value['amount'] ) . '" ' . implode( ' ', $attributes ) . ' />'; 
    107          
    108         /* Add type field */ 
    109         $html .= '<select name="_gaddon_setting_' . esc_attr( $field['name'] ) . '[type]" ' . implode( ' ', $attributes ) . ' />'; 
    110          
    111         foreach( $this->expiration_time_types as $type ) { 
    112              
    113             $html .= '<option value="'. $type .'" '. selected( $type, $value['type'], false ) .'>'. $type .'</option>'; 
    114              
    115         } 
    116          
    117         $html .= '</select>'; 
    118                      
    119         $feedback_callback = rgar( $field, 'feedback_callback' ); 
    120         if ( is_callable( $feedback_callback ) ) { 
    121             $is_valid = call_user_func_array( $feedback_callback, array( $value, $field ) ); 
    122             $icon     = ''; 
    123             if ( $is_valid === true ) 
    124                 $icon = 'icon-check fa-check gf_valid'; // check icon 
    125             else if ( $is_valid === false ) 
    126                 $icon = 'icon-remove fa-times gf_invalid'; // x icon 
    127  
    128             if ( ! empty( $icon ) ) 
    129                 $html .= "&nbsp;&nbsp;<i class=\"fa {$icon}\"></i>"; 
    130         } 
    131  
    132         if ( $this->field_failed_validation( $field ) ) 
    133             $html .= $this->get_error_icon( $field ); 
    134  
    135         if ( $echo ) 
     193        // Initialize return HTML string. 
     194        $html = ''; 
     195 
     196        // Initialize amount and type fields. 
     197        $amount_field = $type_field = $field; 
     198 
     199        // Setup amount field attributes. 
     200        $amount_field['name']       .= '[amount]'; 
     201        $amount_field['input_type']  = 'number'; 
     202 
     203        // Prepare type choices. 
     204        $type_choices = array(); 
     205        foreach ( $this->expiration_time_types as $type ) { 
     206            $type_choices[] = array( 
     207                'label' => esc_html( $type ), 
     208                'value' => esc_html( $type ), 
     209            ); 
     210        } 
     211 
     212        // Setup type field attributes. 
     213        $type_field['name']    .= '[type]'; 
     214        $type_field['choices']  = $type_choices; 
     215 
     216        // Display amount and type fields. 
     217        $html .= $this->settings_text( $amount_field, false ); 
     218        $html .= $this->settings_select( $type_field, false ); 
     219 
     220        // If field ouput should be echoed, echo it. 
     221        if ( $echo ) { 
    136222            echo $html; 
     223        } 
    137224 
    138225        return $html; 
    139     } 
     226 
     227    } 
     228 
     229 
     230 
     231 
     232 
     233    // # FORM SETTINGS ------------------------------------------------------------------------------------------------- 
    140234 
    141235    /** 
    142236     * Add Entry Expiration form settings. 
    143      *  
    144      * @access public 
    145      * @param array $settings 
    146      * @param array $form 
     237     * 
     238     * @since  1.0 
     239     * @access public 
     240     * @param  array $settings Form settings. 
     241     * @param  array $form Current form object. 
     242     * 
    147243     * @return array $settings 
    148244     */ 
    149245    public function add_form_setting( $settings, $form ) { 
    150          
     246 
    151247        $settings['Form Options']['gf_entryexpiration_include']  = '<tr>'; 
    152248        $settings['Form Options']['gf_entryexpiration_include'] .= '<th>'; 
     
    159255        $settings['Form Options']['gf_entryexpiration_include'] .= '</td>'; 
    160256        $settings['Form Options']['gf_entryexpiration_include'] .= '</tr>'; 
    161          
     257 
    162258        return $settings; 
    163          
    164     } 
    165      
     259 
     260    } 
     261 
    166262    /** 
    167263     * Save Entry Expiration form settings. 
    168      *  
    169      * @access public 
    170      * @param array $form 
     264     * 
     265     * @since  1.0 
     266     * @access public 
     267     * @param  array $form Current form object. 
     268     * 
    171269     * @return array $form 
    172270     */ 
    173271    public function save_form_setting( $form ) { 
    174          
    175         $form['gf_entryexpiration_include'] = rgpost( 'gf_entryexpiration_include' ); 
     272 
     273        $form['gf_entryexpiration_include'] = sanitize_text_field( rgpost( 'gf_entryexpiration_include' ) ); 
    176274        return $form; 
    177          
    178     } 
    179      
     275 
     276    } 
     277 
     278 
     279 
     280 
     281 
     282    // # ENTRY DELETION ------------------------------------------------------------------------------------------------ 
     283 
    180284    /** 
    181285     * Delete old entries. 
    182      *  
    183      * @access public 
    184      * @return void 
     286     * 
     287     * @since  1.0 
     288     * @access public 
    185289     */ 
    186290    public function delete_old_entries() { 
    187          
    188         /* Get plugin settings */ 
     291 
     292        // Get plugin settings. 
    189293        $settings = gf_entryexpiration()->get_plugin_settings(); 
    190          
    191         /* If plugin has not been configured yet, do not delete any entries. */ 
    192         if ( rgblank( $settings['gf_entryexpiration_expire_time'] ) ) { 
     294 
     295        // If plugin has not been configured yet, do not delete any entries. 
     296        if ( ! rgar( $settings, 'gf_entryexpiration_expire_time' ) ) { 
     297            $this->log_debug( __METHOD__ . '(): Skipping entry deletion because plugin is not configured.' ); 
    193298            return; 
    194299        } 
    195      
    196         /* Create expiration time string */ 
    197         $expiration_time = $settings['gf_entryexpiration_expire_time']['amount'] . ' ' . $settings['gf_entryexpiration_expire_time']['type']; 
    198  
    199         /* Setup MySQL timestamp for which entries are older than */ 
     300 
     301        // Get expiration amount and type. 
     302        $expiration_time_amount = sanitize_text_field( $settings['gf_entryexpiration_expire_time']['amount'] ); 
     303        $expiration_time_type   = sanitize_text_field( $settings['gf_entryexpiration_expire_time']['type'] ); 
     304 
     305        // Validate expiration time type. 
     306        if ( ! in_array( $expiration_time_type, $this->expiration_time_types ) ) { 
     307            $expiration_time_type = $this->expiration_time_types[0]; 
     308        } 
     309 
     310        // Create expiration time string. 
     311        $expiration_time = $expiration_time_amount . ' ' . $expiration_time_type; 
     312 
     313        // Setup MySQL timestamp for which entries are older than. 
    200314        $older_than = date( 'Y-m-d H:i:s', strtotime( '-'. $expiration_time ) ); 
    201          
    202         /* Setup empty array of entries to delete */ 
    203         $entry_ids = array(); 
    204          
    205         /* Loop through each form */ 
     315 
     316        // Get forms. 
    206317        $forms = GFAPI::get_forms(); 
    207         foreach ( $forms as &$form ) { 
    208  
    209             /* If entry expiration is not enabled, continue. */ 
     318 
     319        // Loop through forms. 
     320        foreach ( $forms as $form ) { 
     321 
     322            // If entry expiration is not enabled for form, skip it. 
    210323            if ( ! rgar( $form, 'gf_entryexpiration_include' ) ) { 
     324                $this->log_debug( __METHOD__ . "(): Skipping entry deletion for form #{$form['id']} because it is not enabled." ); 
    211325                continue; 
    212326            } 
    213              
    214             // Get entries for form 
    215             $form_entries = GFFormsModel::get_lead_ids( 
     327 
     328            /** 
     329             * Filter the entry expiration time. 
     330             * 
     331             * @since 1.2.3 
     332             * 
     333             * @param string $older_than Current entry expiration time. 
     334             * @param array  $form Form object. 
     335             */ 
     336            $form_older_than = gf_apply_filters( array( 'gf_entryexpiration_older_than', $form['id'] ), $older_than, $form ); 
     337 
     338            /** 
     339             * Set the payment status when searching for expired entries. 
     340             * 
     341             * @since 1.1 
     342             * 
     343             * @param string null Payment status. 
     344             * @param array  $form Form object. 
     345             */ 
     346            $payment_status = gf_apply_filters( array( 'gf_entryexpiration_payment', $form['id'] ), null, $form ); 
     347 
     348            // Log the entry search. 
     349            $this->log_debug( __METHOD__ . "(): Searching entries for form #{$form['id']} that were created before {$form_older_than}." ); 
     350 
     351            // Get entry IDs for form that match search criteria. 
     352            $entry_ids = GFFormsModel::get_lead_ids( 
    216353                $form['id'], // $form_id 
    217354                '', // $search 
     
    219356                null, // $read 
    220357                null, // $start_date 
    221                 $older_than, // $end_date 
     358                $form_older_than, // $end_date 
    222359                null, // $status 
    223                 apply_filters( 'gf_entryexpiration_payment_' . $form['id'], apply_filters( 'gf_entryexpiration_payment', null, $form ), $form ) // $payment_status 
     360                $payment_status // $payment_status 
    224361            ); 
    225              
    226             if ( ! empty( $form_entries ) ) { 
    227                  
    228                 foreach ( $form_entries as $form_entry ) { 
    229                     $entry_ids[] = $form_entry; 
    230                 } 
    231                  
     362 
     363            /** 
     364             * Set the entry deletion limit to avoid long execution times. 
     365             * 
     366             * @since 1.1 
     367             * 
     368             * @param int 1000 Entry deletion limit. 
     369             */ 
     370            $deletion_limit = apply_filters( 'gf_entryexpiration_limit', 1000 ); 
     371 
     372            // Reduce entry IDs to entry deletion limit. 
     373            $entry_ids = array_splice( $entry_ids, 0, $deletion_limit ); 
     374 
     375            // If entries were found, delete them. 
     376            if ( ! empty( $entry_ids ) ) { 
     377                $this->log_debug( __METHOD__ . "(): Deleting entries for form #{$form['id']}: " . implode( ', ', $entry_ids ) ); 
     378                GFFormsModel::delete_leads( $entry_ids ); 
     379            } else { 
     380                $this->log_debug( __METHOD__ . "(): No entries were found for form #{$form['id']}." ); 
    232381            } 
    233382 
    234383        } 
    235          
    236         /* Limit amount of entries to be deleted in this pass to avoid long execution times. */ 
    237         $entry_ids = array_splice( $entry_ids, 0, apply_filters( 'gf_entryexpiration_limit', 1000 ) ); 
    238          
    239         /* Delete the entries/ */ 
    240         if ( ! empty ( $entry_ids ) ) { 
    241             GFFormsModel::delete_leads( $entry_ids ); 
    242         } 
    243  
    244     } 
    245      
     384 
     385    } 
     386 
     387 
     388 
     389 
     390 
     391    // # UPGRADE ------------------------------------------------------------------------------------------------------- 
     392 
    246393    /** 
    247394     * Migrate needed settings. 
    248      *  
    249      * @access public 
    250      * @param string $previous_version 
    251      * @return void 
     395     * 
     396     * @since  1.1.0 
     397     * @access public 
     398     * @param  string $previous_version Version number the plugin is upgrading from. 
    252399     */ 
    253400    public function upgrade( $previous_version ) { 
    254          
     401 
     402        // Get plugin settings. 
    255403        $settings = $this->get_plugin_settings(); 
    256404 
    257         /* If existing scheduled event exists and is daily, remove for switch to hourly. */ 
    258         if ( wp_get_schedule( 'gf_entryexpiration_delete_old_entries' ) === 'daily' ) { 
     405        // If existing scheduled event exists and is daily, remove and switch to hourly. 
     406        if ( 'daily' === wp_get_schedule( 'gf_entryexpiration_delete_old_entries' ) ) { 
    259407            wp_clear_scheduled_hook( 'gf_entryexpiration_delete_old_entries' ); 
    260408            wp_schedule_event( strtotime( 'midnight' ), 'hourly', 'gf_entryexpiration_delete_old_entries' ); 
    261409        } 
    262          
    263         /* Upgrade: 1.1.0 */ 
    264         if ( $previous_version === '1.0.0' ) { 
    265              
    266             /* Get the forms */ 
     410 
     411        // Upgrade: 1.1.0. 
     412        if ( ! empty( $previous_version ) && version_compare( $previous_version, '1.1.0', '<' ) ) { 
     413 
     414            // Get the forms. 
    267415            $forms = GFAPI::get_forms(); 
    268              
    269             /* Loop through each form and switch to include setting where needed. */ 
     416 
     417            // Loop through each form and switch to include setting where needed. 
    270418            foreach ( $forms as &$form ) { 
    271                  
    272                 /* If exclude is set, remove. Otherwise, set to include. */ 
     419 
     420                // If exclude is set, remove. Otherwise, set to include. 
    273421                if ( rgar( $form, 'gf_entryexpiration_exclude' ) ) { 
    274                      
    275422                    unset( $form['gf_entryexpiration_exclude'] ); 
    276                      
    277423                } else { 
    278                      
    279424                    $form['gf_entryexpiration_include'] = '1'; 
    280                      
    281425                } 
    282426 
    283                 /* Update form. */ 
     427                // Save form. 
    284428                GFAPI::update_form( $form ); 
    285429 
    286430            } 
    287              
    288         } 
    289  
    290         /* Upgrade: 1.2.0 */ 
    291         if ( ! rgblank( $settings['gf_entryexpiration_days_old'] ) ) { 
    292              
    293             /* Change settings from "days" to allow hours, days, weeks and months. */ 
     431 
     432        } 
     433 
     434        // Upgrade: 1.2.0 
     435        if ( ! empty( $previous_version ) && version_compare( $previous_version, '1.2.0', '<' ) ) { 
     436 
     437            // Change settings from "days" to allow hours, days, weeks and months. 
    294438            $settings['gf_entryexpiration_expire_time'] = array( 
    295                 'amount'    =>  $plugin_settings['gf_entryexpiration_days_old'], 
     439                'amount'    =>  $settings['gf_entryexpiration_days_old'], 
    296440                'type'      =>  'days' 
    297441            ); 
    298              
    299             /* Remove days old setting */ 
     442 
     443            // Remove days old setting. 
    300444            unset( $settings['gf_entryexpiration_days_old'] ); 
    301              
    302             /* Save settings */ 
     445 
     446            // Save settings. 
    303447            $this->update_plugin_settings( $settings ); 
    304                                  
    305         } 
    306          
    307     } 
    308      
     448 
     449        } 
     450 
     451    } 
     452 
    309453} 
  • gravity-forms-entry-expiration/trunk/entryexpiration.php

    r1222985 r1529064  
    11<?php 
    2      
    3 /* 
     2/** 
    43Plugin Name: Gravity Forms Entry Expiration 
    54Plugin URI: http://travislop.es/plugins/gravity-forms-entry-expiration/ 
    65Description: Provides a simple way to remove old entries in Gravity Forms. 
    7 Version: 1.2.2 
     6Version: 1.2.3 
    87Author: travislopes 
    98Author URI: http://travislop.es 
    109Text Domain: gravityformsentryexpiration 
    1110Domain Path: /languages 
    12 */ 
     11 **/ 
    1312 
    14 define( 'GF_ENTRYEXPIRATION_VERSION', '1.2.2' ); 
     13define( 'GF_ENTRYEXPIRATION_VERSION', '1.2.3' ); 
    1514 
    1615add_action( 'gform_loaded', array( 'GF_EntryExpiration_Bootstrap', 'load' ), 5 ); 
    1716add_action( 'gf_entryexpiration_delete_old_entries', 'gf_entryexpiration_delete_old_entries_action' ); 
    1817register_activation_hook( __FILE__, 'gf_entryexpiration_activation_routine' ); 
    19 register_deactivation_hook( __FILE__, 'gf_entryexpiration_deactivation_routine' );   
     18register_deactivation_hook( __FILE__, 'gf_entryexpiration_deactivation_routine' ); 
    2019 
     20/** 
     21 * Class GF_EntryExpiration_Bootstrap 
     22 * 
     23 * Handles the loading of Gravity Forms Entry Expiration and registers with the Add-On framework. 
     24 */ 
    2125class GF_EntryExpiration_Bootstrap { 
    2226 
     27    /** 
     28     * If the Add-On Framework exists, Gravity Forms Entry Expiration is loaded. 
     29     * 
     30     * @access public 
     31     * @static 
     32     */ 
    2333    public static function load() { 
    24          
     34 
     35        // If Add-On Framework is not loaded, exit. 
    2536        if ( ! method_exists( 'GFForms', 'include_addon_framework' ) ) { 
    2637            return; 
    2738        } 
    28          
    29         require_once( 'class-gf-entryexpiration.php' ); 
    30          
     39 
     40        self::load_class(); 
     41 
    3142        GFAddOn::register( 'GFEntryExpiration' ); 
    32          
     43 
     44    } 
     45 
     46    /** 
     47     * Load Entry Expiration class. 
     48     * 
     49     * @access public 
     50     * @static 
     51     */ 
     52    public static function load_class() { 
     53 
     54        if ( ! class_exists( 'GFEntryExpiration' ) ) { 
     55            require_once( 'class-gf-entryexpiration.php' ); 
     56        } 
     57 
    3358    } 
    3459 
    3560} 
    3661 
     62/** 
     63 * Returns an instance of the GFEntryExpiration class. 
     64 * 
     65 * @see    GFEntryExpiration::get_instance() 
     66 * 
     67 * @return object GFEntryExpiration 
     68 */ 
    3769function gf_entryexpiration() { 
     70 
     71    // Load Entry Expiration class. 
     72    GF_EntryExpiration_Bootstrap::load_class(); 
     73 
    3874    return GFEntryExpiration::get_instance(); 
     75 
    3976} 
    4077 
     78/** 
     79 * Deletes old Gravity Forms entries. 
     80 * 
     81 * @uses   GFEntryExpiration::delete_old_entries() 
     82 * 
     83 * @return object GFEntryExpiration 
     84 */ 
    4185function gf_entryexpiration_delete_old_entries_action() { 
    42     gf_entryexpiration()->delete_old_entries(); 
     86 
     87    // Load Entry Expiration class. 
     88    GF_EntryExpiration_Bootstrap::load_class(); 
     89 
     90    return gf_entryexpiration()->delete_old_entries(); 
     91 
    4392} 
    4493 
     94/** 
     95 * Schedules event for entry deletion. 
     96 */ 
    4597function gf_entryexpiration_activation_routine() { 
     98 
     99    // Load Entry Expiration class. 
     100    GF_EntryExpiration_Bootstrap::load_class(); 
     101 
     102    // Get event recurrence. 
    46103    $recurrence = apply_filters( 'gf_entryexpiration_recurrence', 'hourly' ); 
    47     wp_schedule_event( strtotime( 'midnight' ), $recurrence, 'gf_entryexpiration_delete_old_entries' ); 
     104 
     105    // Schedule event. 
     106    $event_scheduled = wp_schedule_event( strtotime( 'midnight' ), $recurrence, 'gf_entryexpiration_delete_old_entries' ); 
     107 
     108    // Log event scheduled status. 
     109    if ( false === $event_scheduled ) { 
     110        gf_entryexpiration()->log_error( __METHOD__ . '(): Cron event for entry deletion could not be scheduled.' ); 
     111    } else { 
     112        gf_entryexpiration()->log_debug( __METHOD__ . '(): Cron event for entry deletion successfully scheduled.' ); 
     113    } 
     114 
    48115} 
    49116 
     117/** 
     118 * Deletes scheduled event for entry deletion. 
     119 */ 
    50120function gf_entryexpiration_deactivation_routine() { 
    51121    wp_clear_scheduled_hook( 'gf_entryexpiration_delete_old_entries' ); 
  • gravity-forms-entry-expiration/trunk/readme.txt

    r1222985 r1529064  
    33Tags: gravity forms, entry, expiration 
    44Requires at least: 3.9.2 
    5 Tested up to: 4.1.0 
    6 Stable tag: 4.1.0 
     5Tested up to: 4.6.1 
     6Stable tag: 4.6.1 
    77 
    88Automatically remove old form entries on a custom, defined schedule 
     
    1515== Installation == 
    1616= Requirements = 
    17 * WordPress version 3.9.2 and later (tested at 4.1.0) 
     17* WordPress version 3.9.2 and later (tested at 4.6.1) 
    1818* Gravity Forms 1.8.17 and later 
    1919 
     
    2626 
    2727== Changelog == 
     28= v1.2.3 = 
     29* Added additional logging 
     30* Added filter for setting entry expiration time for each form 
    2831= v1.2.2 = 
    2932* Changed plugin loading method 
Note: See TracChangeset for help on using the changeset viewer.