137 lines
4.7 KiB
PHP
137 lines
4.7 KiB
PHP
<?php
|
|
/*
|
|
* Questions Shortcodes
|
|
*
|
|
* This should be used as parent class for Question-Answers.
|
|
*
|
|
* @author awesome.ug, Author <support@awesome.ug>
|
|
* @package Questions/Core
|
|
* @version 1.0.0
|
|
* @since 1.0.0
|
|
* @license GPL 2
|
|
|
|
Copyright 2015 awesome.ug (support@awesome.ug)
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License, version 2, as
|
|
published by the Free Software Foundation.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
|
|
*/
|
|
|
|
if ( !defined( 'ABSPATH' ) ) exit;
|
|
|
|
class QuestionsChartsShortCodes{
|
|
|
|
/**
|
|
* Adding Shortcodes and Actionhooks
|
|
*/
|
|
public static function init(){
|
|
add_shortcode( 'survey_results', array( __CLASS__ , 'survey_results' ) );
|
|
add_shortcode( 'question_results', array( __CLASS__ , 'question_results' ) );
|
|
|
|
add_action( 'questions_survey_options', array( __CLASS__ , 'show_survey_result_shortcode' ) );
|
|
add_action( 'questions_element_admin_tabs_content', array( __CLASS__ , 'show_question_result_shortcode' ) );
|
|
}
|
|
|
|
/**
|
|
* Showing all results of a survey
|
|
* @param $atts
|
|
* @return string|void
|
|
*/
|
|
public static function survey_results( $atts ){
|
|
$atts = shortcode_atts( array(
|
|
'id' => ''
|
|
), $atts );
|
|
|
|
if( '' == $atts[ 'id' ] ):
|
|
_e( 'Please enter a survey id in the survey shortcode!', 'questions-locale' );
|
|
return;
|
|
endif;
|
|
|
|
$responses = new Questions_Responses( $atts[ 'id' ] );
|
|
|
|
$ordered_data = Questions_AbstractData::order_for_charting( $responses->get_responses( FALSE, FALSE ) );
|
|
|
|
$html = '';
|
|
$count_bars = 0;
|
|
foreach ( $ordered_data[ 'questions' ] as $question_id => $question ):
|
|
if( !array_key_exists( $question_id, $ordered_data['data'] ) )
|
|
continue;
|
|
|
|
$html.= Questions_ChartCreator_Dimple::show_bars( $question, $ordered_data['data'][ $question_id ] );
|
|
$count_bars++;
|
|
endforeach;
|
|
|
|
if( 0 == $count_bars )
|
|
_e( 'There are no results to show.', 'questions-locale' );
|
|
|
|
return $html;
|
|
}
|
|
|
|
/**
|
|
* Showing results of a question
|
|
* @param array $atts Arguments which can be added to the shortcode
|
|
* @return string $html HTML of results
|
|
*/
|
|
public static function question_results( $atts ){
|
|
global $wpdb, $questions_global;
|
|
|
|
$atts = shortcode_atts( array(
|
|
'id' => '',
|
|
), $atts );
|
|
|
|
if( '' == $atts[ 'id' ] ):
|
|
_e( 'Please enter a question id in the survey shortcode!', 'questions-locale' );
|
|
return;
|
|
endif;
|
|
|
|
$sql = $wpdb->prepare( "SELECT questions_id FROM {$questions_global->tables->questions} WHERE id = %d", $atts[ 'id' ] );
|
|
$survey_id = $wpdb->get_var( $sql );
|
|
|
|
$survey = new Questions_Form( $survey_id );
|
|
$ordered_data = Questions_AbstractData::order_for_charting( $survey->get_responses( $atts[ 'id' ], FALSE ) );
|
|
|
|
$html = '';
|
|
foreach ( $ordered_data[ 'questions' ] as $question_id => $question ):
|
|
$html.= Questions_ChartCreator_Dimple::show_bars( $question, $ordered_data['data'][ $question_id ] );
|
|
endforeach;
|
|
|
|
return $html;
|
|
}
|
|
|
|
/**
|
|
* Showing survey result schortcodes in admin area for copy&paste
|
|
* @param int $survey_id Id of the survey
|
|
* @return string $html HTML for shortcode summary in admon
|
|
*/
|
|
public static function show_survey_result_shortcode( $survey_id ){
|
|
$html = '<div class="questions-options shortcode">';
|
|
$html.= '<label for="survey_results_shortcode">' . __( 'Results Shortcode:', 'questions-locale' ) . '</label><br />';
|
|
$html.= '<input type="text" id="survey_questions_shortcode" value="[survey_results id=' . $survey_id . ']" />';
|
|
$html.= '</div>';
|
|
|
|
echo $html;
|
|
}
|
|
|
|
/**
|
|
* Showing question result schortcodes in admin area for copy&paste
|
|
* @param object $object Object element
|
|
* @return string $html HTML for shortcode summary in admin
|
|
*/
|
|
public static function show_question_result_shortcode( $object ){
|
|
if( $object->id != '' && $object->is_analyzable ):
|
|
$small = '<small>' . __( '(CTRL+C and paste into post to embed question results in post)', 'questions-locale' ) . '</small>';
|
|
echo sprintf( '<div class="shortcode"><label for="question_shortcode_%d">' . __( 'Shortcode:', 'questions-locale' ) . '</label><input class="shortcode_input" type="text" id="question_shortcode_%d" value="[question_results id=%d]" /> %s</div>', $object->id, $object->id, $object->id, $small );
|
|
endif;
|
|
}
|
|
}
|
|
QuestionsChartsShortCodes::init(); |