Example #1
0
function watupro_view_certificate()
{
    global $wpdb, $user_ID;
    // select certificate
    $certificate = $wpdb->get_row($wpdb->prepare("SELECT * FROM " . WATUPRO_CERTIFICATES . " WHERE ID=%d", $_GET['id']));
    if (empty($certificate->ID)) {
        wp_die(__("no such certificate", "watupro"));
    }
    $output = stripslashes($certificate->html);
    // no taking id? only admin can see it then
    if (empty($_GET['taking_id'])) {
        if (!current_user_can(WATUPRO_MANAGE_CAPS)) {
            wp_die(__('You do not have sufficient permissions to access this page', 'watupro') . ' 1');
        }
    } else {
        // find taking
        $taking = $wpdb->get_row($wpdb->prepare("SELECT * FROM " . WATUPRO_TAKEN_EXAMS . "\n\t\t\tWHERE ID=%d", $_GET['taking_id']));
        // find user_certificate record and see if the current user is allowed to see the certificate
        $user_certificate = $wpdb->get_row($wpdb->prepare("SELECT * FROM " . WATUPRO_USER_CERTIFICATES . "\n\t\t\tWHERE taking_id=%d AND certificate_id=%d AND user_id=%d", $taking->ID, $certificate->ID, $taking->user_id));
        if (empty($user_certificate)) {
            wp_die(__('Such certificate was never earned.', 'watupro'));
        }
        if (!is_user_logged_in() and empty($user_certificate->public_access)) {
            watupro_redirect(wp_login_url(site_url("?watupro_view_certificate=1&taking_id=" . $_GET['taking_id'] . "&id=" . $_GET['id'])));
        }
        if (empty($user_certificate->public_access) and ($taking->user_id != $user_ID or $user_certificate->pending_approval) and !current_user_can(WATUPRO_MANAGE_CAPS)) {
            wp_die(__('You do not have sufficient permissions to access this page', 'watupro') . ' 2');
        }
        $user_id = $taking->user_id;
        // select exam
        $exam = $wpdb->get_row($wpdb->prepare("SELECT * FROM " . WATUPRO_EXAMS . " WHERE ID=%d", $taking->exam_id));
        // select grade
        $grade = $wpdb->get_row($wpdb->prepare("SELECT * FROM " . WATUPRO_GRADES . " WHERE ID=%d", $taking->grade_id));
        $user_info = get_userdata($user_id);
        if (empty($taking->name)) {
            $name = (empty($user_info->first_name) or empty($user_info->last_name)) ? $user_info->display_name : $user_info->first_name . " " . $user_info->last_name;
        } else {
            $name = $taking->name;
        }
        // replace {{{name-field}}} and {{{email-field}}}
        $name_field = empty($taking->name) ? $name : $taking->name;
        $email_field = empty($taking->email) ? $user_info->user_email : $taking->email;
        $output = str_replace('{{{name-field}}}', $name_field, $output);
        $output = str_replace('{{{email-field}}}', $email_field, $output);
        $output = str_replace("%%GRADE%%", $taking->result, $output);
        $output = str_replace("%%GTITLE%%", $grade->gtitle, $output);
        $output = str_replace("%%GDESC%%", stripslashes($grade->gdescription), $output);
        $output = str_replace("%%QUIZ_NAME%%", $exam->name, $output);
        $output = str_replace("%%DESCRIPTION%%", stripslashes($exam->description), $output);
        $output = str_replace("%%USER_NAME%%", $name, $output);
        $output = str_replace("%%EMAIL%%", $email_field, $output);
        $output = str_replace("%%POINTS%%", $taking->points, $output);
        $taken_date = date(get_option('date_format'), strtotime($taking->date));
        $output = str_replace("%%DATE%%", $taken_date, $output);
        $output = str_replace("%%ID%%", sprintf('%04d', $user_certificate->ID), $output);
        $output = watupro_parse_answerto($output, $taking->ID);
        $output = apply_filters('watupro_content', $output);
    }
    if (get_option('watupro_generate_pdf_certificates') == "1") {
        $pdf_engine = get_option('watupro_pdf_engine');
        // $test_mode = 1;
        // generate through docRaptor
        if (empty($pdf_engine) or $pdf_engine == 'docraptor') {
            if (empty($user_certificate->pdf_output)) {
                $api_key = get_option('watupro_docraptor_key');
                $test_mode = get_option('watupro_docraptor_test_mode');
                include_once WATUPRO_PATH . '/lib/docraptor/DocRaptor.class.php';
                $docraptor = new DocRaptor($api_key);
                $docraptor->setDocumentContent($output)->setDocumentType('pdf')->setTest($test_mode)->setName('certificate.pdf');
                $content = $docraptor->fetchDocument();
                // store in DB to avoid more queries
                $wpdb->query($wpdb->prepare("UPDATE " . WATUPRO_USER_CERTIFICATES . " SET pdf_output = %s WHERE ID = %d", $content, $user_certificate->ID));
            } else {
                $content = $wpdb->get_var($wpdb->prepare("SELECT BINARY pdf_output FROM " . WATUPRO_USER_CERTIFICATES . " WHERE ID=%d", $user_certificate->ID));
            }
        }
        if (!empty($pdf_engine) and $pdf_engine = 'pdf-bridge') {
            $output = '<html>
			<head><title>' . $certificate->title . '</title>
			<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head>
			<body>' . $output . '</body>
			</html>';
            //	die($output);
            $content = apply_filters('pdf-bridge-convert', $output);
            echo $content;
            exit;
        }
        header("Content-Length: " . strlen($content));
        header('Content-type: application/pdf');
        echo $content;
        exit;
    }
    // end pdf certificate
    // else output HTML
    ?>
	<html>
	<head><title><?php 
    echo $certificate->title;
    ?>
</title>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head>
	<body><?php 
    echo $output;
    ?>
</body>
	</html>
	<?php 
    exit;
}
Example #2
0
    $resultDetails = $wpdb->get_row($wpdb->prepare("SELECT * FROM `" . WPSQT_TABLE_RESULTS . "` WHERE id = %d", array($_GET['id'])), ARRAY_A);
    $resultDetails['person'] = unserialize($resultDetails['person']);
    $resultDetails['sections'] = unserialize($resultDetails['sections']);
    $personName = isset($resultDetails['person']['name']) && !empty($resultDetails['person']['name']) ? $resultDetails['person']['name'] : 'Anonymous';
    $timestamp = strtotime($resultDetails['timestamp']);
    $pdfTemplate = empty($quizDetails['settings']['pdf_template']) ? get_option('wpsqt_pdf_template') : $quizDetails['settings']['pdf_template'];
    if (empty($pdfTemplate)) {
        // default pdf template here.
        $pdfTemplate = "<html>";
        $pdfTemplate .= "<body>";
        $pdfTemplate .= "<center>You %USER_NAME% passed the %QUIZ_NAME% quiz!</center>";
        $pdfTemplate .= "</body>";
        $pdfTemplate .= "</html>";
    }
    $objTokens = Wpsqt_Tokens::getTokenObject();
    $objTokens->setDefaultValues();
    $pdfTemplate = $objTokens->doReplacement($pdfTemplate);
    $resultUrl = esc_html(get_bloginfo('url') . '/wp-admin/admin.php?page=wpsqt-menu&type=quiz&action=results&id=' . $quizId . '&subaction=mark&subid=' . $resultDetails['id']);
    $pdfTemplate = str_ireplace('%RESULT_URL%', $resultUrl, $pdfTemplate);
    $url = plugins_url('pdf.php?html=true&id=' . $_GET['id'] . '&quizid=' . $_GET['quizid'], __FILE__);
    $apiKey = get_option('wpsqt_docraptor_api');
    if (!$apiKey) {
        print "No DocRaptor API key! Please alert the site owner to fix this!";
        exit;
    }
    $objDocraptor = new DocRaptor($apiKey);
    $objDocraptor->setDocumentType('pdf')->setName('PDF')->setDocumentContent($pdfTemplate);
    header('Content-disposition: attachment; filename=document.pdf');
    header('Content-type: application/pdf');
    print $objDocraptor->fetchDocument();
}