@@ -33,6 +33,14 @@ class Order extends Generator {
3333 */
3434 const SECOND_REFUND_MAX_DAYS = 30 ;
3535
36+ /**
37+ * Refund type constants for memory-efficient batch operations.
38+ */
39+ const REFUND_TYPE_NONE = 0 ;
40+ const REFUND_TYPE_FULL = 1 ;
41+ const REFUND_TYPE_PARTIAL = 2 ;
42+ const REFUND_TYPE_MULTI = 3 ;
43+
3644 /**
3745 * Pre-generated coupon flags for exact ratio distribution in batch mode.
3846 * Each element is a boolean: true = apply coupon, false = skip.
@@ -43,7 +51,7 @@ class Order extends Generator {
4351
4452 /**
4553 * Pre-generated refund flags for exact ratio distribution in batch mode.
46- * Each element is a string: 'none', 'full', 'partial', or 'multi' .
54+ * Each element is an integer constant: REFUND_TYPE_NONE, REFUND_TYPE_FULL, etc .
4755 *
4856 * @var array|null
4957 */
@@ -185,7 +193,7 @@ public static function generate( $save = true, $assoc_args = array() ) {
185193
186194 // Handle --refund-ratio parameter for completed orders
187195 if ( isset ( $ assoc_args ['refund-ratio ' ] ) && 'completed ' === $ status ) {
188- $ refund_type = ' none ' ;
196+ $ refund_type = self :: REFUND_TYPE_NONE ;
189197
190198 // Use exact ratio flag if in batch mode
191199 if ( null !== self ::$ batch_refund_flags && ! empty ( self ::$ batch_refund_flags ) ) {
@@ -201,25 +209,25 @@ public static function generate( $save = true, $assoc_args = array() ) {
201209
202210 if ( $ refund_ratio >= 1.0 ) {
203211 // Always refund if ratio is 1.0 or higher
204- $ refund_type = ' full ' ;
212+ $ refund_type = self :: REFUND_TYPE_FULL ;
205213 } elseif ( $ refund_ratio > 0 && wp_rand ( 1 , 100 ) <= ( $ refund_ratio * 100 ) ) {
206214 // Use random chance for ratios between 0 and 1
207215 // Split evenly between full and partial
208- $ refund_type = (bool ) wp_rand ( 0 , 1 ) ? ' full ' : ' partial ' ;
216+ $ refund_type = (bool ) wp_rand ( 0 , 1 ) ? self :: REFUND_TYPE_FULL : self :: REFUND_TYPE_PARTIAL ;
209217
210218 // 25% chance for multi-partial
211- if ( ' partial ' === $ refund_type && wp_rand ( 1 , 100 ) <= self ::SECOND_REFUND_PROBABILITY ) {
212- $ refund_type = ' multi ' ;
219+ if ( self :: REFUND_TYPE_PARTIAL === $ refund_type && wp_rand ( 1 , 100 ) <= self ::SECOND_REFUND_PROBABILITY ) {
220+ $ refund_type = self :: REFUND_TYPE_MULTI ;
213221 }
214222 }
215223 }
216224
217225 // Process refund based on type
218- if ( ' full ' === $ refund_type ) {
226+ if ( self :: REFUND_TYPE_FULL === $ refund_type ) {
219227 self ::create_refund ( $ order );
220- } elseif ( ' partial ' === $ refund_type ) {
228+ } elseif ( self :: REFUND_TYPE_PARTIAL === $ refund_type ) {
221229 self ::create_refund ( $ order , true );
222- } elseif ( ' multi ' === $ refund_type ) {
230+ } elseif ( self :: REFUND_TYPE_MULTI === $ refund_type ) {
223231 $ first_refund = self ::create_refund ( $ order , true );
224232 if ( $ first_refund ) {
225233 self ::create_refund ( $ order , true , $ first_refund );
@@ -820,12 +828,12 @@ protected static function init_ratio_flags( $count, $args ) {
820828 $ num_multi = $ total_refunds - $ num_full - $ num_partial ; // Remainder goes to multi
821829 $ num_none = $ count - $ total_refunds ;
822830
823- // Create array with exact counts
831+ // Create array with exact counts using integer constants for memory efficiency
824832 self ::$ batch_refund_flags = array_merge (
825- array_fill ( 0 , $ num_full , ' full ' ),
826- array_fill ( 0 , $ num_partial , ' partial ' ),
827- array_fill ( 0 , $ num_multi , ' multi ' ),
828- array_fill ( 0 , $ num_none , ' none ' )
833+ array_fill ( 0 , $ num_full , self :: REFUND_TYPE_FULL ),
834+ array_fill ( 0 , $ num_partial , self :: REFUND_TYPE_PARTIAL ),
835+ array_fill ( 0 , $ num_multi , self :: REFUND_TYPE_MULTI ),
836+ array_fill ( 0 , $ num_none , self :: REFUND_TYPE_NONE )
829837 );
830838
831839 // Shuffle for randomness
0 commit comments