These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
1 | <?php |
||
2 | /* |
||
3 | * Plugin Name: WooCommerce Subscribe to All the Things - Sign up and Trial Addon |
||
4 | * Plugin URI: https://sebastiendumont.com |
||
5 | * Version: 1.0.0 Alpha |
||
6 | * Description: Add a sign up fee and free trial for each subscription scheme. Requires WooCommerce Subscribe to All the Things extension v1.1.1+. |
||
7 | * Author: Sebastien Dumont |
||
8 | * Author URI: https://sebastiendumont.com |
||
9 | * |
||
10 | * Text Domain: wc-satt-stt |
||
11 | * Domain Path: /languages/ |
||
12 | * |
||
13 | * Requires at least: 4.1 |
||
14 | * Tested up to: 4.5.2 |
||
15 | * |
||
16 | * Copyright: © 2016 Sebastien Dumont |
||
17 | * License: GNU General Public License v3.0 |
||
18 | * License URI: http://www.gnu.org/licenses/gpl-3.0.html |
||
19 | */ |
||
20 | if ( ! defined('ABSPATH') ) exit; // Exit if accessed directly. |
||
21 | |||
22 | if ( ! class_exists( 'WCSATT_STT' ) ) { |
||
23 | class WCSATT_STT { |
||
24 | |||
25 | /* Plugin version. */ |
||
26 | const VERSION = '1.0.0'; |
||
27 | |||
28 | /* Required WC version. */ |
||
29 | const REQ_WC_VERSION = '2.3.0'; |
||
30 | |||
31 | /* Required WCSATT version */ |
||
32 | const REQ_WCSATT_VERSION = '1.1.1'; |
||
33 | |||
34 | /* Text domain. */ |
||
35 | const TEXT_DOMAIN = 'wc-satt-stt'; |
||
36 | |||
37 | /** |
||
38 | * @var WCSATT_STT - the single instance of the class. |
||
39 | * |
||
40 | * @since 1.0.0 |
||
41 | */ |
||
42 | protected static $_instance = null; |
||
43 | |||
44 | /** |
||
45 | * Main WCSATT_STT Instance. |
||
46 | * |
||
47 | * Ensures only one instance of WCSATT_STT is loaded or can be loaded. |
||
48 | * |
||
49 | * @static |
||
50 | * @see WCSATT_STT() |
||
51 | * @return WCSATT_STT - Main instance |
||
52 | * @since 1.0.0 |
||
53 | */ |
||
54 | public static function instance() { |
||
55 | if ( is_null( self::$_instance ) ) { |
||
56 | self::$_instance = new self(); |
||
57 | } |
||
58 | return self::$_instance; |
||
59 | } |
||
60 | |||
61 | /** |
||
62 | * Cloning is forbidden. |
||
63 | * |
||
64 | * @since 1.0.0 |
||
65 | */ |
||
66 | public function __clone() { |
||
67 | _doing_it_wrong( __FUNCTION__, __( 'Foul!' ), '1.0.0' ); |
||
68 | } |
||
69 | |||
70 | /** |
||
71 | * Unserializing instances of this class is forbidden. |
||
72 | * |
||
73 | * @since 1.0.0 |
||
74 | */ |
||
75 | public function __wakeup() { |
||
76 | _doing_it_wrong( __FUNCTION__, __( 'Foul!' ), '1.0.0' ); |
||
77 | } |
||
78 | |||
79 | /** |
||
80 | * Load the plugin. |
||
81 | */ |
||
82 | public function __construct() { |
||
83 | add_action( 'plugins_loaded', array( $this, 'load_plugin' ) ); |
||
84 | add_action( 'init', array( $this, 'init_plugin' ) ); |
||
85 | add_action( 'admin_init', array( $this, 'admin_wcsatt_stt_product_meta' ) ); |
||
86 | add_filter( 'plugin_row_meta', array( $this, 'plugin_meta_links' ), 10, 4 ); |
||
87 | } |
||
88 | |||
89 | public function plugin_path() { |
||
90 | return untrailingslashit( plugin_dir_path( __FILE__ ) ); |
||
91 | } // END plugin_path() |
||
92 | |||
93 | /* |
||
94 | * Check requirements on activation. |
||
95 | */ |
||
96 | public function load_plugin() { |
||
97 | global $woocommerce; |
||
98 | |||
99 | // Check that the required WooCommerce is running. |
||
100 | if ( version_compare( $woocommerce->version, self::REQ_WC_VERSION ) < 0 ) { |
||
101 | add_action( 'admin_notices', array( $this, 'wcsatt_stt_wc_admin_notice' ) ); |
||
102 | return false; |
||
103 | } |
||
104 | |||
105 | // Checks that WooCommerce Subscribe All the Things is running or is less than the required version. |
||
106 | if ( ! class_exists( 'WCS_ATT' ) || version_compare( WCS_ATT::VERSION, self::REQ_WCSATT_VERSION ) < '1.1.1' ) { |
||
107 | add_action( 'admin_notices', array( $this, 'wcsatt_stt_admin_notice' ) ); |
||
108 | return false; |
||
109 | } |
||
110 | } // END load_plugin() |
||
111 | |||
112 | /** |
||
113 | * Display a warning message if minimum version of WooCommerce check fails. |
||
114 | * |
||
115 | * @return void |
||
116 | */ |
||
117 | public function wcsatt_stt_wc_admin_notice() { |
||
118 | echo '<div class="error"><p>' . sprintf( __( '%1$s requires at least %2$s v%3$s in order to function. Please upgrade %2$s.', 'wc-satt-stt' ), 'Sign up and Trial Options for WCSATT', 'WooCommerce', self::REQ_WC_VERSION ) . '</p></div>'; |
||
119 | } // END wcsatt_stt_wc_admin_notice() |
||
120 | |||
121 | /** |
||
122 | * Display a warning message if minimum version of WooCommerce Subscribe to All the Things check fails. |
||
123 | * |
||
124 | * @return void |
||
125 | */ |
||
126 | public function wcsatt_stt_admin_notice() { |
||
127 | echo '<div class="error"><p>' . sprintf( __( '%1$s requires at least %2$s v%3$s in order to function. Please upgrade %2$s.', 'wc-satt-stt' ), 'Sign up and Trial Options Addon', 'WooCommerce Subscribe to All the Things', self::REQ_WCSATT_VERSION ) . '</p></div>'; |
||
128 | } // END wcsatt_stt_admin_notice() |
||
129 | |||
130 | /** |
||
131 | * Initialize the plugin if ready. |
||
132 | * |
||
133 | * @return void |
||
134 | */ |
||
135 | public function init_plugin() { |
||
136 | // Load text domain. |
||
137 | load_plugin_textdomain( 'wc-satt-stt', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' ); |
||
138 | |||
139 | // Adds the sign up fee and trial data to the price html on the 'wcsatt_overridden_subscription_prices_product' filter. |
||
140 | add_filter( 'wcsatt_overridden_subscription_prices_product', array( $this, 'add_sub_scheme_data_price_html' ), 10, 3 ); |
||
141 | |||
142 | // Filters the suffix price html on the 'wcsatt_suffix_price_html' filter. |
||
143 | add_filter( 'wcsatt_suffix_price_html', array( $this, 'filter_suffix_price_html' ), 10, 1 ); |
||
144 | |||
145 | // Overrides the price of the subscription for sign up fee and/or trial on the 'woocommerce_add_cart_item' filter. |
||
146 | add_filter( 'woocommerce_add_cart_item', array( $this, 'add_cart_item' ), 15, 1 ); |
||
147 | } // END init_plugin() |
||
148 | |||
149 | /** |
||
150 | * Register the product meta data fields. |
||
151 | * |
||
152 | * @return void |
||
153 | */ |
||
154 | public function admin_wcsatt_stt_product_meta() { |
||
155 | // Subscription scheme options displayed on the 'wcsatt_subscription_scheme_content' action. |
||
156 | //add_action( 'wcsatt_subscription_scheme_content', array( $this, 'wcsatt_stt_fields' ), 15, 3 ); |
||
0 ignored issues
–
show
|
|||
157 | |||
158 | // Subscription scheme options displayed on the 'wcsatt_subscription_scheme_product_content' action. |
||
159 | add_action( 'wcsatt_subscription_scheme_product_content', array( $this, 'wcsatt_stt_fields' ), 15, 3 ); |
||
160 | |||
161 | // Filter the subscription scheme data to process the sign up and trial options on the ''wcsatt_subscription_scheme_process_scheme_data' filter. |
||
162 | add_filter( 'wcsatt_subscription_scheme_process_scheme_data', array( $this, 'wcsatt_stt_process_scheme_data' ), 10, 2 ); |
||
163 | } // END admin_wcsatt_stt_product_meta() |
||
164 | |||
165 | /** |
||
166 | * Show row meta on the plugin screen. |
||
167 | * |
||
168 | * @param mixed $links Plugin Row Meta |
||
169 | * @param mixed $file Plugin Base file |
||
170 | * @return array |
||
171 | */ |
||
172 | public function plugin_meta_links( $links, $file, $data, $status ) { |
||
173 | if ( $file == plugin_basename( __FILE__ ) ) { |
||
174 | $author1 = '<a href="' . $data[ 'AuthorURI' ] . '">' . $data[ 'Author' ] . '</a>'; |
||
175 | $links[ 1 ] = sprintf( __( 'By %s', WCSATT_STT::TEXT_DOMAIN ), $author1 ); |
||
176 | } |
||
177 | |||
178 | return $links; |
||
179 | } // END plugin_meta_links() |
||
180 | |||
181 | /** |
||
182 | * Subscriptions schemes admin metaboxes. |
||
183 | * |
||
184 | * @param array $values |
||
0 ignored issues
–
show
There is no parameter named
$values . Was it maybe removed?
This check looks for PHPDoc comments describing methods or function parameters that do not exist on the corresponding method or function. Consider the following example. The parameter /**
* @param array $germany
* @param array $island
* @param array $italy
*/
function finale($germany, $island) {
return "2:1";
}
The most likely cause is that the parameter was removed, but the annotation was not. ![]() |
|||
185 | * @return void |
||
186 | */ |
||
187 | public static function add_default_subscription_schemes_content( $defaults ) { |
||
188 | $new_defaults = array( |
||
189 | 'subscription_sign_up_fee' => '', |
||
190 | 'subscription_trial_length' => 0, |
||
191 | 'subscription_trial_period' => '' |
||
192 | ); |
||
193 | |||
194 | return array_merge( $new_defaults, $defaults ); |
||
195 | } // END add_default_subscription_schemes_content() |
||
196 | |||
197 | /** |
||
198 | * Adds the trial and sign up fields under the subscription section. |
||
199 | * |
||
200 | * @param int $index |
||
201 | * @param array $scheme_data |
||
202 | * @param int $post_id |
||
203 | * @return void |
||
204 | */ |
||
205 | public function wcsatt_stt_fields( $index, $scheme_data, $post_id ) { |
||
206 | if ( ! empty( $scheme_data ) ) { |
||
207 | $subscription_sign_up_fee = ! empty( $scheme_data[ 'subscription_sign_up_fee' ] ) ? $scheme_data[ 'subscription_sign_up_fee' ] : 'inherit'; |
||
208 | $subscription_trial_length = isset( $scheme_data[ 'subscription_trial_length' ] ) ? $scheme_data[ 'subscription_trial_length' ] : ''; |
||
209 | $subscription_trial_period = isset( $scheme_data[ 'subscription_trial_period' ] ) ? $scheme_data[ 'subscription_trial_period' ] : ''; |
||
210 | } else { |
||
211 | $subscription_sign_up_fee = ''; |
||
212 | $subscription_trial_length = 0; |
||
213 | $subscription_trial_period = ''; |
||
214 | } |
||
215 | |||
216 | // Sign-up Fee |
||
217 | woocommerce_wp_text_input( array( |
||
218 | 'id' => '_subscription_sign_up_fee', |
||
219 | 'class' => 'wc_input_subscription_intial_price', |
||
220 | // translators: %s is a currency symbol / code |
||
221 | 'label' => sprintf( __( 'Sign-up Fee (%s)', WCSATT_STT::TEXT_DOMAIN ), get_woocommerce_currency_symbol() ), |
||
222 | 'placeholder' => _x( 'e.g. 9.90', 'example price', WCSATT_STT::TEXT_DOMAIN ), |
||
223 | 'description' => __( 'Optionally include an amount to be charged at the outset of the subscription. The sign-up fee will be charged immediately, even if the product has a free trial or the payment dates are synced.', WCSATT_STT::TEXT_DOMAIN ), |
||
224 | 'desc_tip' => true, |
||
225 | 'type' => 'text', |
||
226 | 'custom_attributes' => array( |
||
227 | 'step' => 'any', |
||
228 | 'min' => '0', |
||
229 | ), |
||
230 | 'name' => 'wcsatt_schemes[' . $index . '][subscription_sign_up_fee]', |
||
231 | 'value' => $subscription_sign_up_fee |
||
232 | ) ); |
||
233 | |||
234 | // Trial Length |
||
235 | woocommerce_wp_text_input( array( |
||
236 | 'id' => '_subscription_trial_length', |
||
237 | 'class' => 'wc_input_subscription_trial_length', |
||
238 | 'label' => __( 'Free Trial', WCSATT_STT::TEXT_DOMAIN ), |
||
239 | 'name' => 'wcsatt_schemes[' . $index . '][subscription_trial_length]', |
||
240 | 'value' => $subscription_trial_length |
||
241 | ) ); |
||
242 | |||
243 | // Trial Period |
||
244 | woocommerce_wp_select( array( |
||
245 | 'id' => '_subscription_trial_period', |
||
246 | 'class' => 'wc_input_subscription_trial_period', |
||
247 | 'label' => __( 'Subscription Trial Period', WCSATT_STT::TEXT_DOMAIN ), |
||
248 | 'options' => wcs_get_available_time_periods(), |
||
249 | // translators: placeholder is trial period validation message if passed an invalid value (e.g. "Trial period can not exceed 4 weeks") |
||
250 | 'description' => sprintf( _x( 'An optional period of time to wait before charging the first recurring payment. Any sign up fee will still be charged at the outset of the subscription. %s', 'Trial period dropdown\'s description in pricing fields', WCSATT_STT::TEXT_DOMAIN ), self::get_trial_period_validation_message() ), |
||
0 ignored issues
–
show
The method
get_trial_period_validation_message() does not seem to exist on object<WCSATT_STT> .
This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces. This is most likely a typographical error or the method has been renamed. ![]() |
|||
251 | 'desc_tip' => true, |
||
252 | 'value' => WC_Subscriptions_Product::get_trial_period( $post_id ), // Explicitly set value in to ensure backward compatibility |
||
253 | 'name' => 'wcsatt_schemes[' . $index . '][subscription_trial_period]', |
||
254 | 'value' => $subscription_trial_period |
||
255 | ) ); |
||
256 | } // END wcsatt_stt_fields() |
||
257 | |||
258 | /** |
||
259 | * Filters the subscription scheme data to pass the |
||
260 | * sign up and trial options when saving. |
||
261 | * |
||
262 | * @param ini $posted_scheme |
||
263 | * @param string $product_type |
||
264 | * @return void |
||
265 | */ |
||
266 | public function wcsatt_stt_process_scheme_data( $posted_scheme, $product_type ) { |
||
267 | // Copy variable type fields. |
||
268 | if ( 'variable' == $product_type ) { |
||
269 | if ( isset( $posted_scheme[ 'subscription_sign_up_fee_variable' ] ) ) { |
||
270 | $posted_scheme[ 'subscription_sign_up_fee' ] = $posted_scheme[ 'subscription_sign_up_fee_variable' ]; |
||
271 | } |
||
272 | if ( isset( $posted_scheme[ 'subscription_trial_length_variable' ] ) ) { |
||
273 | $posted_scheme[ 'subscription_trial_length' ] = $posted_scheme[ 'subscription_trial_length_variable' ]; |
||
274 | } |
||
275 | if ( isset( $posted_scheme[ 'subscription_trial_period_variable' ] ) ) { |
||
276 | $posted_scheme[ 'subscription_trial_period' ] = $posted_scheme[ 'subscription_trial_period_variable']; |
||
277 | } |
||
278 | } |
||
279 | |||
280 | // Format subscription sign up fee. |
||
281 | View Code Duplication | if ( isset( $posted_scheme[ 'subscription_sign_up_fee' ] ) ) { |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
282 | $posted_scheme[ 'subscription_sign_up_fee' ] = ( $posted_scheme[ 'subscription_sign_up_fee' ] === '' ) ? '' : wc_format_decimal( $posted_scheme[ 'subscription_sign_up_fee' ] ); |
||
283 | } |
||
284 | |||
285 | // Format subscription trial length. |
||
286 | View Code Duplication | if ( isset( $posted_scheme[ 'subscription_trial_length' ] ) ) { |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
287 | $posted_scheme[ 'subscription_trial_length' ] = ( $posted_scheme[ 'subscription_trial_length' ] === '' ) ? '' : wc_format_decimal( $posted_scheme[ 'subscription_trial_length' ] ); |
||
288 | } |
||
289 | |||
290 | // Format subscription trial period. |
||
291 | $trial_periods = apply_filters( 'wcsatt_stt_trial_periods', array( 'day', 'week', 'month', 'year' ) ); |
||
292 | if ( isset( $posted_scheme[ 'subscription_trial_period' ] ) && in_array( $posted_scheme[ 'subscription_trial_period' ], $trial_periods ) ) { |
||
293 | $posted_scheme[ 'subscription_trial_period' ] = $posted_scheme[ 'subscription_trial_period' ]; |
||
294 | } |
||
295 | |||
296 | return $posted_scheme; |
||
297 | } // END wcsatt_stt_process_scheme_data() |
||
298 | |||
299 | /** |
||
300 | * Adds the additional subscription scheme data for products with attached subscription schemes. |
||
301 | * |
||
302 | * @param object $_product |
||
303 | * @param array $subscription_scheme |
||
304 | * @param WC_Product $product |
||
305 | * @return string |
||
306 | */ |
||
307 | public function add_sub_scheme_data_price_html( $_product, $subscription_scheme, $product ) { |
||
0 ignored issues
–
show
|
|||
308 | if ( isset( $subscription_scheme[ 'subscription_sign_up_fee' ] ) ) { |
||
309 | $_product->subscription_sign_up_fee = $subscription_scheme[ 'subscription_sign_up_fee' ]; |
||
310 | } |
||
311 | |||
312 | if ( isset( $subscription_scheme[ 'subscription_trial_length' ] ) ) { |
||
313 | $_product->subscription_trial_length = $subscription_scheme[ 'subscription_trial_length' ]; |
||
314 | } |
||
315 | |||
316 | if ( isset( $subscription_scheme[ 'subscription_trial_period' ] ) ) { |
||
317 | $_product->subscription_trial_period = $subscription_scheme[ 'subscription_trial_period' ]; |
||
318 | } |
||
319 | |||
320 | return $_product; |
||
321 | } |
||
322 | |||
323 | /** |
||
324 | * Filter the suffix price string. |
||
325 | * |
||
326 | * @param object $_product |
||
327 | * @param array $subscription_scheme |
||
328 | * @param WC_Product $product |
||
329 | * @return string |
||
330 | */ |
||
331 | public function filter_suffix_price_html( $_product, $subscription_scheme, $product ) { |
||
0 ignored issues
–
show
|
|||
332 | if ( isset( $_product->subscription_trial_length ) && 0 != $_product->subscription_trial_length ) { |
||
333 | $trial_string = wcs_get_subscription_trial_period_strings( $_product->subscription_trial_length, $_product->subscription_trial_period ); |
||
334 | // translators: 1$: subscription string (e.g. "$15 on March 15th every 3 years for 6 years"), 2$: trial length (e.g.: "with 4 months free trial") |
||
0 ignored issues
–
show
Unused Code
Comprehensibility
introduced
by
37% of this comment could be valid code. Did you maybe forget this after debugging?
Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it. The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production. This check looks for comments that seem to be mostly valid code and reports them. ![]() |
|||
335 | $subscription_string = sprintf( __( '%1$s with %2$s free trial', WCSATT_STT::TEXT_DOMAIN ), $subscription_string, $trial_string ); |
||
0 ignored issues
–
show
The variable
$subscription_string seems only to be defined at a later point. Did you maybe move this code here without moving the variable definition?
This error can happen if you refactor code and forget to move the variable initialization. Let’s take a look at a simple example: function someFunction() {
$x = 5;
echo $x;
}
The above code is perfectly fine. Now imagine that we re-order the statements: function someFunction() {
echo $x;
$x = 5;
}
In that case, ![]() |
|||
336 | } |
||
337 | |||
338 | $sign_up_fee = $_product->subscription_sign_up_fee; |
||
339 | |||
340 | if ( is_numeric( $sign_up_fee ) ) { |
||
341 | $sign_up_fee = wc_price( $sign_up_fee ); |
||
342 | } |
||
343 | |||
344 | if ( isset( $_product->subscription_sign_up_fee ) && $_product->subscription_sign_up_fee > 0 ) { |
||
345 | // translators: 1$: subscription string (e.g. "$15 on March 15th every 3 years for 6 years with 2 months free trial"), 2$: signup fee price (e.g. "and a $30 sign-up fee") |
||
346 | $subscription_string = sprintf( __( '%1$s and a %2$s sign-up fee', WCSATT_STT::TEXT_DOMAIN ), $subscription_string, $sign_up_fee ); |
||
0 ignored issues
–
show
The variable
$subscription_string does not seem to be defined for all execution paths leading up to this point.
If you define a variable conditionally, it can happen that it is not defined for all execution paths. Let’s take a look at an example: function myFunction($a) {
switch ($a) {
case 'foo':
$x = 1;
break;
case 'bar':
$x = 2;
break;
}
// $x is potentially undefined here.
echo $x;
}
In the above example, the variable $x is defined if you pass “foo” or “bar” as argument for $a. However, since the switch statement has no default case statement, if you pass any other value, the variable $x would be undefined. Available Fixes
![]() |
|||
347 | } |
||
348 | |||
349 | return $subscription_string; |
||
350 | } |
||
351 | |||
352 | /** |
||
353 | * Converts a cart item if it's a subscription with |
||
354 | * a trial subscription or/and has a sign-up fee. |
||
355 | * |
||
356 | * @param array $cart_item |
||
357 | * @return array |
||
358 | */ |
||
359 | public function add_cart_item( $cart_item ) { |
||
360 | $active_scheme = WCS_ATT_Schemes::get_active_subscription_scheme( $cart_item ); |
||
361 | |||
362 | if ( $active_scheme && $cart_item['data']->is_converted_to_sub == 'yes' ) { |
||
363 | |||
364 | $sign_up_fee = $this->get_item_signup_fee( $cart_item[ 'product_id' ], $active_scheme ); |
||
365 | $trial_length = $this->get_item_trial_length( $cart_item[ 'product_id' ], $active_scheme ); |
||
366 | $trial_period = $this->get_item_trial_period( $cart_item[ 'product_id' ], $active_scheme ); |
||
367 | |||
368 | // Subscription Price |
||
369 | $price = $cart_item['data']->subscription_price; |
||
370 | |||
371 | // Is there a sign up fee? |
||
372 | $sign_up_fee = ! empty( $sign_up_fee ) ? $sign_up_fee : ''; |
||
373 | |||
374 | // If a trial length is more than zero then re-adjust the price. |
||
375 | if ( $trial_length > 0 ) { |
||
376 | $cart_item['data']->price = $sign_up_fee; |
||
377 | $cart_item['data']->subscription_price = $sign_up_fee; |
||
378 | $cart_item['data']->sale_price = $sign_up_fee; |
||
379 | $cart_item['data']->regular_price = $sign_up_fee; |
||
380 | $cart_item['data']->initial_amount = $sign_up_fee; |
||
381 | $cart_item['data']->subscription_sign_up_fee = $sign_up_fee; |
||
382 | $cart_item['data']->subscription_trial_length = $trial_length; |
||
383 | $cart_item['data']->subscription_trial_period = $trial_period; |
||
384 | } else { |
||
385 | $cart_item['data']->price = $price + $sign_up_fee; |
||
386 | $cart_item['data']->subscription_price = $price + $sign_up_fee; |
||
387 | $cart_item['data']->sale_price = $price + $sign_up_fee; |
||
388 | $cart_item['data']->regular_price = $price + $sign_up_fee; |
||
389 | $cart_item['data']->initial_amount = $price + $sign_up_fee; |
||
390 | $cart_item['data']->subscription_sign_up_fee = $sign_up_fee; |
||
391 | $cart_item['data']->subscription_trial_length = 0; |
||
392 | $cart_item['data']->subscription_trial_period = ''; |
||
393 | } |
||
394 | |||
395 | } |
||
396 | |||
397 | return $cart_item; |
||
398 | } // END add_cart_item() |
||
399 | |||
400 | /** |
||
401 | * Get the item signup fee from the subscription scheme. |
||
402 | * |
||
403 | * @param int $product_id |
||
404 | * @param int $scheme_id |
||
405 | * @return int |
||
406 | */ |
||
407 | public function get_item_signup_fee( $product_id, $scheme_id ) { |
||
408 | $product_schemes = get_post_meta( $product_id, '_wcsatt_schemes', true ); |
||
409 | $thescheme = $product_schemes[$scheme_id]; |
||
410 | |||
411 | return $thescheme['subscription_sign_up_fee']; |
||
412 | } // END get_item_signup_fee() |
||
413 | |||
414 | /** |
||
415 | * Get the item trial length from the subscription scheme. |
||
416 | * |
||
417 | * @param int $product_id |
||
418 | * @param int $scheme_id |
||
419 | * @return int |
||
420 | */ |
||
421 | public function get_item_trial_length( $product_id, $scheme_id ) { |
||
422 | $product_schemes = get_post_meta( $product_id, '_wcsatt_schemes', true ); |
||
423 | $thescheme = $product_schemes[$scheme_id]; |
||
424 | |||
425 | return $thescheme['subscription_trial_length']; |
||
426 | } // END get_item_trial_length() |
||
427 | |||
428 | /** |
||
429 | * Get the item trial period from the subscription scheme. |
||
430 | * |
||
431 | * @param int $product_id |
||
432 | * @param int $scheme_id |
||
433 | * @return string |
||
434 | */ |
||
435 | public function get_item_trial_period( $product_id, $scheme_id ) { |
||
436 | $product_schemes = get_post_meta( $product_id, '_wcsatt_schemes', true ); |
||
437 | $thescheme = $product_schemes[$scheme_id]; |
||
438 | |||
439 | return $thescheme['subscription_trial_period']; |
||
440 | } // END get_item_trial_period() |
||
441 | |||
442 | } // END class |
||
443 | |||
444 | } // END if class exists |
||
445 | |||
446 | return WCSATT_STT::instance(); |
Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.
The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.
This check looks for comments that seem to be mostly valid code and reports them.