X7ROOT File Manager
Current Path:
/home/oakwood/public_html/wp-content/plugins/popup-maker/classes
home
/
oakwood
/
public_html
/
wp-content
/
plugins
/
popup-maker
/
classes
/
ðŸ“
..
ðŸ“
Abstract
📄
Activator.php
(796 B)
ðŸ“
Admin
📄
Admin.php
(3.72 KB)
📄
Ajax.php
(1.66 KB)
📄
Analytics.php
(7.79 KB)
📄
AssetCache.php
(19.99 KB)
ðŸ“
Batch
📄
Cache.php
(252 B)
📄
ConditionCallbacks.php
(6.35 KB)
📄
Conditions.php
(14.26 KB)
📄
Cookies.php
(7.67 KB)
ðŸ“
DB
📄
DataStorage.php
(382 B)
📄
Deactivator.php
(594 B)
ðŸ“
Extension
📄
Extensions.php
(5.34 KB)
📄
GA.php
(2.31 KB)
📄
Helpers.php
(8.04 KB)
📄
Install.php
(7.92 KB)
ðŸ“
Integration
📄
Integrations.php
(12.69 KB)
ðŸ“
Interface
📄
Licensing.php
(7.69 KB)
📄
ListTable.php
(41.08 KB)
📄
Logging.php
(266 B)
ðŸ“
Model
ðŸ“
Newsletter
📄
Newsletters.php
(8.85 KB)
📄
Options.php
(308 B)
📄
Popup.php
(240 B)
📄
Popups.php
(787 B)
📄
Previews.php
(3.62 KB)
📄
Privacy.php
(16.22 KB)
ðŸ“
Repository
ðŸ“
Shortcode
📄
Shortcode.php
(11.61 KB)
📄
Shortcodes.php
(1.28 KB)
ðŸ“
Site
📄
Site.php
(4.67 KB)
📄
Telemetry.php
(10.31 KB)
📄
Triggers.php
(10.33 KB)
📄
Types.php
(7.59 KB)
ðŸ“
Upgrade
📄
Upgrades.php
(348 B)
📄
Upsell.php
(7.52 KB)
ðŸ“
Utils
📄
index.php
(116 B)
Editing: Shortcode.php
<?php /** * Shortcode class * * @package PopupMaker * @copyright Copyright (c) 2024, Code Atlantic LLC */ if ( ! defined( 'ABSPATH' ) ) { exit; } /** * Class PUM_Shortcode * * This is a base class for all popup maker & extension shortcodes. */ abstract class PUM_Shortcode { /** * Per instance version for compatibility fixes. * * @var int */ public $version = 1; /** * Used to force ajax rendering of the shortcode. * * @var bool */ public $ajax_rendering = false; /** * Shortcode supports inner content. * * @var bool */ public $has_content = false; /** * Section/Tab where the content editor will be placed. * * @var string */ public $inner_content_section = 'general'; /** * Field priority of the content editor. * * @var int */ public $inner_content_priority = 5; /** * @deprecated 1.7.0 * @var string */ public $field_prefix = 'attrs'; /** * @deprecated 1.7.0 * @var string */ public $field_name_format = '{$prefix}[{$field}]'; /** * Current version used for compatibility fixes. * * @var int */ public $current_version = 2; /** * Class constructor will set the needed filter and action hooks */ public function __construct() { if ( ! did_action( 'init' ) ) { add_action( 'init', [ $this, 'register' ] ); } elseif ( ! did_action( 'admin_head' ) && current_action() !== 'init' ) { add_action( 'admin_head', [ $this, 'register' ] ); } else { $this->register(); } } /** * Register this shortcode with Shortcode UI & Shortcake. */ public function register() { add_shortcode( $this->tag(), [ $this, 'handler' ] ); add_action( 'print_media_templates', [ $this, 'render_template' ] ); add_action( 'register_shortcode_ui', [ $this, 'register_shortcode_ui' ] ); PUM_Shortcodes::instance()->add_shortcode( $this ); } /** * The shortcode tag. */ abstract public function tag(); /** * @return mixed */ public static function init() { $class = get_called_class(); return new $class(); } /** * Shortcode handler * * @param array $atts shortcode attributes * @param string $content shortcode content * * @return string */ abstract public function handler( $atts, $content = null ); public function _tabs() { // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore $tabs = $this->version < 2 && method_exists( $this, 'sections' ) ? $this->sections() : $this->tabs(); return apply_filters( 'pum_shortcode_tabs', $tabs, $this->tag() ); } public function _subtabs() { // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore $subtabs = $this->version >= 2 && method_exists( $this, 'subtabs' ) ? $this->subtabs() : []; foreach ( $this->_tabs() as $tab_id => $tab_label ) { if ( empty( $subtabs[ $tab_id ] ) || ! is_array( $subtabs[ $tab_id ] ) ) { $subtabs[ $tab_id ] = [ 'main' => $tab_label, ]; } } return apply_filters( 'pum_shortcode_subtabs', $subtabs, $this->tag() ); } /** * Sections. * * @deprecated 1.7.0 Use $this->tabs() instead. * * @todo Once all shortcodes are v2+ remove $this->sections() * * @return array */ public function sections() { return [ 'general' => __( 'General', 'popup-maker' ), 'options' => __( 'Options', 'popup-maker' ), ]; } /** * Returns a list of tabs for this shortcodes editor. * * @return array */ public function tabs() { return [ 'general' => __( 'General', 'popup-maker' ), 'options' => __( 'Options', 'popup-maker' ), ]; } /** * Returns a list of tabs for this shortcodes editor. * * @return array */ public function subtabs() { return [ 'general' => [ 'main' => __( 'General', 'popup-maker' ), ], 'options' => [ 'main' => __( 'Options', 'popup-maker' ), ], ]; } /** * Gets preprocessed shortcode attributes. * * @param $atts * * @return array */ public function shortcode_atts( $atts ) { if ( ! is_array( $atts ) ) { $atts = []; } foreach ( $atts as $key => $value ) { /** * Fix for truthy & value-less arguments such as [shortcode argument] */ if ( is_int( $key ) ) { unset( $atts[ $key ] ); $atts[ $value ] = true; } } return shortcode_atts( $this->defaults(), $atts, $this->tag() ); } /** * Array of default attribute values. * * @todo Convert this to pull from the std of $this->fields. * * @return array */ public function defaults() { $defaults = []; $fields = PUM_Admin_Helpers::flatten_fields_array( $this->fields() ); foreach ( $fields as $key => $field ) { $defaults[ $key ] = isset( $field['std'] ) ? $field['std'] : null; } return apply_filters( 'pum_shortcode_defaults', $defaults, $this ); } /** * Render the template based on shortcode classes methods. */ public function render_template() { if ( $this->version >= 2 && $this->get_template() !== false ) { echo '<script type="text/html" id="tmpl-pum-shortcode-view-' . esc_attr( $this->tag() ) . '">'; $this->style_block(); $this->template(); echo '</script>'; } else { /** @deprecated, here in case shortcode doesn't yet have the new $this->template() method. */ $this->_template(); } } /** * Returns the inner contents of the JS templates. * * @todo Once all shortcodes have been updated to use template over _template make this abstract. * * @return void */ public function template() {} /** * Render the template based on shortcode classes methods. */ public function style_block() { $styles = $this->get_template_styles(); if ( false !== $styles ) { // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo '<style>' . $styles . '</style>'; } } /** * @deprecated 1.7.0 Use template() instead. */ public function _template() { // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore } /** * Render the template based on shortcode classes methods. * * @return string|false */ public function get_template_styles() { ob_start(); $this->template_styles(); /** $this->_template_styles() is @deprecated and here in case shortcode doesn't yet have the new $this->template() method. */ // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo $this->_template_styles(); $styles = ob_get_clean(); return ! empty( $styles ) ? $styles : false; } /** * Returns the styles for inner contents of the JS templates. * * @todo Once all shortcodes have been updated to use template over _template make this abstract. */ public function template_styles() {} /** * @deprecated 1.7.0 use template_styles() instead. * * @return string */ public function _template_styles() { // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore return ''; } /** * Returns the inner contents of the JS templates. * * @todo Once all shortcodes have been updated to use template over _template make this abstract. * * @return bool|string */ public function get_template() { ob_start(); $this->template(); $template = ob_get_clean(); return ! empty( $template ) ? $template : false; } /** * Register this shortcode in shortcake ui. */ public function register_shortcode_ui() { if ( ! is_admin() || ! function_exists( 'shortcode_ui_register_for_shortcode' ) ) { return; } $shortcode_ui_args = [ 'label' => $this->label(), 'listItemImage' => $this->icon(), 'post_type' => apply_filters( 'pum_shortcode_post_types', $this->post_types(), $this ), 'attrs' => [], ]; /** * Register UI for the "inner content" of the shortcode. Optional. * If no UI is registered for the inner content, then any inner content * data present will be backed up during editing. */ if ( $this->has_content ) { $shortcode_ui_args['inner_content'] = $this->inner_content_labels(); } $fields = PUM_Admin_Helpers::flatten_fields_array( $this->_fields() ); if ( count( $fields ) ) { foreach ( $fields as $field_id => $field ) { // Don't register inner content fields. if ( '_inner_content' === $field_id ) { continue; } // text, checkbox, textarea, radio, select, email, url, number, date, attachment, color, post_select switch ( $field['type'] ) { case 'select': $shortcode_ui_args['attrs'][] = [ 'label' => esc_html( $field['label'] ), 'attr' => $field_id, 'type' => 'select', 'options' => $field['options'], ]; break; case 'postselect': case 'objectselect': if ( empty( $field['post_type'] ) ) { break; } $shortcode_ui_args['attrs'][] = [ 'label' => wp_kses( $field['label'], wp_kses_allowed_html( 'post' ) ), 'attr' => $field_id, 'type' => 'post_select', 'options' => isset( $field['options'] ) ? $field['options'] : [], 'query' => [ 'post_type' => $field['post_type'] ], ]; break; case 'taxonomyselect': break; case 'text': default: $shortcode_ui_args['attrs'][] = [ 'label' => $field['label'], 'attr' => $field_id, 'type' => 'text', 'value' => ! empty( $field['std'] ) ? $field['std'] : '', // 'encode' => true, 'meta' => [ 'placeholder' => $field['placeholder'], ], ]; break; } } } /** * Register UI for your shortcode * * @param string $shortcode_tag * @param array $ui_args */ shortcode_ui_register_for_shortcode( $this->tag(), $shortcode_ui_args ); } /** * How the shortcode should be labeled in the UI. Required argument. * * @return string */ abstract public function label(); /** * Include an icon with your shortcode. Optional. * Use a dashicon, or full URL to image. * * Only used by Shortcake * * @return string */ public function icon() { return 'dashicons-editor-quote'; } /** * Limit this shortcode UI to specific post_types. Optional. * * @return array */ public function post_types() { return [ 'post', 'page', 'popup' ]; } /** * @todo Remove the inner function calls and just have this function define them directly. * * @return array */ public function inner_content_labels() { return [ 'label' => $this->label(), 'description' => $this->description(), ]; } /** * Used internally to merge the inner content field with existing fields. * * @return array */ public function _fields() { // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore $fields = apply_filters( 'pum_shortcode_fields', $this->fields(), $this ); if ( $this->has_content ) { $inner_content_labels = $this->inner_content_labels(); $fields[ $this->inner_content_section ]['main']['_inner_content'] = [ 'label' => $inner_content_labels['label'], 'desc' => $inner_content_labels['description'], 'section' => $this->inner_content_section, 'type' => 'textarea', 'priority' => $this->inner_content_priority, ]; } $fields = PUM_Admin_Helpers::parse_tab_fields( $fields, [ 'has_subtabs' => $this->version >= 2, 'name' => 'attrs[%s]', ] ); if ( $this->version < 2 ) { foreach ( $fields as $tab_id => $tab_fields ) { foreach ( $tab_fields as $field_id => $field ) { /** * Apply field compatibility fixes for shortcodes still on v1. */ if ( ! empty( $field['type'] ) && in_array( $field['type'], [ 'select', 'postselect', 'radio', 'multicheck' ], true ) ) { $fields[ $tab_id ][ $field_id ]['options'] = ! empty( $field['options'] ) ? array_flip( $field['options'] ) : []; } } } } return $fields; } /** * @return string */ abstract public function description(); /** * Array of fields by tab. * * @return array */ abstract public function fields(); }
Upload File
Create Folder