HEX
Server: Apache
System: Linux wyse1.wyseservers.com 4.18.0-553.124.4.el8_10.x86_64 #1 SMP Fri May 15 04:14:14 EDT 2026 x86_64
User: kochikidswysewor (1061)
PHP: 8.3.33
Disabled: NONE
Upload Files
File: /home/kochikidswysewor/www/wp-content/plugins/invoicing-quotes/admin/class-wpinv-quotes-admin.php
<?php
/**
 * Contains the main admin class.
 *
 * @link       https://wpgeodirectory.com
 * @since      1.0.0
 *
 * @package    Invoicing
 * @subpackage Quotes
 */

/**
 * The main admin class.
 *
 * @since      1.0.0
 * @package    Invoicing
 * @subpackage Quotes
 * @author     GeoDirectory Team <info@wpgeodirectory.com>
 */
class WPInv_Quotes_Admin {

    /**
     * Metaboxes class.
     *
     * @var WPInv_Quotes_Metaboxes
     */
    public $metaboxes;

    /**
     * Class constructor.
     *
     * @since    1.0.0
     */
    public function __construct() {

        add_action( 'admin_init', array( $this, 'maybe_create_initial_pages' ), 100, 2 );
        add_action( 'admin_init', array( $this, 'activation_redirect' ), 110, 2 );
        add_action( 'getpaid_authenticated_admin_action_send_quote', array( $this, 'admin_send_quote' ) );
        add_action( 'getpaid_authenticated_admin_action_convert_quote_to_invoice', array( $this, 'admin_convert_quote_to_invoice' ) );

        $this->metaboxes = new WPInv_Quotes_Metaboxes();
    }

    /**
     * Creates the initial pages on activation.
     *
     * @since    1.0.0
     */
    public function maybe_create_initial_pages() {

        if ( get_option( 'wpinv_created_initial_quote_pages' ) != 1 ) {

            update_option( 'wpinv_created_initial_quote_pages', 1 );

            $content   = '
                <!-- wp:shortcode -->
                [wpinv_quote_history]
                <!-- /wp:shortcode -->
            ';

            wpinv_create_page(
                esc_sql( _x( 'your-quotes', 'Page slug', 'wpinv-quotes' ) ),
                'quote_history_page',
                _x( 'Your Quotes', 'Page title', 'wpinv-quotes' ),
                $content
            );

        }

    }

    /**
     * Maybe redirect users to our admin settings page.
     */
    public function activation_redirect() {

        $redirected = get_option( 'wpinv_quotes_activation_redirect' );

        if ( ! empty( $redirected ) || wp_doing_ajax() || ! current_user_can( 'manage_options' ) ) {
			return;
		}

        // Bail if activating from network, or bulk
		if ( is_network_admin() || isset( $_GET['activate-multi'] ) ) {
			return;
		}

        // Prevent further redirects for this site.
        update_option( 'wpinv_quotes_activation_redirect', 1 );

        if ( empty( $_GET['page'] ) || 'gp-setup' !== $_GET['page'] ) {
            wp_safe_redirect( admin_url( 'admin.php?page=wpinv-settings&tab=quote' ) );
            exit;
        }

    }

    /**
     * Sends a quote.
     * 
     * @param array $args
     */
    public function admin_send_quote( $args ) {

        // Bail if do not have an invoice.
        if ( empty( $args[ 'invoice_id' ] ) ) {
            return;
        }

        wpinv_user_quote_notification( (int) $args[ 'invoice_id' ] );

		wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce', 'invoice_id' ) ) );
		exit;
    }

    /**
     * Convets a quote to an invoice.
     * 
     * @param array $args
     */
    public function admin_convert_quote_to_invoice( $args ) {

        // Bail if do not have an invoice.
        if ( empty( $args[ 'invoice_id' ] ) ) {
            return;
        }

        $quote = new WPInv_Invoice( $args[ 'invoice_id' ] );

        if ( $quote->is_quote() ) {
            $handler = new Wpinv_Quotes_Accepted_Action( false );
            $handler->convert( $quote );
        }

        getpaid_admin()->show_info( __( 'Quote successfully converted to an invoice.', 'wpinv-quotes' ) );
		wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce', 'invoice_id' ) ) );
		exit;
    }

}