File "class-convertkit-settings-general.php"
Full Path: /home/attunedd/public_html/wp-content/plugins/convertkit/admin/section/class-convertkit-settings-general.php
File size: 11.29 KB
MIME-type: text/x-php
Charset: utf-8
<?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 Settings General class.
*
* @package ConvertKit
* @author ConvertKit
*/
/**
* Registers General Settings that can be edited at Settings > ConvertKit > General.
*
* @package ConvertKit
* @author ConvertKit
*/
class ConvertKit_Settings_General extends ConvertKit_Settings_Base {
/**
* Holds the API instance.
*
* @since 1.9.6
*
* @var ConvertKit_API
*/
private $api;
/**
* Holds the ConvertKit Account Name.
*
* @since 1.9.6
*
* @var bool|WP_Error|array
*/
private $account = false;
/**
* Holds the ConvertKit Forms Resource.
*
* @since 1.9.6
*
* @var bool|ConvertKit_Resource_Forms;
*/
private $forms = false;
/**
* Constructor.
*/
public function __construct() {
// Define the class that reads/writes settings.
$this->settings = new ConvertKit_Settings();
// Define the settings key.
$this->settings_key = $this->settings::SETTINGS_NAME;
// Define the programmatic name, Title and Tab Text.
$this->name = 'general';
$this->title = __( 'General Settings', 'convertkit' );
$this->tab_text = __( 'General', 'convertkit' );
add_action( 'convertkit_settings_base_render_before', array( $this, 'render_before' ) );
parent::__construct();
}
/**
* Registers settings fields for this section.
*/
public function register_fields() {
add_settings_field(
'account_name',
__( 'Account Name', 'convertkit' ),
array( $this, 'account_name_callback' ),
$this->settings_key,
$this->name
);
add_settings_field(
'api_key',
__( 'API Key', 'convertkit' ),
array( $this, 'api_key_callback' ),
$this->settings_key,
$this->name,
array(
'label_for' => 'api_key',
)
);
add_settings_field(
'api_secret',
__( 'API Secret', 'convertkit' ),
array( $this, 'api_secret_callback' ),
$this->settings_key,
$this->name,
array(
'label_for' => 'api_secret',
)
);
foreach ( convertkit_get_supported_post_types() as $supported_post_type ) {
// Get Post Type's Label.
$post_type = get_post_type_object( $supported_post_type );
// Skip if the Post Type doesn't exist.
if ( ! $post_type ) {
continue;
}
// Add Settings Field.
add_settings_field(
$supported_post_type . '_form',
sprintf(
/* translators: Post Type Name */
__( 'Default Form (%s)', 'convertkit' ),
$post_type->label
),
array( $this, 'custom_post_types_callback' ),
$this->settings_key,
$this->name,
array(
'label_for' => '_wp_convertkit_settings_' . $supported_post_type . '_form',
'post_type' => $supported_post_type,
)
);
}
add_settings_field(
'debug',
__( 'Debug', 'convertkit' ),
array( $this, 'debug_callback' ),
$this->settings_key,
$this->name,
array(
'label_for' => 'debug',
)
);
add_settings_field(
'no_scripts',
__( 'Disable JavaScript', 'convertkit' ),
array( $this, 'no_scripts_callback' ),
$this->settings_key,
$this->name,
array(
'label_for' => 'no_scripts',
)
);
add_settings_field(
'no_css',
__( 'Disable CSS', 'convertkit' ),
array( $this, 'no_css_callback' ),
$this->settings_key,
$this->name,
array(
'label_for' => 'no_css',
)
);
}
/**
* Prints help info for this section
*/
public function print_section_info() {
?>
<p><?php esc_html_e( 'Choosing a default form will embed it at the bottom of every post or page (in single view only) across your site.', 'convertkit' ); ?></p>
<p><?php esc_html_e( 'If you wish to turn off form embedding or select a different form for an individual post or page, you can do so using the ConvertKit meta box on the edit page.', 'convertkit' ); ?></p>
<p>
<?php
printf(
/* translators: [convertkit] shortcode, wrapped in <code> tags */
esc_html__( 'The default form can be inserted into the middle of post or page content by using the %s shortcode.', 'convertkit' ),
'<code>[convertkit]</code>'
);
?>
</p>
<?php
}
/**
* Performs actions prior to rendering the settings form.
*
* @since 1.9.6
*/
public function render_before() {
// Initialize the API if an API Key and Secret is defined.
if ( ! $this->settings->has_api_key_and_secret() ) {
return;
}
$this->api = new ConvertKit_API(
$this->settings->get_api_key(),
$this->settings->get_api_secret(),
$this->settings->debug_enabled()
);
// Get Account Details, which we'll use in account_name_callback(), but also lets us test
// whether the API credentials are valid.
$this->account = $this->api->account();
// Show an error message if Account Details could not be fetched e.g. API credentials supplied are invalid.
if ( is_wp_error( $this->account ) ) {
$this->output_error( $this->account->get_error_message() );
}
}
/**
* Outputs the Account Name
*
* @since 1.9.6
*/
public function account_name_callback() {
// Output a notice telling the user to enter their API Key and Secret if they haven't done so yet.
if ( ! $this->settings->has_api_key_and_secret() || is_wp_error( $this->account ) ) {
echo '<p class="description">' . esc_html__( 'Add a valid API Key and Secret to get started', 'convertkit' ) . '</p>';
return;
}
// Output Account Name.
$html = sprintf(
'<code>%s</code>',
isset( $this->account['name'] ) ? esc_attr( $this->account['name'] ) : esc_html__( '(Not specified)', 'convertkit' )
);
$html .= '<p class="description">' . esc_html__( 'The name of your connected ConvertKit account.', 'convertkit' ) . '</p>';
echo $html; // phpcs:ignore
}
/**
* Renders the input for the API Key setting.
*
* @since 1.9.6
*/
public function api_key_callback() {
// If the API Key is stored as a constant, it cannot be edited here.
if ( $this->settings->is_api_key_a_constant() ) {
echo $this->get_masked_value( // phpcs:ignore
$this->settings->get_api_key(),
esc_html__( 'Your API Key has been defined in your wp-config.php file. For security, it is not displayed here.', 'convertkit' )
);
return;
}
// Output field.
echo $this->get_text_field( // phpcs:ignore
'api_key',
$this->settings->get_api_key(), // phpcs:ignore
array(
sprintf(
/* translators: %1$s: Link to ConvertKit Account */
esc_html__( '%1$s Required for proper plugin function.', 'convertkit' ),
'<a href="' . esc_url( convertkit_get_api_key_url() ) . '" target="_blank">' . esc_html__( 'Get your ConvertKit API Key.', 'convertkit' ) . '</a>'
),
sprintf(
/* translators: Account, %1$s: wp-config.php, %2$s: <code> block for API Key definition */
esc_html__( 'Alternatively specify your API Key in the %1$s file using %2$s', 'convertkit' ),
'<code>wp-config.php</code>',
'<code>define(\'CONVERTKIT_API_KEY\', \'your-api-key\');</code>'
),
)
);
}
/**
* Renders the input for the API Secret setting.
*
* @since 1.9.6
*/
public function api_secret_callback() {
// If the API Secret is stored as a constant, it cannot be edited here.
if ( $this->settings->is_api_secret_a_constant() ) {
echo $this->get_masked_value( // phpcs:ignore
$this->settings->get_api_secret(),
esc_html__( 'Your API Secret has been defined in your wp-config.php file. For security, it is not displayed here.', 'convertkit' )
);
return;
}
// Output field.
echo $this->get_text_field( // phpcs:ignore
'api_secret',
$this->settings->get_api_secret(), // phpcs:ignore
array(
sprintf(
/* translators: %1$s: Link to ConvertKit Account */
esc_html__( '%1$s Required for proper plugin function.', 'convertkit' ),
'<a href="' . esc_url( convertkit_get_api_key_url() ) . '" target="_blank">' . esc_html__( 'Get your ConvertKit API Secret.', 'convertkit' ) . '</a>'
),
sprintf(
/* translators: Account, %1$s: wp-config.php, %2$s: <code> block for API Secret definition */
esc_html__( 'Alternatively specify your API Secret in the %1$s file using %2$s', 'convertkit' ),
'<code>wp-config.php</code>',
'<code>define(\'CONVERTKIT_API_SECRET\', \'your-api-secret\');</code>'
),
)
);
}
/**
* Renders the input for the Default Form setting for the given Post Type.
*
* @since 1.9.6
*
* @param array $args Field arguments.
*/
public function custom_post_types_callback( $args ) {
// Refresh Forms.
if ( ! $this->forms ) {
$this->forms = new ConvertKit_Resource_Forms();
$this->forms->refresh();
// Also refresh Landing Pages, Tags and Posts. Whilst not displayed in the Plugin Settings, this ensures up to date
// lists are stored for when editing e.g. Pages.
$landing_pages = new ConvertKit_Resource_Landing_Pages();
$landing_pages->refresh();
$posts = new ConvertKit_Resource_Posts();
$posts->refresh();
$tags = new ConvertKit_Resource_Tags();
$tags->refresh();
}
// Bail if no Forms exist.
if ( ! $this->forms->exist() ) {
esc_html_e( 'No Forms exist in ConvertKit.', 'convertkit' );
echo '<br />' . sprintf(
/* translators: Link to sign in to ConvertKit */
esc_html__( 'To create a form, %s', 'convertkit' ),
'<a href="' . esc_url( convertkit_get_sign_in_url() ) . '" target="_blank">' . esc_html__( 'sign in to ConvertKit', 'convertkit' ) . '</a>'
);
return;
}
// Build array of select options.
$options = array(
'default' => esc_html__( 'None', 'convertkit' ),
);
foreach ( $this->forms->get() as $form ) {
$options[ esc_attr( $form['id'] ) ] = esc_html( $form['name'] );
}
// Build field.
$select_field = $this->get_select_field(
$args['post_type'] . '_form',
$this->settings->get_default_form( $args['post_type'] ),
$options,
false,
array( 'convertkit-select2' )
);
// Output field.
echo '<div class="convertkit-select2-container">' . $select_field . '</div>'; // phpcs:ignore
}
/**
* Renders the input for the Debug setting.
*
* @since 1.9.6
*/
public function debug_callback() {
// Output field.
echo $this->get_checkbox_field( // phpcs:ignore
'debug',
'on',
$this->settings->debug_enabled(), // phpcs:ignore
esc_html__( 'Log requests to file and output browser console messages.', 'convertkit' ),
esc_html__( 'You can ignore this unless you\'re working with our support team to resolve an issue. Decheck this option to improve performance.', 'convertkit' )
);
}
/**
* Renders the input for the Disable Javascript setting.
*
* @since 1.9.6
*/
public function no_scripts_callback() {
// Output field.
echo $this->get_checkbox_field( // phpcs:ignore
'no_scripts',
'on',
$this->settings->scripts_disabled(), // phpcs:ignore
esc_html__( 'Prevent plugin from loading JavaScript files. This will disable the custom content and tagging features of the plugin. Does not apply to landing pages. Use with caution!', 'convertkit' )
);
}
/**
* Renders the input for the Disable CSS setting.
*
* @since 1.9.6.9
*/
public function no_css_callback() {
// Output field.
echo $this->get_checkbox_field( // phpcs:ignore
'no_css',
'on',
$this->settings->css_disabled(), // phpcs:ignore
esc_html__( 'Prevent plugin from loading CSS files. This will disable styling on the broadcasts shortcode and block. Use with caution!', 'convertkit' )
);
}
}