8889841ctags/post-terms.php000064400000005106150515171010010326 0ustar00 true, 'object_type' => [ get_post_type() ], ]; /** * Dynamic tags taxonomy args. * * Filters the taxonomy arguments used to retrieve the registered taxonomies * displayed in the taxonomy dynamic tag. * * @since 2.0.0 * * @param array $taxonomy_filter_args An array of `key => value` arguments to * match against the taxonomy objects inside * the `get_taxonomies()` function. */ $taxonomy_filter_args = apply_filters( 'elementor_pro/dynamic_tags/post_terms/taxonomy_args', $taxonomy_filter_args ); $taxonomies = Utils::get_taxonomies( $taxonomy_filter_args, 'objects' ); $options = []; foreach ( $taxonomies as $taxonomy => $object ) { $options[ $taxonomy ] = $object->label; } $this->add_control( 'taxonomy', [ 'label' => esc_html__( 'Taxonomy', 'elementor-pro' ), 'type' => Controls_Manager::SELECT, 'options' => $options, 'default' => 'post_tag', ] ); $this->add_control( 'separator', [ 'label' => esc_html__( 'Separator', 'elementor-pro' ), 'type' => Controls_Manager::TEXT, 'default' => ', ', ] ); $this->add_control( 'link', [ 'label' => esc_html__( 'Link', 'elementor-pro' ), 'type' => Controls_Manager::SWITCHER, 'default' => 'yes', ] ); } public function render() { $settings = $this->get_settings(); if ( 'yes' === $settings['link'] ) { $value = get_the_term_list( get_the_ID(), $settings['taxonomy'], '', $settings['separator'] ); } else { $terms = get_the_terms( get_the_ID(), $settings['taxonomy'] ); if ( is_wp_error( $terms ) || empty( $terms ) ) { return ''; } $term_names = []; foreach ( $terms as $term ) { $term_names[] = '' . $term->name . ''; } $value = implode( $settings['separator'], $term_names ); } echo wp_kses_post( $value ); } } tags/site-tagline.php000064400000001173150515171010010576 0ustar00get_settings(); $type = $settings['type']; $url = ''; if ( 'post' === $type && ! empty( $settings['post_id'] ) ) { $url = get_permalink( (int) $settings['post_id'] ); } elseif ( 'taxonomy' === $type && ! empty( $settings['taxonomy_id'] ) ) { $url = get_term_link( (int) $settings['taxonomy_id'] ); } elseif ( 'attachment' === $type && ! empty( $settings['attachment_id'] ) ) { $url = get_attachment_link( (int) $settings['attachment_id'] ); } elseif ( 'author' === $type && ! empty( $settings['author_id'] ) ) { $url = get_author_posts_url( (int) $settings['author_id'] ); } if ( ! is_wp_error( $url ) ) { return $url; } return ''; } protected function register_controls() { $this->add_control( 'type', [ 'label' => esc_html__( 'Type', 'elementor-pro' ), 'type' => Controls_Manager::SELECT, 'options' => [ 'post' => esc_html__( 'Content', 'elementor-pro' ), 'taxonomy' => esc_html__( 'Taxonomy', 'elementor-pro' ), 'attachment' => esc_html__( 'Media', 'elementor-pro' ), 'author' => esc_html__( 'Author', 'elementor-pro' ), ], ] ); $this->add_control( 'post_id', [ 'label' => esc_html__( 'Search & Select', 'elementor-pro' ), 'type' => QueryModule::QUERY_CONTROL_ID, 'options' => [], 'label_block' => true, 'autocomplete' => [ 'object' => QueryModule::QUERY_OBJECT_POST, 'display' => 'detailed', 'query' => [ 'post_type' => 'any', ], ], 'condition' => [ 'type' => 'post', ], ] ); $this->add_control( 'taxonomy_id', [ 'label' => esc_html__( 'Search & Select', 'elementor-pro' ), 'type' => QueryModule::QUERY_CONTROL_ID, 'options' => [], 'label_block' => true, 'autocomplete' => [ 'object' => QueryModule::QUERY_OBJECT_TAX, 'display' => 'detailed', ], 'condition' => [ 'type' => 'taxonomy', ], ] ); $this->add_control( 'attachment_id', [ 'label' => esc_html__( 'Search & Select', 'elementor-pro' ), 'type' => QueryModule::QUERY_CONTROL_ID, 'options' => [], 'label_block' => true, 'autocomplete' => [ 'object' => QueryModule::QUERY_OBJECT_ATTACHMENT, 'display' => 'detailed', ], 'condition' => [ 'type' => 'attachment', ], ] ); $this->add_control( 'author_id', [ 'label' => esc_html__( 'Search & Select', 'elementor-pro' ), 'type' => QueryModule::QUERY_CONTROL_ID, 'options' => [], 'label_block' => true, 'autocomplete' => [ 'object' => QueryModule::QUERY_OBJECT_AUTHOR, 'display' => 'detailed', ], 'condition' => [ 'type' => 'author', ], ] ); } } tags/author-name.php000064400000001156150515171010010432 0ustar00get_settings( 'include_context' ); $title = Utils::get_page_title( $include_context ); echo wp_kses_post( $title ); } protected function register_controls() { $this->add_control( 'include_context', [ 'label' => esc_html__( 'Include Context', 'elementor-pro' ), 'type' => Controls_Manager::SWITCHER, 'default' => 'yes', ] ); } } tags/post-date.php000064400000005123150515171010010110 0ustar00add_control( 'type', [ 'label' => esc_html__( 'Type', 'elementor-pro' ), 'type' => Controls_Manager::SELECT, 'options' => [ 'post_date_gmt' => esc_html__( 'Post Published', 'elementor-pro' ), 'post_modified_gmt' => esc_html__( 'Post Modified', 'elementor-pro' ), ], 'default' => 'post_date_gmt', ] ); $this->add_control( 'format', [ 'label' => esc_html__( 'Format', 'elementor-pro' ), 'type' => Controls_Manager::SELECT, 'options' => [ 'default' => esc_html__( 'Default', 'elementor-pro' ), 'F j, Y' => gmdate( 'F j, Y' ), 'Y-m-d' => gmdate( 'Y-m-d' ), 'm/d/Y' => gmdate( 'm/d/Y' ), 'd/m/Y' => gmdate( 'd/m/Y' ), 'human' => esc_html__( 'Human Readable', 'elementor-pro' ), 'custom' => esc_html__( 'Custom', 'elementor-pro' ), ], 'default' => 'default', ] ); $this->add_control( 'custom_format', [ 'label' => esc_html__( 'Custom Format', 'elementor-pro' ), 'default' => '', 'description' => sprintf( '%s', esc_html__( 'Documentation on date and time formatting', 'elementor-pro' ) ), 'condition' => [ 'format' => 'custom', ], ] ); } public function render() { $date_type = $this->get_settings( 'type' ); $format = $this->get_settings( 'format' ); if ( 'human' === $format ) { /* translators: %s: Human readable date/time. */ $value = sprintf( esc_html__( '%s ago', 'elementor-pro' ), human_time_diff( strtotime( get_post()->{$date_type} ) ) ); } else { switch ( $format ) { case 'default': $date_format = ''; break; case 'custom': $date_format = $this->get_settings( 'custom_format' ); break; default: $date_format = $format; break; } if ( 'post_date_gmt' === $date_type ) { $value = get_the_date( $date_format ); } else { $value = get_the_modified_date( $date_format ); } } echo wp_kses_post( $value ); } } tags/archive-description.php000064400000001224150515171010012150 0ustar00get_settings(); $request_type = isset( $settings['request_type'] ) ? strtoupper( $settings['request_type'] ) : false; $param_name = isset( $settings['param_name'] ) ? $settings['param_name'] : false; $value = ''; if ( ! $param_name || ! $request_type ) { return ''; } switch ( $request_type ) { case 'POST': $value = Utils::_unstable_get_super_global_value( $_POST, $param_name ) ?? ''; // phpcs:ignore WordPress.Security.NonceVerification.Missing break; case 'GET': $value = Utils::_unstable_get_super_global_value( $_GET, $param_name ) ?? ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended break; case 'QUERY_VAR': $value = get_query_var( $param_name ); break; } echo htmlentities( wp_kses_post( $value ) ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } protected function register_controls() { $this->add_control( 'request_type', [ 'label' => esc_html__( 'Type', 'elementor-pro' ), 'type' => Controls_Manager::SELECT, 'default' => 'get', 'options' => [ 'get' => 'Get', 'post' => 'Post', 'query_var' => 'Query Var', ], ] ); $this->add_control( 'param_name', [ 'label' => esc_html__( 'Parameter Name', 'elementor-pro' ), 'type' => Controls_Manager::TEXT, ] ); } } tags/comments-number.php000064400000004175150515171010011331 0ustar00add_control( 'format_no_comments', [ 'label' => esc_html__( 'No Comments Format', 'elementor-pro' ), 'default' => esc_html__( 'No Responses', 'elementor-pro' ), ] ); $this->add_control( 'format_one_comments', [ 'label' => esc_html__( 'One Comment Format', 'elementor-pro' ), 'default' => esc_html__( 'One Response', 'elementor-pro' ), ] ); $this->add_control( 'format_many_comments', [ 'label' => esc_html__( 'Many Comment Format', 'elementor-pro' ), 'default' => esc_html__( '{number} Responses', 'elementor-pro' ), ] ); $this->add_control( 'link_to', [ 'label' => esc_html__( 'Link', 'elementor-pro' ), 'type' => Controls_Manager::SELECT, 'default' => '', 'options' => [ '' => esc_html__( 'None', 'elementor-pro' ), 'comments_link' => esc_html__( 'Comments Link', 'elementor-pro' ), ], ] ); } public function render() { $settings = $this->get_settings(); $comments_number = get_comments_number(); if ( ! $comments_number ) { $count = $settings['format_no_comments']; } elseif ( 1 === $comments_number ) { $count = $settings['format_one_comments']; } else { $count = strtr( $settings['format_many_comments'], [ '{number}' => number_format_i18n( $comments_number ), ] ); } if ( 'comments_link' === $this->get_settings( 'link_to' ) ) { $count = sprintf( '%s', get_comments_link(), $count ); } echo wp_kses_post( $count ); } } tags/post-custom-field.php000064400000003702150515171010011567 0ustar00add_control( 'key', [ 'label' => esc_html__( 'Key', 'elementor-pro' ), 'type' => Controls_Manager::SELECT, 'options' => $this->get_custom_keys_array(), ] ); $this->add_control( 'custom_key', [ 'label' => esc_html__( 'Custom Key', 'elementor-pro' ), 'type' => Controls_Manager::TEXT, 'placeholder' => 'key', 'condition' => [ 'key' => '', ], ] ); } public function render() { $key = $this->get_settings( 'key' ); if ( empty( $key ) ) { $key = $this->get_settings( 'custom_key' ); } if ( empty( $key ) ) { return; } $value = get_post_meta( get_the_ID(), $key, true ); echo wp_kses_post( $value ); } private function get_custom_keys_array() { $custom_keys = get_post_custom_keys(); $options = [ '' => esc_html__( 'Select...', 'elementor-pro' ), ]; if ( ! empty( $custom_keys ) ) { foreach ( $custom_keys as $custom_key ) { if ( '_' !== substr( $custom_key, 0, 1 ) ) { $options[ $custom_key ] = $custom_key; } } } return $options; } } tags/lightbox.php000064400000006171150515171010010034 0ustar00add_control( 'type', [ 'label' => esc_html__( 'Type', 'elementor-pro' ), 'type' => Controls_Manager::CHOOSE, 'options' => [ 'video' => [ 'title' => esc_html__( 'Video', 'elementor-pro' ), 'icon' => 'eicon-video-camera', ], 'image' => [ 'title' => esc_html__( 'Image', 'elementor-pro' ), 'icon' => 'eicon-image-bold', ], ], ] ); $this->add_control( 'image', [ 'label' => esc_html__( 'Image', 'elementor-pro' ), 'type' => Controls_Manager::MEDIA, 'condition' => [ 'type' => 'image', ], ] ); $this->add_control( 'video_url', [ 'label' => esc_html__( 'Video URL', 'elementor-pro' ), 'type' => Controls_Manager::TEXT, 'label_block' => true, 'condition' => [ 'type' => 'video', ], ] ); } private function get_image_settings( $settings ) { $image_settings = [ 'url' => $settings['image']['url'], 'type' => 'image', ]; $image_id = $settings['image']['id']; if ( $image_id ) { $lightbox_image_attributes = Plugin::elementor()->images_manager->get_lightbox_image_attributes( $image_id ); $image_settings = array_merge( $image_settings, $lightbox_image_attributes ); } return $image_settings; } private function get_video_settings( $settings ) { $video_properties = Embed::get_video_properties( $settings['video_url'] ); $video_url = null; if ( ! $video_properties ) { $video_type = 'hosted'; $video_url = $settings['video_url']; } else { $video_type = $video_properties['provider']; $video_url = Embed::get_embed_url( $settings['video_url'] ); } if ( null === $video_url ) { return ''; } return [ 'type' => 'video', 'videoType' => $video_type, 'url' => $video_url, ]; } public function render() { $settings = $this->get_settings(); $value = []; if ( ! $settings['type'] ) { return; } if ( 'image' === $settings['type'] && $settings['image'] ) { $value = $this->get_image_settings( $settings ); } elseif ( 'video' === $settings['type'] && $settings['video_url'] ) { $value = $this->get_video_settings( $settings ); } if ( ! $value ) { return; } // PHPCS - the method Plugin::elementor()->frontend->create_action_hash is safe. echo Plugin::elementor()->frontend->create_action_hash( 'lightbox', $value ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } } tags/author-info.php000064400000002350150515171010010442 0ustar00get_settings( 'key' ); if ( empty( $key ) ) { return; } $value = get_the_author_meta( $key ); echo wp_kses_post( $value ); } public function get_panel_template_setting_key() { return 'key'; } protected function register_controls() { $this->add_control( 'key', [ 'label' => esc_html__( 'Field', 'elementor-pro' ), 'type' => Controls_Manager::SELECT, 'default' => 'description', 'options' => [ 'description' => esc_html__( 'Bio', 'elementor-pro' ), 'email' => esc_html__( 'Email', 'elementor-pro' ), 'url' => esc_html__( 'Website', 'elementor-pro' ), ], ] ); } } tags/post-excerpt.php000064400000005020150515171010010641 0ustar00add_control( 'max_length', [ 'label' => esc_html__( 'Excerpt Length', 'elementor-pro' ), 'type' => Controls_Manager::NUMBER, ] ); $this->add_control( 'apply_to_post_content', [ 'label' => esc_html__( 'Apply to post content', 'elementor-pro' ), 'type' => Controls_Manager::SWITCHER, 'label_on' => esc_html__( 'Yes', 'elementor-pro' ), 'label_off' => esc_html__( 'No', 'elementor-pro' ), 'default' => 'no', ] ); } public function get_categories() { return [ Module::TEXT_CATEGORY ]; } public function should_get_excerpt_from_post_content( $settings ) { return 'yes' === $settings['apply_to_post_content']; } public function is_post_excerpt_valid( $settings, $post ) { if ( ! $post ) { return false; } if ( empty( $post->post_excerpt ) && ! $this->should_get_excerpt_from_post_content( $settings ) ) { return false; } if ( empty( $post->post_excerpt ) && empty( $post->post_content ) && $this->should_get_excerpt_from_post_content( $settings ) ) { return false; } if ( empty( $post->post_excerpt ) && empty( $post->post_content ) ) { return false; } return true; } public function get_post_excerpt( $settings, $post ) { $post_excerpt = $post->post_excerpt ?? ''; if ( empty( $post_excerpt ) && ! empty( $post->post_content ) && $this->should_get_excerpt_from_post_content( $settings ) ) { $post_excerpt = apply_filters( 'the_excerpt', get_the_excerpt( $post ) ); } return $post_excerpt; } public function render() { // Allow only a real `post_excerpt` and not the trimmed `post_content` from the `get_the_excerpt` filter $post = get_post(); $settings = $this->get_settings_for_display(); if ( ! $this->is_post_excerpt_valid( $settings, $post ) ) { return; } $max_length = (int) $settings['max_length']; $excerpt = $this->get_post_excerpt( $settings, $post ); $excerpt = Utils::trim_words( $excerpt, $max_length ); echo wp_kses_post( $excerpt ); } } tags/author-meta.php000064400000001674150515171010010445 0ustar00get_settings( 'key' ); if ( empty( $key ) ) { return; } $value = get_the_author_meta( $key ); echo wp_kses_post( $value ); } protected function register_controls() { $this->add_control( 'key', [ 'label' => esc_html__( 'Meta Key', 'elementor-pro' ), ] ); } } tags/post-gallery.php000064400000002516150515171010010635 0ustar00ID, array_column( $value, 'id' ), true ) ) { $value[] = [ 'id' => $image->ID, ]; } } return $value; } } tags/current-date-time.php000064400000005450150515171010011544 0ustar00add_control( 'date_format', [ 'label' => esc_html__( 'Date Format', 'elementor-pro' ), 'type' => Controls_Manager::SELECT, 'options' => [ 'default' => esc_html__( 'Default', 'elementor-pro' ), '' => esc_html__( 'None', 'elementor-pro' ), 'F j, Y' => gmdate( 'F j, Y' ), 'Y-m-d' => gmdate( 'Y-m-d' ), 'm/d/Y' => gmdate( 'm/d/Y' ), 'd/m/Y' => gmdate( 'd/m/Y' ), 'custom' => esc_html__( 'Custom', 'elementor-pro' ), ], 'default' => 'default', ] ); $this->add_control( 'time_format', [ 'label' => esc_html__( 'Time Format', 'elementor-pro' ), 'type' => Controls_Manager::SELECT, 'options' => [ 'default' => esc_html__( 'Default', 'elementor-pro' ), '' => esc_html__( 'None', 'elementor-pro' ), 'g:i a' => gmdate( 'g:i a' ), 'g:i A' => gmdate( 'g:i A' ), 'H:i' => gmdate( 'H:i' ), ], 'default' => 'default', 'condition' => [ 'date_format!' => 'custom', ], ] ); $this->add_control( 'custom_format', [ 'label' => esc_html__( 'Custom Format', 'elementor-pro' ), 'default' => get_option( 'date_format' ) . ' ' . get_option( 'time_format' ), 'description' => sprintf( '%s', esc_html__( 'Documentation on date and time formatting', 'elementor-pro' ) ), 'condition' => [ 'date_format' => 'custom', ], ] ); } public function render() { $settings = $this->get_settings(); if ( 'custom' === $settings['date_format'] ) { $format = $settings['custom_format']; } else { $date_format = $settings['date_format']; $time_format = $settings['time_format']; $format = ''; if ( 'default' === $date_format ) { $date_format = get_option( 'date_format' ); } if ( 'default' === $time_format ) { $time_format = get_option( 'time_format' ); } if ( $date_format ) { $format = $date_format; $has_date = true; } else { $has_date = false; } if ( $time_format ) { if ( $has_date ) { $format .= ' '; } $format .= $time_format; } } $value = date_i18n( $format ); echo wp_kses_post( $value ); } } tags/archive-url.php000064400000001361150515171010010431 0ustar00get_settings(); $attachment = $this->get_attacment(); if ( ! $attachment ) { return; } $value = ''; switch ( $settings['attachment_data'] ) { case 'alt': $value = get_post_meta( $attachment->ID, '_wp_attachment_image_alt', true ); break; case 'caption': $value = $attachment->post_excerpt; break; case 'description': $value = $attachment->post_content; break; case 'href': $value = get_permalink( $attachment->ID ); break; case 'src': $value = $attachment->guid; break; case 'title': $value = $attachment->post_title; break; } echo wp_kses_post( $value ); } protected function register_controls() { $this->add_control( 'attachment_data', [ 'label' => esc_html__( 'Data', 'elementor-pro' ), 'type' => Controls_Manager::SELECT, 'default' => 'title', 'options' => [ 'title' => esc_html__( 'Title', 'elementor-pro' ), 'alt' => esc_html__( 'Alt', 'elementor-pro' ), 'caption' => esc_html__( 'Caption', 'elementor-pro' ), 'description' => esc_html__( 'Description', 'elementor-pro' ), 'src' => esc_html__( 'File URL', 'elementor-pro' ), 'href' => esc_html__( 'Attachment URL', 'elementor-pro' ), ], ] ); } } tags/post-id.php000064400000001155150515171010007570 0ustar00get_settings( 'type' ); $user = wp_get_current_user(); if ( empty( $type ) || 0 === $user->ID ) { return; } $value = ''; switch ( $type ) { case 'login': case 'email': case 'url': case 'nicename': $field = 'user_' . $type; $value = isset( $user->$field ) ? $user->$field : ''; break; case 'id': $value = $user->ID; break; case 'description': case 'first_name': case 'last_name': case 'display_name': $value = isset( $user->$type ) ? $user->$type : ''; break; case 'meta': $key = $this->get_settings( 'meta_key' ); if ( ! empty( $key ) ) { $value = get_user_meta( $user->ID, $key, true ); } break; } echo wp_kses_post( $value ); } public function get_panel_template_setting_key() { return 'type'; } protected function register_controls() { $this->add_control( 'type', [ 'label' => esc_html__( 'Field', 'elementor-pro' ), 'type' => Controls_Manager::SELECT, 'options' => [ '' => esc_html__( 'Choose', 'elementor-pro' ), 'id' => esc_html__( 'ID', 'elementor-pro' ), 'display_name' => esc_html__( 'Display Name', 'elementor-pro' ), 'login' => esc_html__( 'Username', 'elementor-pro' ), 'first_name' => esc_html__( 'First Name', 'elementor-pro' ), 'last_name' => esc_html__( 'Last Name', 'elementor-pro' ), 'description' => esc_html__( 'Bio', 'elementor-pro' ), 'email' => esc_html__( 'Email', 'elementor-pro' ), 'url' => esc_html__( 'Website', 'elementor-pro' ), 'meta' => esc_html__( 'User Meta', 'elementor-pro' ), ], ] ); $this->add_control( 'meta_key', [ 'label' => esc_html__( 'Meta Key', 'elementor-pro' ), 'condition' => [ 'type' => 'meta', ], ] ); } } tags/base/data-tag.php000064400000000403150515171010010600 0ustar00get_settings( 'show_home_title' ) ) { return; } if ( Plugin::elementor()->common ) { $current_action_data = Plugin::elementor()->common->get_component( 'ajax' )->get_current_action_data(); if ( $current_action_data && 'render_tags' === $current_action_data['action'] ) { // Override the global $post for the render. query_posts( [ 'p' => get_the_ID(), 'post_type' => 'any', ] ); } } $include_context = 'yes' === $this->get_settings( 'include_context' ); $title = Utils::get_page_title( $include_context ); echo wp_kses_post( $title ); } protected function register_controls() { $this->add_control( 'include_context', [ 'label' => esc_html__( 'Include Context', 'elementor-pro' ), 'type' => Controls_Manager::SWITCHER, ] ); $this->add_control( 'show_home_title', [ 'label' => esc_html__( 'Show Home Title', 'elementor-pro' ), 'type' => Controls_Manager::SWITCHER, ] ); } } tags/contact-url.php000064400000026345150515171010010454 0ustar00add_control( 'link_type', [ 'label' => esc_html__( 'Type', 'elementor-pro' ), 'type' => Controls_Manager::SELECT, 'options' => [ '' => '— ' . esc_html__( 'Select', 'elementor-pro' ) . ' —', 'email' => esc_html__( 'Email', 'elementor-pro' ), 'tel' => esc_html__( 'Tel', 'elementor-pro' ), 'sms' => esc_html__( 'SMS', 'elementor-pro' ), 'whatsapp' => esc_html__( 'WhatsApp', 'elementor-pro' ), 'skype' => esc_html__( 'Skype', 'elementor-pro' ), 'messenger' => esc_html__( 'Messenger', 'elementor-pro' ), 'viber' => esc_html__( 'Viber', 'elementor-pro' ), 'waze' => esc_html__( 'Waze', 'elementor-pro' ), 'google_calendar' => esc_html__( 'Google Calendar', 'elementor-pro' ), 'outlook_calendar' => esc_html__( 'Outlook Calendar', 'elementor-pro' ), 'yahoo_calendar' => esc_html__( 'Yahoo Calendar', 'elementor-pro' ), ], ] ); $this->add_control( 'mail_to', [ 'label' => esc_html__( 'Email', 'elementor-pro' ), 'type' => Controls_Manager::TEXT, 'condition' => [ 'link_type' => 'email', ], ] ); $this->add_control( 'mail_subject', [ 'label' => esc_html__( 'Subject', 'elementor-pro' ), 'type' => Controls_Manager::TEXT, 'label_block' => 'true', 'condition' => [ 'link_type' => 'email', ], ] ); $this->add_control( 'mail_body', [ 'label' => esc_html__( 'Message', 'elementor-pro' ), 'type' => Controls_Manager::TEXTAREA, 'condition' => [ 'link_type' => 'email', ], ] ); $this->add_control( 'tel_number', [ 'label' => esc_html__( 'Number', 'elementor-pro' ), 'type' => Controls_Manager::TEXT, 'condition' => [ 'link_type' => [ 'tel', 'sms', 'whatsapp', 'viber', ], ], ] ); $this->add_control( 'username', [ 'label' => esc_html__( 'Username', 'elementor-pro' ), 'type' => Controls_Manager::TEXT, 'condition' => [ 'link_type' => [ 'skype', 'messenger' ], ], ] ); $this->add_control( 'viber_action', [ 'label' => esc_html__( 'Action', 'elementor-pro' ), 'type' => Controls_Manager::SELECT, 'options' => [ 'contact' => esc_html__( 'Contact', 'elementor-pro' ), 'add' => esc_html__( 'Add', 'elementor-pro' ), ], 'default' => 'contact', 'condition' => [ 'link_type' => 'viber', ], ] ); $this->add_control( 'skype_action', [ 'label' => esc_html__( 'Action', 'elementor-pro' ), 'type' => Controls_Manager::SELECT, 'options' => [ 'call' => esc_html__( 'Call', 'elementor-pro' ), 'chat' => esc_html__( 'Chat', 'elementor-pro' ), 'userinfo' => esc_html__( 'Show Profile', 'elementor-pro' ), 'add' => esc_html__( 'Add to Contacts', 'elementor-pro' ), 'voicemail' => esc_html__( 'Send Voice Mail', 'elementor-pro' ), ], 'default' => 'call', 'condition' => [ 'link_type' => 'skype', ], ] ); $this->add_control( 'waze_address', [ 'label' => esc_html__( 'Location', 'elementor-pro' ), 'type' => Controls_Manager::TEXT, 'label_block' => 'true', 'condition' => [ 'link_type' => 'waze', ], ] ); $this->add_control( 'event_title', [ 'label' => esc_html__( 'Title', 'elementor-pro' ), 'type' => Controls_Manager::TEXT, 'label_block' => 'true', 'condition' => [ 'link_type' => [ 'google_calendar', 'outlook_calendar', 'yahoo_calendar', ], ], ] ); $this->add_control( 'event_description', [ 'label' => esc_html__( 'Description', 'elementor-pro' ), 'type' => Controls_Manager::TEXTAREA, 'condition' => [ 'link_type' => [ 'google_calendar', 'outlook_calendar', 'yahoo_calendar', ], ], ] ); $this->add_control( 'event_location', [ 'label' => esc_html__( 'Location', 'elementor-pro' ), 'type' => Controls_Manager::TEXT, 'label_block' => 'true', 'condition' => [ 'link_type' => [ 'google_calendar', 'outlook_calendar', 'yahoo_calendar', ], ], ] ); $this->add_control( 'event_start_date', [ 'label' => esc_html__( 'Start', 'elementor-pro' ), 'type' => Controls_Manager::DATE_TIME, 'condition' => [ 'link_type' => [ 'google_calendar', 'outlook_calendar', 'yahoo_calendar', ], ], ] ); $this->add_control( 'event_end_date', [ 'label' => esc_html__( 'End', 'elementor-pro' ), 'type' => Controls_Manager::DATE_TIME, 'condition' => [ 'link_type' => [ 'google_calendar', 'outlook_calendar', 'yahoo_calendar', ], ], ] ); } protected function register_advanced_section() {} private function build_mail_to_link( $settings ) { if ( empty( $settings['mail_to'] ) ) { return ''; } $link = 'mailto:' . $settings['mail_to'] . '?'; $build_parts = []; if ( ! empty( $settings['mail_subject'] ) ) { $build_parts['subject'] = $this->escape_space_in_url( $settings['mail_subject'] ); } if ( ! empty( $settings['mail_body'] ) ) { $build_parts['body'] = $this->escape_space_in_url( $settings['mail_body'] ); } return add_query_arg( $build_parts, $link ); } private function build_sms_link( $settings ) { if ( empty( $settings['tel_number'] ) ) { return ''; } $value = 'sms:' . $settings['tel_number']; return $value; } private function build_whatsapp_link( $settings ) { if ( empty( $settings['tel_number'] ) ) { return ''; } return 'https://api.whatsapp.com/send?phone=' . $settings['tel_number']; } private function build_skype_link( $settings ) { if ( empty( $settings['username'] ) ) { return ''; } $action = 'call'; if ( ! empty( $settings['skype_action'] ) ) { $action = $settings['skype_action']; } $link = 'skype:' . $settings['username'] . '?' . $action; return $link; } private function build_waze_link( $settings ) { $link = 'https://waze.com/ul?'; $build_parts = [ 'q' => $settings['waze_address'], 'z' => 10, 'navigate' => 'yes', ]; return add_query_arg( $build_parts, $link ); } private function date_to_iso( $date, $all_day = false ) { $time = strtotime( $date ); if ( $all_day ) { return gmdate( 'Ymd\/Ymd', $time ); } return gmdate( 'Ymd\THis', $time ); } private function date_to_ics( $date ) { $time = strtotime( $date ); return gmdate( 'Y-m-d\Th:i:s', $time ); } private function escape_space_in_url( $url ) { return str_replace( ' ', '%20', $url ); } private function build_google_calendar_link( $settings ) { $dates = ''; if ( ! empty( $settings['event_start_date'] ) ) { if ( empty( $settings['event_end_date'] ) ) { $dates = $this->date_to_iso( $settings['event_start_date'], true ); } else { $dates = $this->date_to_iso( $settings['event_start_date'] ) . '/' . $this->date_to_iso( $settings['event_end_date'] ); } } $link = 'https://www.google.com/calendar/render?action=TEMPLATE&'; $build_parts = [ 'text' => empty( $settings['event_title'] ) ? '' : $this->escape_space_in_url( $settings['event_title'] ), 'details' => empty( $settings['event_description'] ) ? '' : $this->escape_space_in_url( $settings['event_description'] ), 'dates' => $dates, 'location' => empty( $settings['event_location'] ) ? '' : $this->escape_space_in_url( $settings['event_location'] ), ]; return add_query_arg( $build_parts, $link ); } private function build_outlook_calendar_link( $settings ) { $link = 'https://outlook.office.com/owa/?path=/calendar/action/compose&'; $build_parts = [ 'subject' => empty( $settings['event_title'] ) ? '' : urlencode( $settings['event_title'] ), 'body' => empty( $settings['event_description'] ) ? '' : urlencode( $settings['event_description'] ), 'location' => empty( $settings['event_location'] ) ? '' : urlencode( $settings['event_location'] ), ]; if ( ! empty( $settings['event_start_date'] ) ) { $build_parts['startdt'] = urlencode( $this->date_to_ics( $settings['event_start_date'] ) ); } if ( ! empty( $settings['event_end_date'] ) ) { $build_parts['enddt'] = urlencode( $this->date_to_ics( $settings['event_end_date'] ) ); } return add_query_arg( $build_parts, $link ); } private function build_messenger_link( $settings ) { if ( empty( $settings['username'] ) ) { return ''; } return 'https://m.me/' . $settings['username']; } private function build_yahoo_calendar_link( $settings ) { $link = 'https://calendar.yahoo.com/?v=60&view=d&type=20'; $build_parts = [ 'title' => empty( $settings['event_title'] ) ? '' : urlencode( $settings['event_title'] ), 'desc' => empty( $settings['event_description'] ) ? '' : urlencode( $settings['event_description'] ), 'in_loc' => empty( $settings['event_location'] ) ? '' : urlencode( $settings['event_location'] ), ]; if ( ! empty( $settings['event_start_date'] ) ) { $build_parts['st'] = urlencode( gmdate( 'Ymd\This', strtotime( $settings['event_start_date'] ) ) ); } if ( ! empty( $settings['event_end_date'] ) ) { $build_parts['et'] = urlencode( gmdate( 'Ymd\This', strtotime( $settings['event_end_date'] ) ) ); } return add_query_arg( $build_parts, $link ); } public function build_viber_link( $settings ) { if ( empty( $settings['tel_number'] ) ) { return ''; } $action = 'contact'; if ( ! empty( $settings['viber_action'] ) ) { $action = $settings['viber_action']; } return add_query_arg( [ 'number' => urlencode( $settings['tel_number'] ), ], 'viber://' . $action ); } public function render() { $settings = $this->get_settings(); if ( empty( $settings['link_type'] ) ) { return ''; } $value = ''; switch ( $settings['link_type'] ) { case 'email': $value = $this->build_mail_to_link( $settings ); break; case 'tel': $value = ( empty( $settings['tel_number'] ) ? '' : 'tel:' . $settings['tel_number'] ); break; case 'sms': $value = $this->build_sms_link( $settings ); break; case 'messenger': $value = $this->build_messenger_link( $settings ); break; case 'whatsapp': $value = $this->build_whatsapp_link( $settings ); break; case 'skype': $value = $this->build_skype_link( $settings ); break; case 'waze': $value = $this->build_waze_link( $settings ); break; case 'google_calendar': $value = $this->build_google_calendar_link( $settings ); break; case 'outlook_calendar': $value = $this->build_outlook_calendar_link( $settings ); break; case 'yahoo_calendar': $value = $this->build_yahoo_calendar_link( $settings ); break; case 'viber': $value = $this->build_viber_link( $settings ); break; } echo esc_html( $value ); } } tags/site-logo.php000064400000001606150515171010010114 0ustar00 $custom_logo_id, 'url' => $url, ]; } } tags/post-title.php000064400000001147150515171010010316 0ustar00add_control( 'type', [ 'label' => esc_html__( 'Type', 'elementor-pro' ), 'type' => Controls_Manager::SELECT, 'options' => [ 'post_date_gmt' => esc_html__( 'Post Published', 'elementor-pro' ), 'post_modified_gmt' => esc_html__( 'Post Modified', 'elementor-pro' ), ], 'default' => 'post_date_gmt', ] ); $this->add_control( 'format', [ 'label' => esc_html__( 'Format', 'elementor-pro' ), 'type' => Controls_Manager::SELECT, 'options' => [ 'default' => esc_html__( 'Default', 'elementor-pro' ), 'g:i a' => gmdate( 'g:i a' ), 'g:i A' => gmdate( 'g:i A' ), 'H:i' => gmdate( 'H:i' ), 'custom' => esc_html__( 'Custom', 'elementor-pro' ), ], 'default' => 'default', ] ); $this->add_control( 'custom_format', [ 'label' => esc_html__( 'Custom Format', 'elementor-pro' ), 'default' => '', 'description' => sprintf( '%s', esc_html__( 'Documentation on date and time formatting', 'elementor-pro' ) ), 'condition' => [ 'format' => 'custom', ], ] ); } public function render() { $time_type = $this->get_settings( 'type' ); $format = $this->get_settings( 'format' ); switch ( $format ) { case 'default': $date_format = ''; break; case 'custom': $date_format = $this->get_settings( 'custom_format' ); break; default: $date_format = $format; break; } if ( 'post_date_gmt' === $time_type ) { $value = get_the_time( $date_format ); } else { $value = get_the_modified_time( $date_format ); } echo wp_kses_post( $value ); } } tags/post-featured-image.php000064400000002226150515171010012053 0ustar00 $thumbnail_id, 'url' => wp_get_attachment_image_src( $thumbnail_id, 'full' )[0], ]; } else { $image_data = $this->get_settings( 'fallback' ); } return $image_data; } protected function register_controls() { $this->add_control( 'fallback', [ 'label' => esc_html__( 'Fallback', 'elementor-pro' ), 'type' => Controls_Manager::MEDIA, ] ); } } tags/user-profile-picture.php000064400000000754150515171010012302 0ustar00 '', 'url' => get_avatar_url( get_current_user_id() ), ]; } } tags/site-title.php000064400000001146150515171010010274 0ustar00get_settings( 'key' ); if ( empty( $key ) ) { return; } $value = ''; if ( is_category() || is_tax() ) { $value = get_term_meta( get_queried_object_id(), $key, true ); } elseif ( is_author() ) { $value = get_user_meta( get_queried_object_id(), $key, true ); } echo wp_kses_post( $value ); } public function get_panel_template_setting_key() { return 'key'; } protected function register_controls() { $this->add_control( 'key', [ 'label' => esc_html__( 'Meta Key', 'elementor-pro' ), ] ); } } tags/author-url.php000064400000002531150515171010010312 0ustar00get_settings( 'url' ) ) { global $authordata; if ( $authordata ) { $value = get_author_posts_url( $authordata->ID, $authordata->user_nicename ); } } else { $value = get_the_author_meta( 'url' ); } return $value; } protected function register_controls() { $this->add_control( 'url', [ 'label' => esc_html__( 'URL', 'elementor-pro' ), 'type' => Controls_Manager::SELECT, 'default' => 'archive', 'options' => [ 'archive' => esc_html__( 'Author Archive', 'elementor-pro' ), 'website' => esc_html__( 'Author Website', 'elementor-pro' ), ], ] ); } } tags/author-profile-picture.php000064400000001512150515171010012617 0ustar00 '', 'url' => get_avatar_url( (int) get_the_author_meta( 'ID' ) ), ]; } } tags/shortcode.php000064400000003313150515171010010201 0ustar00add_control( 'shortcode', [ 'label' => esc_html__( 'Shortcode', 'elementor-pro' ), 'type' => Controls_Manager::TEXTAREA, ] ); } public function render() { $settings = $this->get_settings(); if ( empty( $settings['shortcode'] ) ) { return; } $shortcode_string = $settings['shortcode']; $value = do_shortcode( $shortcode_string ); $should_escape = true; /** * Should escape shortcodes. * * By default shortcodes in dynamic tags are escaped. This hook allows developers * to avoid shortcodes from beeing escaped. Defaults to true. * * @since 2.2.1 * * @param bool $should_escape Whether to escape shortcodes in dynamic tags. */ $should_escape = apply_filters( 'elementor_pro/dynamic_tags/shortcode/should_escape', $should_escape ); if ( $should_escape ) { $value = wp_kses_post( $value ); } // PHPCS - the variable $value is safe. echo $value; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } } toolset/tags/toolset-url.php000064400000004163150515171010012175 0ustar00get_settings( 'key' ); if ( empty( $key ) ) { return; } list( $field_group, $field_key ) = explode( ':', $key ); $field = wpcf_admin_fields_get_field( $field_key ); if ( $field && ! empty( $field['type'] ) ) { $value = ''; switch ( $field['type'] ) { case 'email': $value = 'mailto:' . types_render_field( $field_key, [ 'output' => 'raw' ] ); break; case 'image': $value = types_render_field( $field_key, [ 'url' => true ] ); break; default: $value = types_render_field( $field_key, [ 'output' => 'raw' ] ); } // End switch(). } if ( empty( $value ) && $this->get_settings( 'fallback' ) ) { $value = $this->get_settings( 'fallback' ); } return wp_kses_post( $value ); } protected function register_controls() { $this->add_control( 'key', [ 'label' => esc_html__( 'Key', 'elementor-pro' ), 'type' => Controls_Manager::SELECT, 'groups' => Module::get_control_options( $this->get_supported_fields() ), ] ); $this->add_control( 'fallback', [ 'label' => esc_html__( 'Fallback', 'elementor-pro' ), ] ); } protected function get_supported_fields() { return [ 'email', 'image', 'file', 'audio', 'url', ]; } } toolset/tags/toolset-image.php000064400000003650150515171010012455 0ustar00get_settings( 'key' ); $image_data = $this->get_settings( 'fallback' ); if ( empty( $key ) ) { return $image_data; } list( $field_group, $field_key ) = explode( ':', $key ); $field = wpcf_admin_fields_get_field( $field_key ); if ( $field && ! empty( $field['type'] ) ) { $url = types_render_field( $field_key, [ 'url' => true ] ); if ( empty( $url ) ) { return $image_data; } $image_data = [ 'id' => attachment_url_to_postid( $url ), 'url' => $url, ]; } return $image_data; } protected function register_controls() { $this->add_control( 'key', [ 'label' => esc_html__( 'Key', 'elementor-pro' ), 'type' => Controls_Manager::SELECT, 'groups' => Module::get_control_options( $this->get_supported_fields() ), ] ); $this->add_control( 'fallback', [ 'label' => esc_html__( 'Fallback', 'elementor-pro' ), 'type' => Controls_Manager::MEDIA, ] ); } protected function get_supported_fields() { return [ 'toolset_image', ]; } } toolset/tags/toolset-text.php000064400000002776150515171010012367 0ustar00get_settings( 'key' ); if ( empty( $key ) ) { return; } list( $field_group, $field_key ) = explode( ':', $key ); $field = wpcf_admin_fields_get_field( $field_key ); if ( $field && ! empty( $field['type'] ) ) { $value = ''; switch ( $field['type'] ) { case 'google_address': $value = types_render_field( $field_key, [ 'format' => 'FIELD_ADDRESS' ] ); break; case 'email': case 'embed': $value = types_render_field( $field_key, [ 'output' => 'raw' ] ); break; default: $value = types_render_field( $field_key ); break; } // End switch(). } else { // Field settings has been deleted or not available. $value = types_render_field( $field_key ); } // End if(). echo wp_kses_post( $value ); } protected function get_supported_fields() { return [ 'textfield', 'phone', 'textarea', 'checkbox', 'select', 'numeric', 'email', 'embed', 'google_address', 'wysiwyg', 'radio', ]; } } toolset/tags/toolset-date.php000064400000005206150515171010012307 0ustar00get_settings( 'key' ); if ( empty( $key ) ) { return; } list( $field_group, $field_key ) = explode( ':', $key ); $field = wpcf_admin_fields_get_field( $field_key ); $value = ''; if ( $field && ! empty( $field['type'] ) && 'date' === $field['type'] ) { $format = $this->get_settings( 'format' ); $timestamp = types_render_field( $field_key, [ 'output' => 'raw', 'style' => 'text', ] ); if ( empty( $timestamp ) ) { return $value; } if ( 'human' === $format ) { /* translators: %s: Human readable date/time. */ $value = human_time_diff( $timestamp ); } else { switch ( $format ) { case 'default': $date_format = get_option( 'date_format' ); break; case 'custom': $date_format = $this->get_settings( 'custom_format' ); break; default: $date_format = $format; break; } $value = date_i18n( $date_format, $timestamp ); } } echo wp_kses_post( $value ); } public function get_panel_template_setting_key() { return 'key'; } protected function register_controls() { parent::register_controls(); $this->add_control( 'format', [ 'label' => esc_html__( 'Format', 'elementor-pro' ), 'type' => Controls_Manager::SELECT, 'options' => [ 'default' => esc_html__( 'Default', 'elementor-pro' ), 'F j, Y' => gmdate( 'F j, Y' ), 'Y-m-d' => gmdate( 'Y-m-d' ), 'm/d/Y' => gmdate( 'm/d/Y' ), 'd/m/Y' => gmdate( 'd/m/Y' ), 'human' => esc_html__( 'Human Readable', 'elementor-pro' ), 'custom' => esc_html__( 'Custom', 'elementor-pro' ), ], 'default' => 'default', ] ); $this->add_control( 'custom_format', [ 'label' => esc_html__( 'Custom Format', 'elementor-pro' ), 'default' => '', 'description' => sprintf( '%s', esc_html__( 'Documentation on date and time formatting', 'elementor-pro' ) ), 'condition' => [ 'format' => 'custom', ], ] ); } protected function get_supported_fields() { return [ 'date' ]; } } toolset/tags/toolset-base.php000064400000001467150515171010012311 0ustar00add_control( 'key', [ 'label' => esc_html__( 'Key', 'elementor-pro' ), 'type' => Controls_Manager::SELECT, 'groups' => Module::get_control_options( $this->get_supported_fields() ), ] ); } protected function get_supported_fields() { return []; } } toolset/tags/toolset-gallery.php000064400000004630150515171010013031 0ustar00get_settings( 'key' ); if ( empty( $key ) ) { return []; } $images = []; list( $field_group, $field_key ) = explode( ':', $key ); $field = wpcf_admin_fields_get_field( $field_key ); if ( $field && ! empty( $field['type'] ) ) { $galley_images = types_render_field( $field_key, [ 'separator' => '|', 'url' => true, ] ); $galley_images = explode( '|', $galley_images ); foreach ( $galley_images as $image_url ) { $images[] = [ 'id' => $this->get_cached_attachment_url_to_post_id( $image_url ), 'url' => $image_url, ]; } } return $images; } protected function register_controls() { $this->add_control( 'key', [ 'label' => esc_html__( 'Key', 'elementor-pro' ), 'type' => Controls_Manager::SELECT, 'groups' => Module::get_control_options( $this->get_supported_fields() ), ] ); } protected function get_supported_fields() { return [ 'toolset_gallery', ]; } /** * @param $attachment_url * * @return false|int|mixed */ private function get_cached_attachment_url_to_post_id( $attachment_url ) { $id = wp_cache_get( $attachment_url, __CLASS__ ); if ( false === $id ) { $id = attachment_url_to_postid( $attachment_url ); wp_cache_set( $attachment_url, $id, __CLASS__ ); } return $id; } /** * Toolset_Gallery constructor. * * @param array $data */ public function __construct( array $data = [] ) { parent::__construct( $data ); wp_cache_add_non_persistent_groups( __CLASS__ ); } } toolset/module.php000064400000004354150515171010010235 0ustar00 $field ) { if ( ! is_array( $field ) || empty( $field['type'] ) ) { continue; } if ( ! self::valid_field_type( $types, $field ) ) { continue; } // Use group ID for unique keys $key = $group['slug'] . ':' . $field_key; $options[ $key ] = $field['name']; } if ( empty( $options ) ) { continue; } if ( 1 === count( $options ) ) { $options = [ -1 => ' -- ' ] + $options; } $groups[] = [ 'label' => $group['name'], 'options' => $options, ]; } return $groups; } public static function toolset_image_mapping( $field, $single = true ) { if ( 'image' !== $field['type'] ) { return false; } $limit = $single ? '0' : '1'; if ( empty( $field['data'] ) || $limit !== $field['data']['repetitive'] ) { return false; } return true; } public static function valid_field_type( $types, $field ) { // Only file field with single image value if ( in_array( 'toolset_image', $types, true ) && self::toolset_image_mapping( $field ) ) { return true; } // Only file with multiple images allowed if ( in_array( 'toolset_gallery', $types, true ) && self::toolset_image_mapping( $field, false ) ) { return true; } // Any other type if ( in_array( $field['type'], $types, true ) ) { return true; } return false; } public function get_tag_classes_names() { return [ 'Toolset_Text', 'Toolset_Date', 'Toolset_Image', 'Toolset_URL', 'Toolset_Gallery', ]; } public function get_groups() { return [ self::TOOLSET_GROUP => [ 'title' => esc_html__( 'Toolset', 'elementor-pro' ), ], ]; } } module.php000064400000011406150515171010006540 0ustar00add_component( 'acf', new ACF\Module() ); } if ( function_exists( 'wpcf_admin_fields_get_groups' ) && API::is_licence_has_feature( self::LICENSE_FEATURE_TOOLSET_NAME, API::BC_VALIDATION_CALLBACK ) ) { $this->add_component( 'toolset', new Toolset\Module() ); } if ( function_exists( 'pods' ) && API::is_licence_has_feature( self::LICENSE_FEATURE_PODS_NAME, API::BC_VALIDATION_CALLBACK ) ) { $this->add_component( 'pods', new Pods\Module() ); } /* * WooCommerce Add To Cart Dynamic Tag. * * The WC ATC Dynamic Tag returns a URL that adds items to a users cart * via the URL parameters `?add-to-cart=' . $product_id . '&quantity=' . $quantity`. * Normally this URL method redirects to the website's Home page after adding the items to * the cart. * * Since the behavior of the Tag should be identical to the "Add to Cart" widget, clicking an * element that is using the tag needs to redirect to the Single Product page for the added * product or the Cart page after this process if the user selected that setting in WooCommerce. * * To accomplish that, an extra parameter in the URL ('&e-redirect=') is used. When this * paramater is found, the WooCommerce Add to Cart Dynamic Tag will redirect to the * appropriate page. */ //phpcs:ignore WordPress.Security.NonceVerification.Recommended -- The nonce is verified in the WC class. $add_to_cart = Utils::_unstable_get_super_global_value( $_REQUEST, 'add-to-cart' ); //phpcs:ignore WordPress.Security.NonceVerification.Recommended -- The nonce is verified in the WC class. $redirect = Utils::_unstable_get_super_global_value( $_REQUEST, 'e-redirect' ); if ( $add_to_cart && $redirect ) { add_filter( 'woocommerce_add_to_cart_redirect', [ $this, 'filter_woocommerce_add_to_cart_redirect' ], 10, 1 ); } } public function filter_woocommerce_add_to_cart_redirect( $wc_get_cart_url ) { //phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Nonce verification is not required here. return esc_url( Utils::_unstable_get_super_global_value( $_REQUEST, 'e-redirect' ) ); } public function get_name() { return 'tags'; } public function get_tag_classes_names() { return [ 'Archive_Description', 'Archive_Meta', 'Archive_Title', 'Archive_URL', 'Author_Info', 'Author_Meta', 'Author_Name', 'Author_Profile_Picture', 'Author_URL', 'Comments_Number', 'Comments_URL', 'Page_Title', 'Post_Custom_Field', 'Post_Date', 'Post_Excerpt', 'Post_Featured_Image', 'Post_Gallery', 'Post_ID', 'Post_Terms', 'Post_Time', 'Post_Title', 'Post_URL', 'Site_Logo', 'Site_Tagline', 'Site_Title', 'Site_URL', 'Internal_URL', 'Current_Date_Time', 'Request_Parameter', 'Lightbox', 'Featured_Image_Data', 'Shortcode', 'Contact_URL', 'User_Info', 'User_Profile_Picture', ]; } public function get_groups() { return [ self::POST_GROUP => [ 'title' => esc_html__( 'Post', 'elementor-pro' ), ], self::ARCHIVE_GROUP => [ 'title' => esc_html__( 'Archive', 'elementor-pro' ), ], self::SITE_GROUP => [ 'title' => esc_html__( 'Site', 'elementor-pro' ), ], self::MEDIA_GROUP => [ 'title' => esc_html__( 'Media', 'elementor-pro' ), ], self::ACTION_GROUP => [ 'title' => esc_html__( 'Actions', 'elementor-pro' ), ], self::AUTHOR_GROUP => [ 'title' => esc_html__( 'Author', 'elementor-pro' ), ], self::COMMENTS_GROUP => [ 'title' => esc_html__( 'Comments', 'elementor-pro' ), ], self::WOOCOMMERCE_GROUP => [ 'title' => esc_html__( 'WooCommerce', 'elementor-pro' ), ], ]; } } pods/tags/pods-gallery.php000064400000003175150515171010011564 0ustar00get_settings( 'key' ); if ( empty( $key ) ) { return false; } $images = []; list( $pod_name, $pod_id, $meta_key ) = explode( ':', $key ); /** * @var \Pods */ $pod = pods( $pod_name, get_the_ID() ); if ( false === $pod ) { return []; } $galley_images = $pod->field( $meta_key ); if ( empty( $galley_images ) || ! is_array( $galley_images ) ) { return $images; } foreach ( $galley_images as $image ) { $images[] = [ 'id' => $image['ID'], ]; } return $images; } protected function register_controls() { $this->add_control( 'key', [ 'label' => esc_html__( 'Key', 'elementor-pro' ), 'type' => Controls_Manager::SELECT, 'groups' => Module::get_control_options( $this->get_supported_fields() ), ] ); } protected function get_supported_fields() { return [ 'pods_gallery', ]; } } pods/tags/pods-numeric.php000064400000001542150515171010011563 0ustar00get_field(); $value = ! empty( $field_data['value'] ) && is_numeric( $field_data['value'] ) ? $field_data['value'] : ''; echo wp_kses_post( $value ); } protected function get_supported_fields() { return [ 'numeric', ]; } } pods/tags/pods-text.php000064400000002063150515171010011104 0ustar00get_field(); $field = $field_data['field']; $value = empty( $field_data['value'] ) ? '' : $field_data['value']; if ( ! empty( $field['type'] ) ) { switch ( $field['type'] ) { case 'paragraph': $value = $field_data['display']; break; case 'pick': $value = $field_data['display']; if ( is_array( $value ) ) { $value = implode( ', ', $value ); } break; } } echo wp_kses_post( $value ); } protected function get_supported_fields() { return [ 'text', 'phone', 'paragraph', 'relationship', 'pick', 'numeric', 'email', 'oembed', 'google_address', 'wysiwyg', 'time', ]; } } pods/tags/pods-date-time.php000064400000004071150515171010011772 0ustar00dynamic_value_provider->get_value( $this->get_settings( 'key' ) ); $value = $field['value'] ?? ''; if ( ! empty( $value ) ) { $value = gmdate( 'Y-m-d H:i:s', strtotime( $value ) ); } if ( empty( $value ) && $this->get_settings( 'fallback' ) ) { $value = $this->get_settings( 'fallback' ); } return wp_kses_post( $value ); } public function get_panel_template_setting_key() { return 'key'; } protected function register_controls() { $this->add_control( 'key', [ 'label' => esc_html__( 'Key', 'elementor-pro' ), 'type' => Controls_Manager::SELECT, 'groups' => Module::get_control_options( $this->get_supported_fields() ), ] ); $this->add_control( 'fallback', [ 'type' => Controls_Manager::DATE_TIME, 'label' => esc_html__( 'Fallback', 'elementor-pro' ), ] ); } protected function get_supported_fields() { return [ 'datetime', ]; } public function __construct( array $data = [], $dynamic_value_provider = null ) { parent::__construct( $data ); $this->dynamic_value_provider = $dynamic_value_provider ?? new Dynamic_Value_Provider(); } } pods/tags/pods-base.php000064400000002416150515171010011034 0ustar00get_settings( 'key' ); if ( empty( $key ) ) { return false; } list( $pod_name, $pod_id, $meta_key ) = explode( ':', $key ); /** * @var \Pods */ $pod = pods( $pod_name, get_the_ID() ); if ( false === $pod ) { return []; } return [ 'field' => $pod->fields[ $meta_key ], 'value' => $pod->field( $meta_key ), 'display' => $pod->display( $meta_key ), 'pod' => $pod, 'key' => $meta_key, ]; } public function get_categories() { return [ Module::TEXT_CATEGORY, Module::POST_META_CATEGORY, ]; } protected function register_controls() { $this->add_control( 'key', [ 'label' => esc_html__( 'Key', 'elementor-pro' ), 'type' => Controls_Manager::SELECT, 'groups' => Module::get_control_options( $this->get_supported_fields() ), ] ); } protected function get_supported_fields() { return []; } } pods/tags/pods-date.php000064400000004456150515171010011045 0ustar00get_field(); $field = $field_data['field']; $value = empty( $field_data['value'] ) ? '' : $field_data['value']; if ( $field && ! empty( $field['type'] ) && in_array( $field['type'], [ 'date', 'datetime' ] ) ) { $format = $this->get_settings( 'format' ); $timestamp = strtotime( $value ); if ( 'human' === $format ) { $value = human_time_diff( $timestamp ); } else { switch ( $format ) { case 'default': $date_format = get_option( 'date_format' ); break; case 'custom': $date_format = $this->get_settings( 'custom_format' ); break; default: $date_format = $format; break; } $value = gmdate( $date_format, $timestamp ); } } echo wp_kses_post( $value ); } public function get_panel_template_setting_key() { return 'key'; } protected function register_controls() { parent::register_controls(); $this->add_control( 'format', [ 'label' => esc_html__( 'Format', 'elementor-pro' ), 'type' => Controls_Manager::SELECT, 'options' => [ 'default' => esc_html__( 'Default', 'elementor-pro' ), 'F j, Y' => gmdate( 'F j, Y' ), 'Y-m-d' => gmdate( 'Y-m-d' ), 'm/d/Y' => gmdate( 'm/d/Y' ), 'd/m/Y' => gmdate( 'd/m/Y' ), 'human' => esc_html__( 'Human Readable', 'elementor-pro' ), 'custom' => esc_html__( 'Custom', 'elementor-pro' ), ], 'default' => 'default', ] ); $this->add_control( 'custom_format', [ 'label' => esc_html__( 'Custom Format', 'elementor-pro' ), 'default' => '', 'description' => sprintf( '%s', esc_html__( 'Documentation on date and time formatting', 'elementor-pro' ) ), 'condition' => [ 'format' => 'custom', ], ] ); } protected function get_supported_fields() { return [ 'datetime', 'date', ]; } } pods/tags/pods-url.php000064400000003750150515171010010726 0ustar00get_settings( 'key' ); if ( empty( $key ) ) { return false; } list( $pod_name, $pod_id, $meta_key ) = explode( ':', $key ); /** * @var \Pods */ $pod = pods( $pod_name, get_the_ID() ); if ( false === $pod ) { return []; } $field = $pod->fields[ $meta_key ]; $value = $pod->field( $meta_key ); if ( $field && ! empty( $field['type'] ) ) { switch ( $field['type'] ) { case 'phone': $value = 'tel:' . $value; break; case 'file': $value = empty( $value['guid'] ) ? '' : $value['guid']; break; case 'email': $value = 'mailto:' . $value; break; } // End switch(). } if ( empty( $value ) && $this->get_settings( 'fallback' ) ) { $value = $this->get_settings( 'fallback' ); } return wp_kses_post( $value ); } protected function register_controls() { $this->add_control( 'key', [ 'label' => esc_html__( 'Key', 'elementor-pro' ), 'type' => Controls_Manager::SELECT, 'groups' => Module::get_control_options( $this->get_supported_fields() ), ] ); $this->add_control( 'fallback', [ 'label' => esc_html__( 'Fallback', 'elementor-pro' ), ] ); } protected function get_supported_fields() { return [ 'pods_url' ]; } } pods/tags/pods-image.php000064400000003435150515171010011206 0ustar00get_settings( 'key' ); $image_data = $this->get_settings( 'fallback' ); if ( empty( $key ) ) { return $image_data; } list( $pod_name, $pod_id, $meta_key ) = explode( ':', $key ); /** * @var \Pods */ $pod = pods( $pod_name, get_the_ID() ); if ( false === $pod ) { return []; } $image = $pod->field( $meta_key ); $image_data = [ 'id' => empty( $image['ID'] ) ? $image_data['id'] : $image['ID'], 'url' => empty( $image['guid'] ) ? $image_data['url'] : $image['guid'], ]; return $image_data; } protected function register_controls() { $this->add_control( 'key', [ 'label' => esc_html__( 'Key', 'elementor-pro' ), 'type' => Controls_Manager::SELECT, 'groups' => Module::get_control_options( $this->get_supported_fields() ), ] ); $this->add_control( 'fallback', [ 'label' => esc_html__( 'Fallback', 'elementor-pro' ), 'type' => Controls_Manager::MEDIA, ] ); } protected function get_supported_fields() { return [ 'pods_image', ]; } } pods/module.php000064400000005522150515171010007507 0ustar00load_pods( [ 'table_info' => true, 'fields' => true, ] ); $groups = []; foreach ( $all_pods as $group ) { $options = []; foreach ( $group['fields'] as $field ) { if ( ! self::valid_field_type( $types, $field ) ) { continue; } // Use pods ID for unique keys $key = $group['name'] . ':' . $field['pod_id'] . ':' . $field['name']; $options[ $key ] = $field['label']; } if ( empty( $options ) ) { continue; } if ( 1 === count( $options ) ) { $options = [ -1 => ' -- ' ] + $options; } $groups[] = [ 'label' => $group['name'], 'options' => $options, ]; } return $groups; } public static function valid_field_type( $types, $field ) { // Only file field with single image value if ( in_array( 'pods_image', $types, true ) && self::pods_image_mapping( $field ) ) { return true; } if ( in_array( 'pods_url', $types, true ) && in_array( $field['type'], [ 'email', 'file', 'website', 'phone' ] ) ) { // Only file with single value allowed if ( 'file' === $field['type'] && ! self::pods_file_mapping( $field ) ) { return false; } return true; } // Only file with multiple images allowed if ( in_array( 'pods_gallery', $types, true ) && self::pods_image_mapping( $field, false ) ) { return true; } // Any other type if ( in_array( $field['type'], $types, true ) ) { return true; } return false; } public static function pods_file_mapping( $field, $single = true ) { if ( 'file' !== $field['type'] ) { return false; } $limit = $single ? 'single' : 'multi'; if ( $limit !== $field['options']['file_format_type'] ) { return false; } return true; } public static function pods_image_mapping( $field, $single = true ) { if ( ! isset( $field['options'] ) || ! isset( $field['options']['file_type'] ) ) { return false; } if ( 'images' !== $field['options']['file_type'] ) { return false; } if ( ! self::pods_file_mapping( $field, $single ) ) { return false; } return true; } public function get_tag_classes_names() { return [ 'Pods_Text', 'Pods_Date', 'Pods_Date_Time', 'Pods_Image', 'Pods_Gallery', 'Pods_URL', 'Pods_Numeric', ]; } public function get_groups() { return [ self::PODS_GROUP => [ 'title' => esc_html__( 'Pods', 'elementor-pro' ), ], ]; } } pods/dynamic-value-provider.php000064400000002320150515171010012601 0ustar00is_valid_field_key( $key ) ) { return []; } list( $pod_name, , $meta_key ) = explode( ':', $key ); $pod = $this->get_pods_value( $pod_name, get_the_ID() ); if ( false === $pod ) { return []; } return [ 'field' => $pod->fields[ $meta_key ], 'value' => $pod->field( $meta_key ), 'display' => $pod->display( $meta_key ), 'pod' => $pod, 'key' => $meta_key, ]; } /** * Retrieve the Pod value from `Pods` plugin. * Used for testing. * * @param $type * @param $id * * @return bool|\Pods */ protected function get_pods_value( $type, $id ) { return pods( $type, $id ); } private function is_valid_field_key( $key ) { $key = trim( $key ); if ( empty( $key ) ) { return false; } $colon_count = substr_count( $key, ':' ); // Key structure looks like: `page:699:pods_date_time`. return ( 2 === $colon_count ); } } acf/tags/acf-number.php000064400000002324150515171010010760 0ustar00dynamic_value_provider->get_value( $this->get_settings( 'key' ) ); if ( empty( $field_settings ) ) { return ''; } $field = $field_settings[0]; $value = ''; if ( $field ) { $date_time = \DateTime::createFromFormat( $field['return_format'], $field['value'] ); $value = $date_time instanceof \DateTime ? $date_time->format( 'Y-m-d H:i:s' ) : ''; } if ( empty( $value ) && $this->get_settings( 'fallback' ) ) { $value = $this->get_settings( 'fallback' ); } return wp_kses_post( $value ); } public function get_panel_template_setting_key() { return 'key'; } protected function register_controls() { Module::add_key_control( $this ); $this->add_control( 'fallback', [ 'type' => Controls_Manager::DATE_TIME, 'label' => esc_html__( 'Fallback', 'elementor-pro' ), ] ); } public function get_supported_fields() { return [ 'date_time_picker', ]; } public function __construct( array $data = [], $dynamic_value_provider = null ) { parent::__construct( $data ); $this->dynamic_value_provider = $dynamic_value_provider ?? new Dynamic_Value_Provider(); } } acf/tags/acf-file.php000064400000001063150515171010010406 0ustar00get_settings( 'fallback' ) ) { $value = $this->get_settings( 'fallback' ); } return $value; } protected function register_controls() { Module::add_key_control( $this ); } public function get_supported_fields() { return [ 'color_picker', ]; } } acf/tags/acf-image.php000064400000004166150515171010010560 0ustar00 null, 'url' => '', ]; list( $field, $meta_key ) = Module::get_tag_value_field( $this ); if ( $field && is_array( $field ) ) { $field['return_format'] = isset( $field['save_format'] ) ? $field['save_format'] : $field['return_format']; switch ( $field['return_format'] ) { case 'object': case 'array': $value = $field['value']; break; case 'url': $value = [ 'id' => 0, 'url' => $field['value'], ]; break; case 'id': $src = wp_get_attachment_image_src( $field['value'], $field['preview_size'] ); $value = [ 'id' => $field['value'], 'url' => $src[0], ]; break; } } if ( ! isset( $value ) ) { // Field settings has been deleted or not available. $value = get_field( $meta_key ); } if ( empty( $value ) && $this->get_settings( 'fallback' ) ) { $value = $this->get_settings( 'fallback' ); } if ( ! empty( $value ) && is_array( $value ) ) { $image_data['id'] = $value['id']; $image_data['url'] = $value['url']; } return $image_data; } protected function register_controls() { Module::add_key_control( $this ); $this->add_control( 'fallback', [ 'label' => esc_html__( 'Fallback', 'elementor-pro' ), 'type' => Controls_Manager::MEDIA, ] ); } public function get_supported_fields() { return [ 'image', ]; } } acf/tags/acf-gallery.php000064400000002432150515171010011127 0ustar00 $image['ID'], ]; } } return $images; } protected function register_controls() { Module::add_key_control( $this ); } public function get_supported_fields() { return [ 'gallery', ]; } } acf/tags/acf-text.php000064400000005450150515171010010457 0ustar00 $item ) { if ( isset( $field['choices'][ $item ] ) ) { $values[ $key ] = $field['choices'][ $item ]; } } $value = implode( ', ', $values ); break; case 'checkbox': $value = (array) $value; $values = []; foreach ( $value as $item ) { if ( isset( $field['choices'][ $item ] ) ) { $values[] = $field['choices'][ $item ]; } else { $values[] = $item; } } $value = implode( ', ', $values ); break; case 'oembed': // Get from db without formatting. $value = $this->get_queried_object_meta( $meta_key ); break; case 'google_map': $meta = $this->get_queried_object_meta( $meta_key ); $value = isset( $meta['address'] ) ? $meta['address'] : ''; break; } // End switch(). } else { // Field settings has been deleted or not available. $value = get_field( $meta_key ); } // End if(). echo wp_kses_post( $value ); } public function get_panel_template_setting_key() { return 'key'; } protected function register_controls() { Module::add_key_control( $this ); } public function get_supported_fields() { return [ 'text', 'textarea', 'number', 'email', 'password', 'wysiwyg', 'select', 'checkbox', 'radio', 'true_false', // Pro 'oembed', 'google_map', 'date_picker', 'time_picker', 'date_time_picker', 'color_picker', ]; } private function get_queried_object_meta( $meta_key ) { $value = ''; if ( is_singular() ) { $value = get_post_meta( get_the_ID(), $meta_key, true ); } elseif ( is_tax() || is_category() || is_tag() ) { $value = get_term_meta( get_queried_object_id(), $meta_key, true ); } return $value; } } acf/tags/acf-url.php000064400000004746150515171010010304 0ustar00get_settings( 'fallback' ) ) { $value = $this->get_settings( 'fallback' ); } return wp_kses_post( $value ); } protected function register_controls() { Module::add_key_control( $this ); $this->add_control( 'fallback', [ 'label' => esc_html__( 'Fallback', 'elementor-pro' ), ] ); } public function get_supported_fields() { return [ 'text', 'email', 'image', 'file', 'page_link', 'post_object', 'relationship', 'taxonomy', 'url', ]; } } acf/module.php000064400000007266150515171010007302 0ustar00= 5.0.0 if ( function_exists( 'acf_get_field_groups' ) ) { $acf_groups = acf_get_field_groups(); } else { $acf_groups = apply_filters( 'acf/get_field_groups', [] ); } $groups = []; $options_page_groups_ids = []; if ( function_exists( 'acf_options_page' ) ) { $pages = acf_options_page()->get_pages(); foreach ( $pages as $slug => $page ) { $options_page_groups = acf_get_field_groups( [ 'options_page' => $slug, ] ); foreach ( $options_page_groups as $options_page_group ) { $options_page_groups_ids[] = $options_page_group['ID']; } } } foreach ( $acf_groups as $acf_group ) { // ACF >= 5.0.0 if ( function_exists( 'acf_get_fields' ) ) { if ( isset( $acf_group['ID'] ) && ! empty( $acf_group['ID'] ) ) { $fields = acf_get_fields( $acf_group['ID'] ); } else { $fields = acf_get_fields( $acf_group ); } } else { $fields = apply_filters( 'acf/field_group/get_fields', [], $acf_group['id'] ); } $options = []; if ( ! is_array( $fields ) ) { continue; } $has_option_page_location = in_array( $acf_group['ID'], $options_page_groups_ids, true ); $is_only_options_page = $has_option_page_location && 1 === count( $acf_group['location'] ); foreach ( $fields as $field ) { if ( ! in_array( $field['type'], $types, true ) ) { continue; } // Use group ID for unique keys if ( $has_option_page_location ) { $key = 'options:' . $field['name']; $options[ $key ] = esc_html__( 'Options', 'elementor-pro' ) . ':' . $field['label']; if ( $is_only_options_page ) { continue; } } $key = $field['key'] . ':' . $field['name']; $options[ $key ] = $field['label']; } if ( empty( $options ) ) { continue; } if ( 1 === count( $options ) ) { $options = [ -1 => ' -- ' ] + $options; } $groups[] = [ 'label' => $acf_group['title'], 'options' => $options, ]; } // End foreach(). return $groups; } public static function add_key_control( Base_Tag $tag ) { $tag->add_control( 'key', [ 'label' => esc_html__( 'Key', 'elementor-pro' ), 'type' => Controls_Manager::SELECT, 'groups' => self::get_control_options( $tag->get_supported_fields() ), ] ); } public function get_tag_classes_names() { return [ 'ACF_Text', 'ACF_Image', 'ACF_URL', 'ACF_Gallery', 'ACF_File', 'ACF_Number', 'ACF_Color', 'ACF_Date_Time', ]; } // For use by ACF tags public static function get_tag_value_field( Base_Tag $tag ) { $key = $tag->get_settings( 'key' ); // TODO: The tags should use the `Dynamic_Value_Provider::get_value()` method, but it involves // heavily refactoring them, so currently this method is just a proxy and also kept for BC. if ( ! static::$dynamic_value_provider ) { static::$dynamic_value_provider = new Dynamic_Value_Provider(); } return static::$dynamic_value_provider->get_value( $key ); } public function get_groups() { return [ self::ACF_GROUP => [ 'title' => esc_html__( 'ACF', 'elementor-pro' ), ], ]; } } acf/dynamic-value-provider.php000064400000002150150515171010012366 0ustar00documents->get_current(); if ( 'options' === $field_key ) { $field = $this->get_field_object( $meta_key, $field_key ); } elseif ( ! empty( $document ) && LoopBuilderModule::TEMPLATE_LIBRARY_TYPE_SLUG === $document::get_type() ) { $field = $this->get_field_object( $field_key, get_the_ID() ); } else { $field = $this->get_field_object( $field_key, get_queried_object() ); } return [ $field, $meta_key ]; } /** * Retrieve the custom field value from `ACF` plugin. * Used for testing. * * @param $selector * @param $post_id * * @return array|false */ protected function get_field_object( $selector, $post_id ) { return get_field_object( $selector, $post_id ); } }