Fix custom certificate errors when checking as admin see BT#14970

pull/2729/head
Julio Montoya 7 years ago
parent 49dc8baf15
commit 9246c3decd
  1. 6
      certificates/index.php
  2. 2
      main/gradebook/gradebook_display_certificate.php
  3. 19
      plugin/customcertificate/src/CustomCertificatePlugin.php
  4. 6
      plugin/customcertificate/src/print_certificate.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':

@ -307,7 +307,7 @@ if (count($certificate_list) == 0) {
echo '<td width="50%">'.get_lang('Score').' : '.$valueCertificate['score_certificate'].'</td>';
echo '<td width="30%">'.get_lang('Date').' : '.api_convert_and_format_date($valueCertificate['created_at']).'</td>';
echo '<td width="20%">';
$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,

@ -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'];

@ -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;

Loading…
Cancel
Save