From 9246c3decd1c3d08bd2d90433de9409dc249f1ee Mon Sep 17 00:00:00 2001 From: Julio Montoya Date: Wed, 17 Oct 2018 11:59:18 +0200 Subject: [PATCH] Fix custom certificate errors when checking as admin see BT#14970 --- certificates/index.php | 6 ++++-- .../gradebook_display_certificate.php | 2 +- .../src/CustomCertificatePlugin.php | 19 +++++++++++++------ .../src/print_certificate.php | 6 ++++-- 4 files changed, 22 insertions(+), 11 deletions(-) diff --git a/certificates/index.php b/certificates/index.php index 790c37650e..a8f1944d42 100755 --- a/certificates/index.php +++ b/certificates/index.php @@ -8,9 +8,11 @@ require_once '../main/inc/global.inc.php'; $action = isset($_GET['action']) ? $_GET['action'] : null; -$certificate = new Certificate($_GET['id']); +$userId = isset($_GET['user_id']) ? $_GET['user_id'] : 0; -CustomCertificatePlugin::redirectCheck($certificate, $_GET['id']); +$certificate = new Certificate($_GET['id'], $userId); + +CustomCertificatePlugin::redirectCheck($certificate, $_GET['id'], $userId); switch ($action) { case 'export': diff --git a/main/gradebook/gradebook_display_certificate.php b/main/gradebook/gradebook_display_certificate.php index 6a16d40383..77bbe63cc8 100755 --- a/main/gradebook/gradebook_display_certificate.php +++ b/main/gradebook/gradebook_display_certificate.php @@ -307,7 +307,7 @@ if (count($certificate_list) == 0) { echo ''.get_lang('Score').' : '.$valueCertificate['score_certificate'].''; echo ''.get_lang('Date').' : '.api_convert_and_format_date($valueCertificate['created_at']).''; echo ''; - $url = api_get_path(WEB_PATH).'certificates/index.php?id='.$valueCertificate['id']; + $url = api_get_path(WEB_PATH).'certificates/index.php?id='.$valueCertificate['id'].'&user_id='.$value['user_id']; $certificates = Display::url( get_lang('Certificate'), $url, diff --git a/plugin/customcertificate/src/CustomCertificatePlugin.php b/plugin/customcertificate/src/CustomCertificatePlugin.php index 5b1f59316a..2c4340b97c 100644 --- a/plugin/customcertificate/src/CustomCertificatePlugin.php +++ b/plugin/customcertificate/src/CustomCertificatePlugin.php @@ -206,17 +206,19 @@ class CustomCertificatePlugin extends Plugin * Get certificate data. * * @param int $id The certificate + * @param int $userId * * @return array */ - public static function getCertificateData($id) + public static function getCertificateData($id, $userId) { $id = (int) $id; - if (empty($id)) { + $userId = (int) $userId; + + if (empty($id) || empty($userId)) { return []; } - $userId = api_get_user_id(); $certificateTable = Database::get_main_table(TABLE_MAIN_GRADEBOOK_CERTIFICATE); $categoryTable = Database::get_main_table(TABLE_MAIN_GRADEBOOK_CATEGORY); $sql = "SELECT cer.user_id AS user_id, cat.session_id AS session_id, cat.course_code AS course_code @@ -224,6 +226,7 @@ class CustomCertificatePlugin extends Plugin INNER JOIN $categoryTable cat ON (cer.cat_id = cat.id AND cer.user_id = $userId) WHERE cer.id = $id"; + $rs = Database::query($sql); if (Database::num_rows($rs) > 0) { $row = Database::fetch_assoc($rs); @@ -247,12 +250,16 @@ class CustomCertificatePlugin extends Plugin * * @param certificate $certificate * @param int $certId + * @param int $userId */ - public static function redirectCheck($certificate, $certId) + public static function redirectCheck($certificate, $certId, $userId) { $certId = (int) $certId; - if (api_get_plugin_setting('customcertificate', 'enable_plugin_customcertificate') == 'true') { - $infoCertificate = self::getCertificateData($certId); + $userId = !empty($userId) ? $userId : api_get_user_id(); + + if (api_get_plugin_setting('customcertificate', 'enable_plugin_customcertificate') === 'true') { + $infoCertificate = self::getCertificateData($certId, $userId); + var_dump($infoCertificate); if (!empty($infoCertificate)) { if ($certificate->user_id == api_get_user_id() && !empty($certificate->certificate_data)) { $certificateId = $certificate->certificate_data['id']; diff --git a/plugin/customcertificate/src/print_certificate.php b/plugin/customcertificate/src/print_certificate.php index 94f0eb686e..ad6f56b67c 100644 --- a/plugin/customcertificate/src/print_certificate.php +++ b/plugin/customcertificate/src/print_certificate.php @@ -3,7 +3,9 @@ use Chamilo\CourseBundle\Entity\CLpCategory; -if (intval($_GET['default']) == 1) { +$default = isset($_GET['default']) ? (int) $_GET['default'] : null; + +if ($default == 1) { $cidReset = true; } @@ -19,7 +21,7 @@ if (!$enable) { api_not_allowed(true, $plugin->get_lang('ToolDisabled')); } -if (intval($_GET['default']) == 1) { +if ($default == 1) { $courseId = 0; $courseCode = ''; $sessionId = 0;