verygoodplugins

Untitled

May 28th, 2020
353
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 6.60 KB | None | 0 0
  1. <?php
  2.  
  3. if ( ! defined( 'ABSPATH' ) ) {
  4.     exit; // Exit if accessed directly
  5. }
  6.  
  7.  
  8. class WPF_EDD_Software_Licensing extends WPF_Integrations_Base {
  9.  
  10.     /**
  11.      * Gets things started
  12.      *
  13.      * @access  public
  14.      * @return  void
  15.      */
  16.  
  17.     public function init() {
  18.  
  19.         $this->slug = 'edd-software-licensing';
  20.  
  21.         add_action( 'edd_sl_store_license', array( $this, 'store_license' ), 10, 4 );
  22.         add_action( 'edd_sl_license_upgraded', array( $this, 'license_upgraded' ), 10, 2 );
  23.         add_action( 'edd_sl_post_set_status', array( $this, 'post_set_status' ), 10, 2 );
  24.         add_action( 'edd_sl_post_set_expiration', array( $this, 'post_set_expiration' ), 10, 2 );
  25.  
  26.         // Settings
  27.         add_action( 'wpf_edd_meta_box_inner', array( $this, 'meta_box' ), 10, 2 );
  28.         add_filter( 'wpf_meta_field_groups', array( $this, 'add_meta_field_group' ) );
  29.         add_filter( 'wpf_meta_fields', array( $this, 'prepare_meta_fields' ) );
  30.  
  31.         // Batch operations
  32.         add_filter( 'wpf_export_options', array( $this, 'export_options' ) );
  33.         add_action( 'wpf_batch_edd_sl_init', array( $this, 'batch_init' ) );
  34.         add_action( 'wpf_batch_edd_sl', array( $this, 'batch_step' ) );
  35.  
  36.     }
  37.  
  38.     /**
  39.      * Sync license data when a license is added
  40.      *
  41.      * @access public
  42.      * @return void
  43.      */
  44.  
  45.     public function store_license( $license_id, $download_id, $payment_id, $type ) {
  46.  
  47.         $license = edd_software_licensing()->get_license( $license_id );
  48.  
  49.         $update_data = array(
  50.             'edd_sl_license_status'     => $license->status,
  51.             'edd_sl_license_expiration' => $license->expiration,
  52.         );
  53.  
  54.         wp_fusion()->user->push_user_meta( $license->user_id, $update_data );
  55.  
  56.     }
  57.  
  58.     /**
  59.      * Update tags when a license is upgraded
  60.      *
  61.      * @access public
  62.      * @return void
  63.      */
  64.  
  65.     public function license_upgraded( $license_id, $args ) {
  66.  
  67.         $license = edd_software_licensing()->get_license( $license_id );
  68.  
  69.         $settings = get_post_meta( $args['old_download_id'], 'wpf-settings-edd', true );
  70.  
  71.         if ( ! empty( $settings ) && isset( $settings['apply_tags_price'] ) ) {
  72.  
  73.             if ( ! empty( $settings['apply_tags_price'][ $args['old_price_id'] ] ) ) {
  74.  
  75.                 wp_fusion()->user->remove_tags( $settings['apply_tags_price'][ $args['old_price_id'] ], $license->user_id );
  76.  
  77.             }
  78.         }
  79.  
  80.     }
  81.  
  82.     /**
  83.      * Sync license status
  84.      *
  85.      * @access public
  86.      * @return void
  87.      */
  88.  
  89.     public function post_set_status( $license_id, $status ) {
  90.  
  91.         $license = edd_software_licensing()->get_license( $license_id );
  92.  
  93.         wp_fusion()->user->push_user_meta( $license->user_id, array( 'edd_sl_license_status' => $status ) );
  94.  
  95.         // Expired license tagging
  96.         if ( 'expired' == $status ) {
  97.  
  98.             $settings = get_post_meta( $license->download_id, 'wpf-settings-edd', true );
  99.  
  100.             if ( ! empty( $settings ) && ! empty( $settings['apply_tags_license_expired'] ) ) {
  101.  
  102.                 wp_fusion()->user->apply_tags( $settings['apply_tags_license_expired'], $license->user_id );
  103.  
  104.             }
  105.         }
  106.  
  107.     }
  108.  
  109.     /**
  110.      * Sync license expiration
  111.      *
  112.      * @access public
  113.      * @return void
  114.      */
  115.  
  116.     public function post_set_expiration( $license_id, $expiration ) {
  117.  
  118.         $license = edd_software_licensing()->get_license( $license_id );
  119.  
  120.         wp_fusion()->user->push_user_meta( $license->user_id, array( 'edd_sl_license_expiration' => $expiration ) );
  121.  
  122.     }
  123.  
  124.     /**
  125.      * Output meta box settings
  126.      *
  127.      * @access public
  128.      * @return void
  129.      */
  130.  
  131.     public function meta_box( $post, $settings ) {
  132.  
  133.         if ( ! isset( $settings['apply_tags_license_expired'] ) ) {
  134.             $settings['apply_tags_license_expired'] = array();
  135.         }
  136.  
  137.         echo '<th scope="row"><label for="apply_tags">License Expired:</label></th>';
  138.         echo '<td>';
  139.  
  140.         $args = array(
  141.             'setting'   => $settings['apply_tags_license_expired'],
  142.             'meta_name' => 'wpf-settings-edd',
  143.             'field_id'  => 'apply_tags_license_expired',
  144.         );
  145.  
  146.         wpf_render_tag_multiselect( $args );
  147.  
  148.         echo '<span class="description">' . sprintf( __( 'Apply these tags in %s when the license expires', 'wp-fusion' ), wp_fusion()->crm->name ) . '</span>';
  149.         echo '</td>';
  150.  
  151.         echo '</tr>';
  152.  
  153.     }
  154.  
  155.     /**
  156.      * Adds EDD field group to meta fields list
  157.      *
  158.      * @access  public
  159.      * @return  array Field groups
  160.      */
  161.  
  162.     public function add_meta_field_group( $field_groups ) {
  163.  
  164.         $field_groups['eddsl'] = array(
  165.             'title'  => 'EDD Software Licensing',
  166.             'fields' => array(),
  167.         );
  168.  
  169.         return $field_groups;
  170.  
  171.     }
  172.  
  173.  
  174.     /**
  175.      * Adds EDD meta fields to WPF contact fields list
  176.      *
  177.      * @access  public
  178.      * @return  array Meta Fields
  179.      */
  180.  
  181.     public function prepare_meta_fields( $meta_fields ) {
  182.  
  183.         $meta_fields['edd_sl_license_status'] = array(
  184.             'label' => 'License Status',
  185.             'type'  => 'text',
  186.             'group' => 'eddsl',
  187.         );
  188.  
  189.         $meta_fields['edd_sl_license_expiration'] = array(
  190.             'label' => 'License Expiration',
  191.             'type'  => 'date',
  192.             'group' => 'eddsl',
  193.         );
  194.  
  195.         return $meta_fields;
  196.  
  197.     }
  198.  
  199.  
  200.  
  201.     /**
  202.      * //
  203.      * // BATCH TOOLS
  204.      * //
  205.      **/
  206.  
  207.     /**
  208.      * Adds EDD Licenses option to available export options
  209.      *
  210.      * @access public
  211.      * @return array Options
  212.      */
  213.  
  214.     public function export_options( $options ) {
  215.  
  216.         $options['edd_sl'] = array(
  217.             'label'   => 'EDD Software Licensing statuses',
  218.             'title'   => 'Licenses',
  219.             'tooltip' => sprintf( __( 'Syncs license statuses and expiration dates to %s, and tags any customers with expired licenses', 'wp-fusion' ), wp_fusion()->crm->name ),
  220.         );
  221.  
  222.         return $options;
  223.  
  224.     }
  225.  
  226.     /**
  227.      * Counts total number of licenses to be processed
  228.      *
  229.      * @access public
  230.      * @return array License IDs
  231.      */
  232.  
  233.     public function batch_init() {
  234.  
  235.         $args = array(
  236.             'number' => - 1,
  237.             'fields' => 'ids',
  238.         );
  239.  
  240.         $licenses = edd_software_licensing()->licenses_db->get_licenses( $args );
  241.  
  242.         wpf_log( 'info', 0, 'Beginning <strong>EDD Licenses</strong> batch operation on ' . count( $licenses ) . ' licenses', array( 'source' => 'batch-process' ) );
  243.  
  244.         return $licenses;
  245.  
  246.     }
  247.  
  248.     /**
  249.      * Processes licence actions in steps
  250.      *
  251.      * @access public
  252.      * @return void
  253.      */
  254.  
  255.     public function batch_step( $license_id ) {
  256.  
  257.         $license = edd_software_licensing()->get_license( $license_id );
  258.  
  259.         $update_data = array(
  260.             'edd_sl_license_status'     => $license->status,
  261.             'edd_sl_license_expiration' => $license->expiration,
  262.         );
  263.  
  264.         wp_fusion()->user->push_user_meta( $license->user_id, $update_data );
  265.  
  266.         // Expired license tagging
  267.         if ( 'expired' == $license->status ) {
  268.  
  269.             $settings = get_post_meta( $license->download_id, 'wpf-settings-edd', true );
  270.  
  271.             if ( ! empty( $settings ) && ! empty( $settings['apply_tags_license_expired'] ) ) {
  272.  
  273.                 wp_fusion()->user->apply_tags( $settings['apply_tags_license_expired'], $license->user_id );
  274.  
  275.             }
  276.         }
  277.  
  278.     }
  279.  
  280.  
  281. }
  282.  
  283. new WPF_EDD_Software_Licensing();
Add Comment
Please, Sign In to add comment