예제 #1
0
 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'));
 }