WordPress.org

Plugin Directory

Changeset 1493581


Ignore:
Timestamp:
09/10/16 01:30:22 (15 months ago)
Author:
leocaseiro
Message:

Version 1.7.0 Released with Import and Export

Location:
custom-options-plus/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • custom-options-plus/trunk/custom-options-plus.php

    r1343541 r1493581  
    1111*/ 
    1212 
    13 /*  Copyright 2011-2014 Leo Caseiro (http://leocaseiro.com.br/) 
     13/*  Copyright 2011-2016 Leo Caseiro (http://leocaseiro.com.br/) 
    1414 
    1515    This program is free software; you can redistribute it and/or modify 
     
    2828 
    2929// Make sure we don't expose any info if called directly 
    30 if ( !function_exists( 'add_action' ) ) { 
     30if ( ! function_exists( 'add_action' ) ) { 
    3131    echo 'Hi there!  I\'m just a plugin, not much I can do when called directly.'; 
    3232    exit; 
     
    3939define( 'COP_PLUGIN_URL', WP_PLUGIN_URL . '/' . COP_PLUGIN_NAME ); 
    4040 
    41 //Added on 1.5 
     41// Added on 1.5 
    4242define( 'COP_OPTIONS_PREFIX', 'cop_' ); 
    43 define( 'COP_PLUGIN_VERSION', '1.5' ); 
     43define( 'COP_PLUGIN_VERSION', '1.7.0' ); 
    4444 
    4545global $wpdb, $COP_TABLE; 
    46 define( 'COP_TABLE',  $wpdb->prefix . 'custom_options_plus' ); 
     46define( 'COP_TABLE', $wpdb->prefix . 'custom_options_plus' ); 
    4747 
    4848//Added on 1.5 as GLOBAL 
     
    5151//Create a table in MySQL database when activate plugin 
    5252function cop_setup() { 
    53     global $wpdb, $COP_TABLE; 
     53    global $COP_TABLE; 
    5454 
    5555    $sql = "CREATE TABLE IF NOT EXISTS $COP_TABLE ( 
     
    6262    "; 
    6363 
    64     require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); 
    65  
    66     dbDelta($sql); 
    67  
    68  
    69     update_option(COP_OPTIONS_PREFIX . 'version', COP_PLUGIN_VERSION); 
     64    require_once( ABSPATH . 'wp-admin/includes/upgrade.php' ); 
     65 
     66    dbDelta( $sql ); 
     67 
     68 
     69    update_option( COP_OPTIONS_PREFIX . 'version', COP_PLUGIN_VERSION ); 
    7070} 
    7171 
     
    7373 
    7474 
    75 //Create a Menu Custom Options Plus in Settings 
    76 add_action('admin_menu', 'cop_add_menu'); 
     75// Add settings link to Plugins Page 
     76function cop_plugin_add_settings_link( $links ) { 
     77    $settings_link = '<a href="options-general.php?page=custom_options_plus">' . __( 'Settings' ) . '</a>'; 
     78    array_push( $links, $settings_link ); 
     79 
     80    return $links; 
     81} 
     82 
     83$plugin = plugin_basename( __FILE__ ); 
     84add_filter( "plugin_action_links_$plugin", 'cop_plugin_add_settings_link' ); 
     85 
     86 
     87// Create a Menu Custom Options Plus in Settings 
     88add_action( 'admin_menu', 'cop_add_menu' ); 
    7789function cop_add_menu() { 
    7890 
    79     global $my_plugin_hook; 
    80     $my_plugin_hook = add_options_page('Custom Options Plus', 'Custom Options Plus', 'manage_options', 'custom_options_plus', 'custom_options_plus_adm'); 
    81  
    82 } 
    83  
    84 function cop_load_js_and_css() { 
    85     wp_register_script( 'functions.js', COP_PLUGIN_DIR . 'functions.js', array('jquery'), COP_PLUGIN_VERSION ); 
    86     wp_register_script( 'jquery.stringToSlug.min.js', COP_PLUGIN_DIR . 'jquery.stringToSlug.min.js', array('jquery'), COP_PLUGIN_VERSION ); 
    87 } 
    88  
    89  
    90 function cop_insert() { 
     91    global $my_plugin_hook; 
     92    $my_plugin_hook = add_options_page( 'Custom Options Plus', 'Custom Options Plus', 'manage_options', 'custom_options_plus', 'custom_options_plus_adm' ); 
     93 
     94} 
     95 
     96// Insert on Database 
     97function cop_insert( $row ) { 
    9198    global $wpdb; 
    9299 
    93     $_POST['label'] = stripslashes_deep(filter_var($_POST['label'], FILTER_SANITIZE_SPECIAL_CHARS)); 
    94     $_POST['name']  = stripslashes_deep(filter_var($_POST['name'], FILTER_SANITIZE_SPECIAL_CHARS)); 
    95     $_POST['value'] = stripslashes_deep(filter_var($_POST['value'], FILTER_UNSAFE_RAW)); 
     100    $row['label'] = stripslashes_deep( filter_var( $row['label'], FILTER_SANITIZE_SPECIAL_CHARS ) ); 
     101    $row['name']  = stripslashes_deep( filter_var( $row['name'], FILTER_SANITIZE_SPECIAL_CHARS ) ); 
     102    $row['value'] = stripslashes_deep( filter_var( $row['value'], FILTER_UNSAFE_RAW ) ); 
    96103 
    97104    return $wpdb->insert( 
    98105        COP_TABLE, 
    99106        array( 
    100             'label' => $_POST['label'], 
    101             'name' => $_POST['name'], 
    102             'value' => stripslashes($_POST['value']) 
     107            'label' => $row['label'], 
     108            'name'  => $row['name'], 
     109            'value' => stripslashes( $row['value'] ) 
    103110        ), 
    104         array('%s','%s','%s') 
     111        array( '%s', '%s', '%s' ) 
    105112    ); 
    106113} 
    107114 
    108 function cop_update() { 
     115// Update on Database 
     116function cop_update( $row ) { 
    109117    global $wpdb; 
    110118 
    111     $_POST['id']    = filter_var($_POST['id'], FILTER_VALIDATE_INT); 
    112     $_POST['label'] = stripslashes_deep(filter_var($_POST['label'], FILTER_SANITIZE_SPECIAL_CHARS)); 
    113     $_POST['name']  = stripslashes_deep(filter_var($_POST['name'], FILTER_SANITIZE_SPECIAL_CHARS)); 
    114     $_POST['value'] = stripslashes_deep(filter_var($_POST['value'], FILTER_UNSAFE_RAW)); 
     119    $row['id']    = filter_var( $row['id'], FILTER_VALIDATE_INT ); 
     120    $row['label'] = stripslashes_deep( filter_var( $row['label'], FILTER_SANITIZE_SPECIAL_CHARS ) ); 
     121    $row['name']  = stripslashes_deep( filter_var( $row['name'], FILTER_SANITIZE_SPECIAL_CHARS ) ); 
     122    $row['value'] = stripslashes_deep( filter_var( $row['value'], FILTER_UNSAFE_RAW ) ); 
    115123 
    116124 
     
    118126        COP_TABLE, 
    119127        array( 
    120             'label' => $_POST['label'], 
    121             'name'  => $_POST['name'], 
    122             'value' => stripslashes($_POST['value']) 
     128            'label' => $row['label'], 
     129            'name'  => $row['name'], 
     130            'value' => stripslashes( $row['value'] ) 
    123131        ), 
    124         array ('id' => $_POST['id']), 
    125         array('%s','%s','%s'), 
    126         array('%d') 
     132        array( 'id' => $row['id'] ), 
     133        array( '%s', '%s', '%s' ), 
     134        array( '%d' ) 
    127135    ); 
    128136 
    129137} 
    130138 
     139// Delete on Database 
    131140function cop_delete( $id ) { 
    132141    global $wpdb, $COP_TABLE; 
    133     return $wpdb->query($wpdb->prepare("DELETE FROM $COP_TABLE WHERE id = %d ", $id) ); 
    134 } 
    135  
     142 
     143    return $wpdb->query( $wpdb->prepare( "DELETE FROM $COP_TABLE WHERE id = %d ", $id ) ); 
     144} 
     145 
     146// Get all options from Database 
    136147function cop_get_options() { 
    137148    global $wpdb, $COP_TABLE; 
    138     return $wpdb->get_results("SELECT id, label, name, value FROM $COP_TABLE ORDER BY label ASC"); 
    139 } 
    140  
     149 
     150    return $wpdb->get_results( "SELECT id, label, name, value FROM $COP_TABLE ORDER BY label ASC" ); 
     151} 
     152 
     153// Get single option from Database 
    141154function cop_get_option( $id ) { 
    142155    global $wpdb, $COP_TABLE; 
    143     return $wpdb->get_row($wpdb->prepare("SELECT id, label, name, value FROM $COP_TABLE WHERE id = %d",  $id )); 
    144 } 
    145  
    146  
    147  
    148  
    149  
    150 //Panel Admin 
     156 
     157    return $wpdb->get_row( $wpdb->prepare( "SELECT id, label, name, value FROM $COP_TABLE WHERE id = %d", $id ) ); 
     158} 
     159 
     160 
     161// Panel Admin 
    151162function custom_options_plus_adm() { 
    152163    global $wpdb, $my_plugin_hook; 
    153164 
    154     wp_enqueue_script( 'stringToSlug', COP_PLUGIN_URL . '/js/jquery.stringToSlug.min.js', array('jquery'), '2.5.9' ); 
    155     wp_enqueue_script( 'copFunctions', COP_PLUGIN_URL . '/js/functions.js', array('stringToSlug') ); 
    156  
    157  
    158     $id     = ''; 
    159     $label  = ''; 
    160     $name   = ''; 
    161     $value  = ''; 
     165    wp_enqueue_script( 'stringToSlug', COP_PLUGIN_URL . '/js/jquery.stringToSlug.min.js', array( 'jquery' ), '2.5.9' ); 
     166    wp_enqueue_script( 'copFunctions', COP_PLUGIN_URL . '/js/functions.js', array( 'stringToSlug' ) ); 
     167    wp_enqueue_script( 'cop-import-export', COP_PLUGIN_URL . '/js/import-export.js', array( 'jquery', ), null, true ); 
     168 
     169    $id    = ''; 
     170    $label = ''; 
     171    $name  = ''; 
     172    $value = ''; 
    162173 
    163174    $message = ''; 
    164175 
    165     if ( isset($_GET['del']) && $_GET['del'] > 0 ) : 
     176    if ( isset( $_GET['del'] ) && $_GET['del'] > 0 ) : 
    166177        if ( cop_delete( $_GET['del'] ) ) : 
    167             $message = '<div class="updated"><p><strong>' . __('Settings saved.') . '</strong></p></div>'; 
     178            $message = '<div class="updated"><p><strong>' . __( 'Settings saved.' ) . '</strong></p></div>'; 
    168179        endif; 
    169180 
    170181 
    171     elseif ( isset($_POST['id']) ) : 
    172  
    173         if ($_POST['id'] == '') : 
    174             cop_insert(); 
    175             $message = '<div class="updated"><p><strong>' . __('Settings saved.') . '</strong></p></div>'; 
    176  
    177         elseif ($_POST['id'] > 0) : 
    178             cop_update(); 
    179             $message = '<div class="updated"><p><strong>' . __('Settings saved.') . '</strong></p></div>'; 
     182    elseif ( isset( $_POST['id'] ) ) : 
     183 
     184        if ( $_POST['id'] == '' ) : 
     185            cop_insert( $_POST ); 
     186            $message = '<div class="updated"><p><strong>' . __( 'Settings saved.' ) . '</strong></p></div>'; 
     187 
     188        elseif ( $_POST['id'] > 0 ) : 
     189            cop_update( $_POST ); 
     190            $message = '<div class="updated"><p><strong>' . __( 'Settings saved.' ) . '</strong></p></div>'; 
    180191 
    181192        endif; 
    182193 
    183194 
    184     elseif ( isset($_GET['id']) && $_GET['id'] > 0 ) : 
     195    elseif ( isset( $_GET['id'] ) && $_GET['id'] > 0 ) : 
    185196 
    186197        $option = cop_get_option( $_GET['id'] ); 
    187198 
    188         $id     = $option->id; 
    189         $label  = $option->label; 
    190         $name   = $option->name; 
    191         $value  = $option->value; 
     199        $id    = $option->id; 
     200        $label = $option->label; 
     201        $name  = $option->name; 
     202        $value = $option->value; 
    192203 
    193204    endif; 
    194205 
    195206    $options = cop_get_options(); 
    196 ?> 
     207    ?> 
    197208 
    198209    <div class="wrap"> 
    199         <div id="icon-tools" class="icon32"></div><h2>Custom Options Plus <a href="<?php echo preg_replace('/\\&.*/', '', $_SERVER['REQUEST_URI']); ?>#new-custom-option" class="add-new-h2">Add New</a></h2> 
     210        <div id="icon-tools" class="icon32"></div> 
     211        <h2>Custom Options Plus <a 
     212                href="<?php echo preg_replace( '/\\&.*/', '', $_SERVER['REQUEST_URI'] ); ?>#new-custom-option" 
     213                class="add-new-h2">Add New</a></h2> 
    200214 
    201215        <?php echo $message; ?> 
    202         <br /> 
    203         <?php if ( count($options) > 0 ) : ?> 
     216        <br/> 
     217        <?php if ( count( $options ) > 0 ) : ?> 
    204218            <div class="wpbody-content"> 
    205219                <table class="wp-list-table widefat" cellspacing="0"> 
    206220                    <thead> 
    207                         <tr> 
    208                             <th scope="col" class="manage-column " style="min-width: 100px">Label</th> 
    209                             <th scope="col" class="manage-column column-title">Name</th> 
    210                             <th scope="col" class="manage-column column-title">Value</th> 
    211                         </tr> 
     221                    <tr> 
     222                        <th scope="col" class="manage-column " style="min-width: 100px">Label</th> 
     223                        <th scope="col" class="manage-column column-title">Key</th> 
     224                        <th scope="col" class="manage-column column-title">Value</th> 
     225                    </tr> 
    212226                    </thead> 
    213                     <tfoot> 
    214                         <tr> 
    215                             <th scope="col" class="manage-column column-title">Label</th> 
    216                             <th scope="col" class="manage-column column-title">Name</th> 
    217                             <th scope="col" class="manage-column column-title">Value</th> 
    218                         </tr> 
     227                    <tfoot> 
     228                    <tr> 
     229                        <th scope="col" class="manage-column column-title">Label</th> 
     230                        <th scope="col" class="manage-column column-title">Key</th> 
     231                        <th scope="col" class="manage-column column-title">Value</th> 
     232                    </tr> 
    219233                    </tfoot> 
    220234                    <tbody id="the-list"> 
    221                         <?php $trclass = 'class="alternate"'; 
    222                         foreach ($options as $option ) : 
     235                    <?php $trclass = 'class="alternate"'; 
     236                    foreach ( $options as $option ) : 
    223237                        ?> 
    224238                        <tr <?php echo $trclass; ?> rowspan="2"> 
    225239                            <td> 
    226                                 <?php echo $option->label; ?> 
    227                                 <div class="row-actions"> 
    228                                     <span class="edit"><a href="<?php echo preg_replace('/\\&.*/', '', $_SERVER['REQUEST_URI']); ?>&amp;id=<?php echo $option->id; ?>#new-custom-option">Edit</a> | </span> 
    229                                     <span class="delete"><a onclick="return confirm('Are you sure want to delete item?')" class="submitdelete" title="Delete <?php echo $option->label; ?>" href="<?php echo preg_replace('/\\&.*/', '', $_SERVER['REQUEST_URI']); ?>&del=<?php echo $option->id; ?>">Delete</a></span> 
    230                                 </div> 
    231                             </td> 
    232                             <td> 
    233                                 <textarea style="font-size:12px;" type="text" onclick="this.select();" onfocus="this.select();" readonly="readonly" class="shortcode-in-list-table wp-ui-text-highlight code"><?php echo $option->name; ?></textarea> 
    234                             </td> 
    235                             <td><div style="overflow:auto; min-height:99%; width:99%; margin:2px; padding:2px; background-color:#eee; clear:both;"><?php echo $option->value; ?></div></td> 
     240                                <?php echo $option->label; ?> 
     241                                <div class="row-actions"> 
     242                                    <span class="edit"><a 
     243                                            href="<?php echo preg_replace( '/\\&.*/', '', $_SERVER['REQUEST_URI'] ); ?>&amp;id=<?php echo $option->id; ?>#new-custom-option">Edit</a> | </span> 
     244                                    <span class="delete"><a 
     245                                            onclick="return confirm('Are you sure want to delete item?')" 
     246                                            class="submitdelete" title="Delete <?php echo $option->label; ?>" 
     247                                            href="<?php echo preg_replace( '/\\&.*/', '', $_SERVER['REQUEST_URI'] ); ?>&del=<?php echo $option->id; ?>">Delete</a></span> 
     248                                </div> 
     249                            </td> 
     250                            <td> 
     251                                <textarea style="font-size:12px;" type="text" onclick="this.select();" 
     252                                          onfocus="this.select();" readonly="readonly" 
     253                                          class="shortcode-in-list-table wp-ui-text-highlight code"><?php echo $option->name; ?></textarea> 
     254                            </td> 
     255                            <td> 
     256                                <div 
     257                                    style="overflow:auto; min-height:99%; width:99%; margin:2px; padding:2px; background-color:#eee; clear:both;"><?php echo $option->value; ?></div> 
     258                            </td> 
    236259                        </tr> 
    237260                        <?php 
    238261                        $trclass = $trclass == 'class="alternate"' ? '' : 'class="alternate"'; 
    239                         endforeach; ?> 
     262                    endforeach; ?> 
    240263                    </tbody> 
    241264                </table> 
    242265            </div> 
    243         <br /> 
     266            <br/> 
    244267        <?php endif; ?> 
    245268 
    246         <form method="post" action="<?php echo preg_replace('/\\&.*/', '', $_SERVER['REQUEST_URI']); ?>"> 
    247             <input type="hidden" name="id" value="<?php echo $id; ?>" /> 
     269        <hr> 
     270        <form method="post" action="<?php echo preg_replace( '/\\&.*/', '', $_SERVER['REQUEST_URI'] ); ?>"> 
     271            <input type="hidden" name="id" value="<?php echo $id; ?>"/> 
    248272            <h3 id="new-custom-option">Add new Custom Option</h3> 
    249273            <table class="form-table"> 
    250274                <tbody> 
    251                     <tr valign="top"> 
    252                         <th scope="row"> 
    253                             <label for="label">Label:</label> 
    254                         </td> 
    255                         <td> 
    256                             <input name="label" required="required" type="text" id="label" value="<?php echo $label; ?>" class="regular-text"> 
    257                         </td> 
    258                     </tr> 
    259                     <tr> 
    260                         <th scope="row"> 
    261                             <label for="name">*Name:</label> 
    262                         </td> 
    263                         <td> 
    264                             <input name="name" required="required" type="text" id="name" value="<?php echo $name; ?>" class="regular-text"> 
    265                         </td> 
    266                     </tr> 
    267                     <tr> 
    268                         <th scope="row"> 
    269                             <label for="value">Value:</label> 
    270                         </td> 
    271                         <td> 
    272                             <textarea required="required" name="value" rows="7" cols="40" type="text" id="value" class="regular-text code"><?php echo $value; ?></textarea> 
    273                         </td> 
    274                     </tr> 
     275                <tr valign="top"> 
     276                    <th scope="row"> 
     277                        <label for="label">*Label:</label> 
     278                    </td> 
     279                    <td> 
     280                        <input name="label" required="required" type="text" id="label" value="<?php echo $label; ?>" 
     281                               class="regular-text"> 
     282                    </td> 
     283                </tr> 
     284                <tr> 
     285                    <th scope="row"> 
     286                        <label for="name">*Key:</label> 
     287                    </td> 
     288                    <td> 
     289                        <input name="name" required="required" type="text" id="name" value="<?php echo $name; ?>" 
     290                               class="regular-text"> 
     291                    </td> 
     292                </tr> 
     293                <tr> 
     294                    <th scope="row"> 
     295                        <label for="value">*Value:</label> 
     296                    </td> 
     297                    <td> 
     298                        <textarea required="required" name="value" rows="7" cols="40" type="text" id="value" 
     299                                  class="regular-text code"><?php echo $value; ?></textarea> 
     300                    </td> 
     301                </tr> 
    275302                </tbody> 
    276303            </table> 
    277             <p class="submit"><input type="submit" name="submit" id="submit" class="button-primary" value="<?php _e('Save Changes'); ?>"></p> 
     304            <p class="submit"><input type="submit" name="submit" id="submit" class="button-primary" 
     305                                     value="<?php _e( 'Save Changes' ); ?>"></p> 
     306            <p> 
     307                <small>* required fields</small> 
     308            </p> 
    278309        </form> 
    279310 
     311 
     312        <hr> 
     313        <h3>Import</h3> 
     314        <form enctype="multipart/form-data" id="cop-import-form" 
     315              action="<?php echo esc_url( admin_url( 'admin-post.php' ) ); ?>" method="post"> 
     316            <label><input id="should-clear-table" name="clear-table" type="checkbox" value="true"/> Clear Table before 
     317                import</label><br/> 
     318            <input type="hidden" name="action" value="import"> 
     319 
     320            <label for="cop-import"> 
     321                <button class="button-primary fake-button"><?php _e( 'Import' ); ?></button> 
     322            </label> 
     323            <input style="visibility: hidden" type="file" name="cop_file_import" id="cop-import" 
     324                   class="button-primary hidden" value="<?php _e( 'Import' ); ?>"/> 
     325            <?php wp_nonce_field( 'cop_ajax_import_nonce', 'security_cop_ajax_import' ); ?> 
     326        </form> 
     327 
     328        <hr> 
     329        <h3>Export</h3> 
     330        <button name id="cop-export" class="button-primary"><?php _e( 'Export' ); ?></button> 
     331        <?php wp_nonce_field( 'cop_ajax_export_nonce', 'security_cop_ajax_export' ); ?> 
     332 
    280333    </div> 
    281 <?php 
    282 } 
    283  
    284  
    285  
    286 //get your single option 
     334    <?php 
     335} 
     336 
     337 
     338// Get your single option 
    287339function get_custom( $name ) { 
    288340    global $wpdb, $COP_TABLE; 
     
    295347} 
    296348 
    297 //get your array options 
     349// Get your array options 
    298350function get_customs( $name ) { 
    299351    global $wpdb, $COP_TABLE; 
    300352    if ( '' != $name ) : 
    301         $list = $wpdb->get_results( $wpdb->prepare( "SELECT value FROM $COP_TABLE WHERE name = %s ", $name ) , ARRAY_A); 
     353        $list  = $wpdb->get_results( $wpdb->prepare( "SELECT value FROM $COP_TABLE WHERE name = %s ", $name ), ARRAY_A ); 
    302354        $array = array(); 
    303355        foreach ( $list as $key => $name ) : 
    304356            $array[] = $name['value']; 
    305357        endforeach; 
     358 
    306359        return $array; 
    307360    else : 
     
    311364 
    312365 
    313 //Tutorial on Help Button 
    314 function cop_plugin_help($contextual_help, $screen_id, $screen) { 
     366// Tutorial on Help Button 
     367function cop_plugin_help( $contextual_help, $screen_id, $screen ) { 
    315368 
    316369    global $my_plugin_hook; 
    317     if ($screen_id == $my_plugin_hook) { 
    318  
    319         $contextual_help = '<br>Use <br /><em>' . htmlentities('<?php echo get_custom(\'name\') ; ?>') . '</em><br /><br /> or <br><em>' . htmlentities('<?php foreach ( get_customs(\'name\') as $name ) : ') . '<br />    echo $name; <br /> ' . htmlentities('endforeach; ?>') . '</em> <br /> in your theme.'; 
    320     } 
     370    if ( $screen_id == $my_plugin_hook ) { 
     371 
     372        $contextual_help = '<br>Use <br /><code>' . htmlentities( '<?php echo get_custom(\'yourkey\') ; ?>' ) . '</code><br /><br /> or <br><code>' . htmlentities( '<?php foreach ( get_customs(\'yourkey\') as $name ) : ' ) . '<br />    echo $name; <br /> ' . htmlentities( 'endforeach; ?>' ) . '</code> <br /> in your theme.'; 
     373    } 
     374 
    321375    return $contextual_help; 
    322376} 
    323377 
    324 add_filter('contextual_help', 'cop_plugin_help', 10, 3); 
     378add_filter( 'contextual_help', 'cop_plugin_help', 10, 3 ); 
     379 
     380 
     381// Ajax Export Data (Added on 1.7) 
     382function cop_export_data() { 
     383    if ( ! wp_verify_nonce( $_REQUEST['security_cop_ajax_export'], 'cop_ajax_export_nonce' ) ) { 
     384        wp_send_json_error( [ 'message' => 'Access Denied!' ] ); 
     385    } 
     386 
     387    header( 'Content-type: application/json' ); 
     388 
     389    echo json_encode( cop_get_options() ); 
     390    exit; 
     391} 
     392 
     393add_action( 'wp_ajax_cop/export', 'cop_export_data' ); 
     394 
     395// Ajax Import Data (Added on 1.7) 
     396function cop_import_data() { 
     397    global $wpdb, $COP_TABLE; 
     398 
     399    if ( ! wp_verify_nonce( $_POST['security_cop_ajax_import'], 'cop_ajax_import_nonce' ) ) { 
     400        wp_send_json_error( [ 'message' => 'Access Denied!' ] ); 
     401    } 
     402 
     403    $truncate_table = filter_var( $_POST['clear-table'], FILTER_VALIDATE_BOOLEAN ); 
     404 
     405    if ( ! isset( $_FILES['cop_file_import'] ) ) { 
     406        wp_send_json_error(); 
     407    } 
     408 
     409    if ( $truncate_table ) { 
     410        $wpdb->query( "TRUNCATE TABLE $COP_TABLE" ); 
     411    } 
     412 
     413    $file_obj     = $_FILES['cop_file_import']; 
     414    $file_content = file_get_contents( $file_obj['tmp_name'] ); 
     415 
     416    $file_data = json_decode( $file_content, true ); 
     417 
     418    foreach ( $file_data as $row ) { 
     419        if ( ! isset( $row['label'] ) || ! isset( $row['name'] ) || ! isset( $row['value'] ) ) { 
     420            wp_send_json_error( [ 'message' => 'The JSON file is invalid' ] ); 
     421        } 
     422        cop_insert( $row ); 
     423    } 
     424 
     425    wp_send_json_success(); 
     426} 
     427 
     428add_action( 'wp_ajax_cop/import', 'cop_import_data' ); 
  • custom-options-plus/trunk/js/functions.js

    r992286 r1493581  
    1 jQuery(document).ready( function($) { 
    2     if ($("#name").val() === '') { 
    3             $("#label").stringToSlug({ 
     1jQuery( document ).ready(function( $ ) { 
     2    if ( '' === $( '#name' ).val() ) { 
     3        $( '#label' ).stringToSlug({ 
    44            setEvents: 'keyup keydown blur', 
    55            getPut: '#name', 
  • custom-options-plus/trunk/readme.txt

    r1476142 r1493581  
    55Requires at least: 2.7 
    66Tested up to: 4.6 
    7 Stable tag: 1.6 
     7Stable tag: 1.7.0 
    88License: GPLv2 or later 
    99License URI: http://www.gnu.org/licenses/gpl-2.0.html 
     
    3131== Frequently Asked Questions == 
    3232= Used to single option = 
    33 `<?php echo get_custom('name'); ?>` 
     33` 
     34<?php echo get_custom('name'); ?> 
     35` 
    3436 
    3537= Used to multiples options = 
     
    4547 
    4648== Changelog == 
     49 
     50= 1.7.0 = 
     51 
     52* Add Settings link on Plugins Page 
     53* Add Import and Export (Thanks @lucasbhjf for his contribution) 
     54 
    4755 
    4856= 1.6 = 
Note: See TracChangeset for help on using the changeset viewer.