Merge pull request #2999 from nosolored/1.11.x_customcertificate

Añadir la opción de borrar certificado
pull/3023/head
Julio Montoya 6 years ago committed by GitHub
commit 083e202f2f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 3
      plugin/customcertificate/lang/english.php
  2. 3
      plugin/customcertificate/lang/spanish.php
  3. 50
      plugin/customcertificate/src/CustomCertificatePlugin.php
  4. 54
      plugin/customcertificate/src/customcertificate.ajax.php
  5. 62
      plugin/customcertificate/src/index.php
  6. 20
      plugin/customcertificate/src/print_certificate.php

@ -71,3 +71,6 @@ $strings['InfoFromDefaultCertificate'] = "The content of the certificate is base
$strings['to'] = " to ";
$strings['formatDownloadDate'] = " to %sth %s, %s";
$strings['PrintCertificate'] = "Print certificate";
$strings['QuestionDelete'] = "Do you want to delete the specific diploma and use the default certificate?";
$strings['SuccessDelete'] = "Successfully deleted";
$strings['ProblemDelete'] = "Problem deleting the certificate";

@ -73,3 +73,6 @@ $strings['to'] = " a ";
$strings['formatDownloadDate'] = " a %s de %s de %s";
$strings['MessageUpdate'] = "El proceso de actualización ha terminado";
$strings['PrintCertificate'] = "Imprimir certificado";
$strings['QuestionDelete'] = "¿Desea eliminar el diploma específico y volver a usar el certificado por defecto?";
$strings['SuccessDelete'] = "Borrado con éxito";
$strings['ProblemDelete'] = "Hubo un problema al borrar el certificado";

@ -285,4 +285,54 @@ class CustomCertificatePlugin extends Plugin
}
}
}
/**
* Get certificate info.
*
* @param int $courseId
* @param int $sessionId
* @param int $accessUrlId
*
* @return array
*/
public static function getInfoCertificate($courseId, $sessionId = 0, $accessUrlId)
{
$courseId = (int) $courseId;
$sessionId = (int) $sessionId;
$accessUrlId = !empty($accessUrlId) ? (int) $accessUrlId : 1;
$table = Database::get_main_table(self::TABLE_CUSTOMCERTIFICATE);
$sql = "SELECT * FROM $table
WHERE c_id=$courseId AND session_id=$sessionId AND access_url_id=$accessUrlId";
$result = Database::query($sql);
$resultArray = [];
if (Database::num_rows($result) > 0) {
$resultArray = Database::fetch_array($result);
}
return $resultArray;
}
/**
* Get default certificate info.
*
* @param int $accessUrlId
*
* @return array
*/
public static function getInfoCertificateDefault($accessUrlId)
{
$accessUrlId = !empty($accessUrlId) ? (int) $accessUrlId : 1;
$table = Database::get_main_table(self::TABLE_CUSTOMCERTIFICATE);
$sql = "SELECT * FROM $table
WHERE certificate_default=1 AND access_url_id=$accessUrlId";
$result = Database::query($sql);
$resultArray = [];
if (Database::num_rows($result) > 0) {
$resultArray = Database::fetch_array($result);
}
return $resultArray;
}
}

@ -0,0 +1,54 @@
<?php
/* For licensing terms, see /license.txt */
/**
* Responses to AJAX calls.
*
* @package chamilo.plugin.customcertificate
*/
$cidReset = true;
require_once __DIR__.'/../../../main/inc/global.inc.php';
if (api_is_anonymous()) {
api_not_allowed(true);
}
$plugin = CustomCertificatePlugin::create();
$enable = $plugin->get('enable_plugin_customcertificate') == 'true';
$action = isset($_GET['a']) ? $_GET['a'] : null;
$em = Database::getManager();
switch ($action) {
case 'delete_certificate':
if (api_is_anonymous()) {
break;
}
$table = Database::get_main_table(CustomCertificatePlugin::TABLE_CUSTOMCERTIFICATE);
$courseId = isset($_POST['courseId']) ? (int) $_POST['courseId'] : 0;
$sessionId = isset($_POST['sessionId']) ? (int) $_POST['sessionId'] : 0;
$accessUrlId = isset($_POST['accessUrlId']) ? (int) $_POST['accessUrlId'] : 1;
if (!empty($courseId)) {
$sql = "DELETE FROM $table
WHERE c_id=$courseId AND session_id=$sessionId AND access_url_id=$accessUrlId";
$rs = Database::query($sql);
echo Display::addFlash(
Display::return_message(
get_plugin_lang("SuccessDelete", "CustomCertificatePlugin"),
'success'
)
);
} else {
echo Display::addFlash(
Display::return_message(
get_plugin_lang("ProblemDelete", "CustomCertificatePlugin"),
'error',
false
)
);
}
break;
}

