WordPress.org

Plugin Directory

Changeset 1782156


Ignore:
Timestamp:
12/06/17 17:32:59 (12 days ago)
Author:
dancameron
Message:

Deploy version 16.5.7

Location:
sprout-invoices
Files:
688 added
32 edited

Legend:

Unmodified
Added
Removed
  • sprout-invoices/trunk/Sprout_Invoices.class.php

    r1776534 r1782156  
    3333     * Current version. Should match sprout-invoices.php plugin version. 
    3434     */ 
    35     const SI_VERSION = '16.5.2'; 
     35    const SI_VERSION = '16.5.7'; 
    3636    /** 
    3737     * DB Version 
  • sprout-invoices/trunk/bundles/Addon_Payment_Processors.php

    r1776534 r1782156  
    9999            if ( file_exists( SI_PATH.'/bundles/sprout-invoices-payments-braintree/inc/SA_Braintree.php' ) ) { 
    100100                if ( ! defined( 'SA_ADDON_BRAINTREE_PATH' ) ) { 
    101                     define( 'SA_ADDON_BRAINTREE_PATH', __FILE__ . '/sprout-invoices-payments-braintree/' ); 
     101                    define( 'SA_ADDON_BRAINTREE_PATH', dirname( __FILE__ ) . '/sprout-invoices-payments-braintree/' ); 
    102102                } 
    103103                if ( ! defined( 'SA_ADDON_BRAINTREE_URL' ) ) { 
     
    141141            if ( file_exists( SI_PATH.'/bundles/sprout-invoices-payments-nmi/SA_NMI.php' ) ) { 
    142142                if ( ! defined( 'SA_ADDON_NMI_URL' ) ) { 
    143                     define( 'SA_ADDON_NMI_URL', plugins_url( '/sprout-invoices-payments-offsite-url', __FILE__ ) ); 
     143                    define( 'SA_ADDON_NMI_URL', plugins_url( '/sprout-invoices-payments-nmi', __FILE__ ) ); 
     144                } 
     145                if ( ! defined( 'SA_ADDON_NMI_PATH' ) ) { 
     146                    define( 'SA_ADDON_NMI_PATH', dirname( __FILE__ ) . '/sprout-invoices-payments-nmi' ); 
    144147                } 
    145148                require_once SI_PATH.'/bundles/sprout-invoices-payments-nmi/SA_NMI.php'; 
  • sprout-invoices/trunk/bundles/Addons.php

    r1774871 r1782156  
    265265        if ( $cached_addons ) { 
    266266            if ( ! empty( $cached_addons ) ) { 
    267                 return $cached_addons; 
     267                //return $cached_addons; 
    268268            } 
    269269        } 
     
    282282        // Call the custom API. 
    283283        $response = wp_safe_remote_get( add_query_arg( $api_params, self::API_CB . 'wp-admin/admin-ajax.php' ), array( 'timeout' => 15, 'sslverify' => false ) ); 
    284  
    285284        // make sure the response came back okay 
    286285        if ( is_wp_error( $response ) ) { 
     
    290289        // decode the license data 
    291290        $marketplace_items = json_decode( wp_remote_retrieve_body( $response ) ); 
     291 
     292        // sort 
     293        $biz_addons = array(); 
     294        $free_addons = array(); 
     295        $corp_addons = array(); 
     296 
     297        foreach ( $marketplace_items as $addon_id => $addon ) { 
     298            if ( $addon->id === 44588 ) { 
     299                $corp_addons[ $addon_id ] = $addon; 
     300            } elseif ( $addon->biz_bundled ) { 
     301                $biz_addons[ $addon_id ] = $addon; 
     302            } else { 
     303                $free_addons[ $addon_id ] = $addon; 
     304            } 
     305        } 
     306 
     307        asort( $biz_addons ); 
     308        asort( $free_addons ); 
     309 
     310        $marketplace_items = array_merge( $corp_addons, $free_addons, $biz_addons ); 
     311 
    292312        set_transient( $cache_key, $marketplace_items, DAY_IN_SECONDS * 5 ); 
    293313        return $marketplace_items; 
  • sprout-invoices/trunk/bundles/updates/edd_plugin_updater.class.php

    r1745569 r1782156  
    99if ( ! class_exists( 'EDD_SL_Plugin_Updater_SA_Mod' ) ) : 
    1010 
    11  
    12  
    1311    /** 
    14  * Allows plugins to use their own update API. 
    15  * 
    16  * @author Easy Digital Downloads 
    17  * @version 1.6.9 // with "// Modification" 
    18  */ 
     12    * Allows plugins to use their own update API. 
     13    * 
     14    * @author Easy Digital Downloads 
     15     * @version 1.6.15 
     16    */ 
    1917    class EDD_SL_Plugin_Updater_SA_Mod { 
    2018 
     
    2826 
    2927        /** 
    30     * Class constructor. 
    31     * 
    32     * @uses plugin_basename() 
    33     * @uses hook() 
    34     * 
    35     * @param string  $_api_url     The URL pointing to the custom API endpoint. 
    36     * @param string  $_plugin_file Path to the plugin file. 
    37     * @param array   $_api_data    Optional data to send with API calls. 
    38     */ 
     28        * Class constructor. 
     29        * 
     30        * @uses plugin_basename() 
     31        * @uses hook() 
     32        * 
     33        * @param string  $_api_url     The URL pointing to the custom API endpoint. 
     34        * @param string  $_plugin_file Path to the plugin file. 
     35        * @param array   $_api_data    Optional data to send with API calls. 
     36        */ 
    3937        public function __construct( $_api_url, $_plugin_file, $_api_data = null ) { 
    4038 
     
    4846            $this->wp_override = isset( $_api_data['wp_override'] ) ? (bool) $_api_data['wp_override'] : false; 
    4947            $this->beta        = ! empty( $this->api_data['beta'] ) ? true : false; 
    50             $this->cache_key   = md5( serialize( $this->slug . $this->api_data['license'] . $this->beta ) ); 
     48            $this->cache_key   = 'edd_sl_' . md5( serialize( $this->slug . $this->api_data['license'] . $this->beta ) ); 
    5149 
    5250            $edd_plugin_data[ $this->slug ] = $this->api_data; 
     
    5856 
    5957        /** 
    60     * Set up WordPress filters to hook into WP's update process. 
    61     * 
    62     * @uses add_filter() 
    63     * 
    64     * @return void 
    65     */ 
     58        * Set up WordPress filters to hook into WP's update process. 
     59        * 
     60        * @uses add_filter() 
     61        * 
     62        * @return void 
     63        */ 
    6664        public function init() { 
    6765 
     
    7270            add_action( 'admin_init', array( $this, 'show_changelog' ) ); 
    7371 
    74         } 
    75  
    76         /** 
    77      * Check for Updates at the defined API endpoint and modify the update array. 
    78      * 
    79      * This function dives into the update API just when WordPress creates its update array, 
    80      * then adds a custom API call and injects the custom plugin data retrieved from the API. 
    81      * It is reassembled from parts of the native WordPress plugin update code. 
    82      * See wp-includes/update.php line 121 for the original wp_update_plugins() function. 
    83      * 
    84      * @uses api_request() 
    85      * 
    86      * @param array   $_transient_data Update array build by WordPress. 
    87      * @return array Modified update array with custom plugin data. 
    88      */ 
     72            // test 
     73            add_action( 'admin_init', array( $this, 'check_update' ) ); 
     74 
     75        } 
     76 
     77        /** 
     78         * Check for Updates at the defined API endpoint and modify the update array. 
     79         * 
     80         * This function dives into the update API just when WordPress creates its update array, 
     81         * then adds a custom API call and injects the custom plugin data retrieved from the API. 
     82         * It is reassembled from parts of the native WordPress plugin update code. 
     83         * See wp-includes/update.php line 121 for the original wp_update_plugins() function. 
     84         * 
     85         * @uses api_request() 
     86         * 
     87         * @param array   $_transient_data Update array build by WordPress. 
     88         * @return array Modified update array with custom plugin data. 
     89         */ 
    8990        public function check_update( $_transient_data ) { 
    9091 
     
    107108            if ( false === $version_info ) { 
    108109                $version_info = $this->api_request( 'plugin_latest_version', array( 'slug' => $this->slug, 'beta' => $this->beta ) ); 
    109  
    110110                $this->set_version_info_cache( $version_info ); 
    111111 
     
    129129 
    130130        /** 
    131     * show update nofication row -- needed for multisite subsites, because WP won't tell you otherwise! 
    132     * 
    133     * @param string  $file 
    134     * @param array   $plugin 
    135     */ 
     131        * show update nofication row -- needed for multisite subsites, because WP won't tell you otherwise! 
     132        * 
     133        * @param string  $file 
     134        * @param array   $plugin 
     135        */ 
    136136        public function show_update_notification( $file, $plugin ) { 
    137137 
     
    231231 
    232232        /** 
    233     * Updates information on the "View version x.x details" page with custom data. 
    234     * 
    235     * @uses api_request() 
    236     * 
    237     * @param mixed   $_data 
    238     * @param string  $_action 
    239     * @param object  $_args 
    240     * @return object $_data 
    241     */ 
     233        * Updates information on the "View version x.x details" page with custom data. 
     234        * 
     235        * @uses api_request() 
     236        * 
     237        * @param mixed   $_data 
     238        * @param string  $_action 
     239        * @param object  $_args 
     240        * @return object $_data 
     241        */ 
    242242        public function plugins_api_filter( $_data, $_action = '', $_args = null ) { 
    243243 
     
    255255 
    256256            $to_send = array( 
    257             'slug'   => $this->slug, 
    258             'is_ssl' => is_ssl(), 
    259             'fields' => array( 
    260                 'banners' => array(), 
    261                 'reviews' => false, 
    262             ), 
     257                'slug'   => $this->slug, 
     258                'is_ssl' => is_ssl(), 
     259                'fields' => array( 
     260                    'banners' => array(), 
     261                    'reviews' => false, 
     262                ), 
    263263            ); 
    264264 
     
    286286            if ( isset( $_data->sections ) && ! is_array( $_data->sections ) ) { 
    287287                $new_sections = array(); 
    288                 foreach ( $_data->sections as $key => $key ) { 
    289                     $new_sections[ $key ] = $key; 
     288                foreach ( $_data->sections as $key => $value ) { 
     289                    $new_sections[ $key ] = $value; 
    290290                } 
    291291 
     
    296296            if ( isset( $_data->banners ) && ! is_array( $_data->banners ) ) { 
    297297                $new_banners = array(); 
    298                 foreach ( $_data->banners as $key => $key ) { 
    299                     $new_banners[ $key ] = $key; 
     298                foreach ( $_data->banners as $key => $value ) { 
     299                    $new_banners[ $key ] = $value; 
    300300                } 
    301301 
     
    307307 
    308308        /** 
    309     * Disable SSL verification in order to prevent download update failures 
    310     * 
    311     * @param array   $args 
    312     * @param string  $url 
    313     * @return object $array 
    314     */ 
     309        * Disable SSL verification in order to prevent download update failures 
     310        * 
     311        * @param array   $args 
     312        * @param string  $url 
     313        * @return object $array 
     314        */ 
    315315        public function http_request_args( $args, $url ) { 
    316             // If it is an https request and we are performing a package download, disable ssl verification 
     316 
     317            $verify_ssl = $this->verify_ssl(); 
    317318            if ( strpos( $url, 'https://' ) !== false && strpos( $url, 'edd_action=package_download' ) ) { 
    318                 $args['sslverify'] = false; 
     319                $args['sslverify'] = $verify_ssl; 
    319320            } 
    320321            return $args; 
    321         } 
    322  
    323         /** 
    324      * Calls the API and, if successfull, returns the object delivered by the API. 
    325      * 
    326      * @uses get_bloginfo() 
    327      * @uses wp_remote_post() 
    328      * @uses is_wp_error() 
    329      * 
    330      * @param string  $_action The requested action. 
    331      * @param array   $_data   Parameters for the API action. 
    332      * @return false|object 
    333      */ 
    334         private function api_request( $_action, $_data ) { 
     322 
     323        } 
     324 
     325        /** 
     326         * Calls the API and, if successfull, returns the object delivered by the API. 
     327         * 
     328         * @uses get_bloginfo() 
     329         * @uses wp_remote_post() 
     330         * @uses is_wp_error() 
     331         * 
     332         * @param string  $_action The requested action. 
     333         * @param array   $_data   Parameters for the API action. 
     334         * @return false|object 
     335         */ 
     336        public function api_request( $_action, $_data ) { 
    335337 
    336338            global $wp_version; 
     
    346348            } 
    347349 
    348             // Modification 
    349             if ( ! isset( $data['item_id'] ) && isset( $data['download_id'] ) ) { 
    350                 $data['item_id'] = $data['download_id']; 
    351             } 
    352  
    353350            $api_params = array( 
    354             'edd_action' => 'get_version', 
    355             'license'    => ! empty( $data['license'] ) ? $data['license'] : '', 
    356             'item_name'  => isset( $data['item_name'] ) ? $data['item_name'] : false, 
    357             'item_id'    => isset( $data['item_id'] ) ? $data['item_id'] : false, 
    358             'version'    => isset( $data['version'] ) ? $data['version'] : false, 
    359             'slug'       => $data['slug'], 
    360             'author'     => $data['author'], 
    361             'url'        => home_url(), 
    362             'beta'       => ! empty( $data['beta'] ), 
     351                'edd_action' => 'get_version', 
     352                'license'    => ! empty( $data['license'] ) ? $data['license'] : '', 
     353                'item_name'  => isset( $data['item_name'] ) ? $data['item_name'] : false, 
     354                'item_id'    => isset( $data['item_id'] ) ? $data['item_id'] : false, 
     355                'version'    => isset( $data['version'] ) ? $data['version'] : false, 
     356                'slug'       => $data['slug'], 
     357                'author'     => $data['author'], 
     358                'url'        => home_url(), 
     359                'beta'       => ! empty( $data['beta'] ), 
    363360            ); 
    364  
    365             $request = wp_remote_post( $this->api_url, array( 'timeout' => 15, 'sslverify' => false, 'body' => $api_params ) ); 
     361            $verify_ssl = $this->verify_ssl(); 
     362            $request    = wp_remote_post( $this->api_url, array( 'timeout' => 15, 'sslverify' => $verify_ssl, 'body' => $api_params ) ); 
    366363 
    367364            if ( ! is_wp_error( $request ) ) { 
     
    384381                } 
    385382            } 
    386  
    387383            return $request; 
    388384        } 
     
    416412 
    417413                $api_params = array( 
    418                 'edd_action' => 'get_version', 
    419                 'item_name'  => isset( $data['item_name'] ) ? $data['item_name'] : false, 
    420                 'item_id'    => isset( $data['item_id'] ) ? $data['item_id'] : false, 
    421                 'slug'       => $_REQUEST['slug'], 
    422                 'author'     => $data['author'], 
    423                 'url'        => home_url(), 
    424                 'beta'       => ! empty( $data['beta'] ), 
     414                    'edd_action' => 'get_version', 
     415                    'item_name'  => isset( $data['item_name'] ) ? $data['item_name'] : false, 
     416                    'item_id'    => isset( $data['item_id'] ) ? $data['item_id'] : false, 
     417                    'slug'       => $_REQUEST['slug'], 
     418                    'author'     => $data['author'], 
     419                    'url'        => home_url(), 
     420                    'beta'       => ! empty( $data['beta'] ), 
    425421                ); 
    426422 
    427                 $request = wp_remote_post( $this->api_url, array( 'timeout' => 15, 'sslverify' => false, 'body' => $api_params ) ); 
     423                $verify_ssl = $this->verify_ssl(); 
     424                $request    = wp_remote_post( $this->api_url, array( 'timeout' => 15, 'sslverify' => $verify_ssl, 'body' => $api_params ) ); 
    428425 
    429426                if ( ! is_wp_error( $request ) ) { 
     
    455452 
    456453        public function get_cached_version_info( $cache_key = '' ) { 
    457  
    458454            if ( empty( $cache_key ) ) { 
    459455                $cache_key = $this->cache_key; 
     
    477473 
    478474            $data = array( 
    479             'timeout' => strtotime( '+3 hours', current_time( 'timestamp' ) ), 
    480             'value'   => json_encode( $value ), 
     475                'timeout' => strtotime( '+3 hours', current_time( 'timestamp' ) ), 
     476                'value'   => json_encode( $value ), 
    481477            ); 
    482478 
    483             update_option( $cache_key, $data ); 
    484  
     479            update_option( $cache_key, $data, 'no' ); 
     480 
     481        } 
     482 
     483        /** 
     484         * Returns if the SSL of the store should be verified. 
     485         * 
     486         * @since  1.6.13 
     487         * @return bool 
     488         */ 
     489        private function verify_ssl() { 
     490            return (bool) apply_filters( 'edd_sl_api_request_verify_ssl', true, $this ); 
    485491        } 
    486492    } 
  • sprout-invoices/trunk/changelog.txt

    r1776534 r1782156  
     1= 16.5.7 = 
     2 
     3* Udpate: Point of Contact add-on will no longer force itself if unused. 
     4* Udpate: Use GMT offset everywhere 
     5* Fix: Signature add-on errors for default theme 
     6 
     7= 16.5.6 = 
     8 
     9* Fix: Some payment processsors were executing filters/actions without being active. 
     10 
     11= 16.5.5 = 
     12 
     13* Fix: Extraneous callback for updates on every load. 
     14* Fix: NMI bundle fix 
     15 
     16= 16.5.3 = 
     17 
     18* Fix: Pushing an update because business license holders were not receiving the proper bundle 
     19 
    120= 16.5.2 = 
    221 
     
    3049* New: Recurring invoices re-write 
    3150* New: ApproveMe integration support for Default Theme 
    32 * New: Client set payments supoort for new Default Theme 
     51* New: Client set payments support for new Default Theme 
    3352* New: Allow to easily filter default line item 
    3453* New: Square support 
     
    5675= 15.1.6 = 
    5776 
    58 * Fix: Localazation 
     77* Fix: Localization 
    5978 
    6079= 15.1.5 = 
    6180 
    62 * Fix: Recurring Invoices dups created with pre-startdate save. 
     81* Fix: Recurring Invoices dups created with pre-start date save. 
    6382* Fix: CA Tax error 
    6483 
     
    6685 
    6786* Fix: Notification shortcodes bug 
    68 * Fix: Lineitem template overrides 
     87* Fix: Line item template overrides 
    6988 
    7089= 15.1.3 = 
  • sprout-invoices/trunk/controllers/estimates/Estimates_Edit.php

    r1731821 r1782156  
    352352        $estimate = SI_Estimate::get_instance( $post->ID ); 
    353353        $status = ( is_a( $estimate, 'SI_Estimate' ) && $estimate->get_status() != 'auto-draft' ) ? $estimate->get_status() : SI_Estimate::STATUS_TEMP ; 
    354         $expiration_date = ( is_a( $estimate, 'SI_Estimate' ) ) ? $estimate->get_expiration_date() : current_time( 'timestamp' ) + (DAY_IN_SECONDS * 30); 
     354        $expiration_date = ( is_a( $estimate, 'SI_Estimate' ) ) ? $estimate->get_expiration_date() : current_time( 'timestamp', true ) + (DAY_IN_SECONDS * 30); 
    355355        $issue_date = ( is_a( $estimate, 'SI_Estimate' ) ) ? $estimate->get_issue_date() : strtotime( $post->post_date ); 
    356356        $invoice_id = ( is_a( $estimate, 'SI_Estimate' ) ) ? $estimate->get_invoice_id() : 0 ; 
  • sprout-invoices/trunk/controllers/invoices/Invoices_Edit.php

    r1761162 r1782156  
    359359        $invoice = SI_Invoice::get_instance( $post->ID ); 
    360360        $status = ( is_a( $invoice, 'SI_Invoice' ) && $invoice->get_status() !== 'auto-draft' ) ? $invoice->get_status() : SI_Invoice::STATUS_TEMP ; 
    361         $due_date = ( is_a( $invoice, 'SI_Invoice' ) ) ? $invoice->get_due_date() : current_time( 'timestamp' ) + (DAY_IN_SECONDS * 30); 
    362         $expiration_date = ( is_a( $invoice, 'SI_Invoice' ) ) ? $invoice->get_expiration_date() : current_time( 'timestamp' ) + (DAY_IN_SECONDS * 30); 
     361        $due_date = ( is_a( $invoice, 'SI_Invoice' ) ) ? $invoice->get_due_date() : current_time( 'timestamp', true ) + (DAY_IN_SECONDS * 30); 
     362        $expiration_date = ( is_a( $invoice, 'SI_Invoice' ) ) ? $invoice->get_expiration_date() : current_time( 'timestamp', true ) + (DAY_IN_SECONDS * 30); 
    363363        $issue_date = ( is_a( $invoice, 'SI_Invoice' ) ) ? $invoice->get_issue_date() : strtotime( $post->post_date ); 
    364364        $estimate_id = ( is_a( $invoice, 'SI_Invoice' ) ) ? $invoice->get_estimate_id() : 0 ; 
  • sprout-invoices/trunk/controllers/notifications/Notifications.php

    r1731821 r1782156  
    552552    public static function shortcode_date( $atts, $content, $code, $data ) { 
    553553        $atts = shortcode_atts( array( 'format' => get_option( 'date_format' ) ), $atts ); 
    554         $date = date_i18n( $atts['format'], current_time( 'timestamp' ) ); 
     554        $date = date_i18n( $atts['format'], current_time( 'timestamp', true ) ); 
    555555        return apply_filters( 'shortcode_date', $date, $data ); 
    556556    } 
     
    966966        if ( isset( $data['invoice'] ) && is_a( $data['invoice'], 'SI_Invoice' ) ) { 
    967967            $due_date = $data['invoice']->get_due_date(); 
    968             $pastdue = current_time( 'timestamp' ) -$due_date; 
     968            $pastdue = current_time( 'timestamp', true ) -$due_date; 
    969969            $days = floor( $pastdue / (DAY_IN_SECONDS) ); 
    970970        } 
  • sprout-invoices/trunk/controllers/notifications/Notifications_Control.php

    r1717782 r1782156  
    442442 
    443443        // Allow for a notification to be suppressed based on data 
    444         if ( apply_filters( 'si_disable_this_notification', false, $data, $to ) ) { 
     444        if ( apply_filters( 'si_disable_this_notification', false, $data, $to, $notification_name ) ) { 
    445445            do_action( 'si_error', __CLASS__ . '::' . __FUNCTION__ . ' - Notifications: Message Suppressed', $data ); 
    446446            return; 
  • sprout-invoices/trunk/controllers/payment-processing/Payment_Processors.php

    r1761162 r1782156  
    9898        } 
    9999        return $gw_methods[ $payment_method ]; 
     100    } 
     101 
     102    public static function is_active() { 
     103        $enabled = SI_Payment_Processors::enabled_processors(); 
     104        return in_array( get_called_class(), $enabled ); 
    100105    } 
    101106 
  • sprout-invoices/trunk/controllers/records/Internal_Records.php

    r1665470 r1782156  
    6565 
    6666        $status = ( isset( $data['status'] ) && '' !== $data['status'] ) ? $data['status'] : 'publish' ; 
    67         $post_date = ( isset( $data['post_date'] ) && $data['post_date'] ) ? (int) $data['post_date'] : current_time( 'timestamp' ); 
     67        $post_date = ( isset( $data['post_date'] ) && $data['post_date'] ) ? (int) $data['post_date'] : current_time( 'timestamp', true ); 
    6868 
    6969        $post = array( 
  • sprout-invoices/trunk/controllers/reporting/Reporting.php

    r1613648 r1782156  
    558558                    ), 
    559559                ); 
    560                 $expire = strtotime( 'tomorrow' ) -current_time( 'timestamp' ); 
     560                $expire = strtotime( 'tomorrow' ) -current_time( 'timestamp', true ); 
    561561                break; 
    562562            case 'lastweek': 
     
    568568                    ), 
    569569                ); 
    570                 $expire = strtotime( 'next week' ) -current_time( 'timestamp' ); 
     570                $expire = strtotime( 'next week' ) -current_time( 'timestamp', true ); 
    571571                break; 
    572572            case 'month': 
     
    574574                    array( 
    575575                        'month' => date( 'm', strtotime( 'first day of this month' ) ), 
    576                         'year' => date( 'o', current_time( 'timestamp' ) ), 
     576                        'year' => date( 'o', current_time( 'timestamp', true ) ), 
    577577                        'inclusive' => true, 
    578578                    ), 
    579579                ); 
    580                 $expire = strtotime( 'tomorrow' ) -current_time( 'timestamp' ); 
     580                $expire = strtotime( 'tomorrow' ) -current_time( 'timestamp', true ); 
    581581                break; 
    582582            case 'lastmonth': 
     
    588588                    ), 
    589589                ); 
    590                 $expire = strtotime( 'first day of next month' ) -current_time( 'timestamp' ); 
     590                $expire = strtotime( 'first day of next month' ) -current_time( 'timestamp', true ); 
    591591                break; 
    592592            case 'year': 
    593593                $args['date_query'] = array( 
    594594                    array( 
    595                         'year' => date( 'Y', current_time( 'timestamp' ) ), 
     595                        'year' => date( 'Y', current_time( 'timestamp', true ) ), 
    596596                        'inclusive' => true, 
    597597                    ), 
    598598                ); 
    599                 $expire = strtotime( 'tomorrow' ) -current_time( 'timestamp' ); 
     599                $expire = strtotime( 'tomorrow' ) -current_time( 'timestamp', true ); 
    600600                break; 
    601601            case 'lastyear': 
     
    606606                    ), 
    607607                ); 
    608                 $expire = strtotime( 'last day of year' ) -current_time( 'timestamp' ); 
     608                $expire = strtotime( 'last day of year' ) -current_time( 'timestamp', true ); 
    609609                break; 
    610610            default: 
  • sprout-invoices/trunk/models/Client.php

    r1492701 r1782156  
    8989    public static function new_client( $passed_args ) { 
    9090        $defaults = array( 
    91             'company_name' => sprintf( __( 'New Client: %s', 'sprout-invoices' ), date_i18n( get_option( 'date_format' ).' @ '.get_option( 'time_format' ), current_time( 'timestamp' ) ) ), 
     91            'company_name' => sprintf( __( 'New Client: %s', 'sprout-invoices' ), date_i18n( get_option( 'date_format' ).' @ '.get_option( 'time_format' ), current_time( 'timestamp', true ) ) ), 
    9292            'website' => '', 
    9393            'phone' => '', 
  • sprout-invoices/trunk/models/Estimate.php

    r1741718 r1782156  
    169169    public static function create_estimate( $passed_args, $status = '' ) { 
    170170        $defaults = array( 
    171             'subject' => sprintf( __( 'New Estimate: %s', 'sprout-invoices' ), date_i18n( get_option( 'date_format' ).' @ '.get_option( 'time_format' ), current_time( 'timestamp' ) ) ), 
     171            'subject' => sprintf( __( 'New Estimate: %s', 'sprout-invoices' ), date_i18n( get_option( 'date_format' ).' @ '.get_option( 'time_format' ), current_time( 'timestamp', true ) ) ), 
    172172            'user_id' => '', 
    173173            'estimate_id' => '', 
  • sprout-invoices/trunk/models/Invoice.php

    r1741718 r1782156  
    160160    public static function create_invoice( $passed_args, $status = '' ) { 
    161161        $defaults = array( 
    162             'subject' => sprintf( __( 'New Invoice: %s', 'sprout-invoices' ), date_i18n( get_option( 'date_format' ).' @ '.get_option( 'time_format' ), current_time( 'timestamp' ) ) ), 
     162            'subject' => sprintf( __( 'New Invoice: %s', 'sprout-invoices' ), date_i18n( get_option( 'date_format' ).' @ '.get_option( 'time_format' ), current_time( 'timestamp', true ) ) ), 
    163163            'user_id' => '', 
    164164            'invoice_id' => '', 
     
    914914    public static function get_overdue_invoices( $after = 0, $before = 0 ) { 
    915915        if ( ! $after ) { 
    916             $after = apply_filters( 'si_get_overdue_yesterday_timestamp', strtotime( 'Yesterday',  current_time( 'timestamp' ) ) ); 
     916            $after = apply_filters( 'si_get_overdue_yesterday_timestamp', strtotime( 'Yesterday',  current_time( 'timestamp', true ) ) ); 
    917917        } 
    918918 
  • sprout-invoices/trunk/models/Project.php

    r1586829 r1782156  
    8080    public static function new_project( $args ) { 
    8181        $defaults = array( 
    82             'project_name' => sprintf( __( 'New Project: %s', 'sprout-invoices' ), date_i18n( get_option( 'date_format' ).' @ '.get_option( 'time_format' ), current_time( 'timestamp' ) ) ), 
     82            'project_name' => sprintf( __( 'New Project: %s', 'sprout-invoices' ), date_i18n( get_option( 'date_format' ).' @ '.get_option( 'time_format' ), current_time( 'timestamp', true ) ) ), 
    8383            'associated_clients' => array(), 
    8484            'project_description' => '', 
  • sprout-invoices/trunk/readme.txt

    r1776542 r1782156  
    55Requires at least: 3.8 
    66Tested up to: 4.9 
    7 Stable tag: 16.5.2 
     7Stable tag: 16.5.7 
    88License: GPLv2 or later 
    99License URI: http://www.gnu.org/licenses/gpl-2.0.html 
     
    122122== Upgrade Notice == 
    123123 
    124 Woocommerce integrations, payment terms, stats dashboard, time tracking updates and more. 
     124WooCommerce integrations, payment terms, stats dashboard, time tracking updates and more. 
    125125 
    126126== Changelog == 
     127 
     128= 16.5.7 = 
     129 
     130* Udpate: Point of Contact add-on will no longer force itself if unused. 
     131* Udpate: Use GMT offset everywhere 
     132* Fix: Signature add-on errors for default theme 
     133 
     134= 16.5.6 = 
     135 
     136* Fix: Some payment processsors were executing filters/actions without being active. 
     137 
     138= 16.5.5 = 
     139 
     140* Fix: Extraneous callback for updates on every load. 
     141* Fix: NMI bundle fix 
     142 
     143= 16.5.3 = 
     144 
     145* Fix: Pushing an update because business license holders were not receiving the proper bundle 
    127146 
    128147= 16.5.2 = 
  • sprout-invoices/trunk/resources/admin/css/sprout-invoice.css

    r1702714 r1782156  
    23802380    position: absolute; 
    23812381} 
     2382#marketplace_view .biz span.bundled_addon { 
     2383    background-color: #6CAAE4; 
     2384} 
    23822385 
    23832386/** 
  • sprout-invoices/trunk/sprout-invoices.php

    r1776534 r1782156  
    33/** 
    44 * @package Sprout_Invoices 
    5  * @version 16.5.2 
     5 * @version 16.5.7 
    66 */ 
    77 
     
    1111 * Description: App allows for any WordPress site to accept estimates, create invoices and receive invoice payments. Learn more at <a href="https://sproutapps.co">Sprout Apps</a>. 
    1212 * Author: Sprout Apps 
    13  * Version: 16.5.2 
     13 * Version: 16.5.7 
    1414 * Author URI: https://sproutapps.co 
    1515 * Text Domain: sprout-invoices 
  • sprout-invoices/trunk/template-tags/invoices.php

    r1702714 r1782156  
    7070            case SI_Invoice::STATUS_PENDING: 
    7171                $status = __( 'pending', 'sprout-invoices' ); 
    72                 if ( si_get_invoice_due_date( $id ) < current_time( 'timestamp' ) ) { 
     72                if ( si_get_invoice_due_date( $id ) < current_time( 'timestamp', true ) ) { 
    7373                    $status = __( 'past-due', 'sprout-invoices' ); 
    7474                } 
  • sprout-invoices/trunk/template-tags/utility.php

    r1731821 r1782156  
    270270     */ 
    271271    function si_get_days_ago( $last_updated = 0 ) { 
    272         $time_between_update = current_time( 'timestamp' ) - $last_updated; 
     272        $time_between_update = current_time( 'timestamp', true ) - $last_updated; 
    273273        $days_since = round( (($time_between_update / 24) / 60) / 60 ); 
    274274        return apply_filters( 'si_get_days_ago', $days_since ); 
  • sprout-invoices/trunk/views/admin/addons/marketplace.php

    r1492701 r1782156  
    88    <div class="clearfix"> 
    99        <?php if ( apply_filters( 'show_upgrade_messaging', true ) ) : ?> 
    10             <h3><?php _e( 'Addons from the Sprout Invoices Marketplace', 'sprout-invoices' ) ?></h3> 
     10            <h3><?php _e( 'Addons for Sprout Invoices', 'sprout-invoices' ) ?></h3> 
    1111        <?php else : ?> 
    1212            <div class="clearfix"> 
    1313                <ul class="subsubsub"> 
    1414                    <li class="manage"><a href="<?php echo esc_url( remove_query_arg( 'marketplace' ) ) ?>" <?php if ( ! isset( $_GET['marketplace'] ) ) { echo 'class="current"'; } ?>><?php _e( 'Manage Bundled Addons', 'sprout-invoices' ) ?></a> |</li> 
    15                     <li class="marketplace"><a href="<?php echo esc_url( add_query_arg( 'marketplace', 'view' ) ) ?>" <?php if ( isset( $_GET['marketplace'] ) ) { echo 'class="current"'; } ?>><?php _e( 'Marketplace', 'sprout-invoices' ) ?></a></li> 
     15                    <li class="marketplace"><a href="<?php echo esc_url( add_query_arg( 'marketplace', 'view' ) ) ?>" <?php if ( isset( $_GET['marketplace'] ) ) { echo 'class="current"'; } ?>><?php _e( 'Other Add-ons', 'sprout-invoices' ) ?></a></li> 
    1616                </ul> 
    1717            </div> 
    1818        <?php endif ?> 
    19         <?php printf( '<div class="upgrade_message clearfix"><p><strong>DISCOUNTS NOT SHOWN:</strong> Sprout Invoices <a href="%s">license holders</a> receive up to 50&percnt; off the price of any marketplace add-on.</p></div>', si_get_purchase_link() ); ?> 
     19        <?php printf( '<div class="upgrade_message clearfix"><p><strong>Exclusive Add-ons:</strong> The <a href="%1$s">pro version of Sprout Invoices</a> bundles a lot of add-ons. For a complete breakdown checkout <a href="%1$s">the pricing page</a>.</p></div>', si_get_purchase_link() ); ?> 
    2020        <?php do_action( 'si_settings_page_sub_heading_'.$page ); ?> 
    2121    </div> 
     
    2525            <div class="row"> 
    2626                <div class="products_grid"> 
    27                     <?php foreach ( $addons as $addon_id => $addon ) : 
    28                         ?> 
    29                         <article class="type-download <?php if ( $addon->bundled ) { echo 'bundled'; } ?>"> 
     27                    <?php foreach ( $addons as $addon_id => $addon ) : ?> 
     28                        <article class="type-download bundled <?php if ( $addon->biz_bundled ) { echo 'biz'; } ?>"> 
    3029                            <div class="section"> 
    3130                                <div class="pic"> 
    3231 
    33                                     <?php if ( in_array( $addon->id, array( 63999, 413528 ) ) ) : ?> 
    34                                         <span class="bundled_addon"><?php _e( 'Bundled w/ Business License Only', 'sprout-invoices' ) ?></span> 
    35                                     <?php elseif ( $addon->bundled ) : ?> 
    36                                         <span class="bundled_addon"><?php _e( 'Bundled Free w/ License', 'sprout-invoices' ) ?></span> 
     32                                    <?php if ( $addon->id === 44588 ) : ?> 
     33                                        <span class="bundled_addon"><?php _e( 'Exclusive w/ Corporate Only', 'sprout-invoices' ) ?></span> 
     34                                    <?php elseif ( $addon->biz_bundled ) : ?> 
     35                                        <span class="bundled_addon"><?php _e( 'Exclusive w/ Business and Corp', 'sprout-invoices' ) ?></span> 
     36                                    <?php elseif ( $addon->pro_bundled ) : ?> 
     37                                        <span class="bundled_addon"><?php _e( 'Bundled Free w/ All Pro Version', 'sprout-invoices' ) ?></span> 
    3738                                    <?php endif ?> 
    3839                                    <a href="<?php echo si_get_sa_link( $addon->url, 'add-ons' ) ?>"> 
    3940                                        <?php echo $addon->thumb; ?> 
    4041                                    </a> 
    41                                     <?php if ( ! in_array( $addon->id, array( 63999 ) ) ) :  ?> 
    42                                         <div class="download_purchase_link"> 
    43                                             <a href="<?php echo si_get_sa_link( $addon->purchase_url, 'add-ons' ) ?>" class="button"><span class="edd-add-to-cart-label"><?php echo $addon->price; ?>&nbsp;–&nbsp;<?php _e( 'Add to Cart', 'sprout-invoices' ) ?></span></a> 
    44                                         </div> 
    45                                     <?php endif ?> 
     42                                    <div class="download_purchase_link"> 
     43                                        <a href="<?php echo si_get_sa_link( $addon->url, 'add-ons' ) ?>" class="button"><span class="edd-add-to-cart-label"><?php _e( 'View Details', 'sprout-invoices' ) ?></span></a> 
     44                                    </div> 
    4645                                </div> 
    4746                                <div class="info"> 
     
    5049                                        <?php echo wp_kses( $addon->excerpt, wp_kses_allowed_html( 'post' ) ); ?> 
    5150                                    </div> 
    52                                     <a class="view-details" href="<?php echo si_get_sa_link( $addon->url, 'add-ons' ) ?>"><?php _e( 'View Details', 'sprout-invoices' ) ?></a> 
    5351                                </div> 
    5452                            </div> 
  • sprout-invoices/trunk/views/admin/addons/options-admin.php

    r1266169 r1782156  
    11<?php require ABSPATH . 'wp-admin/options-head.php'; // not a general options page, so it must be included here ?> 
    2 <?php  
    3     $page = ( !isset( $_GET['tab'] ) ) ? $page : self::APP_DOMAIN.'/'.$_GET['tab'] ; ?> 
     2<?php 
     3    $page = ( ! isset( $_GET['tab'] ) ) ? $page : self::APP_DOMAIN.'/'.$_GET['tab'] ; ?> 
    44<div id="<?php echo esc_attr( $page ); ?>" class="wrap"> 
    55    <h2 class="nav-tab-wrapper"> 
     
    88    <div class="clearfix"> 
    99        <ul class="subsubsub"> 
    10             <li class="manage"><a href="<?php echo esc_url( remove_query_arg( 'marketplace' ) ) ?>" <?php if ( !isset( $_GET['marketplace'] ) ) echo 'class="current"' ?>><?php _e( 'Manage Bundled Addons', 'sprout-invoices' ) ?></a> |</li> 
    11             <li class="marketplace"><a href="<?php echo esc_url( add_query_arg( 'marketplace', 'view' ) ) ?>" <?php if ( isset( $_GET['marketplace'] ) ) echo 'class="current"' ?>><?php _e( 'Marketplace', 'sprout-invoices' ) ?></a></li> 
     10            <li class="manage"><a href="<?php echo esc_url( remove_query_arg( 'marketplace' ) ) ?>" <?php if ( ! isset( $_GET['marketplace'] ) ) { echo 'class="current"'; } ?>><?php _e( 'Manage Bundled Addons', 'sprout-invoices' ) ?></a> |</li> 
     11            <li class="marketplace"><a href="<?php echo esc_url( add_query_arg( 'marketplace', 'view' ) ) ?>" <?php if ( isset( $_GET['marketplace'] ) ) { echo 'class="current"'; } ?>><?php _e( 'Other Add-ons', 'sprout-invoices' ) ?></a></li> 
    1212        </ul> 
    1313        <?php do_action( 'si_settings_page_sub_heading_'.$page ); ?> 
  • sprout-invoices/trunk/views/admin/dashboards/estimates.php

    r1492701 r1782156  
    8383                        array( 
    8484                            'meta_key' => '_expiration_date', 
    85                             'value' => array( 0, current_time( 'timestamp' ) ), 
     85                            'value' => array( 0, current_time( 'timestamp', true ) ), 
    8686                            'compare' => 'BETWEEN', 
    8787                            ), 
     
    9595                <?php foreach ( $estimates->posts as $estimate_id ) : ?> 
    9696                    <li><a href="<?php echo get_edit_post_link( $estimate_id ) ?>"><?php 
    97                         $expired_or_pending = ( si_get_estimate_expiration_date( $estimate_id ) > current_time( 'timestamp' ) ) ? __( 'Expired', 'sprout-invoices' ) : __( 'Pending', 'sprout-invoices' ); 
     97                        $expired_or_pending = ( si_get_estimate_expiration_date( $estimate_id ) > current_time( 'timestamp', true ) ) ? __( 'Expired', 'sprout-invoices' ) : __( 'Pending', 'sprout-invoices' ); 
    9898                        echo get_the_title( $estimate_id ) ?></a> &mdash; <?php printf( __( '%s: %s', $expired_or_pending, date_i18n( get_option( 'date_format' ), si_get_estimate_expiration_date( $estimate_id ) ) ) ) ?></li> 
    9999                <?php endforeach ?> 
  • sprout-invoices/trunk/views/admin/dashboards/invoices.php

    r1731821 r1782156  
    5353 
    5454        <?php 
    55             $invoices = SI_Invoice::get_overdue_invoices( apply_filters( 'si_dashboard_get_overdue_invoices_from', current_time( 'timestamp' ) - ( DAY_IN_SECONDS * 14 ) ), apply_filters( 'si_dashboard_get_overdue_invoices_to', current_time( 'timestamp' ) ) ); ?> 
     55            $invoices = SI_Invoice::get_overdue_invoices( apply_filters( 'si_dashboard_get_overdue_invoices_from', current_time( 'timestamp', true ) - ( DAY_IN_SECONDS * 14 ) ), apply_filters( 'si_dashboard_get_overdue_invoices_to', current_time( 'timestamp', true ) ) ); ?> 
    5656 
    5757        <?php if ( ! empty( $invoices ) ) : ?> 
  • sprout-invoices/trunk/views/admin/dashboards/premium/estimates.php

    r1492701 r1782156  
    8181                        array( 
    8282                            'meta_key' => '_expiration_date', 
    83                             'value' => array( 0, current_time( 'timestamp' ) ), 
     83                            'value' => array( 0, current_time( 'timestamp', true ) ), 
    8484                            'compare' => 'BETWEEN', 
    8585                            ), 
     
    9393                <?php foreach ( $estimates->posts as $estimate_id ) :  ?> 
    9494                    <li><a href="<?php echo get_edit_post_link( $estimate_id ) ?>"><?php 
    95                         $expired_or_pending = ( si_get_estimate_expiration_date( $estimate_id ) > current_time( 'timestamp' ) ) ? __( 'Expired', 'sprout-invoices' ) : __( 'Pending', 'sprout-invoices' ); 
     95                        $expired_or_pending = ( si_get_estimate_expiration_date( $estimate_id ) > current_time( 'timestamp', true ) ) ? __( 'Expired', 'sprout-invoices' ) : __( 'Pending', 'sprout-invoices' ); 
    9696                        echo get_the_title( $estimate_id ) ?></a> &mdash; <?php printf( '<b>%s<b/>: %s', $expired_or_pending, date_i18n( get_option( 'date_format' ), si_get_estimate_expiration_date( $estimate_id ) ) ) ?></li> 
    9797                <?php endforeach ?> 
  • sprout-invoices/trunk/views/admin/dashboards/premium/invoices.php

    r1731821 r1782156  
    6060 
    6161        <?php 
    62             $invoices = SI_Invoice::get_overdue_invoices( apply_filters( 'si_dashboard_get_overdue_invoices_from', current_time( 'timestamp' ) - ( DAY_IN_SECONDS * 14 ) ), apply_filters( 'si_dashboard_get_overdue_invoices_to', current_time( 'timestamp' ) ) ); ?> 
     62            $invoices = SI_Invoice::get_overdue_invoices( apply_filters( 'si_dashboard_get_overdue_invoices_from', current_time( 'timestamp', true ) - ( DAY_IN_SECONDS * 14 ) ), apply_filters( 'si_dashboard_get_overdue_invoices_to', current_time( 'timestamp', true ) ) ); ?> 
    6363 
    6464        <?php if ( ! empty( $invoices ) ) : ?> 
  • sprout-invoices/trunk/views/admin/sprout-apps-dashboard.php

    r1492701 r1782156  
    5050                        $addons = array_slice( $all_addons, 0, 6 ); ?> 
    5151                    <?php foreach ( $addons as $addon_id => $addon ) : ?> 
    52                         <article class="type-download <?php if ( $addon->bundled ) { echo 'bundled'; } ?>"> 
     52                        <article class="type-download bundled <?php if ( $addon->biz_bundled ) { echo 'biz'; } ?>"> 
    5353                            <div class="section"> 
    5454                                <div class="pic"> 
    5555 
    56                                     <?php if ( in_array( $addon->id, array( 63999, 413528 ) ) ) : ?> 
    57                                         <span class="bundled_addon"><?php _e( 'Bundled w/ Business License Only', 'sprout-invoices' ) ?></span> 
    58                                     <?php elseif ( $addon->bundled ) : ?> 
    59                                         <span class="bundled_addon"><?php _e( 'Bundled Free w/ License', 'sprout-invoices' ) ?></span> 
     56                                    <?php if ( $addon->id === 44588 ) : ?> 
     57                                        <span class="bundled_addon"><?php _e( 'Exclusive w/ Corporate Only', 'sprout-invoices' ) ?></span> 
     58                                    <?php elseif ( $addon->biz_bundled ) : ?> 
     59                                        <span class="bundled_addon"><?php _e( 'Exclusive w/ Business and Corp', 'sprout-invoices' ) ?></span> 
     60                                    <?php elseif ( $addon->pro_bundled ) : ?> 
     61                                        <span class="bundled_addon"><?php _e( 'Bundled Free w/ All Pro Version', 'sprout-invoices' ) ?></span> 
    6062                                    <?php endif ?> 
    6163                                    <a href="<?php echo si_get_sa_link( $addon->url, 'add-ons' ) ?>"> 
    6264                                        <?php echo $addon->thumb; ?> 
    6365                                    </a> 
    64                                     <?php if ( ! in_array( $addon->id, array( 63999 ) ) ) :  ?> 
    65                                         <div class="download_purchase_link"> 
    66                                             <a href="<?php echo si_get_sa_link( $addon->purchase_url, 'add-ons' ) ?>" class="button"><span class="edd-add-to-cart-label"><?php echo $addon->price; ?>&nbsp;–&nbsp;<?php _e( 'Add to Cart', 'sprout-invoices' ) ?></span></a> 
    67                                         </div> 
    68                                     <?php endif ?> 
     66                                    <div class="download_purchase_link"> 
     67                                        <a href="<?php echo si_get_sa_link( $addon->url, 'add-ons' ) ?>" class="button"><span class="edd-add-to-cart-label"><?php _e( 'View Details', 'sprout-invoices' ) ?></span></a> 
     68                                    </div> 
    6969                                </div> 
    7070                                <div class="info"> 
     
    7373                                        <?php echo wp_kses( $addon->excerpt, wp_kses_allowed_html( 'post' ) ); ?> 
    7474                                    </div> 
    75                                     <a class="view-details" href="<?php echo si_get_sa_link( $addon->url, 'add-ons' ) ?>"><?php _e( 'View Details', 'sprout-invoices' ) ?></a> 
    7675                                </div> 
    7776                            </div> 
  • sprout-invoices/trunk/views/templates/theme/default/attachments-info/thumbnails-pdf.php

    r1761162 r1782156  
    1010                    ?> 
    1111                <span> 
    12                     <a href="<?php echo wp_get_attachment_url( $media_id ) ?>"> 
     12                    <a href="<?php echo wp_get_attachment_url( $media_id ) ?>" download> 
    1313                        <img src="<?php echo esc_url_raw( $icon ) ?>" title="<?php echo get_the_title( $media_id ) ?>" class="doc_attachment attachment_type_<?php echo esc_attr( $filetype['ext'] ) ?>" style="width: 40px; height: auto;"> 
    1414                    </a> 
  • sprout-invoices/trunk/views/templates/theme/default/estimate/estimate.php

    r1761162 r1782156  
    132132            <div class="inner"> 
    133133                <?php 
    134                     $time_left = si_get_estimate_expiration_date() - current_time( 'timestamp' ); 
     134                    $time_left = si_get_estimate_expiration_date() - current_time( 'timestamp', true ); 
    135135                    $days_left = round( (($time_left / 24) / 60) / 60 ); 
    136136                        ?> 
  • sprout-invoices/trunk/views/templates/theme/default/functions.php

    r1748159 r1782156  
    6464add_filter( 'si_print_to_pdf_button', '_si_default_theme_print_to_pdf_button' ); 
    6565 
    66 function _si_signature_required_button( $button = '', $doc_id, $url ) { 
    67     $signed = ApproveMe_Controller::is_doc_agreement_signed( $doc_id ); 
     66function _si_signature_required_button( $button = '', $doc_id = 0, $url = '' ) { 
     67    $signed = false; 
     68    if ( class_exists( 'ApproveMe_Controller' ) ) { 
     69        $signed = ApproveMe_Controller::is_doc_agreement_signed( $doc_id ); 
     70    } elseif ( class_exists( 'eSignature_Controller' ) ) { 
     71        $signed = eSignature_Controller::doc_needs_sig( $doc_id ); 
     72    } 
    6873 
    6974    $new_button = ''; 
  • sprout-invoices/trunk/views/templates/theme/default/invoice/payment-options.php

    r1761162 r1782156  
    44         
    55        <?php 
    6             $time_left = si_get_invoice_due_date() - current_time( 'timestamp' ); 
     6            $time_left = si_get_invoice_due_date() - current_time( 'timestamp', true ); 
    77            $days_left = round( (($time_left / 24) / 60) / 60 ); 
    88                ?> 
Note: See TracChangeset for help on using the changeset viewer.