PATH:
home
/
letacommog
/
entrepro
/
wp-content
/
plugins
/
rh-frontend
/
includes
<?php if ( !defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly } /** * Register the custom product type after init */ function register_package_product_type() { require plugin_dir_path( __FILE__ ) . 'class-wpfepp-wc-package.php'; } add_action( 'init', 'register_package_product_type' ); /** * Add to product type drop down. */ function add_package_product( $types ){ $types[ 'wpfepp_package' ] = __( 'Paid Submit Package', 'wpfepp-plugin' ); return $types; } add_filter( 'product_type_selector', 'add_package_product' ); /** * Show pricing fields for post_package product. */ function post_package_custom_js() { if ( 'product' !== get_post_type() ) return; $submit_package = 0; if( isset( $_GET['post'] ) ) { $term_list = wp_get_object_terms($_GET['post'], 'product_type'); if( $term_list[0] == 'wpfepp_package' ) $submit_package = 1; } ?> <script type='text/javascript'> if( <?php echo $submit_package; ?> == 1 ) { jQuery( "#product-type option[value='simple']" ).removeAttr('selected'); jQuery( "#product-type option[value='wpfepp_package']" ).attr('selected', 'selected'); } jQuery( 'select#product-type' ).change( function () { var select_val = jQuery( this ).val(); if ( 'wpfepp_package' === select_val ) { jQuery('.type_box label[for="_virtual"]').addClass('show_if_wpfepp_package').show(); jQuery("input[name='_virtual']").attr("checked", true); jQuery("input[name='_virtual']").prop({disabled: true}); jQuery( '.options_group.pricing' ).addClass( 'show_if_wpfepp_package' ).show(); } jQuery( document.body ).trigger( 'woocommerce-product-type-change', select_val, jQuery( this ) ); }).change(); </script> <?php } add_action( 'admin_footer', 'post_package_custom_js' ); /** * Add a custom product tab. */ function custom_product_tabs( $tabs) { $tabs['wpfepp_package'] = array( 'label' => __( 'Package Options', 'wpfepp-plugin' ), 'target' => 'package_options', 'class' => array( 'attribute_options', 'show_if_wpfepp_package' ), ); return $tabs; } add_filter( 'woocommerce_product_data_tabs', 'custom_product_tabs' ); /** * Contents of the Package options product tab. */ function package_options_product_tab_content() { global $woocommerce, $post; ?><div id='package_options' class='panel woocommerce_options_panel'><?php ?><div class='options_group'><?php woocommerce_wp_text_input( array( 'id' => '_number_post_package', 'label' => __( "Number of posts", "wpfepp-plugin" ), 'desc_tip' => 'true', 'description' => __( "Enter the number of posts that owns the package.", "wpfepp-plugin" ), 'type' => 'number', 'class' => 'short', 'custom_attributes' => array( 'step' => '1', 'min' => '1' ) ) ); woocommerce_wp_text_input( array( 'id' => '_expire_post_package', 'label' => __( "Period of days", "wpfepp-plugin" ), 'desc_tip' => 'true', 'description' => __( "E.g. 30, 45...", "wpfepp-plugin" ), 'type' => 'number', 'class' => 'short', 'custom_attributes' => array( 'step' => '1', 'min' => '0' ) ) ); woocommerce_wp_text_input( array( 'id' => '_form_id_package', 'label' => __( "Paid Form ID", "wpfepp-plugin" ), 'desc_tip' => 'true', 'description' => __( "Enter the form ID that owns the package.", "wpfepp-plugin" ), 'type' => 'number', 'class' => 'short', 'custom_attributes' => array( 'step' => '1', 'min' => '1' ) ) ); woocommerce_wp_text_input( array( 'id' => '_posting_page_url', 'label' => __( 'Posting Page URL', 'wpfepp-plugin' ), 'placeholder' => 'http://', 'desc_tip' => 'true', 'description' => __( 'Enter the page URL where user can post articles / products after purchase.', 'wpfepp-plugin' ) ) ); ?></div> </div><?php } add_action( 'woocommerce_product_data_panels', 'package_options_product_tab_content' ); /** * Save the Package option fields. */ function save_package_option_field( $post_id ) { update_post_meta( $post_id, '_virtual', 'yes' ); if ( isset( $_POST['_number_post_package'] ) ) { update_post_meta( $post_id, '_number_post_package', sanitize_text_field( $_POST['_number_post_package'] ) ); } if ( isset( $_POST['_expire_post_package'] ) ) { update_post_meta( $post_id, '_expire_post_package', sanitize_text_field( $_POST['_expire_post_package'] ) ); } if ( isset( $_POST['_form_id_package'] ) ) { update_post_meta( $post_id, '_form_id_package', sanitize_text_field( $_POST['_form_id_package'] ) ); } if ( isset( $_POST['_posting_page_url'] ) ) { update_post_meta( $post_id, '_posting_page_url', esc_url( $_POST['_posting_page_url'], array( 'http', 'https' ) ) ); } } add_action( 'woocommerce_process_product_meta_wpfepp_package', 'save_package_option_field' ); /** * Hides Attributes data panel. */ function hide_attributes_data_panel( $tabs) { $tabs['attribute']['class'][] = 'hide_if_wpfepp_package'; $tabs['shipping']['class'][] = 'hide_if_wpfepp_package'; return $tabs; } add_filter( 'woocommerce_product_data_tabs', 'hide_attributes_data_panel', 10, 1 ); /** * Single Package Page - Add to cart template */ function wpfepp_package_add_to_cart() { wc_get_template( 'single-product/add-to-cart/simple.php' ); } add_action( 'woocommerce_wpfepp_package_add_to_cart', 'wpfepp_package_add_to_cart' ); /** * Adds to usermeta a quantaty of purchased posts and final date from user order */ function add_user_order_package( $order_id, $status_from, $status_to ) { if ( $status_to != 'completed' ) return; $order = new WC_Order( $order_id ); if ( empty( $order->get_items() ) ) return; $_product_ids = $_qty = $number_post_package_array = $expire_post_package_array = array(); $customer_id = $order->get_customer_id(); $completed_timestamp = strtotime( $order->get_date_completed() ); $number_post_package = $expire_post_package = 0; foreach ( $order->get_items() as $item ) { $_product_ids[] = $item->get_product_id(); $_qty[] = $item->get_quantity(); } $_product_qty = array_combine( $_product_ids, $_qty ); foreach( $_product_qty as $product_id => $qty ) { $paid_form_id = get_post_meta( $product_id, '_form_id_package', true ); if ( empty( $paid_form_id ) OR $paid_form_id <= '0' ) continue; if ( !isset( $number_post_package_array[$paid_form_id] ) ){ $number_post_package_array[$paid_form_id] = ''; } if ( !isset( $expire_post_package_array[$paid_form_id] ) ){ $expire_post_package_array[$paid_form_id] = ''; } $get_number_post_package = get_post_meta( $product_id, '_number_post_package', true ); if ( !empty( $get_number_post_package ) && $qty >= 1 ) { $get_number_post_package = $get_number_post_package * $qty; $number_post_package_array[$paid_form_id] += $get_number_post_package; } $get_expire_post_package = get_post_meta( $product_id, '_expire_post_package', true ); if ( !empty( $get_expire_post_package ) && $qty >= 1 ) { $expire_post_package_secs = $get_expire_post_package * $qty * 86400; $expire_post_package_array[$paid_form_id] += $expire_post_package_secs; } } foreach ( $number_post_package_array as $paid_form_id => $number_post_package ) { $user_numb_post_meta = '_numb_post_package_'. $paid_form_id; $current_number_post_package = get_user_meta( $customer_id, $user_numb_post_meta, true ); if ( !empty( $current_number_post_package ) ) { $number_post_package += $current_number_post_package; } $number_post_package = apply_filters( 'wpfepp_add_number_credit_package', $number_post_package, $customer_id, $order_id, $paid_form_id ); update_user_meta( $customer_id, $user_numb_post_meta, $number_post_package ); } foreach ( $expire_post_package_array as $paid_form_id => $expire_post_package ) { $user_post_package_meta = '_exp_post_package_'. $paid_form_id; $current_expire_post_package = get_user_meta( $customer_id, $user_post_package_meta, true ); if ( !empty( $current_expire_post_package ) ) { $expire_post_package += $current_expire_post_package; } else { $expire_post_package += $completed_timestamp; } $expire_post_package = apply_filters( 'wpfepp_add_expire_credit_package', $expire_post_package, $customer_id, $order_id, $paid_form_id ); update_user_meta( $customer_id, $user_post_package_meta, $expire_post_package ); } } //add_action( 'woocommerce_order_edit_status', 'add_user_order_package', 10, 2 ); // fire only in the order table list add_action( 'woocommerce_order_status_changed', 'add_user_order_package', 10, 3 ); /** * Ejects 1 post from usermeta after published it by user */ function eject_ordered_number_post( $post_id, $post ) { $paid_form_id = get_post_meta( $post_id, '_wpfepp_paid_post', true ); if ( !$paid_form_id or $paid_form_id <= 0 ) return; $user_numb_post_meta = '_numb_post_package_'. $paid_form_id; $author_number_post_package = get_user_meta( $post->post_author, $user_numb_post_meta, true ); if ( !$author_number_post_package or $author_number_post_package <= 0 ) { return; } else { $author_number_post_package = $author_number_post_package - 1; update_user_meta( $post->post_author, $user_numb_post_meta, $author_number_post_package ); } } add_action( 'publish_post', 'eject_ordered_number_post', 10, 2 ); add_action( 'publish_product', 'eject_ordered_number_post', 10, 2 ); /* * Sends user`s email some data from order with Post Package products */ function wc_email_order_add_package_fields( $fields, $sent_to_admin, $order ) { if( $sent_to_admin ) return; $product_ids = array(); foreach ( $order->get_items() as $item ) { $product_ids[] = $item->get_product_id(); } if( !empty( $product_ids ) ) { for( $i = 0; $i < count( $product_ids ); ++$i ) { $product = get_post( $product_ids[$i] ); $fields['name_post_package_'. $i] = array( 'label' => '<br>'. __( "Purchased package", "wpfepp-plugin" ), 'value' => $product->post_title ); $fields['number_post_package_'. $i] = array( 'label' => __( "Number of posts", "wpfepp-plugin" ), 'value' => get_post_meta( $product->ID, '_number_post_package', true ) ); $fields['expire_post_package_'. $i] = array( 'label' => __( "Period of days", "wpfepp-plugin" ), 'value' => get_post_meta( $product->ID, '_expire_post_package', true ) ); $fields['posting_page_url_'. $i] = array( 'label' => __( "Posting Page URL", "wpfepp-plugin" ), 'value' => get_post_meta( $product->ID, '_posting_page_url', true ) .'<hr>' ); } } return $fields; } add_filter( 'woocommerce_email_order_meta_fields', 'wc_email_order_add_package_fields', 10, 3 );
[+]
..
[-] class-wpfepp-loader.php
[edit]
[-] class-update-checker.php
[edit]
[-] class-wpfepp-copyscape.php
[edit]
[-] class-wpfepp-post-previews.php
[edit]
[-] paid-functions.php
[edit]
[-] class-wpfepp-captcha.php
[edit]
[-] class-wpfepp-form-ajax.php
[edit]
[-] class-wpfepp-db-table.php
[edit]
[-] class-wpfepp-wc-package.php
[edit]
[+]
partials
[-] class-wpfepp-image.php
[edit]
[-] class-wpfepp-shortcode-manager.php
[edit]
[-] class-wpfepp-post-list.php
[edit]
[-] class-wpfepp-helpers.php
[edit]
[-] class-frontend-publishing-pro.php
[edit]
[-] global-functions.php
[edit]
[-] class-wpfepp-email-manager.php
[edit]
[-] hook-functions.php
[edit]
[-] class-wpfepp-form.php
[edit]