index of
/
home
/
thefkyzp
/
www
/
wp-content
/
plugins
/
forminator
/
library
/
modules
/
quizzes
/
front
/
File: /home/thefkyzp/www/wp-content/plugins/forminator/library/modules/quizzes/front/front-result.php
<?php /** * The Forminator_QForm_Result class. * * @package Forminator */ if ( ! defined( 'ABSPATH' ) ) { die(); } /** * Front render class for custom forms */ class Forminator_QForm_Result extends Forminator_Result { /** * Post type * * @var string */ protected $post_type = 'quizzes'; /** * Get og description * * @param Forminator_Form_Entry_Model $entry Form entry model. * * @return string */ public function get_og_description( $entry ) { $description = ''; $quiz = Forminator_Base_Form_Model::get_model( $entry->form_id ); if ( $quiz instanceof Forminator_Quiz_Model ) { if ( 'knowledge' === $quiz->quiz_type ) { $description = $this->get_og_description_knowledge( $quiz, $entry ); } else { $description = $this->get_og_description_nowrong( $quiz, $entry ); } } return $description; } /** * Get og title * * @param Forminator_Form_Entry_Model $entry Form entry model. * * @since 1.7 * * @return string */ public function get_og_title( $entry ) { $quiz = Forminator_Base_Form_Model::get_model( $entry->form_id ); $entry_id = $entry->entry_id; /** * Priority * 1. Quiz name * 2. Post/Page Title * 3. Website name */ $title = isset( $quiz->settings['quiz_name'] ) ? $quiz->settings['quiz_name'] : ''; if ( empty( $title ) ) { $title = single_post_title( '', false ); } if ( empty( $title ) ) { $title = get_bloginfo( 'name' ); } /** * Filter Meta og:title for Quiz Result Page * * @since 1.7 * * @param string $title * @param Forminator_Quiz_Model $quiz * @param int $entry_id * * @return string */ $title = apply_filters( 'forminator_quiz_result_page_meta_title', $title, $quiz, $entry_id ); return $title; } /** * Get og URL * * @since 1.7 * * @return string */ public function get_og_url() { global $wp; $post_data = $this->post_data; $query_args = array(); $query = wp_parse_url( $post_data ); $permalink = get_option( 'permalink_structure' ); if ( empty( $permalink ) && isset( $query['query'] ) ) { $query_args = $query['query']; } $url = home_url( add_query_arg( $query_args, $wp->request ) ); $url = trailingslashit( $url ); /** * Filter Meta og:url for Quiz Result Page * * @since 1.7 * * @param string $url * @param array $post_data * @param Forminator_Form_Entry_Model $entry * * @return string */ $title = apply_filters( 'forminator_quiz_result_page_meta_url', $url, $post_data ); return $title; } /** * Get og image * * @param Forminator_Form_Entry_Model $entry Form entry model. * * @since 1.7 * * @return string */ public function get_og_image( $entry ) { $quiz = Forminator_Base_Form_Model::get_model( $entry->form_id ); $entry_id = $entry->entry_id; /** * Priority * 1. Quiz Featured image * 2. Post/page Featured image * 3. Blog header image */ $image = isset( $quiz->settings['quiz_feat_image'] ) ? $quiz->settings['quiz_feat_image'] : ''; if ( empty( $image ) ) { $image = get_the_post_thumbnail_url( get_the_ID(), 'full' ); } if ( empty( $image ) ) { $image = get_header_image(); } /** * Filter Meta og:image for Quiz Result Page * * @since 1.7 * * @param string $image * @param Forminator_Quiz_Model $quiz * @param int $entry_id * * @return string */ $image = apply_filters( 'forminator_quiz_result_page_meta_image', $image, $quiz, $entry_id ); return $image; } /** * Get og description * * @param Forminator_Quiz_Model $quiz Quiz model. * @param Forminator_Form_Entry_Model $entry Form entry model. * * @return string */ private function get_og_description_knowledge( $quiz, $entry ) { $total = 0; $right = 0; $description = ''; $data = $entry; $entry_id = $entry->entry_id; $quiz_title = ''; if ( isset( $quiz->settings['quiz_name'] ) ) { $quiz_title = esc_html( $quiz->settings['quiz_name'] ); } if ( isset( $data->meta_data['entry'] ) ) { $answers = $data->meta_data['entry']['value']; if ( is_array( $answers ) ) { $total = count( $answers ); foreach ( $answers as $key => $answer ) { if ( true === $answer['isCorrect'] ) { ++$right; } } } } if ( $total > 0 ) { $result = esc_html( $right ) . '/' . esc_html( $total ); $description = forminator_get_social_message( $quiz, $quiz_title, $result ); } /** * Filter Meta og:description for Knowledge Quiz Result Page * * @since 1.5.2 * * @param string $description * @param Forminator_Quiz_Model $quiz * @param int $entry_id * @param int $right right answer. * @param int $total total answer. * @param string $quiz_title Quiz name. */ $description = apply_filters( 'forminator_quiz_knowledge_result_page_meta_description', $description, $quiz, $entry_id, $right, $total, $quiz_title ); return $description; } /** * Get og description * * @param Forminator_Quiz_Model $quiz Quiz model. * @param Forminator_Form_Entry_Model $entry Form entry model. * * @return string */ private function get_og_description_nowrong( $quiz, $entry ) { $result_slug = null; $result = null; $description = ''; $quiz_title = ''; $result_title = ''; $entry_id = $entry->entry_id; if ( isset( $quiz->settings['quiz_name'] ) ) { $quiz_title = esc_html( $quiz->settings['quiz_name'] ); } if ( isset( $entry->meta_data['entry'] ) ) { $entry_value = $entry->meta_data['entry']['value']; if ( is_array( $entry_value ) && isset( $entry_value[0] ) ) { $entry_value = $entry_value[0]; // its disgusting because of the way we saved it. if ( isset( $entry_value['value'] ) ) { $result_value = $entry_value['value']; if ( isset( $result_value['result'] ) && isset( $result_value['result']['slug'] ) && ! empty( $result_value['result']['slug'] ) ) { $result_slug = $result_value['result']['slug']; } } } } if ( ! is_null( $result_slug ) ) { $result = $quiz->getResult( $result_slug ); } if ( $result ) { if ( isset( $result['title'] ) ) { $result_title = esc_html( $result['title'] ); } $description = forminator_get_social_message( $quiz, $quiz_title, $result_title ); } /** * Filter Meta og:description for no wrong Quiz Result Page * * @since 1.5.2 * * @param string $description * @param Forminator_Quiz_Model $quiz * @param int $entry_id * @param array $result result detail. * @param string $quiz_title Quiz name. */ $description = apply_filters( 'forminator_quiz_nowrong_result_page_meta_description', $description, $quiz, $entry_id, $result, $quiz_title ); return $description; } /** * Not printing any styles * just filtering canonical URL * * @since 1.7 */ public function print_styles() { parent::print_styles(); $entry = new Forminator_Form_Entry_Model( $this->entry_id ); if ( ! $this->is_public_allowed( $entry ) ) { return; } add_filter( 'get_canonical_url', array( $this, 'get_og_url' ) ); } /** * Print result header * * @return void */ public function print_result_header() { $entry_id = $this->entry_id; $entry = new Forminator_Form_Entry_Model( $this->entry_id ); if ( ! $this->is_public_allowed( $entry ) ) { return; } $url = $this->get_og_url(); $title = $this->get_og_title( $entry ); $description = $this->get_og_description( $entry ); $image = $this->get_og_image( $entry ); // make description as title. // FB fix, og:description ignored if no og:image. if ( empty( $image ) ) { $title = $description; } ob_start(); ?> <meta property="og:url" content="<?php echo esc_attr( $url ); ?>"/> <meta property="og:title" content="<?php echo esc_textarea( $title ); ?>"/> <meta property="og:description" content="<?php echo esc_textarea( $description ); ?>"/> <meta property="og:type" content="article"/> <?php if ( ! empty( $image ) ) : ?> <meta property="og:image" content="<?php echo esc_attr( $image ); ?>"/> <?php endif; ?> <?php $header = ob_get_clean(); /** * Filter Header for Quiz Result Page * * @since 1.5.2 * * @param string $header * @param int $entry_id */ $header = apply_filters( 'forminator_quiz_result_page_header', $header, $entry_id ); echo wp_kses_post( $header ); } /** * Is public allowed * * @inheritdoc * @param object $entry Entry model. */ public function is_public_allowed( $entry ) { if ( empty( $entry->entry_id ) ) { return false; } if ( $entry->entry_type !== $this->post_type ) { return false; } $quiz = Forminator_Base_Form_Model::get_model( $entry->form_id ); if ( ! $quiz instanceof Forminator_Quiz_Model ) { return false; } if ( ! $quiz->is_entry_share_enabled() ) { return false; } return true; } }