Skip to content

Instantly share code, notes, and snippets.

@stnc
Last active September 19, 2019 23:53
Show Gist options
  • Save stnc/52e6cbec63b9d4a667c5554e58c1ee9a to your computer and use it in GitHub Desktop.
Save stnc/52e6cbec63b9d4a667c5554e58c1ee9a to your computer and use it in GitHub Desktop.
wordpress Quiz Cat plugin rest api (https://wordpress.org/plugins/quiz-cat/)
<?php
/** QUIZ ID for post ** */
# Registering the routes in here
add_action('rest_api_init', 'register_quizcat_id');
function register_quizcat_id()
{
register_rest_route('wp/v2', '/quizcat/id/(?P<id>[\d]+)',
array(
'methods' => 'GET',
'callback' => 'stnc_quiz_id',
)
);
}
function stnc_quiz_id(WP_REST_Request $request)
{
extract($request->get_params());
return [stnc_quiz_func($id)];
}
/** quizcat rest ID end ** */
function stnc_quiz_func($post_id)
{
$all_meta = get_post_meta($post_id, '', true);
$quiz_meta = empty($all_meta['quiz_cat_meta']) ? array() : unserialize($all_meta['quiz_cat_meta'][0]);
$quiz_meta['title'] = get_the_title($post_id);
$questions = empty($all_meta['quiz_cat_questions']) ? array() : unserialize($all_meta['quiz_cat_questions'][0]);
$quiz_results = empty($all_meta['quiz_cat_results']) ? array() : unserialize($all_meta['quiz_cat_results'][0]);
$quiz_settings = empty($all_meta['quiz_cat_settings']) ? array() : unserialize($all_meta['quiz_cat_settings'][0]);
$data= [
'title' => $quiz_meta['title'],
'questions' => $questions,
'quiz_results' => $quiz_results,
'quiz_settings' => $quiz_settings,
];
return stnc_quiz_func_manipulation($data);
}
function stnc_quiz_func_manipulation($datas)
{
foreach ($datas['questions'] as $key => $data) {
foreach ($data['answers'] as $keyAnswer => $answer) {
$datas['questions'][$key]['correctoption'] = 0;
$datas['questions'][$key]['answers'][$keyAnswer]['id'] = $keyAnswer;
}
shuffle( $datas['questions'][$key]['answers']);
}
return $datas;
}
@stnc
Copy link
Author

stnc commented Sep 19, 2019

add_action('rest_api_init', 'register_quizcat_id');
function register_quizcat_id()
{
register_rest_route('wp/v2', '/quizcat/id/(?P[\d]+)',
array(
'methods' => 'GET',
'callback' => 'stnc_quiz_id',
)
);
}

function stnc_quiz_id(WP_REST_Request $request)
{
extract($request->get_params());
return [stnc_quiz_func($id)];
}

/** quizcat rest ID end ** */
function stnc_quiz_func($post_id)
{
$all_meta = get_post_meta($post_id, '', true);
$quiz_meta = empty($all_meta['quiz_cat_meta']) ? array() : unserialize($all_meta['quiz_cat_meta'][0]);
$quiz_meta['title'] = get_the_title($post_id);
$questions = empty($all_meta['quiz_cat_questions']) ? array() : unserialize($all_meta['quiz_cat_questions'][0]);
$quiz_results = empty($all_meta['quiz_cat_results']) ? array() : unserialize($all_meta['quiz_cat_results'][0]);
$quiz_settings = empty($all_meta['quiz_cat_settings']) ? array() : unserialize($all_meta['quiz_cat_settings'][0]);

$data = [
    'title' => $quiz_meta['title'],
    'questions' => $questions,
    'quiz_results' => $quiz_results,
    'quiz_settings' => $quiz_settings,
];

return stnc_quiz_func_manipulationV4($data);

}

// echo '

';
// print_r(stnc_quiz_func(1834));
// print_r(donder(stnc_quiz_func(1834)));

function stnc_quiz_func_manipulationV1($datas)
{
foreach ($datas['questions'] as $key => $data) {
foreach ($data['answers'] as $keyAnswer => $answer) {
//burada da bir foreach olmalı onun içinde işleme gitmeli
$datas['questions'][$key]['correctoption'] = 0;
$datas['questions'][$key]['answers'][$keyAnswer]['id'] = $keyAnswer;
}
shuffle($datas['questions'][$key]['answers']);
}

return $datas;

}

function stnc_quiz_func_manipulationV2($datas)
{
foreach ($datas['questions'] as $key => $data) {
foreach ($data['answers'] as $keyAnswer => $answer) {
$datas['questions'][$key]['answers']['answers' . $keyAnswer] = $answer;
$datas['questions'][$key]['answers']['answers' . $keyAnswer]['id'] = $keyAnswer;
unset($datas['questions'][$key]['answers'][$keyAnswer]);

    }
    // shuffle( $datas['questions'][$key]['answers']);
}

return $datas;

}

function stnc_quiz_func_manipulationV3($datas)
{
foreach ($datas['questions'] as $key => $data) {
foreach ($data['answers'] as $keyAnswer => $answer) {
$datas['questions'][$key]['answers']['answers' . $keyAnswer] = $answer['answer'];
unset($datas['questions'][$key]['answers'][$keyAnswer]);
}
$datas['questions'][$key]['answers'] = shuffle_assoc($datas['questions'][$key]['answers']);
}
return $datas;
}

function stnc_quiz_func_manipulationV4($datas)
{
$i = 0;
foreach ($datas['questions'] as $key => $data) {
$i++;
unset($datas['questions'][$key]);
$datas['questions'][$key]['question' . $key] = $data;
foreach ($datas['questions'][$key]["question$key"]['answers'] as $keyAnswer => $answer) {
$datas['questions'][$key]["question$key"]['answers']['answers' . $keyAnswer] = $answer['answer'];
unset($datas['questions'][$key]["question$key"]['answers'][$keyAnswer]);
$datas['questions'][$key]["question$key"]['answers'] = shuffle_assoc($datas['questions'][$key]["question$key"]['answers']);
}
}

//   print_r ($datas);
return $datas;

}

function shuffle_assoc($list)
{
if (!is_array($list)) {
return $list;
}

$keys = array_keys($list);
shuffle($keys);
$random = array();
foreach ($keys as $key) {
    $random[$key] = $list[$key];
}
return $random;

}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment