?
Current File : /home/cideo/sainchargny/wp-content/plugins/anywhere-elementor-pro/includes/elements/author.php
<?php

namespace Aepro;

use Elementor\Widget_Base;
use Elementor\Controls_Manager;
use Elementor\Group_Control_Image_Size;
use Elementor\Group_Control_Border;
use Elementor\Group_Control_Background;
use Elementor\Scheme_Color;
use Elementor\Group_Control_Typography;
use Elementor\Scheme_Typography;

class Aepro_Author extends Widget_Base{
    public function get_name() {
        return 'ae-author';
    }

    public function get_title() {
        return __( 'AE - Author', 'ae-pro' );
    }

    public function get_icon() {
        return 'eicon-person';
    }

    public function get_categories() {
        return [ 'ae-template-elements' ];
    }

    protected function _register_controls() {

        $this->start_controls_section(
            'section_general',
            [
                'label' => __('General','ae-pro')
            ]
        );

        $this->add_control(
            'render_data',
            [
                'label' => __('Data', 'ae-pro'),
                'type'  => Controls_Manager::SELECT,
                'options' => [
                    'avatar'          => __('Avatar', 'ae-pro'),
                    'first_name'      => __('First Name', 'ae-pro'),
                    'last_name'       => __('Last Name', 'ae-pro'),
                    'first_last'      => __('Full Name', 'ae-pro'),
                    'nickname'        => __('Nick Name', 'ae-pro'),
                    'description'     => __('Biography', 'ae-pro')
                ],
                'default' => 'avatar'
            ]
        );

        // some common controls
        $this->add_control(
            'add_link',
            [
                'label' => __('Show Link', 'ae-pro'),
                'type'  => Controls_Manager::SELECT,
                'options' => [
                    'none'  => __('No Link', 'ae-pro'),
                    'author' => __('Author Link', 'ae-pro'),
                    'post'  => __('Post Link', 'ae-pro')
                ],
                'default'   => 'author',
                'condition' => [
                    'render_data!' => 'description'
                ]
            ]
        );
        $this->add_control(
            'author_tag',
            [
                'label' => __( 'HTML Tag', 'ae-pro' ),
                'type' => Controls_Manager::SELECT,
                'options' => [
                    'h1' => __( 'H1', 'ae-pro' ),
                    'h2' => __( 'H2', 'ae-pro' ),
                    'h3' => __( 'H3', 'ae-pro' ),
                    'h4' => __( 'H4', 'ae-pro' ),
                    'h5' => __( 'H5', 'ae-pro' ),
                    'h6' => __( 'H6', 'ae-pro' ),
                    'div' => __( 'div', 'ae-pro' ),
                    'span' => __( 'span', 'ae-pro' )
                ],
                'default' => 'div',
                'condition' => [
                        'render_data!'  => ['avatar']
                ]
            ]
        );

        $this->register_avatar_controls();

        $this->register_author_meta_controls();



        $this->end_controls_section();

        $this->start_controls_section(
            'general_style_section',
            [
                'label' => __('Style','ae-pro'),
                'tab'   => Controls_Manager::TAB_STYLE
            ]
        );

        $this->register_avatar_style_controls();
        $this->render_author_meta_style_controls();

        $this->end_controls_section();
    }

    protected function render( ) {
        $settings = $this->get_settings();
        $helper = new Helper();
        $post_data = $helper->get_demo_post_data();
        $post_id = $post_data->ID;
        $author_id = $post_data->post_author;

        if($settings['render_data'] == 'avatar'){
            $this->render_avatar($author_id, $settings, $post_id);
        }else{
            $this->render_author_meta($author_id, $settings, $post_id);
        }

    }

