WordPress.org

Plugin Directory

Changeset 1610234


Ignore:
Timestamp:
03/08/17 03:04:59 (9 months ago)
Author:
DrewAPicture
Message:

Version 1.1.

Location:
affiliatewp-allowed-products/trunk
Files:
3 added
2 edited

Legend:

Unmodified
Added
Removed
  • affiliatewp-allowed-products/trunk/affiliatewp-allowed-products.php

    r1117612 r1610234  
    44 * Plugin URI: http://affiliatewp.com/ 
    55 * Description: Allows only specific products to generate commission 
    6  * Author: Pippin Williamson and Andrew Munro 
     6 * Author: AffiliateWP, LLC 
    77 * Author URI: http://affiliatewp.com 
    8  * Version: 1.0 
     8 * Version: 1.1 
    99 * 
    1010 * AffiliateWP is distributed under the terms of the GNU General Public License as published by 
     
    2121 */ 
    2222 
    23 /** 
    24  * Filter the referral amounts 
    25  * 
    26  * @since 1.0 
    27  */ 
    28 function affwp_allowed_products_calc_referral_amount( $referral_amount, $affiliate_id, $amount, $reference, $product_id ) { 
    29      
    30     if ( $product_id != in_array( $product_id, affwp_allowed_products_get_products() ) ) { 
    31         return 0.00; 
     23 // Exit if accessed directly 
     24 if( ! defined( 'ABSPATH' ) ) { 
     25    exit; 
     26 } 
     27 
     28 if ( ! class_exists( 'AffiliateWP_Allowed_Products' ) ) { 
     29 
     30     /** 
     31      * AffiliateWP - Allowed Products add-on. 
     32      * 
     33      * @since 1.0 
     34      */ 
     35    final class AffiliateWP_Allowed_Products { 
     36 
     37        /** 
     38         * Holds the instance 
     39         * 
     40         * Ensures that only one instance of AffiliateWP_Allowed_Products exists in memory at any one 
     41         * time and it also prevents needing to define globals all over the place. 
     42         * 
     43         * TL;DR This is a static property property that holds the singleton instance. 
     44         * 
     45         * @access private 
     46         * @since  1.1 
     47         * @var    \AffiliateWP_Allowed_Products 
     48         * @static 
     49         */ 
     50        private static $instance; 
     51 
     52        /** 
     53         * The version number of Allowed Products. 
     54         * 
     55         * @access private 
     56         * @since  1.1 
     57         * @var    string 
     58         */ 
     59        private $version = '1.1'; 
     60 
     61        /** 
     62         * Main AffiliateWP_Allowed_Products Instance. 
     63         * 
     64         * Insures that only one instance of AffiliateWP_Allowed_Products exists in memory at any one 
     65         * time. Also prevents needing to define globals all over the place. 
     66         * 
     67         * @access public 
     68         * @since  1.1 
     69         * @static 
     70         * 
     71         * @return \AffiliateWP_Allowed_Products The one true AffiliateWP_Allowed_Products instance. 
     72         */ 
     73        public static function instance() { 
     74            if ( ! isset( self::$instance ) && ! ( self::$instance instanceof AffiliateWP_Allowed_Products ) ) { 
     75 
     76                self::$instance = new AffiliateWP_Allowed_Products; 
     77                self::$instance->setup_constants(); 
     78                self::$instance->load_textdomain(); 
     79            self::$instance->includes(); 
     80 
     81            } 
     82 
     83            return self::$instance; 
     84        } 
     85 
     86        /** 
     87         * Throws error on object clone. 
     88         * 
     89         * The whole idea of the singleton design pattern is that there is a single 
     90         * object therefore, we don't want the object to be cloned. 
     91         * 
     92         * @access public 
     93         * @since  1.1 
     94         */ 
     95        public function __clone() { 
     96            // Cloning instances of the class is forbidden 
     97            _doing_it_wrong( __FUNCTION__, __( 'Cheatin’ huh?', 'affiliatewp-allowed-products' ), '1.0' ); 
     98        } 
     99 
     100        /** 
     101         * Disables unserializing of the class. 
     102         * 
     103         * @access public 
     104         * @since  1.1 
     105         * 
     106         * @return void 
     107         */ 
     108        public function __wakeup() { 
     109            // Unserializing instances of the class is forbidden 
     110            _doing_it_wrong( __FUNCTION__, __( 'Cheatin’ huh?', 'affiliatewp-allowed-products' ), '1.0' ); 
     111        } 
     112 
     113        /** 
     114         * Runs during class start-up. 
     115         * 
     116         * @access private 
     117         * @since  1.1 
     118         */ 
     119        private function __construct() { 
     120            self::$instance = $this; 
     121        } 
     122 
     123        /** 
     124         * Resets the instance of the class. 
     125         * 
     126         * @access public 
     127         * @since 1.1 
     128         * @static 
     129         */ 
     130        public static function reset() { 
     131            self::$instance = null; 
     132        } 
     133 
     134        /** 
     135         * Sets up plugin constants. 
     136         * 
     137         * @access private 
     138         * @since  1.1 
     139         */ 
     140        private function setup_constants() { 
     141 
     142            // Plugin version 
     143            if ( ! defined( 'AFFWP_AP_VERSION' ) ) { 
     144                define( 'AFFWP_AP_VERSION', $this->version ); 
     145            } 
     146 
     147            // Plugin Folder Path 
     148            if ( ! defined( 'AFFWP_AP_PLUGIN_DIR' ) ) { 
     149                define( 'AFFWP_AP_PLUGIN_DIR', plugin_dir_path( __FILE__ ) ); 
     150            } 
     151 
     152            // Plugin Folder URL 
     153            if ( ! defined( 'AFFWP_AP_PLUGIN_URL' ) ) { 
     154                define( 'AFFWP_AP_PLUGIN_URL', plugin_dir_url( __FILE__ ) ); 
     155            } 
     156 
     157            // Plugin Root File 
     158            if ( ! defined( 'AFFWP_AP_PLUGIN_FILE' ) ) { 
     159                define( 'AFFWP_AP_PLUGIN_FILE', __FILE__ ); 
     160            } 
     161 
     162        } 
     163 
     164        /** 
     165         * Loads the plugin language files. 
     166         * 
     167         * @access public 
     168         * @since  1.1 
     169         */ 
     170        public function load_textdomain() { 
     171 
     172            // Set filter for plugin's languages directory 
     173            $lang_dir = dirname( plugin_basename( __FILE__ ) ) . '/languages/'; 
     174            $lang_dir = apply_filters( 'affwp_ap_languages_directory', $lang_dir ); 
     175 
     176            // Traditional WordPress plugin locale filter 
     177            $locale   = apply_filters( 'plugin_locale',  get_locale(), 'affiliatewp-allowed-products' ); 
     178            $mofile   = sprintf( '%1$s-%2$s.mo', 'affiliatewp-allowed-products', $locale ); 
     179 
     180            // Setup paths to current locale file 
     181            $mofile_local  = $lang_dir . $mofile; 
     182            $mofile_global = WP_LANG_DIR . '/affiliatewp-allowed-products/' . $mofile; 
     183 
     184            if ( file_exists( $mofile_global ) ) { 
     185                // Look in global /wp-content/languages/affiliatewp-allowed-products/ folder 
     186                load_textdomain( 'affiliatewp-allowed-products', $mofile_global ); 
     187            } elseif ( file_exists( $mofile_local ) ) { 
     188                // Look in local /wp-content/plugins/affiliatewp-allowed-products/languages/ folder 
     189                load_textdomain( 'affiliatewp-allowed-products', $mofile_local ); 
     190            } else { 
     191                // Load the default language files 
     192                load_plugin_textdomain( 'affiliatewp-allowed-products', false, $lang_dir ); 
     193            } 
     194        } 
     195 
     196        /** 
     197         * Includes necessary files. 
     198         * 
     199         * @access private 
     200         * @since  1.1 
     201         */ 
     202        private function includes() { 
     203 
     204            require_once AFFWP_AP_PLUGIN_DIR . 'includes/functions.php'; 
     205 
     206        } 
     207    } 
     208 
     209    /** 
     210     * The main function responsible for returning the one true AffiliateWP_Allowed_Products 
     211     * Instance to functions everywhere. 
     212     * 
     213     * Use this function like you would a global variable, except without needing 
     214     * to declare the global. 
     215     * 
     216     * Example: <?php $affwp_ap = affiliatewp_allowed_products(); ?> 
     217     * 
     218     * @since 1.1 
     219     * 
     220     * @return \AffiliateWP_Allowed_Products The one true AffiliateWP_Allowed_Products Instance. 
     221     */ 
     222    function affiliatewp_allowed_products() { 
     223        if ( ! class_exists( 'Affiliate_WP' ) ) { 
     224 
     225            if ( ! class_exists( 'AffiliateWP_Activation' ) ) { 
     226                require_once 'includes/class-activation.php'; 
     227            } 
     228 
     229            // AffiliateWP activation 
     230            if ( ! class_exists( 'Affiliate_WP' ) ) { 
     231                $activation = new AffiliateWP_Activation( plugin_dir_path( __FILE__ ), basename( __FILE__ ) ); 
     232                $activation = $activation->run(); 
     233            } 
     234 
     235        } else { 
     236 
     237            return AffiliateWP_Allowed_Products::instance(); 
     238 
     239        } 
    32240    } 
    33  
    34     return $referral_amount; 
     241    add_action( 'plugins_loaded', 'affiliatewp_allowed_products', 100 ); 
     242 
    35243} 
    36 add_filter( 'affwp_calc_referral_amount', 'affwp_allowed_products_calc_referral_amount', 10, 5 ); 
    37  
    38 /** 
    39  * Get allowed products 
    40  * 
    41  * @since 1.0 
    42  */ 
    43 function affwp_allowed_products_get_products() { 
    44  
    45     $products = affiliate_wp()->settings->get( 'allowed_products' ); 
    46     $products = explode( ',', $products ); 
    47     $products = array_filter( array_map( 'trim', $products ) ); 
    48  
    49     return $products; 
    50 } 
    51  
    52 /** 
    53  * Allow product IDs to be entered from Affiliate -> Settings -> Integrations 
    54  * 
    55  * @since 1.0 
    56  */ 
    57 function affwp_allowed_products_settings( $fields ) { 
    58  
    59     $fields['allowed_products'] = array( 
    60         'name' => __( 'Allowed Products', 'affiliatewp-allowed-products' ), 
    61         'desc' => '<p class="description">' . __( 'Enter any product IDs (separated by commas) that should be allowed to generate commission.', 'affiliatewp-allowed-products' ) . '</p>', 
    62         'type' => 'text' 
    63     ); 
    64  
    65     return $fields; 
    66 } 
    67 add_filter( 'affwp_settings_integrations', 'affwp_allowed_products_settings' ); 
    68  
    69 /** 
    70  * Sanitize settings field 
    71  * 
    72  * @since 1.0 
    73  */ 
    74 function affwp_allowed_products_sanitize_settings( $input ) { 
    75  
    76     $input['allowed_products'] = sanitize_text_field( $input['allowed_products'] ); 
    77  
    78     return $input; 
    79 } 
    80 add_filter( 'affwp_settings_integrations_sanitize', 'affwp_allowed_products_sanitize_settings' ); 
  • affiliatewp-allowed-products/trunk/readme.txt

    r1386720 r1610234  
    11=== AffiliateWP - Allowed Products === 
    2 Contributors: sumobi, mordauk 
     2Contributors: sumobi, mordauk, drewapicture 
    33Tags: AffiliateWP, affiliate, Pippin Williamson, Andrew Munro, mordauk, pippinsplugins, sumobi, ecommerce, e-commerce, e commerce, selling, referrals, easy digital downloads, digital downloads, woocommerce, woo, products, product, allowed, affiliate marketing 
    4 Requires at least: 3.9 
    5 Tested up to: 4.4.2 
    6 Stable tag: 1.0.2 
     4Requires at least: 4.4 
     5Tested up to: 4.7.3 
     6Stable tag: 1.1 
    77License: GPLv2 or later 
    88License URI: http://www.gnu.org/licenses/gpl-2.0.html 
     
    3737== Changelog == 
    3838 
     39= 1.1 = 
     40* Fix: Admin notice is not dismissible in some circumstances 
     41* Fix: All commission rates set to 0 when used with non-supported integrations 
     42* Tweak: Encapsulate the plugin loader and activation into a class to avoid errors 
     43 
    3944= 1.0.2 = 
    4045* New: Dismissable admin notice shown in admin when no product IDs have been entered 
Note: See TracChangeset for help on using the changeset viewer.