403Webshell
Server IP : 121.121.20.254  /  Your IP : 216.73.216.202
Web Server : Microsoft-IIS/10.0
System : Windows NT WEB-SERVER 10.0 build 20348 (Windows Server 2022) AMD64
User : IUSR ( 0)
PHP Version : 8.3.28
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  C:/inetpub/wwwroot/KnowledgeBase/wp-content/plugins/betterdocs/includes/Traits/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : C:/inetpub/wwwroot/KnowledgeBase/wp-content/plugins/betterdocs/includes/Traits/EditorHelper.php
<?php

namespace WPDeveloper\BetterDocs\Traits;

use WPDeveloper\BetterDocs\Core\Query;
use WPDeveloper\BetterDocs\Utils\Helper;
use WPDeveloper\BetterDocs\Core\Settings;
use WPDeveloper\BetterDocs\Core\Shortcode;
use WPDeveloper\BetterDocs\Admin\Customizer\Defaults;
use WPDeveloper\BetterDocs\Editors\BlockEditor\Block;
use WPDeveloper\BetterDocs\Editors\Elementor\BaseWidget;

/**
 * Description
 *
 * @since 1.0.0
 * @package PackageName
 *
 * @method mixed betterdocs( $key = '' )
 */
trait EditorHelper {

    /**
     * A list of deprecated attributes.
     * <old attributes as key, new attributes as value>
     * @var array<string, string>
     */
    protected $deprecated_attributes = [];

    /**
     * A list of paired attributes.
     * @var array
     */
    public $attributes = [];

    /**
     * A list of attributes which is passed when a shortcode is used.
     * @var array
     */
    protected $client_attributes = [];

    /**
     * A list of attributes which can be mapped as variables to the view.
     * key as old variable, value to get as variable in views.
     *
     * @var array<string, string> An associative array containing string keys and string values.
     */
    protected $map_view_vars = [];

    /**
     * A list of attributes for markup.
     * Which will converted to html attributes like string for use in html markup.
     *
     * @var array<string, mixed>
     */
    protected $html_attributes = ['wrapper_attr', 'inner_wrapper_attr'];

    /**
     * Summary of view_params
     * @return array
     */
    protected function view_params() {
        return [];
    }

public function reset_attributes() {
}

    public function betterdocs( $key = 'settings' ) {
        switch ( $key ) {
            case 'settings':
                return betterdocs()->container->get( Settings::class );
            case 'query':
                return betterdocs()->container->get( Query::class );
            case 'helper':
                return betterdocs()->container->get( Helper::class );
            case 'customizer':
                return betterdocs()->container->get( Defaults::class );
        }
    }

    public function merge( $a, $b ) {
        return Helper::merge( $a, $b );
    }

    /**
     * Define views for shortcode|elementor|blocks
     * @param string $name
     * @return void
     */
    final protected function views( $name ) {
        /**
         * Set widget_type property
         */
        $this->get_widget_type();

        betterdocs()->views->get( $name, $this->get_view_params() );
    }

    /**
     * If a shortcode has any deprecated attributes, we need to remap with new attributes
     *
     * @param mixed $atts
     * @return mixed
     */
    private function remove_deprecated_attributes( &$atts, $trigger_error = true, $not_remove_old = true ) {
        if ( empty( $this->deprecated_attributes ) || empty( $atts ) ) {
            return $atts;
        }

        foreach ( $this->deprecated_attributes as $oldAttr => $newAttr ) {
            if ( array_key_exists( $oldAttr, $atts ) ) {
                if( $trigger_error ) {
                    $this->error( $oldAttr, $newAttr );
                }

                $atts[$newAttr] = $atts[$oldAttr];
                if( $not_remove_old ) {
                    unset( $atts[$oldAttr] );
                }
            }
        }

        return $atts;
    }

    private function get_widget_type() {
        $_is_shortcode = ( $this instanceof Shortcode );
        $_is_elementor = ( $this instanceof BaseWidget );
        $_is_block     = ( $this instanceof Block );

        if ( $_is_shortcode ) {
            $this->widget_type = 'shortcode';
        } elseif ( $_is_elementor ) {
            $this->widget_type = 'elementor';
        } elseif ( $_is_block ) {
            $this->widget_type = 'blocks';
        }

        return $this->widget_type;
    }

