Plugin Directory

Changeset 1346400


Ignore:
Timestamp:
02/09/2016 01:18:35 AM (10 years ago)
Author:
unclhos
Message:

Added Purge feature. Started move to transients.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • gravity-forms-data-persistence-add-on-reloaded/trunk/gravity-forms-data-persistence-add-on-reloaded.php

    r1346266 r1346400  
    1212define( 'GFDPVERSION', '3.3.0' );
    1313
     14register_activation_hook( __FILE__, 'ri_gfdp_install' );
     15function ri_gfdp_install() {
     16    if(!get_option('gfdp_version')) {
     17        $users = get_users();
     18        $forms = RGFormsModel::get_forms();
     19        foreach($users as $user) {
     20            foreach($forms as $form) {
     21                $form = get_object_vars($form);
     22                if($entry = get_option(ri_getFormOptionKeyForGF($form, $user->data))) {
     23                    set_transient(ri_gfdp_getFormTransientKeyForGF($form, $user->data), $entry, YEAR_IN_SECONDS);
     24                    delete_option(ri_getFormOptionKeyForGF($form, $user->data));
     25                }
     26
     27
     28            }
     29        }
     30        update_option('gfdp_version', GFDPVERSION);
     31    } elseif (get_option('gfdp_version') < GFDPVERSION) {
     32
     33        update_option('gfdp_version', GFDPVERSION);
     34    }
     35}
     36
    1437add_action( 'init', 'ri_gfdp_cookie' );
    1538function ri_gfdp_cookie() {
     
    3962        $current_page = GFFormDisplay::get_current_page( $form["id"] );
    4063        if ( $current_page == 1 ) {
    41             $option_key = ri_getFormOptionKeyForGF( $form );
    42             if ( get_option( $option_key ) ) {
    43                 $_POST = json_decode( get_option( $option_key ), true );
     64            if ($data = get_transient( ri_gfdp_getFormTransientKeyForGF( $form ) ) ) {
     65                $_POST = json_decode( $data, true );
    4466                foreach ( $form['fields'] as $field ) {
    4567                    if ( rgar( $field, "allowsPrepopulate" ) ) {
     
    138160function ri_gfdp_ajax_save( $form, $coming_from_page = '', $current_page = '' ) {
    139161    if ( $form['ri_gfdp_persist'] == 'ajax' ) {
    140         $option_key = ri_getFormOptionKeyForGF( $form );
     162        $transient_key = ri_gfdp_getFormTransientKeyForGF( $form );
    141163        parse_str( $_POST['form'], $data );
    142164        $data = ri_gfdp_sanitize_data( $data, $form );
    143         update_option( $option_key, json_encode( $data ) );
     165        set_transient( $transient_key, json_encode( $data ), YEAR_IN_SECONDS );
    144166    }
    145167}
     
    167189    if ( gfdp_is_persistent( $form ) ) {
    168190
    169         $option_key = ri_getFormOptionKeyForGF( $form );
     191        $transient_key = ri_gfdp_getFormTransientKeyForGF( $form );
    170192        $data       = ri_gfdp_sanitize_data( $_POST, $form );
    171         update_option( $option_key, json_encode( $data ) );
     193        set_transient( $transient_key, json_encode( $data ), YEAR_IN_SECONDS );
    172194    }
    173195}
     
    178200    if ( gfdp_is_persistent( $form ) ) {
    179201        //Update form data in wp_options table
    180         $option_key = ri_getFormOptionKeyForGF( $form );
     202        $transient_key = ri_gfdp_getFormTransientKeyForGF( $form );
    181203
    182204        if ( $form['isEnablePersistentClear'] || $form['ri_gfdp_persist_clear'] ) {
    183             delete_option( $option_key );
     205            delete_transient( $transient_key );
    184206        } else {
    185207            $data = ri_gfdp_sanitize_data( $_POST, $form );
    186             update_option( $option_key, json_encode( $data ) );
     208            set_transient( $transient_key, json_encode( $data ), YEAR_IN_SECONDS );
    187209        }
    188210
     
    208230
    209231// Create and return option table key for a form and user
    210 function ri_getFormOptionKeyForGF( $form, $cookie = false ) {
     232function ri_gfdp_getFormTransientKeyForGF( $form, $user = '' ) {
    211233    global $current_user;
    212234    get_currentuserinfo();
    213235
     236    if(!$user) {
     237        $user = $current_user;
     238    }
    214239    if ( is_user_logged_in() ) {
    215         $option_key = $current_user->user_login . '_GF_' . $form['id'];
     240        $transiet_key = 'gfdp_' . $form['id'] .'_'.$user->user_login;
     241
     242        return $transiet_key;
     243    } else {
     244        if ( isset( $_COOKIE['gfdp'] ) ) {
     245            $transiet_key = 'gfdp_' . $form['id'] . '_' . $_COOKIE['gfdp'];
     246
     247            return $transiet_key;
     248        }
     249    }
     250}
     251
     252// Create and return option table key for a form and user
     253function ri_getFormOptionKeyForGF( $form, $user = '' ) {
     254    global $current_user;
     255    get_currentuserinfo();
     256
     257    if(!$user) {
     258        $user = $current_user;
     259    }
     260
     261    if ( is_user_logged_in() ) {
     262        $option_key = $user->user_login . '_GF_' . $form['id'];
    216263
    217264        return $option_key;
     
    226273
    227274// Create and return option table key for user form entry
    228 function ri_getEntryOptionKeyForGF( $form, $cookie = false ) {
     275function ri_getEntryOptionKeyForGF( $form, $user = '' ) {
    229276    global $current_user;
    230277    get_currentuserinfo();
    231278
     279    if(!$user) {
     280        $user = $current_user;
     281    }
     282
    232283    if ( is_user_logged_in() ) {
    233         $option_key = $current_user->user_login . '_GF_' . $form['id'] . '_entry';
     284        $option_key = $user->user_login . '_GF_' . $form['id'] . '_entry';
    234285
    235286        return $option_key;
     
    292343        </tr>';
    293344
     345    $tr_persistent .= '
     346        <tr>
     347            <th>Purge Data' . gform_tooltip( "ri_gfdp_purge_data", '', true ) . ' </th>
     348
     349            <td>
     350            <button id="purge_data" type="button">PURGE</button>
     351            <script type="text/javascript">
     352
     353        function gfdp_purge_ajax($) {
     354
     355            if(confirm("Are you sure you want to delete all persistent data for this form?")) {
     356                var data = {
     357                    "action": "gfdp_purge",
     358                    "form_id": "' . $form['id'] . '"
     359                };
     360
     361                jQuery.ajax({
     362                    url: "' . admin_url( 'admin-ajax.php' ) . '",
     363                    type: "POST",
     364                    data: data,
     365                    success: function (response) {
     366                        alert("All data purged for this form");
     367                    }
     368                })
     369            }
     370        };
     371        jQuery("#purge_data").click(gfdp_purge_ajax);
     372    </script>
     373            </td>
     374        </tr>';
     375
    294376    $form_settings["Form Options"]['persistent'] = $tr_persistent;
    295377    return $form_settings;
     
    400482    return false;
    401483}
     484
     485
     486add_action( 'wp_ajax_gfdp_purge', 'ri_gfdp_purge_data' );
     487function ri_gfdp_purge_data() {
     488    $users = get_users();
     489
     490    foreach($users as $user) {
     491        $form['id'] = $_POST['form_id'];
     492        delete_transient(ri_gfdp_getFormTransientKeyForGF($form, $user->data));
     493
     494    }
     495    echo "purged";
     496    die();
     497}
Note: See TracChangeset for help on using the changeset viewer.