wpgenie

randomly assign tickets with limited number of letters

Jan 24th, 2022 (edited)
366
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.18 KB | None | 0 0
  1. /*
  2.  
  3. use only 5 letters
  4.  
  5. */
  6. add_action( 'template_redirect', 'custom_use_alphabet', 100 );
  7. add_action( 'woocommerce_product_options_lottery', 'custom_use_alphabet', 100 );
  8. add_action( 'export_lottery_history_with_extra_info','custom_use_alphabet', 100 );
  9.  
  10. function custom_use_alphabet( $post_id = false ){
  11.  
  12.     if( is_product() || is_admin() ){
  13.         $post_id = !$post_id ? get_the_ID() : $post_id;
  14.         if( get_post_meta( $post_id , '_lottery_pick_number_alphabet', true ) === 'yes' ){
  15.             global $wc_lottery_pn;
  16.             remove_filter( 'ticket_number_display_html', array( $wc_lottery_pn->plugin_public, 'change_ticket_numbers_to_alphabet'), 10 );
  17.             remove_filter( 'ticket_number_tab_display_html', array( $wc_lottery_pn->plugin_public, 'change_ticket_tab_to_alphabet'), 10 );
  18.             add_filter( 'ticket_number_display_html', 'custom_change_ticket_numbers_to_alphabet', 10, 2 );
  19.             //add_filter( 'ticket_number_tab_display_html', 'custom_change_ticket_numbers_to_alphabet', 10, 2 );
  20.         }
  21.     }
  22. }
  23.  
  24.  
  25. function custom_change_ticket_numbers_to_alphabet( $ticket_number, $product ){
  26.  
  27.     $_ticket_number = $ticket_number;
  28.     if( ! $product || !$ticket_number ) {
  29.         return $ticket_number;
  30.     }
  31.     $max_tickets = intval( $product->get_max_tickets() );
  32.     $tabnumbers = get_post_meta( $product->get_id() , '_lottery_pick_number_tab_qty', true );
  33.     $tabnumbers = $tabnumbers ? intval( $tabnumbers )  : 100;
  34.     if ( $max_tickets > $tabnumbers * 5 ){
  35.         $tabnumbers = ceil ( $max_tickets / 5 );
  36.     }
  37.     $tabnumbers == apply_filters( 'lottery_numbers_to_alphabet_number_per_letter', $tabnumbers );
  38.     $alphabet = range('A', 'E');
  39.     $in =  ( intval(( $ticket_number - 1 ) /$tabnumbers ) );
  40.     if($in > 0 ){
  41.         $ticket_number = $ticket_number - ( $tabnumbers * $in );
  42.     }
  43.     $is_100 = $ticket_number % 100;
  44.     if ($ticket_number === '00' &&  $is_100 === 0  ){
  45.         $ticket_number = '100';
  46.     }
  47.     $ticket_number = ltrim($ticket_number, 0 );
  48.     if( isset( $alphabet[$in] ) ){
  49.         $ticket_number = $alphabet[$in].$ticket_number;
  50.     } else {
  51.         return $_ticket_number;
  52.     }
  53.  
  54.     return $ticket_number;
  55. }
  56.  
Add Comment
Please, Sign In to add comment