load_dependencies();
}
/**
* Returns and/or create the single instance of this class.
*
* @return Charitable_Admin
* @access public
* @since 1.2.0
*/
public static function get_instance() {
if ( is_null( self::$instance ) ) {
self::$instance = new Charitable_Admin();
}
return self::$instance;
}
/**
* Include admin-only files.
*
* @return void
* @access private
* @since 1.0.0
*/
private function load_dependencies() {
$admin_dir = charitable()->get_path( 'admin' );
require_once( $admin_dir . 'charitable-core-admin-functions.php' );
require_once( $admin_dir . 'class-charitable-meta-box-helper.php' );
require_once( $admin_dir . 'class-charitable-admin-pages.php' );
/* Campaigns */
require_once( $admin_dir . 'campaigns/class-charitable-campaign-post-type.php' );
/* Donations */
require_once( $admin_dir . 'donations/class-charitable-donation-post-type.php' );
/* Settings */
require_once( $admin_dir . 'settings/class-charitable-settings.php' );
require_once( $admin_dir . 'settings/class-charitable-general-settings.php' );
require_once( $admin_dir . 'settings/class-charitable-email-settings.php' );
require_once( $admin_dir . 'settings/class-charitable-gateway-settings.php' );
require_once( $admin_dir . 'settings/class-charitable-licenses-settings.php' );
require_once( $admin_dir . 'settings/class-charitable-advanced-settings.php' );
require_once( $admin_dir . 'settings/charitable-settings-admin-hooks.php' );
/* Dashboard widgets */
require_once( $admin_dir . 'dashboard-widgets/class-charitable-donations-dashboard-widget.php' );
require_once( $admin_dir . 'dashboard-widgets/charitable-dashboard-widgets-hooks.php' );
/* Upgrades */
require_once( $admin_dir . 'upgrades/class-charitable-upgrade.php' );
require_once( $admin_dir . 'upgrades/class-charitable-upgrade-page.php' );
require_once( $admin_dir . 'upgrades/charitable-upgrade-hooks.php' );
/**
* We are registering this object only for backwards compatibility. It
* will be removed in or after Charitable 1.3.
*
* @deprecated
*/
charitable()->register_object( Charitable_Settings::get_instance() );
charitable()->register_object( Charitable_Campaign_Post_Type::get_instance() );
charitable()->register_object( Charitable_Donation_Post_Type::get_instance() );
charitable()->register_object( Charitable_Admin_Pages::get_instance() );
}
/**
* Loads admin-only scripts and stylesheets.
*
* @global WP_Scripts $wp_scripts
* @return void
* @access public
* @since 1.0.0
*/
public function admin_enqueue_scripts() {
global $wp_scripts;
$suffix = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '' : '.min';
/* Menu styles are loaded everywhere in the WordPress dashboard. */
wp_register_style( 'charitable-admin-menu', charitable()->get_path( 'assets', false ) . 'css/charitable-admin-menu' .$suffix . '.css', array(), charitable()->get_version() );
wp_enqueue_style( 'charitable-admin-menu' );
/* Admin page styles are registered but only enqueued when necessary. */
wp_register_style( 'charitable-admin-pages', charitable()->get_path( 'assets', false ) . 'css/charitable-admin-pages' .$suffix . '.css', array(), charitable()->get_version() );
/* The following styles are only loaded on Charitable screens. */
$screen = get_current_screen();
if ( in_array( $screen->id, $this->get_charitable_screens() ) ) {
wp_register_style( 'charitable-admin', charitable()->get_path( 'assets', false ) . 'css/charitable-admin' . $suffix . '.css', array(), charitable()->get_version() );
wp_enqueue_style( 'charitable-admin' );
wp_register_script( 'charitable-admin', charitable()->get_path( 'assets', false ) . 'js/charitable-admin' . $suffix . '.js', array( 'jquery-ui-datepicker', 'jquery-ui-tabs', 'jquery-ui-sortable' ), charitable()->get_version(), false );
wp_enqueue_script( 'charitable-admin' );
$localized_vars = apply_filters( 'charitable_localized_javascript_vars', array(
'suggested_amount_placeholder' => __( 'Amount', 'charitable' ),
'suggested_amount_description_placeholder' => __( 'Optional Description', 'charitable' )
) );
wp_localize_script( 'charitable-admin', 'CHARITABLE', $localized_vars );
}
}
/**
* Add custom links to the plugin actions.
*
* @param string[] $links
* @return string[]
* @access public
* @since 1.0.0
*/
public function add_plugin_action_links( $links ) {
$links[] = '' . __( 'Settings', 'charitable' ) . '';
return $links;
}
/**
* Add Extensions link to the plugin row meta.
*
* @param string[] $links
* @param string $file The plugin file
* @return string[] $links
* @access public
* @since 1.2.0
*/
public function add_plugin_row_meta( $links, $file ) {
if ( plugin_basename( charitable()->get_path() ) != $file ) {
return $links;
}
$extensions_link = esc_url( add_query_arg( array(
'utm_source' => 'plugins-page',
'utm_medium' => 'plugin-row',
'utm_campaign' => 'admin'
),
'https://wpcharitable.com/extensions/'
) );
$links[] = '' . __( 'Extensions', 'charitable' ) . '';
return $links;
}
/**
* Remove the jQuery UI styles added by Ninja Forms.
*
* @return void
* @access public
* @since 1.2.0
*/
public function remove_jquery_ui_styles_nf( $context ) {
wp_dequeue_style( 'jquery-smoothness' );
return $context;
}
/**
* Export donations.
*
* @return void
* @access public
* @since 1.3.0
*/
public function export_donations() {
if ( ! wp_verify_nonce( $_GET[ '_charitable_export_nonce' ], 'charitable_export_donations' ) ) {
return false;
}
require_once( charitable()->get_path( 'admin' ) . 'reports/class-charitable-export-donations.php' );
$report_type = $_GET[ 'report_type' ];
$export_args = apply_filters( 'charitable_donations_export_args', array(
'start_date' => $_GET[ 'start_date' ],
'end_date' => $_GET[ 'end_date' ],
'status' => $_GET[ 'post_status' ],
'campaign_id' => $_GET[ 'campaign_id' ],
'report_type' => $report_type
) );
$export_class = apply_filters( 'charitable_donations_export_class', 'Charitable_Export_Donations', $report_type, $export_args );
new $export_class( $export_args );
exit();
}
/**
* Returns an array of screen IDs where the Charitable scripts should be loaded.
*
* @uses charitable_admin_screens
*
* @return array
* @access private
* @since 1.0.0
*/
private function get_charitable_screens() {
return apply_filters( 'charitable_admin_screens', array(
'campaign',
'donation',
'charitable_page_charitable-settings',
'charitable_page_charitable-donations-table',
'dashboard'
) );
}
}
endif;