diff --git a/plugin/customcertificate/lang/english.php b/plugin/customcertificate/lang/english.php index b0acb74d17..8f4e2e3b14 100644 --- a/plugin/customcertificate/lang/english.php +++ b/plugin/customcertificate/lang/english.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"; diff --git a/plugin/customcertificate/lang/spanish.php b/plugin/customcertificate/lang/spanish.php index 775071e9da..92a6101018 100644 --- a/plugin/customcertificate/lang/spanish.php +++ b/plugin/customcertificate/lang/spanish.php @@ -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"; diff --git a/plugin/customcertificate/src/CustomCertificatePlugin.php b/plugin/customcertificate/src/CustomCertificatePlugin.php index 9d83056d49..9fcb6e7303 100644 --- a/plugin/customcertificate/src/CustomCertificatePlugin.php +++ b/plugin/customcertificate/src/CustomCertificatePlugin.php @@ -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; + } } diff --git a/plugin/customcertificate/src/customcertificate.ajax.php b/plugin/customcertificate/src/customcertificate.ajax.php new file mode 100644 index 0000000000..0028674fef --- /dev/null +++ b/plugin/customcertificate/src/customcertificate.ajax.php @@ -0,0 +1,54 @@ +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; +} diff --git a/plugin/customcertificate/src/index.php b/plugin/customcertificate/src/index.php index 7eb9cb989c..a2cd1fe22b 100644 --- a/plugin/customcertificate/src/index.php +++ b/plugin/customcertificate/src/index.php @@ -1,6 +1,7 @@ + $(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(); + } + }); + } + }); + + }); +'; // 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', diff --git a/plugin/customcertificate/src/print_certificate.php b/plugin/customcertificate/src/print_certificate.php index b0e47260fe..42d1288f28 100644 --- a/plugin/customcertificate/src/print_certificate.php +++ b/plugin/customcertificate/src/print_certificate.php @@ -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'));