science-ation/signature.php

292 lines
8.7 KiB
PHP
Raw Normal View History

2025-02-12 02:22:50 +00:00
<?php
require_once('common.inc.php');
require_once('form.inc.php');
require_once('user.inc.php');
require_once('project.inc.php');
require_once('schools.inc.php');
$mysqli = sfiab_init(NULL);
sfiab_load_config($mysqli);
function load_and_check_key($mysqli, $key)
{
global $signature_types;
$sig = signature_load($mysqli, $key);
if($sig['uid'] == 0) {
print("Couldn't find signature link $key, sorry.");
exit;
}
if(!array_key_exists($sig['type'], $signature_types)) {
print("Couldn't find signature link $key, sorry.");
exit;
}
return $sig;
}
$action = '';
if(array_key_exists('action', $_POST)) {
$action = $_POST['action'];
}
switch($action) {
case 'sign':
$key = '';
post_text($key, 'key');
$sig = load_and_check_key($mysqli, $key);
/* Refuse to save if it has already been saved */
if($sig['date_signed'] != '0000-00-00 00:00:00') {
print("Already signed.");
exit();
}
post_text($sig['signed_name'], 'name');
$sig['date_signed'] = date( 'Y-m-d H:i:s' );
/* Check that all necessary text boxes are checked, the .js below doesn't let the form
* get subbmit unless they all are, so just double check that.*/
if(!in_array('agree', $_POST['agree_decl'])) { print("Checkbox mismatch"); exit(); };
if(!in_array('agree', $_POST['agree_sig'])) { print("Checkbox mismatch"); exit(); };
if($config['sig_enable_release_of_information'] && ($sig['type'] == 'student' || $sig['type'] == 'parent')) {
if(!in_array('agree', $_POST['agree_rel'])) { print("Checkbox mismatch"); exit() ;};
}
if(strlen($sig['signed_name']) < 2) { print("bad name"); exit(); };
signature_save($mysqli, $sig);
form_ajax_response(array('status'=>0, 'location'=>'signature.php?k='.$sig['key']));
exit();
}
if(!array_key_exists('k', $_GET)) {
print("Invalid signature link");
exit();
}
$key = $_GET['k'];
$sample = false;
if($key == 'sample_student') {
$sample = true;
$sample_type = 'student';
$sample_name = 'John Q. Doe';
$sample_email = 'john@exmaple.com';
} else if($key == 'sample_parent') {
$sample = true;
$sample_type = 'parent';
$sample_name = 'Jane Doe';
$sample_email = 'jdoe@industry.com';
} else if($key == 'sample_teacher') {
$sample = true;
$sample_type = 'teacher';
$sample_name = 'Miss Krabapple';
$sample_email = 'msk@exampleschool.com';
}
if(!$sample) {
$sig = load_and_check_key($mysqli, $key);
/* Load the student and project */
$student = user_load($mysqli, $sig['uid']);
$project = project_load($mysqli, $student['s_pid']);
$school = school_load($mysqli, $student['schools_id']);
} else {
$cats = categories_load($mysqli);
$sig = array();
$sig['date_signed'] = '0000-00-00 00:00:00';
$sig['uid'] = -1;
$sig['type'] = $sample_type;
$sig['name'] = $sample_name;
$sig['email'] = $sample_email;
$sig['signed_name'] = '';
$sig['year'] = $config['year'];
$project = array();
$project['pid'] = 1234;
$project['title'] = "My Science Fair Project";
$project['cat_id'] = 1;
$project['challenge_id'] = 1;
$student = array();
$student['schools_id'] = 0;
$student['uid'] = 1111;
$student['grade'] = $cats[1]['min_grade'];
$student['name'] = "John Q. Doe";
$student['firstname'] = "John";
$student['lastname'] = "Doe";
$student['sex'] = "male";
$student['email'] = "john@example.com";
$student['username'] = 'sample';
$student['salutation'] = '';
$student['organization'] = '';
$school = array();
$school['school'] = 'Example Secondard School';
}
$str = '';
$already = '';
$disable = false;
if($sig['date_signed'] != '0000-00-00 00:00:00') {
$str = 'agree';
$already = "<font color=\"green\"> This form was signed on ". date('F j, g:ia', strtotime($sig['date_signed']))."</font>";
$disable = true;
}
output_start("Electronic Signature");
$page_id = 'signature';
?>
<div data-role="page" id="<?=$page_id?>" class="sfiab_page" >
<?php
switch($sig['type']) {
case 'student':
$decl = cms_get($mysqli, 'sig_student_declaration', $student);
break;
case 'parent':
$decl = cms_get($mysqli, 'sig_parent_declaration', $student);
break;
case 'teacher':
$decl = cms_get($mysqli, 'sig_teacher_declaration', $student);
break;
case 'ethics':
$decl = cms_get($mysqli, 'sig_ethics_declaration', $student);
break;
default:
exit();
}
$flags = ENT_QUOTES;
if(PHP_VERSION_ID >= 50400) $flags |= ENT_HTML401;
$logo = '';
?>
<h2><?=$signature_types[$sig['type']]?> Electronic Signature Form</h2>
<?php
if($already != '') {
print("<h3>$already</h3>");
}
if($sig['type'] == 'student') { ?>
<p>This form is for the <b>Exhibitor</b> signature for <?=$sig['name']?>. If you are not <?=$sig['name']?> then this is not the signature page for you. Please contact the science fair committee <?=mailto($config['email_registration'])?>.
<?php } else { ?>
<p>A <b><?=$signature_types[$sig['type']]?> </b>signature has been requested from you, <?=$sig['name']?>, by <?=$student['name']?>. If you are not <?=$sig['name']?>, then this is not the signature page for you. Please contact the science fair committee <?=mailto($config['email_registration'])?>.
<?php } ?>
<p>Please review the Project Information and Declaration(s) below. If you agree
to the declaration(s), type in your name in the box below in lieu of a
signature and submit this form. This will function as your electronic
signature and you do not need to sign the paper signature form.
<p>If you have any questions or concerns, please contact us at <?=mailto($config['email_registration'])?>.
<?php if($sig['type'] == 'student') { ?>
<p>If you do not agree to use an electronic signature, please print the paper signature form and submit that.
<?php } else { ?>
<p>If you do not agree to use an electronic signature, please request a paper copy of the signature form from the student and sign that.
<?php } ?>
<h3>Project Information</h3>
<table data-role="table" data-mode="none" class="table_stripes">
<TR><td>Student: </td><td><?=htmlentities($student['name'], $flags , "UTF-8")?></td></tr>
<TR><td>Project Title: </td><td><?=htmlentities($project['title'], $flags , "UTF-8")?></td></tr>
<TR><td>School: </td><td><?=htmlentities($school['school'], $flags , "UTF-8")?></td></tr>
</table>
<hr/>
<?php
$form_id = $page_id.'_form';
form_page_begin($page_id, array());
form_begin($form_id, 'signature.php', $disable);
form_hidden($form_id, 'key', $key);
?>
<h3><?=$signature_types[$sig['type']]?> Declaration</h3>
<blockquote>
<?=nl2br($decl)?>
</blockquote>
<?=form_checkbox($form_id, 'agree_decl', "I Agree to the {$signature_types[$sig['type']]} Declaration above", 'agree', $str)?>
<hr/>
<?php
if($config['sig_enable_release_of_information'] && ($sig['type'] == 'student' || $sig['type'] == 'parent')) {
if($sig['type'] == 'student') {
$rel_of_info = cms_get($mysqli, 'sig_release_of_information_student', $student);
} else {
$rel_of_info = cms_get($mysqli, 'sig_release_of_information_parent', $student);
}
?>
<h3><?=$signature_types[$sig['type']]?> Release of Information</h3>
<blockquote>
<?=nl2br($rel_of_info)?>
</blockquote>
<?php
form_checkbox($form_id, 'agree_rel', "I Agree to the {$signature_types[$sig['type']]} Release of Information above", 'agree', $str);
?>
<hr/>
<?php
} ?>
<h3><?=$signature_types[$sig['type']]?> Signature</h3>
<blockquote>
<?php if($sig['type'] == 'student') { ?>
<p>If you do not agree to the use of an electronic signature, please print a paper copy of this form to sign and submit it
to the Science Fair Committee.
<?php } else { ?>
<p>If you do not agree to the use of an electronic signature, please ask the student to print a paper copy of this form to sign and have the student submit that
to the Science Fair Committee.
<?php } ?>
</blockquote>
<?php
form_checkbox($form_id, 'agree_sig', "I Agree to the use of an Electronic Signature instead of a Paper/Ink Signature", 'agree', $str);
form_text($form_id, 'name', 'Type Your Name', $sig['signed_name']);
if($already == '' && $sample == false) {
form_submit($form_id, 'sign', "Send Electronic Signature", 'Sent');
}
if($sample == true) {
?> <a href="#" data-rel="back" data-role="button" data-icon="check" data-inline="true" data-theme="g">Send Electronic Signature</a> <?php
}
form_end($form_id);
if($already != '') {
print("<h3>$already</h3>");
}
?>
</div>
<script>
function <?=$form_id?>_button_enable() {
/* Check that all checkboxes are checked */
if($('#<?=$form_id?>_agree_decl_agree').is(':checked') == false) return false;
<?php if($config['sig_enable_release_of_information'] && ($sig['type'] == 'student' || $sig['type'] == 'parent')) { ?>
if($('#<?=$form_id?>_agree_rel_agree').is(':checked') == false) return false;
<?php } ?>
if($('#<?=$form_id?>_agree_sig_agree').is(':checked') == false) return false;
if($('#<?=$form_id?>_name').val().length < 2) return false;
return true;
}
</script>
<?php
output_end();
?>