WordPress.org

Plugin Directory

Changeset 1355959


Ignore:
Timestamp:
02/22/16 18:39:12 (2 years ago)
Author:
jeremyHixon
Message:

Adding support for Easy Digital Downloads

Location:
rational-theme-server/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • rational-theme-server/trunk/css/style.css

    r1355953 r1355959  
    11body { 
    22  padding-top: 98px !important; } 
     3 
     4.edd_purchase_submit_wrapper { 
     5  display: inline; 
     6  position: static; } 
     7  .edd_purchase_submit_wrapper a.edd-add-to-cart { 
     8    overflow: visible; } 
    39 
    410.rational-theme-server-bar { 
  • rational-theme-server/trunk/rational-theme-server.php

    r1355953 r1355959  
    22/* 
    33Plugin Name:    Rational Theme Server 
    4 Plugin URI:     http://jeremyhixon.com 
     4Plugin URI:     http://jeremyhixon.com/rational-theme-server/ 
    55Description:    Plugin for theme developers to preview and serve downloads of their themes. 
    6 Version:        1.0.1 
     6Version:        1.0.2 
    77Author:         Jeremy Hixon 
    8 Author URI:     http://jeremyhixon.com 
     8Author URI:     http://jeremyhixon.com/ 
    99License:        GPL2 
    1010License URI:    https://www.gnu.org/licenses/gpl-2.0.html 
     
    2323    private $themes_database = array(); 
    2424    private $themes_available = array(); 
     25    private $edd_active = false; 
     26    private $edd_default = 'on'; 
     27    private $edd_integrate = true; 
     28    private $edd_themes_db = array(); 
    2529     
    2630    /* ========================================================================== 
     
    3640        add_action( 'generate_rewrite_rules', array( $this, 'generate_rewrite_rules' ) ); 
    3741        add_action( 'get_header', array( $this, 'get_header' ) ); 
     42        add_action( 'init', array( $this, 'init' ) ); 
    3843        add_action( 'save_post', array( $this, 'save_post' ) ); 
    3944         
     45        // Check support for EDD 
     46        if ( get_option( 'rts_edd', $this->edd_default ) === 'on' ) { 
     47            add_action( 'add_meta_boxes', array( $this, 'add_meta_boxes_edd' ) ); 
     48        } else { 
     49            $this->edd_integrate = false; 
     50        } 
     51         
     52        // Check for global bar support 
    4053        if ( get_option( 'rts_global', 'on' ) !== 'on' ) { 
    4154            add_action( 'add_meta_boxes', array( $this, 'add_meta_boxes' ) ); 
    4255        } 
    43  
     56         
     57         
    4458        if ( !session_id() ) { 
    4559            session_start(); 
     
    6377     * add_meta_boxes 
    6478     * Add meta box for bar display 
     79     * If the bar is disbled globally 
    6580     */ 
    6681    public function add_meta_boxes() { 
     
    7893     
    7994    /** 
     95     * add_meta_boxes 
     96     * Add meta box for EDD 
     97     * If EDD is enabled 
     98     */ 
     99    public function add_meta_boxes_edd() { 
     100        add_meta_box( 
     101            'rts_meta_box_edd', 
     102            __( 'Theme Server', 'rational-theme-server' ), 
     103            array( $this, 'build_meta_box_edd' ), 
     104            'download', 
     105            'side', 
     106            'default' 
     107        ); 
     108    } 
     109     
     110    /** 
    80111     * admin_init 
    81      * Registering settings 
     112     * Registering settings for option page 
    82113     */ 
    83114    public function admin_init() { 
     
    91122            'rts_label', 
    92123            'sanitize_text_field' 
     124        ); 
     125        register_setting( 
     126            'rts_group',    // used in settings_fields() 
     127            'rts_edd' 
    93128        ); 
    94129        register_setting( 
     
    126161            'rts_themes' 
    127162        ); 
     163        if ( $this->edd_active ) { 
     164            add_settings_field( 
     165                'rts_input_edd', 
     166                __( 'Integrate w/Easy Digital Downloads', 'rational-theme-server' ), 
     167                array( $this, 'build_input_edd' ), 
     168                'rts_menu', 
     169                'rts_themes' 
     170            ); 
     171        } 
    128172        add_settings_field( 
    129173            'rts_input_global', 
     
    205249     
    206250    /** 
     251     * init 
     252     * Checking to see if EDD is among the active plugins 
     253     */ 
     254    public function init() { 
     255        // Checking to see if EDD is active 
     256        include_once( ABSPATH . 'wp-admin/includes/plugin.php' ); 
     257        if ( is_plugin_active( 'easy-digital-downloads/easy-digital-downloads.php' ) ) { 
     258            $this->edd_active = true; 
     259        } 
     260    } 
     261     
     262    /** 
    207263     * save_post 
    208      * Saves the choice of whether or not to show the theme server par on the page 
     264     * Saves the choice of whether or not to show the theme server bar on the page 
     265     * If the bar is disabled globally 
    209266     */ 
    210267    public function save_post( $post_id ) { 
     
    217274        if ( ! current_user_can( 'edit_post', $post_id ) ) 
    218275            return; 
    219  
    220         if ( isset( $_POST['rts_show_page'] ) ) 
    221             update_post_meta( $post_id, 'rts_show_page', 'on' ); 
    222         else 
    223             update_post_meta( $post_id, 'rts_show_page', 'off' ); 
     276         
     277        $post_type = get_post_type( $post_id ); 
     278        if ( in_array( $post_type, $this->post_types ) ) { 
     279            if ( isset( $_POST['rts_show_page'] ) ) 
     280                update_post_meta( $post_id, 'rts_show_page', 'on' ); 
     281            else 
     282                update_post_meta( $post_id, 'rts_show_page', 'off' ); 
     283        } elseif ( $post_type === 'download' ) { 
     284            if ( $_POST['rts_theme_edd'] === 'null' ) 
     285                update_post_meta( $post_id, 'rts_theme_edd', null ); 
     286            else 
     287                update_post_meta( $post_id, 'rts_theme_edd', $_POST['rts_theme_edd'] ); 
     288        } 
    224289    } 
    225290     
     
    233298        if ( !empty( $this->themes_database ) ) { 
    234299            foreach( $this->themes_database as $theme_status ) { 
    235                 if ( $theme_status === 'on' ) { 
     300                if ( $theme_status === 'download' ||  $theme_status === 'buy' ) { 
    236301                    if ( get_option( 'rts_styles', 'on' ) === 'on' ) { 
    237302                        wp_enqueue_style( 'rts-theme', plugin_dir_url( __FILE__ ) . 'css/style.css', false, '1.0' ); 
     
    269334                        <option value="">Choose a theme&hellip;</option><?php 
    270335                        foreach ( $this->themes_available as $theme_id => $theme_name ) { 
    271                             if ( !empty( $this->themes_database[ $theme_id ] ) && $this->themes_database[ $theme_id ] === 'on' ) { 
     336                            if ( !empty( $this->themes_database[ $theme_id ] ) && in_array( $this->themes_database[ $theme_id ], array( 'on', 'buy' ) ) ) { 
    272337                                printf( 
    273338                                    '<option %s value="%s">%s</option>', 
     
    280345                    ?></select><?php 
    281346                    echo "\r\n"; 
     347                    if ( 
     348                        empty( $this->themes_database[ $this->theme_current ] ) || 
     349                        $this->themes_database[ $this->theme_current ] !== 'buy' 
     350                    ) { 
     351                        $url = esc_url( site_url() ) . "/theme-download/{$this->theme_current}/"; 
     352                        $text = 'Download'; 
     353                    } elseif ( $this->themes_database[ $this->theme_current ] === 'buy' ) { 
     354                        $id = 0; 
     355                        foreach ( $this->edd_themes_db as $edd_theme_db ) { 
     356                            if ( $edd_theme_db->meta_value === $this->theme_current ) { 
     357                                $id = $edd_theme_db->post_id; 
     358                            } 
     359                        } 
     360                        $url = get_permalink( $id ); 
     361                        $text = 'Buy'; 
     362                    } 
    282363                    printf( 
    283364                        '<a class="%s" href="%s">%s</a>', 
    284365                        'rts-download', 
    285                         esc_url( site_url() ) . "/theme-download/{$this->theme_current}/", 
    286                         'Download' 
     366                        $url, 
     367                        $text 
    287368                    ); 
    288369                ?></form> 
     
    342423            printf( 
    343424                '<p><label><input %s name="%s" type="checkbox"> %s</label></p>', 
    344                 !empty( $this->themes_database[ $theme_id ] ) && $this->themes_database[ $theme_id ] === 'on' ? 'checked' : '', 
     425                in_array( $this->themes_database[ $theme_id ], array( 'on', 'buy' ) ) ? 'checked' : '', 
    345426                "rts_themes[{$theme_id}]", 
    346427                $theme_name 
     
    359440                __( 'Current Theme', 'rational-theme-server' ) 
    360441            ) 
     442        ); 
     443    } 
     444     
     445    /** 
     446     * Inputs for the Easy Digital Downloads checkbox 
     447     */ 
     448    public function build_input_edd() { 
     449        printf( 
     450            '<label><input %s name="rts_edd" type="checkbox"> %s</label>', 
     451            checked( 'on', get_option( 'rts_edd', $this->edd_default ), false ), 
     452            __( 'Check to integrate with Easy Digital Downloads.', 'rational-theme-server' ) 
    361453        ); 
    362454    } 
     
    408500        ); 
    409501    } 
     502     
     503    /** 
     504     * Add meta box callback for EDD 
     505     */ 
     506    public function build_meta_box_edd() { 
     507        wp_nonce_field( '_rts_nonce', 'rts_nonce' ); 
     508        ?><p><strong>Theme Associated with this Download</strong></p><?php 
     509        $this->get_themes_available(); 
     510        $db_value = get_post_meta( get_the_id(), 'rts_theme_edd', true ); 
     511        ?><select name="rts_theme_edd"> 
     512            <option value="null">None</option><?php 
     513            foreach ( $this->themes_available as $value => $text ) { 
     514                printf( 
     515                    '<option %s value="%s">%s</option>', 
     516                    selected( $db_value, $value, false ), 
     517                    $value, 
     518                    $text 
     519                ); 
     520            } 
     521        ?></select><?php 
     522    } 
    410523 
    411524    /** 
     
    445558     */ 
    446559    private function get_database_themes() { 
     560        // get themes selected themes 
    447561        $this->themes_database = get_option( 'rts_themes' ); 
     562         
     563        // get themes associated with EDD 
     564        global $wpdb; 
     565        $query = "SELECT * FROM `{$wpdb->postmeta}` WHERE `meta_key` = 'rts_theme_edd' AND `meta_value` IS NOT NULL"; 
     566        $this->edd_themes_db = $wpdb->get_results( $query ); 
     567        $edd_themes = array(); 
     568        foreach ( $this->edd_themes_db as $edd_theme_db ) { 
     569            if ( !in_array( $edd_theme_db->meta_value, $edd_themes ) ) { 
     570                $edd_themes[] = $edd_theme_db->meta_value; 
     571            } 
     572        } 
     573         
     574        foreach ( $this->themes_database as $key => $value ) { 
     575            if ( $value === 'on' && in_array( $key, $edd_themes ) ) { 
     576                $this->themes_database[ $key ] = 'buy'; 
     577            } 
     578        } 
    448579    } 
    449580     
  • rational-theme-server/trunk/readme.txt

    r1355953 r1355959  
    44Requires at least: 4.4 
    55Tested up to: 4.4 
    6 Stable tag: 1.0.1 
     6Stable tag: 1.0.2 
    77License: GPLv2 or later 
    88License URI: http://www.gnu.org/licenses/gpl-2.0.html 
     
    1818*   Choose which themes are available in the select menu 
    1919*   Change the label text for the select menu 
     20*   Enable/disabled the [Easy Digital Downloads](https://wordpress.org/plugins/easy-digital-downloads/) support. 
     21*   Enable/disabled the bar globally. If disabled globally, enable on pages/posts. 
    2022*   Enable and disable the default stylesheet 
    2123*   Add custom content to the bar 
     
    2931== Changelog == 
    3032 
     33= 1.0.2 = 
     34* Updated the description. 
     35* Added support for Easy Digital Downloads 
     36 
    3137= 1.0.1 = 
    3238* Added options to show globally or, if not globally, choose the pages to display on. 
Note: See TracChangeset for help on using the changeset viewer.