/** * Load the SI application * (function called at the bottom of this page) * * @package Sprout_Invoices * @return void */ function sprout_invoices_load() { if (class_exists('Sprout_Invoices')) { error_log('** Sprout_Invoices Already Loaded **'); return; // already loaded, or a name collision } do_action('sprout_invoices_preload'); ////////// // Load // ////////// // Master class require_once SI_PATH . '/Sprout_Invoices.class.php'; // base classes require_once SI_PATH . '/models/_Model.php'; require_once SI_PATH . '/controllers/_Controller.php'; do_action('si_require_base_classes'); // models require_once SI_PATH . '/models/Client.php'; require_once SI_PATH . '/models/Estimate.php'; require_once SI_PATH . '/models/Invoice.php'; require_once SI_PATH . '/models/Notification.php'; require_once SI_PATH . '/models/Payment.php'; require_once SI_PATH . '/models/Record.php'; // Premium models require_once SI_PATH . '/models/Project.php'; // i18n require_once SI_PATH . '/controllers/i18n/Countries_States.php'; require_once SI_PATH . '/controllers/i18n/Locales.php'; do_action('si_require_model_classes'); ///////////////// // Controllers // ///////////////// // settings require_once SI_PATH . '/controllers/admin/Settings.php'; if (!class_exists('SA_Settings_API')) { require_once SI_PATH . '/controllers/admin/Settings_API.php'; } require_once SI_PATH . '/controllers/admin/Capabilities.php'; require_once SI_PATH . '/controllers/admin/Help.php'; // json api require_once SI_PATH . '/controllers/api/JSON_API.php'; // checkouts require_once SI_PATH . '/controllers/checkout/Checkouts.php'; // clients require_once SI_PATH . '/controllers/clients/Clients.php'; // developer logs require_once SI_PATH . '/controllers/developer/Logs.php'; // Estimates require_once SI_PATH . '/controllers/estimates/Estimate_Submission.php'; if (!SI_FREE_TEST && file_exists(SI_PATH . '/controllers/estimates/Estimate_Submission_Premium.php')) { require_once SI_PATH . '/controllers/estimates/Estimate_Submission_Premium.php'; } require_once SI_PATH . '/controllers/estimates/Estimates.php'; require_once SI_PATH . '/controllers/estimates/Estimates_Admin.php'; require_once SI_PATH . '/controllers/estimates/Estimates_Edit.php'; require_once SI_PATH . '/controllers/estimates/Estimates_Records.php'; require_once SI_PATH . '/controllers/estimates/Estimates_Template.php'; if (!SI_FREE_TEST && file_exists(SI_PATH . '/controllers/estimates/Estimates_Premium.php')) { require_once SI_PATH . '/controllers/estimates/Estimates_Premium.php'; } // invoices require_once SI_PATH . '/controllers/invoices/Invoices.php'; require_once SI_PATH . '/controllers/invoices/Invoices_Admin.php'; require_once SI_PATH . '/controllers/invoices/Invoices_Edit.php'; require_once SI_PATH . '/controllers/invoices/Invoices_Records.php'; require_once SI_PATH . '/controllers/invoices/Invoices_Template.php'; require_once SI_PATH . '/controllers/invoices/Invoices_Deposit.php'; if (!SI_FREE_TEST && file_exists(SI_PATH . '/controllers/invoices/Invoices_Premium.php')) { require_once SI_PATH . '/controllers/invoices/Invoices_Premium.php'; } // Line Items require_once SI_PATH . '/controllers/line-items/Line_Items.php'; // notifications require_once SI_PATH . '/controllers/notifications/Notifications_Control.php'; require_once SI_PATH . '/controllers/notifications/Notifications.php'; if (!SI_FREE_TEST && file_exists(SI_PATH . '/controllers/notifications/Notifications_Premium.php')) { require_once SI_PATH . '/controllers/notifications/Notifications_Premium.php'; } require_once SI_PATH . '/controllers/notifications/Notifications_Admin_Table.php'; // payment processing require_once SI_PATH . '/controllers/payment-processing/Payment_Processors.php'; require_once SI_PATH . '/controllers/payment-processing/Credit_Card_Processors.php'; require_once SI_PATH . '/controllers/payment-processing/Offsite_Processors.php'; // payment processors if (!SI_FREE_TEST && file_exists(SI_PATH . '/controllers/payment-processing/processors/SI_Paypal_EC.php')) { require_once SI_PATH . '/controllers/payment-processing/processors/SI_Paypal_EC.php'; } if (!SI_FREE_TEST && file_exists(SI_PATH . '/controllers/payment-processing/processors/SI_Paypal_Pro.php')) { require_once SI_PATH . '/controllers/payment-processing/processors/SI_Paypal_Pro.php'; } require_once SI_PATH . '/controllers/payment-processing/processors/SI_Checks.php'; require_once SI_PATH . '/controllers/payment-processing/processors/SI_Admin_Payment.php'; do_action('si_payment_processors_loaded'); // payments require_once SI_PATH . '/controllers/payments/Payments.php'; require_once SI_PATH . '/controllers/payments/Payments_Admin_Table.php'; // Projects require_once SI_PATH . '/controllers/projects/Projects.php'; if (!SI_FREE_TEST && file_exists(SI_PATH . '/controllers/projects/Projects_Premium.php')) { require_once SI_PATH . '/controllers/projects/Projects_Premium.php'; } // internal records require_once SI_PATH . '/controllers/records/Internal_Records.php'; require_once SI_PATH . '/controllers/records/Records_Admin_Table.php'; // reporting require_once SI_PATH . '/controllers/reporting/Dashboard.php'; require_once SI_PATH . '/controllers/reporting/Reporting.php'; if (!SI_FREE_TEST && file_exists(SI_PATH . '/controllers/reporting/Reporting_Premium.php')) { require_once SI_PATH . '/controllers/reporting/Reporting_Premium.php'; } require_once SI_PATH . '/controllers/templating/Templating.php'; require_once SI_PATH . '/controllers/templating/Customizer.php'; // updates if (!SI_FREE_TEST && file_exists(SI_PATH . '/controllers/updates/Updates.php')) { require_once SI_PATH . '/controllers/updates/Updates.php'; } if (file_exists(SI_PATH . '/controllers/updates/Free_License.php')) { require_once SI_PATH . '/controllers/updates/Free_License.php'; } // importers require_once SI_PATH . '/importers/Importer.php'; require_once SI_PATH . '/importers/Freshbooks.php'; require_once SI_PATH . '/importers/Harvest.php'; require_once SI_PATH . '/importers/WP-Invoice.php'; require_once SI_PATH . '/importers/CSV.php'; do_action('si_importers_loaded'); // Fix others problems require_once SI_PATH . '/controllers/compat/Compatibility.php'; // all done do_action('si_require_controller_classes'); // Template tags require_once SI_PATH . '/template-tags/estimates.php'; require_once SI_PATH . '/template-tags/clients.php'; require_once SI_PATH . '/template-tags/forms.php'; require_once SI_PATH . '/template-tags/invoices.php'; require_once SI_PATH . '/template-tags/line-items.php'; require_once SI_PATH . '/template-tags/projects.php'; require_once SI_PATH . '/template-tags/ui.php'; require_once SI_PATH . '/template-tags/utility.php'; require_once SI_PATH . '/template-tags/docs.php'; // l18n require_once SI_PATH . '/languages/SI_l10n.php'; require_once SI_PATH . '/languages/SI_Strings.php'; // i18n & l10n SI_l10n::init(); SI_Strings::load_additional_strings(); SI_Locales::init(); SI_Countries_States::init(); /////////////////// // init() models // /////////////////// do_action('si_models_init'); SI_Post_Type::init(); // _Model SI_Record::init(); SI_Notification::init(); SI_Invoice::init(); SI_Estimate::init(); SI_Client::init(); SI_Payment::init(); SI_Project::init(); ///////////////////////// // init() controllers // ///////////////////////// do_action('si_controllers_init'); SI_Controller::init(); SA_Settings_API::init(); SI_Templating_API::init(); SI_Customizer::init(); SI_Admin_Capabilities::init(); // updates if (!SI_FREE_TEST && class_exists('SI_Updates')) { SI_Updates::init(); } if (class_exists('SI_Free_License')) { SI_Free_License::init(); } // api SI_JSON_API::init(); // reports SI_Dashboard::init(); SI_Reporting::init(); if (!SI_FREE_TEST && class_exists('SI_Reporting_Premium')) { SI_Reporting_Premium::init(); } // records and logs SI_Internal_Records::init(); SI_Dev_Logs::init(); // settings SI_Admin_Settings::init(); // payments and processing SI_Payment_Processors::init(); SI_Payments::init(); // notifications SI_Notifications::init(); // Hooks come before parent class. if (!SI_FREE_TEST && class_exists('SI_Notifications_Premium')) { SI_Notifications_Premium::init(); } SI_Notifications_Control::init(); // clients SI_Clients::init(); // estimates SI_Estimates::init(); if (!SI_FREE_TEST && class_exists('SI_Estimates_Premium')) { SI_Estimates_Premium::init(); } if (!SI_FREE_TEST && class_exists('SI_Estimates_Submission_Premium')) { SI_Estimates_Submission_Premium::init(); } SI_Estimate_Submissions::init(); SI_Estimates_Admin::init(); SI_Estimates_Edit::init(); SI_Estimates_Template::init(); SI_Estimates_Records::init(); // checkouts SI_Checkouts::init(); // invoices SI_Invoices::init(); SI_Invoices_Admin::init(); SI_Invoices_Edit::init(); SI_Invoices_Template::init(); SI_Invoices_Records::init(); SI_Invoices_Deposit::init(); if (!SI_FREE_TEST && class_exists('SI_Invoices_Premium')) { SI_Invoices_Premium::init(); } // Line items SI_Line_Items::init(); // projects SI_Projects::init(); if (!SI_FREE_TEST && class_exists('SI_Projects_Premium')) { SI_Projects_Premium::init(); } // importer SI_Importer::init(); // help SI_Help::init(); // Compat SI_Compatibility::init(); // addons require_once SI_PATH . '/add-ons/Addons.php'; require_once SI_PATH . '/add-ons/updates/edd_plugin_updater.class.php'; SA_Addons::init(); do_action('sprout_invoices_loaded'); }
public static function init() { // Settings self::$default_terms = get_option(self::TERMS_OPTION, 'We do expect payment within 21 days, so please process this invoice within that time. There will be a 1.5% interest charge per month on late invoices.'); self::$default_notes = get_option(self::NOTES_OPTION, 'Thank you; we really appreciate your business.'); self::$invoices_slug = get_option(self::SLUG_OPTION, SI_Invoice::REWRITE_SLUG); self::register_settings(); // Help Sections add_action('admin_menu', array(get_class(), 'help_sections')); if (is_admin()) { // Meta boxes add_action('admin_init', array(__CLASS__, 'register_meta_boxes'), 100); add_filter('wp_insert_post_data', array(__CLASS__, 'update_post_data'), 100, 2); add_action('do_meta_boxes', array(__CLASS__, 'modify_meta_boxes'), 100); add_action('edit_form_top', array(__CLASS__, 'quick_links'), 100); // Admin columns add_filter('manage_edit-' . SI_Invoice::POST_TYPE . '_columns', array(__CLASS__, 'register_columns')); add_filter('manage_' . SI_Invoice::POST_TYPE . '_posts_custom_column', array(__CLASS__, 'column_display'), 10, 2); add_filter('manage_edit-' . SI_Invoice::POST_TYPE . '_sortable_columns', array(__CLASS__, 'sortable_columns')); add_filter('views_edit-' . SI_Invoice::POST_TYPE, array(__CLASS__, 'filter_status_view')); add_filter('display_post_states', array(__CLASS__, 'filter_post_states'), 10, 2); // Remove quick edit from admin and add some row actions add_action('bulk_actions-edit-sa_invoice', array(__CLASS__, 'modify_bulk_actions')); add_action('post_row_actions', array(__CLASS__, 'modify_row_actions'), 10, 2); // Single column add_filter('get_user_option_screen_layout_sa_invoice', array(__CLASS__, 'screen_layout_pref')); add_filter('screen_layout_columns', array(__CLASS__, 'screen_layout_columns')); // Improve admin search add_filter('si_admin_meta_search', array(__CLASS__, 'filter_admin_search'), 10, 2); } // Unique urls add_filter('wp_unique_post_slug', array(__CLASS__, 'post_slug'), 10, 4); // Templating add_action('wp_enqueue_scripts', array(__CLASS__, 'remove_scripts_and_styles'), PHP_INT_MAX); add_action('wp_print_scripts', array(__CLASS__, 'remove_scripts_and_styles_from_stupid_themes_and_plugins'), -PHP_INT_MAX); // can't rely on themes to abide by enqueing correctly // Create invoice when estimate is approved. add_action('doc_status_changed', array(__CLASS__, 'create_invoice_on_est_acceptance'), 0); // fire before any others add_action('doc_status_changed', array(__CLASS__, 'create_payment_when_invoice_marked_as_paid')); // Mark paid or partial after payment add_action('si_new_payment', array(__CLASS__, 'change_status_after_payment')); // Status updates add_action('si_invoice_status_updated', array(__CLASS__, 'maybe_create_status_update_record'), 10, 3); // Cloning from estimates add_action('si_cloned_post', array(__CLASS__, 'associate_invoice_after_clone'), 10, 3); // Adjust invoice id and status after clone add_action('si_cloned_post', array(__CLASS__, 'adjust_cloned_invoice'), 10, 3); // Notifications add_filter('wp_ajax_sa_send_est_notification', array(__CLASS__, 'maybe_send_notification')); // Set the default terms and notes add_filter('get_invoice_terms', array(__CLASS__, 'maybe_set_invoice_terms'), 10, 2); add_filter('get_invoice_notes', array(__CLASS__, 'maybe_set_invoice_notes'), 10, 2); // Invoice Payment Remove deposit add_filter('processed_payment', array(__CLASS__, 'maybe_remove_deposit'), 10, 2); // Admin bar add_filter('si_admin_bar', array(get_class(), 'add_link_to_admin_bar'), 10, 1); // Rewrite rules add_filter('si_register_post_type_args-' . SI_Invoice::POST_TYPE, array(__CLASS__, 'modify_post_type_slug')); add_filter('si_line_item_content', array(__CLASS__, 'line_item_content_filter')); }
<input type="text" name="subject" value="<?php echo esc_attr($title); ?> " placeholder="<?php si_e('Subject...'); ?> "> </div> <?php if ($statuses) { ?> <div id="quick_links"> <?php SI_Invoices::status_change_dropdown($id); ?> <a href="#send_invoice" id="send_doc_quick_link" class="send si_tooltip button" title="<?php si_e('Send this invoice'); ?> "><span> </span></a> <a href="<?php echo self::get_clone_post_url($id); ?> " id="duplicate_invoice_quick_link" class="duplicate si_tooltip button" title="<?php si_e('Duplicate this invoice'); ?> "><span> </span></a>