    protected function render_avatar($author_id,$settings,$post_id){
        $author_name = get_the_author_meta('display_name', $author_id);
        $avt_size = $settings['avt_size']['size'];
        $avatar = get_avatar( $author_id, $avt_size );
        $author_link = get_author_posts_url($author_id);
        $this->add_render_attribute('avatar-class','class','ae-element-avatar');
        $this->add_render_attribute('avatar-class','class','overlay-'.$settings['show_overlay']);

        $link = '';
        $settings['add_link'];
        if($settings['add_link'] == 'author'){
            $link = get_author_posts_url($author_id);
        }elseif($settings['add_link'] == 'post'){
            $link = get_permalink($post_id);
        }
        ?>
        <div <?php echo $this->get_render_attribute_string('avatar-class');?>>

            <?php if(!empty($link)){ ?>
                <a href="<?php echo $link; ?>" title="<?php echo $author_name;?>">
            <?php } ?>

                <?php  echo $avatar; ?>
                <?php if($settings['show_overlay'] == 'hover' || $settings['show_overlay'] == 'always'){?>
                    <div class="ae-avatar-overlay"></div>
                <?php } ?>

            <?php if(!empty($link)){ ?>
                </a>
            <?php } ?>
        </div>
        <?php
    }

    protected function render_author_meta($author_id,$settings,$post_id){
        // get author string
        if($settings['render_data'] == 'first_last'){
            $name['first'] = get_the_author_meta('first_name', $author_id);
            $name['last'] = get_the_author_meta('last_name', $author_id);
            $author_text = implode(' ', $name);
        }else{
            $author_text = get_the_author_meta($settings['render_data'], $author_id);
        }

        if($settings['add_link'] == 'author'){
            $link = get_author_posts_url($author_id);
        }elseif($settings['add_link'] == 'post'){
            $link = get_permalink($post_id);
        }

        if($settings['render_data'] == 'description'){
            $author_text = wpautop($author_text);
        }

        $title = '';

        $this->add_render_attribute('meta-wrapper','class', 'ae-author-meta-wrapper');

        ?>
        <div <?php echo $this->get_render_attribute_string('meta-wrapper'); ?>>
            <?php if($settings['add_link'] != 'none' && $settings['render_data'] != 'description'){ ?>
                <a href="<?php echo $link; ?>" title="<?php echo $title; ?>">
            <?php } ?>

            <?php if($settings['icon'] != ''){
                $author_text = '<span class="icon-wrapper"><i class="fa ' . $settings['icon'] . '"></i></span> ' . $author_text;
            } ?>

            <?php echo sprintf('<%1$s itemprop="name" %2$s>%3$s</%1$s>',$settings['author_tag'],$this->get_render_attribute_string('post-author-class'),$author_text); ?>

            <?php if($settings['add_link'] != 'none' && $settings['render_data'] != 'description'){ ?>
                </a>
            <?php } ?>
        </div>
        <?php
    }

    protected function register_avatar_controls(){
        $this->add_control(
            'avt_size',
            [
                'label' => __( 'Size', 'ae-pro' ),
                'type' => Controls_Manager::SLIDER,
                'default' => [
                    'size' => 96,
                ],
                'range' => [
                    'px' => [
                        'min' => 32,
                        'max' => 512,
                    ],
                ],
                'condition' => [
                    'render_data' => 'avatar'
                ]
            ]
        );

        $this->add_responsive_control(
            'avatar_align',
            [
                'label' => __( 'Alignment', 'ae-pro' ),
                'type' => Controls_Manager::CHOOSE,
                'options' => [
                    'left' => [
                        'title' => __( 'Left', 'ae-pro' ),
                        'icon' => 'fa fa-align-left',
                    ],
                    'center' => [
                        'title' => __( 'Center', 'ae-pro' ),
                        'icon' => 'fa fa-align-center',
                    ],
                    'right' => [
                        'title' => __( 'Right', 'ae-pro' ),
                        'icon' => 'fa fa-align-right',
                    ]
                ],
                'default' => 'left',
                'selectors' => [
                    '{{WRAPPER}}' => 'text-align: {{VALUE}};',
                ]
            ]
        );

        $this->add_control(
            'show_overlay',
            [
                'label' => __('Show Overlay','ae-pro'),
                'type'  => Controls_Manager::SELECT,
                'options' => [
                    'hover' => __('On Hover','ae-pro'),
                    'always' => __('Always','ae-pro'),
                    'never' => __('Never','ae-pro'),
                ],
                'default'   => 'never',
                'condition' => [
                    'render_data' => 'avatar'
                ]
            ]
        );
    }

    protected function register_avatar_style_controls(){
        $this->add_control(
            'heading_avatar_border',
            [
                'label' => __( 'Border', 'ae-pro' ),
                'type' => Controls_Manager::HEADING,
                'separator' => 'before',
                'condition' => [
                    'render_data' => 'avatar'
                ]
            ]
        );

        $this->add_group_control(
            Group_Control_Border::get_type(),
            [
                'name' => 'avatar_border',
                'label' => __( 'avatar Border', 'ae-pro' ),
                'selector' => '{{WRAPPER}} .ae-element-avatar img',
                'condition' => [
                    'render_data' => 'avatar'
                ]
            ]
        );

        $this->add_control(
            'avatar_border_radius',
            [
                'label' => __( 'Border Radius', 'ae-pro' ),
                'type' => Controls_Manager::DIMENSIONS,
                'size_units' => [ 'px', '%' ],
                'selectors' => [
                    '{{WRAPPER}} .ae-element-avatar a' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
                    '{{WRAPPER}} .ae-element-avatar img' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
                    '{{WRAPPER}} .ae-avatar-overlay' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};'
                ],
                'condition' => [
                    'render_data' => 'avatar'
                ]
            ]
        );

        $this->add_control(
            'overlay_style',
            [
                'label' => __( 'Overlay', 'ae-pro' ),
                'type' => Controls_Manager::HEADING,
                'separator' => 'before',
                'condition' => [
                    'show_overlay!' => 'never',
                ],
                'condition' => [
                    'render_data' => 'avatar'
                ]
            ]
        );

        $this->add_group_control(
            Group_Control_Background::get_type(),
            [
                'name' => 'overlay_color',
                'label' => __( 'Color', 'elementor' ),
                'types' => [ 'none', 'classic','gradient' ],
                'selector' => '{{WRAPPER}} .ae-avatar-overlay',
                'condition' => [
                    'render_data' => 'avatar'
                ]
            ]
        );
    }

    protected function register_author_meta_controls(){

        $this->add_control(
            'icon',
            [
                'label' => __( 'Icon', 'ae-pro' ),
                'type' => Controls_Manager::ICON,
                'label_block' => true,
                'default' => 'fa fa-user',
                'condition' => [
                    'render_data!' => 'avatar',
                ]
            ]
        );
    }

    protected function render_author_meta_style_controls(){
        $this->add_control(
            'color',
            [
                'label'   => __('Color','ae-pro'),
                'type'    => Controls_Manager::COLOR,
                'scheme' => [
                    'type' => Scheme_Color::get_type(),
                    'value' => Scheme_Color::COLOR_3,
                ],
                'selectors' => [
                    '{{WRAPPER}} .ae-author-meta-wrapper a' => 'color: {{VALUE}};',
                    '{{WRAPPER}} .ae-author-meta-wrapper' => 'color: {{VALUE}};',
                    '{{WRAPPER}} .ae-author-meta-wrapper icon-wrapper' => 'color: {{VALUE}};'
                ],
            ]
        );

        $this->add_control(
            'hover_color',
            [
                'label'   => __('Hover Color','ae-pro'),
                'type'    => Controls_Manager::COLOR,
                'scheme' => [
                    'type' => Scheme_Color::get_type(),
                    'value' => Scheme_Color::COLOR_3,
                ],
                'selectors' => [
                    '{{WRAPPER}} .ae-author-meta-wrapper a:hover' => 'color: {{VALUE}};',
                    '{{WRAPPER}} .ae-author-meta-wrapper:hover' => 'color: {{VALUE}};',
                    '{{WRAPPER}} .ae-author-meta-wrapper:hover icon-wrapper' => 'color: {{VALUE}};'
                ],
            ]
        );

        $this->add_group_control(
            Group_Control_Typography::get_type(),
            [
                'name' => 'typography',
                'scheme' => Scheme_Typography::TYPOGRAPHY_4,
                'selector' => '{{WRAPPER}} .ae-author-meta-wrapper ',
                'condition' => [
                    'render_data!' => ['avatar'],
                ],
            ]
        );
    }
}

\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Aepro_Author() );