    public function default_classnames() {
        switch ( $this->get_widget_type() ) {
            case 'blocks':
                return 'betterdocs-blocks ' . ( isset( $this->attributes['blockId'] ) ? $this->attributes['blockId'] : '' );
            case 'elementor':
                return 'betterdocs-elementor';
            case 'shortcode':
                return 'betterdocs-shortcode';
        }

        return '';
    }

    private function get_view_params() {
        $_origin_params = $this->view_params();

        if ( isset( $_origin_params['wrapper_attr'] ) ) {
            $_origin_params['wrapper_attr']['class'][] = $this->default_classnames();
        } else {
            $_origin_params['wrapper_attr'] = [
                'class' => [$this->default_classnames()]
            ];
        }

        if ( isset( $this->is_pro ) && $this->is_pro ) {
            $_origin_params['wrapper_attr']['class'][] = 'betterdocs-pro';
        }

        if ( property_exists( $this, 'view_wrapper' ) ) {
            $_origin_params['wrapper_attr']['class'][] = $this->view_wrapper;
        }

        if ( ! empty( $this->html_attributes ) ) {
            foreach ( $this->html_attributes as $attr ) {
                if ( array_key_exists( $attr, $_origin_params ) ) {
                    $_origin_params["{$attr}_array"] = $_origin_params[$attr];
                    $_origin_params[$attr]           = betterdocs()->template_helper->get_html_attributes( $_origin_params[$attr] );
                }
            }
        }

        $_view_params = wp_parse_args( [
            'widget'    => &$this,
            'widget_id' => $this->get_name()
        ], $_origin_params );

        return wp_parse_args( $_view_params, $this->normalize_attributes( $this->attributes, $this->map_view_vars ) );
    }

    /**
     * This method is a re-mapper or prettier for attributes variables.
     *
     * @param mixed $attributes
     * @param mixed $mixed_settings
     *
     * @return mixed
     */
    final public function normalize_attributes( $attributes, $mixed_settings = [] ) {
        $mixed_settings = array_merge( [
            'icon'               => 'show_icon',
            'nested_subcategory' => 'nested_subcategory',
            'posts_per_grid'     => 'posts_per_page',
            'orderby'            => 'post_orderby',
            'order'              => 'post_order',
            'list_icon'          => ''
        ], $mixed_settings );

        $_return_value = [];

        foreach ( $mixed_settings as $old_key => $new_key ) {
            if ( isset( $attributes[$old_key] ) && ! empty( $new_key ) ) {
                $_return_value[$new_key] = $attributes[$old_key];
                unset( $attributes[$old_key] );
            }
        }

        return array_merge( $attributes, $_return_value );
    }

    /**
     * Log error in debug.log if its enabled.
     *
     * @param string $key
     * @param string $new_key
     * @return void
     */
    protected function error( $key, $new_key ) {
        if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
            trigger_error(
                sprintf(
                    '"<strong>%1$s</strong>" attribute used in a %4$s called "%2$s" is no longer supported and will be removed in a future version. Instead, you should use the attribute <strong>%3$s</strong>.',
                    $key,
                    $this->get_name(),
                    $new_key,
                    $this->get_widget_type()
                ),
                E_USER_NOTICE
            );
        }
    }

/**
 * Check if any attributes has passed.
 *
 * example: [shortcode_name attr1="value1"]
 * this function will return true for $key attr1.
 * before default value sets in attributes we had to check if user pass anything as attributes.
 *
 * @param mixed $key
 * @return bool
 */
    public function has( $key ) {
        return isset( $this->client_attributes[$key] );
    }

    /**
     * Get attribute as property.
     *
     * @param string $key
     * @return mixed
     */
    public function __get( $key ) {
        if ( isset( $this->attributes[$key] ) ) {
            return $this->attributes[$key];
        }

        if ( property_exists( $this, $key ) ) {
            return $this->{$key};
        }

        return null;
    }

    /**
     * Set property as attributes
     * @param string $key
     * @param mixed $value
     */
    public function __set( $key, $value ) {
        $this->attributes[$key] = $value;
    }

    /**
     * Check if a property is set in attributes list.
     * @param mixed $key
     * @return bool
     */
    public function __isset( $key ) {
        return isset( $this->attributes[$key] );
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit