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; }
$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(); }