File: /var/www/html/wp-content/plugins/feedzy-rss-feeds/includes/admin/feedzy-rss-feeds-ui.php
<?php
/**
* The UI functionality of the plugin.
*
* @link https://themeisle.com
* @since 3.0.0
*
* @package feedzy-rss-feeds
* @subpackage feedzy-rss-feeds/includes/admin
*/
/**
* The UI functionality of the plugin.
*
* @package feedzy-rss-feeds
* @subpackage feedzy-rss-feeds/includes/admin
* @author Themeisle <friends@themeisle.com>
*/
class Feedzy_Rss_Feeds_Ui {
/**
* The ID of this plugin.
*
* @since 3.0.0
* @access private
* @var string $plugin_name The ID of this plugin.
*/
private $plugin_name;
/**
* The version of this plugin.
*
* @since 3.0.0
* @access private
* @var string $version The current version of this plugin.
*/
private $version;
/**
* The loader class.
*
* @since 3.0.0
* @access private
* @var Feedzy_Rss_Feeds_Loader $loader The loader class of the plugin.
*/
private $loader;
/**
* Initialize the class and set its properties.
*
* @since 3.0.0
* @access public
* @param string $plugin_name The name of this plugin.
* @param string $version The version of this plugin.
* @param Feedzy_Rss_Feeds_Loader $loader The version of this plugin.
*/
public function __construct( $plugin_name, $version, Feedzy_Rss_Feeds_Loader $loader ) {
$this->plugin_name = $plugin_name;
$this->version = $version;
$this->loader = $loader;
}
/**
* Checks if this is being called inside the Gutenberg block editor.
*
* @since 3.3.2
* @access private
*/
private function is_block_editor() {
require_once ABSPATH . 'wp-admin/includes/screen.php';
global $current_screen;
$current_screen = get_current_screen(); //phpcs:ignore
return method_exists( $current_screen, 'is_block_editor' ) && $current_screen->is_block_editor();
}
/**
* Initialize the hooks and filters for the tinymce button
*
* @since 3.0.0
* @access public
*/
public function register_init() {
// phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison
if ( feedzy_current_user_can() && 'true' == get_user_option( 'rich_editing' ) ) {
$this->loader->add_filter( 'mce_external_plugins', $this, 'feedzy_tinymce_plugin', 10, 1 );
$this->loader->add_filter( 'mce_buttons', $this, 'feedzy_register_mce_button', 10, 1 );
$this->loader->add_filter( 'mce_external_languages', $this, 'feedzy_add_tinymce_lang', 10, 1 );
$this->loader->add_action( 'admin_enqueue_scripts', $this, 'enqueue_scripts', 10 );
$this->loader->add_filter( 'tiny_mce_before_init', $this, 'get_strings_for_block', 10, 1 );
$this->loader->add_action( 'in_admin_header', $this, 'feedzy_post_import_admin_header', 10 );
$this->loader->run();
}
}
/**
* Add the strings required for the TinyMCE buttons for the classic block (not the classic editor).
*
* @param array<string, mixed> $settings The block settings.
*
* @return array<string, mixed> The strings.
*/
public function get_strings_for_block( $settings ) {
$feedzy_lang_class = new Feedzy_Rss_Feeds_Ui_Lang();
$strings = $feedzy_lang_class->get_strings();
$array = array( 'feedzy_tinymce_plugin' => wp_json_encode( $strings ) );
return array_merge( $settings, $array );
}
/**
* Register the JavaScript for the admin area.
*
* @since 3.0.0
* @access public
*/
public function enqueue_scripts() {
/**
* This function is provided for demonstration purposes only.
*
* An instance of this class should be passed to the run() function
* defined in Feedzy_Rss_Feeds_Loader as all of the hooks are defined
* in that particular class.
*
* The Feedzy_Rss_Feeds_Loader will then create the relationship
* between the defined hooks and the functions defined in this
* class.
*/
}
/**
* Load plugin translation for - TinyMCE API
*
* @since 3.0.0
* @access public
* @param array $arr The tinymce_lang array.
* @return array
*/
public function feedzy_add_tinymce_lang( $arr ) {
$feedzy_rss_feeds_ui_lang = FEEDZY_ABSPATH . '/includes/admin/feedzy-rss-feeds-ui-lang.php';
$feedzy_rss_feeds_ui_lang = apply_filters( 'feedzy_rss_feeds_ui_lang_filter', $feedzy_rss_feeds_ui_lang );
$arr[] = $feedzy_rss_feeds_ui_lang;
return $arr;
}
/**
* Load custom js options - TinyMCE API
*
* @since 3.0.0
* @access public
* @param array $plugin_array The tinymce plugin array.
* @return array
*/
public function feedzy_tinymce_plugin( $plugin_array ) {
$plugin_array['feedzy_mce_button'] = FEEDZY_ABSURL . 'js/feedzy-rss-feeds-ui-mce.js';
return $plugin_array;
}
/**
* Register new button in the editor
*
* @since 3.0.0
* @access public
* @param array $buttons The tinymce buttons array.
* @return array
*/
public function feedzy_register_mce_button( $buttons ) {
array_push( $buttons, 'feedzy_mce_button' );
return $buttons;
}
/**
* Add global style.
*/
public function add_feedzy_global_style() {
?>
<style type="text/css">
.feedzy-rss-link-icon:after {
content: url("<?php echo esc_url( FEEDZY_ABSURL . 'img/external-link.png' ); ?>");
margin-left: 3px;
}
</style>
<?php
}
/**
* Feedzy import post screen header.
*/
public function feedzy_post_import_admin_header() {
global $pagenow;
if ( 'edit.php' === $pagenow ) {
return;
}
$current_screen = function_exists( 'get_current_screen' ) ? get_current_screen() : false;
if ( $current_screen && 'feedzy_imports' === $current_screen->post_type ) {
?>
<div class="feedzy-header">
<div class="feedzy-container">
<div class="page-title h1"><?php echo isset( $_GET['action'] ) && 'edit' === $_GET['action'] ? esc_html__( 'Edit Import', 'feedzy-rss-feeds' ) : esc_html__( 'New Import', 'feedzy-rss-feeds' ); // phpcs:ignore WordPress.Security.NonceVerification ?></div>
<div class="feedzy-logo">
<div class="feedzy-version"><?php echo esc_html( Feedzy_Rss_Feeds::get_version() ); ?></div>
<div class="feedzy-logo-icon"><img src="<?php echo esc_url( FEEDZY_ABSURL . 'img/feedzy.svg' ); ?>" width="60" height="60" alt=""></div>
</div>
</div>
</div>
<?php
add_filter( 'screen_options_show_screen', '__return_false' );
remove_all_actions( 'admin_notices' );
remove_all_actions( 'all_admin_notices' );
add_action( 'admin_notices', array( $this, 'feedzy_import_post_title_section' ) );
}
}
/**
* Check if the user has dismissed the notice.
*
* @return bool
*/
public static function had_dismissed_notice() {
if ( ! is_user_logged_in() ) {
return false;
}
return get_user_meta( get_current_user_id(), 'feedzy_import_upsell_notice', true ) === 'dismissed';
}
/**
* Load feedzy import post screen.
*/
public function feedzy_import_post_title_section() {
global $post;
?>
<div class="feedzy-wrap">
<div class="feedzy-container fz-import-field-item">
<?php if ( ! feedzy_is_pro() && ( time() - feedzy_install_time() ) > ( 2 * DAY_IN_SECONDS ) && ! self::had_dismissed_notice() ) : ?>
<div class="upgrade-alert mb-24">
<?php
$upgrade_url = tsdk_translate_link( tsdk_utmify( FEEDZY_UPSELL_LINK, 'post_title', 'import-screen' ) );
$content = __( 'You are using Feedzy Lite.', 'feedzy-rss-feeds' ) . ' ';
// translators: %1$s: opening anchor tag, %2$s: closing anchor tag.
$content .= wp_sprintf( __( 'Unlock more powerful features, by %1$supgrading to Feedzy Pro%2$s and get 50%% off.', 'feedzy-rss-feeds' ), '<a href="' . esc_url( $upgrade_url ) . '" target="_blank">', '</a>' );
echo wp_kses_post( $content );
?>
<button type="button" class="remove-alert"><span class="dashicons dashicons-no-alt"></span></button>
</div>
<?php endif; ?>
<div class="fz-form-wrap">
<div class="fz-form-group pb-30">
<label class="form-label"><?php esc_html_e( 'Import Name', 'feedzy-rss-feeds' ); ?></label>
<input type="text" class="form-control" id="post_title" value="<?php echo $post ? esc_attr( $post->post_title ) : ''; ?>" placeholder="<?php esc_attr_e( 'Add a name for your import', 'feedzy-rss-feeds' ); ?>">
</div>
</div>
</div>
</div>
<?php
}
}