@ -1,6 +1,7 @@
<?php
/* For licensing terms, see /license.txt */
$useDefault = false;
$isDefault = isset($_GET['default']) ? (int) $_GET['default'] : null;
if ($isDefault === 1) {
@ -64,16 +65,34 @@ $htmlHeadXtra[] = api_get_asset('cropper/dist/cropper.min.js');
$htmlHeadXtra[] = api_get_css(
api_get_path(WEB_PLUGIN_PATH).'customcertificate/resources/css/form.css'
);
$htmlHeadXtra[] = '<script>
$(function () {
$("#delete_certificate").click(function (e) {
e.preventDefault();
e.stopPropagation();
if (confirm("'.$plugin->get_lang("QuestionDelete").'")) {
var courseId = '.$courseId.';
var sessionId = '.$sessionId.';
var accessUrlId = '.$accessUrlId.';
var plugin_path = "'.api_get_path(WEB_PLUGIN_PATH).'";
var ajax_path = plugin_path + "customcertificate/src/customcertificate.ajax.php?a=delete_certificate";
$.ajax({
data: {courseId: courseId, sessionId: sessionId, accessUrlId: accessUrlId},
url: ajax_path,
type: "POST",
success: function (response) {
window.location.reload();
}
});
}
});
});
</script>';
// Get info certificate
$infoCertificate = Database::select(
'*',
$table,
['where' => [
'access_url_id = ? AND c_id = ? AND session_id = ?' => [$accessUrlId, $courseId, $sessionId], ],
],
'first'
);
$infoCertificate = CustomCertificatePlugin::getInfoCertificate($courseId, $sessionId, $accessUrlId);
$form = new FormValidator(
'formEdit',
@ -172,12 +191,7 @@ if ($form->validate()) {
// Certificate Default
if (intval($formValues['use_default'] == 1)) {
$infoCertificateDefault = Database::select(
'*',
$table,
['where' => ['access_url_id = ? AND certificate_default = ? ' => [$accessUrlId, 1]]],
'first'
);
$infoCertificateDefault = CustomCertificatePlugin::getInfoCertificateDefault($accessUrlId);
if (!empty($infoCertificateDefault)) {
foreach ($fieldList as $field) {
if (!empty($infoCertificateDefault[$field]) && !$checkLogo[$field]) {
@ -199,14 +213,9 @@ if ($form->validate()) {
}
if (empty($infoCertificate)) {
$infoCertificate = Database::select(
'*',
$table,
['where' => ['access_url_id = ? AND certificate_default = ? ' => [$accessUrlId, 1]]],
'first'
);
$infoCertificate = CustomCertificatePlugin::getInfoCertificateDefault($accessUrlId);
if (!is_array($infoCertificate)) {
if (empty($infoCertificate)) {
$infoCertificate = [
'type_date_expediction' => '',
'year' => '',
@ -215,9 +224,7 @@ if (empty($infoCertificate)) {
'date_change' => '',
];
}
if (!empty($infoCertificate)) {
$useDefault = true;
}
$useDefault = true;
}
// Display the header
@ -226,6 +233,13 @@ $actionsLeft = Display::url(
Display::return_icon('certificate.png', get_lang('Certificate'), '', ICON_SIZE_MEDIUM),
'print_certificate.php'.$urlParams
);
if (!empty($courseId) && !$useDefault) {
$actionsLeft .= Display::url(
Display::return_icon('delete.png', $plugin->get_lang('DeleteCertificate'), '', ICON_SIZE_MEDIUM),
'delete_certificate.php'.$urlParams,
['id' => 'delete_certificate']
);
}
echo Display::toolbarAction(
'toolbar-document',

@ -46,7 +46,7 @@ if (empty($courseCode)) {
}
if (empty($sessionId)) {
$sessionId = isset($_REQUEST['session_id']) ? (int) $_REQUEST['session_id'] : '';
$sessionId = isset($_REQUEST['session_id']) ? (int) $_REQUEST['session_id'] : 0;
}
$accessUrlId = api_get_current_access_url_id();
@ -83,28 +83,14 @@ $useDefault = false;
$path = api_get_path(SYS_UPLOAD_PATH).'certificates/';
// Get info certificate
$infoCertificate = Database::select(
'*',
$table,
['where' => ['access_url_id = ? AND c_id = ? AND session_id = ?' => [$accessUrlId, $courseId, $sessionId]]],
'first'
);
$infoCertificate = CustomCertificatePlugin::getInfoCertificate($courseId, $sessionId, $accessUrlId);
if (!is_array($infoCertificate)) {
$infoCertificate = [];
}
if (empty($infoCertificate)) {
$infoCertificate = Database::select(
'*',
Database::get_main_table(CustomCertificatePlugin::TABLE_CUSTOMCERTIFICATE),
['where' => ['access_url_id = ? AND certificate_default = ? ' => [$accessUrlId, 1]]],
'first'
);
if (!is_array($infoCertificate)) {
$infoCertificate = [];
}
$infoCertificate = CustomCertificatePlugin::getInfoCertificateDefault($accessUrlId);
if (empty($infoCertificate)) {
Display::display_header($plugin->get_lang('PrintCertificate'));

Loading…
Cancel
Save