<?php
/**
* Note: This file may contain artifacts of previous malicious infection.
* However, the dangerous code has been removed, and the file is now safe to use.
*/
?>
<?php
/**
* ConvertKit Admin Category class.
*
* @package ConvertKit
* @author ConvertKit
*/
/**
* Registers fields on Categories and saves its settings when the Category
* is saved in the WordPress Administration interface.
*
* @package ConvertKit
* @author ConvertKit
*/
class ConvertKit_Admin_Category {
/**
* Registers action and filter hooks.
*
* @since 1.9.6
*/
public function __construct() {
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_styles' ) );
add_action( 'category_edit_form_fields', array( $this, 'category_form_fields' ), 20 );
add_action( 'edited_category', array( $this, 'save_category_fields' ), 20 );
}
/**
* Enqueue JavaScript when editing a Category that outputs
* ConvertKit Plugin settings.
*
* @since 1.9.6.4
*
* @param string $hook Hook.
*/
public function enqueue_scripts( $hook ) {
// Bail if we are not editing a Term.
if ( $hook !== 'term.php' ) {
return;
}
// Bail if we are not editing a Category.
if ( ! function_exists( 'get_current_screen' ) ) {
return;
}
$screen = get_current_screen();
if ( $screen->id !== 'edit-category' ) {
return;
}
// Bail if the API hasn't been configured.
$settings = new ConvertKit_Settings();
if ( ! $settings->has_api_key_and_secret() ) {
return;
}
// Enqueue Select2 JS.
convertkit_select2_enqueue_scripts();
/**
* Enqueue JavaScript when editing a Category that outputs
* ConvertKit Plugin settings.
*
* @since 1.9.6.4
*/
do_action( 'convertkit_admin_category_enqueue_scripts' );
}
/**
* Enqueue CSS when editing a Category that outputs
* ConvertKit Plugin settings.
*
* @since 1.9.6.4
*/
public function enqueue_styles() {
// Enqueue Select2 CSS.
convertkit_select2_enqueue_styles();
/**
* Enqueue CSS when editing a Category that outputs
* ConvertKit Plugin settings.
*
* @since 1.9.6.4
*/
do_action( 'convertkit_admin_category_enqueue_styles' );
}
/**
* Display the ConvertKit Forms dropdown when editing a Category
*
* @since 1.9.6
*
* @param WP_Term $term Category.
*/
public function category_form_fields( $term ) {
// Don't show the form fields if the API hasn't been configured.
$settings = new ConvertKit_Settings();
if ( ! $settings->has_api_key_and_secret() ) {
return;
}
// Fetch Category Settings and Forms.
$convertkit_term = new ConvertKit_Term( $term->term_id );
$convertkit_forms = new ConvertKit_Resource_Forms();
// Load metabox view.
include CONVERTKIT_PLUGIN_PATH . '/views/backend/term/fields.php';
}
/**
* Save Term Settings.
*
* @since 1.9.6
*
* @param int $term_id Term ID.
*/
public function save_category_fields( $term_id ) {
// Bail if no nonce field exists.
if ( ! isset( $_POST['wp-convertkit-save-meta-nonce'] ) ) {
return;
}
// Bail if the nonce verification fails.
if ( ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['wp-convertkit-save-meta-nonce'] ) ), 'wp-convertkit-save-meta' ) ) {
return;
}
// Bail if no ConvertKit settings were posted.
if ( ! isset( $_POST['wp-convertkit'] ) ) {
return;
}
// Build metadata.
$meta = ( isset( $_POST['wp-convertkit']['form'] ) ? intval( $_POST['wp-convertkit']['form'] ) : '' );
// Save metadata.
$convertkit_term = new ConvertKit_Term( $term_id );
return $convertkit_term->save( $meta );
}
}