<? /* * This file is part of the 'Science Fair In A Box' project * SFIAB Website: http://www.sfiab.ca * * Copyright (C) 2005 Sci-Tech Ontario Inc <info@scitechontario.org> * Copyright (C) 2005 James Grant <james@lightbox.org> * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public * License as published by the Free Software Foundation, version 2. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ // This file was modified March of 2015 by Sebastian Ruan // Receive all button was added ?> <? require ('../common.inc.php'); include '../config/signaturepage_or_permissionform.php'; require_once ('../user.inc.php'); user_auth_required('committee', 'admin'); require ('../register_participants.inc.php'); send_header("Input Received $plural_participationform", array('Committee Main' => 'committee_main.php', 'Administration' => 'admin/index.php', 'Participant Registration' => 'admin/registration.php')); echo '<br />'; $showformatbottom = true; if (get_value_from_array($_POST, 'action') == 'received' && get_value_from_array($_POST, 'registration_number')) { $q = $pdo->prepare("SELECT * FROM registrations WHERE num=? AND year=?"); $q->execute([$_POST['registration_number'],$config['FAIRYEAR']]); if ($q->rowCount() == 1) { $r = $q->fetch(PDO::FETCH_OBJ); $reg_id = $r->id; $reg_num = $r->num; $reg_status = $r->status; if ($r->status == 'new') { echo error(i18n('Invalid Registration Status (%1 is New). Cannot receive an empty form.', array($_POST['registration_number']))); } else { // make sure all of the statuses are correct $statusstudent = studentStatus($reg_id); $statusemergencycontact = emergencycontactStatus($reg_id); $statusproject = projectStatus($reg_id); if ($config['participant_mentor'] == 'yes') $statusmentor = mentorStatus($reg_id); else $statusmentor = 'complete'; $statussafety = safetyStatus($reg_id); $statusnamecheck = namecheckStatus($reg_id); if ( $statusstudent == 'complete' && $statusemergencycontact == 'complete' && $statusproject == 'complete' && $statusmentor == 'complete' && $statussafety == 'complete' && $statusnamecheck == 'complete' ) { $q = $pdo->prepare("SELECT projects.title, projectcategories.category, projectdivisions.division FROM projects,projectcategories,projectdivisions WHERE projects.registrations_id=? AND projects.projectcategories_id=projectcategories.id AND projects.projectdivisions_id=projectdivisions.id AND projectcategories.year=projects.year AND projectdivisions.year=projects.year "); $q->execute([$reg_id]); show_pdo_errors_if_any($pdo); $projectinfo = $q->fetch(PDO::FETCH_OBJ); echo '<table class="summarytable">'; echo '<tr><th colspan="2">' . i18n('Registration Summary for %1', array($reg_num)) . '</th></tr>'; switch ($reg_status) { case 'paymentpending': $status_text = 'Payment Pending'; break; case 'complete': $status_text = 'Complete'; break; case 'open': $status_text = 'Open'; break; } echo '<tr><td><b>' . i18n('Registration Status') . "</b></td><td>$status_text</td></tr>"; echo '<tr><td><b>' . i18n('Registration Number') . "</b></td><td>$reg_num</td></tr>"; echo '<tr><td><b>' . i18n('Project Title') . "</b></td><td>$projectinfo->title</td></tr>"; echo '<tr><td><b>' . i18n('Category / Division') . "</b></td><td>$projectinfo->category / $projectinfo->division</td></tr>"; $q = $pdo->prepare("SELECT students.firstname, students.lastname, schools.school FROM students,schools WHERE students.registrations_id=? AND students.schools_id=schools.id "); $q->execute([$reg_id]); $studnum = 1; while ($studentinfo = $q->fetch(PDO::FETCH_OBJ)) { echo '<tr><td><b>' . i18n('School %1', array($studnum)) . "</b></td><td>$studentinfo->school </td></tr>"; echo '<tr><td><b>' . i18n('Student %1', array($studnum)) . "</b></td><td>$studentinfo->firstname $studentinfo->lastname </td></tr>"; $studnum++; } list($regfee, $regfeedata) = computeRegistrationFee($reg_id); echo '<tr><td><b>' . i18n('Registration Fee') . '</b></td><td>' . sprintf('$%.02f', $regfee) . '</td></tr>'; echo "</table>\n"; echo '<br />'; if ($r->status != 'complete') { echo '<table style="margin-left: 30px;">'; echo '<tr><td colspan="3">'; echo i18n('Is this the correct form to register?'); echo '</td></tr>'; echo '<tr>'; echo '<td>'; echo '<form method="post" action="registration_receivedforms.php">'; echo "<input type=\"hidden\" name=\"registration_number\" value=\"$reg_num\" />"; echo '<input type="hidden" name="action" value="receivedno" />'; echo '<input type=submit value="' . i18n('No, this is the wrong form') . '" style="width: 400px; height: 40px; margin: 10px;"/>'; echo '</form>'; if ($config['regfee'] > 0) { echo '<form method="post" action="registration_receivedforms.php">'; echo "<input type=\"hidden\" name=\"registration_number\" value=\"$reg_num\" />"; echo '<input type="hidden" name="action" value="receivedyes" />'; echo '<input type=submit value="' . i18n('Yes, right form with registration fee') . '" style="width: 400px; height: 40px; margin: 10px;"/>'; echo '</form>'; echo '<form method="post" action="registration_receivedforms.php">'; echo "<input type=\"hidden\" name=\"registration_number\" value=\"$reg_num\" />"; echo '<input type="hidden" name="action" value="receivedyesnocash" />'; echo '<input type=submit value="' . i18n('Yes, right form without registration fee') . '" style="width: 400px; height: 40px; margin: 10px;"/>'; echo '</form>'; } else { echo '<form method="post" action="registration_receivedforms.php">'; echo "<input type=\"hidden\" name=\"registration_number\" value=\"$reg_num\" />"; echo '<input type="hidden" name="action" value="receivedyes" />'; echo '<input type=submit value="' . i18n('Yes, this is the right form') . '" style="width: 400px; height: 40px; margin: 10px;"/>'; echo '</form>'; } echo '<br />'; echo "</td>\n"; echo '</tr>'; echo '</table>'; $showformatbottom = false; } else { echo i18n('This form has already been received. Registration is complete'); echo '<br />'; echo "<a href=\"registration_receivedforms.php?action=unregister®istration_number=$reg_num\">" . i18n('Click here to unregister this project') . '</a>'; echo '<br />'; echo '<hr />'; } } else { echo error(i18n('All registration sections are not complete. Cannot register incomplete form')); } } } else { echo error(i18n('Invalid Registration Number (%1)', array($_POST['registration_number']))); } } else if ((get_value_from_array($_POST, 'action') == 'receivedyes' || get_value_from_array($_POST, 'action') == 'receivedyesnocash') && get_value_from_array($_POST, 'registration_number')) { $regnum = intval($_POST['registration_number']); $checkNumQuery = $pdo->prepare("SELECT projectnumber FROM projects, registrations WHERE projects.registrations_id = registrations.id AND num=? AND registrations.year=?"); $checkNumQuery->execute([$regnum,$config['FAIRYEAR']]); $checkNumResults = $checkNumQuery->fetch(PDO::FETCH_OBJ); $projectnum = $checkNumResults->projectnumber; $q = $pdo->prepare("SELECT id FROM registrations WHERE num=? AND year=?"); $q->execute([$regnum, $config['FAIRYEAR']]); $r = $q->fetch(PDO::FETCH_OBJ); $reg_id = $r->id; if ($projectnum == null) { list($projectnumber, $ps, $pns, $pss) = generateProjectNumber($reg_id); $stmt = $pdo->prepare("UPDATE projects SET projectnumber='$projectnumber', projectsort='$ps',projectnumber_seq='$pns',projectsort_seq='$pss' WHERE registrations_id='$reg_id' AND year='{$config['FAIRYEAR']}'"); echo happy(i18n('Assigned Project Number: %1', array($projectnumber))); } else $projectnumber = $projectnum; // get all students with this registration number $recipients = getEmailRecipientsForRegistration($reg_id); if ($_POST['action'] == 'receivedyes') { // actually set it to 'complete' $stmt = $pdo->prepare("UPDATE registrations SET status='complete' WHERE num=? AND year=?"); $stmt->execute([$regnum,$config['FAIRYEAR']]); foreach ($recipients AS $recip) { $to = $recip['to']; $subsub = array(); $subbod = array( 'TO' => $recip['to'], 'EMAIL' => $recip['email'], 'FIRSTNAME' => $recip['firstname'], 'LASTNAME' => $recip['lastname'], 'NAME' => $recip['firstname'] . ' ' . $recip['lastname'], 'REGNUM' => $regnum, 'PROJECTNUMBER' => $projectnumber, ); email_send('register_participants_received', $to, $subsub, $subbod); } echo happy(i18n('Registration of form %1 successfully completed', array($regnum))); } else if ($_POST['action'] == 'receivedyesnocash') { // actually set it to 'paymentpending' $stmt = $pdo->prepare("UPDATE registrations SET status='paymentpending' WHERE num=? AND year=?"); $stmt->execute([$regnum,$config['FAIRYEAR']]); foreach ($recipients AS $recip) { $to = $recip['to']; $subsub = array(); $subbod = array( 'TO' => $recip['to'], 'EMAIL' => $recip['email'], 'FIRSTNAME' => $recip['firstname'], 'LASTNAME' => $recip['lastname'], 'NAME' => $recip['firstname'] . ' ' . $recip['lastname'], 'REGNUM' => $regnum, 'PROJECTNUMBER' => $projectnumber, ); email_send('register_participants_paymentpending', $to, $subsub, $subbod); } echo happy(i18n('Registration of form %1 marked as payment pending', array($regnum))); } } else if (get_value_from_array($_POST, 'action') == 'receivedno' && get_value_from_array($_POST, 'registration_number')) { echo notice(i18n('Registration of form %1 cancelled', array($_POST['registration_number']))); } else if (get_value_from_array($_GET, 'action') == 'unregister' && get_value_from_array($_GET, 'registration_number')) { $reg_num = intval(trim($_GET['registration_number'])); $q = $pdo->prepare("SELECT registrations.id AS reg_id, projects.id AS proj_id FROM projects,registrations WHERE projects.registrations_id=registrations.id AND registrations.year=? AND registrations.num=?"); $q->execute([$config['FAIRYEAR'],$reg_num]); $r = $q->fetch(PDO::FETCH_OBJ); $stmt = $pdo->prepare("UPDATE projects SET projectnumber=null, projectsort=null, projectnumber_seq=0, projectsort_seq=0 WHERE id=? AND year=?"); $stmt->execute([$r->proj_id,$config['FAIRYEAR']]); $stmt = $pdo->prepare("UPDATE registrations SET status='open' WHERE id=? AND year=?"); $stmt->execute([$r->reg_id,$config['FAIRYEAR']]); echo happy(i18n('Successfully unregistered project')); } if ($showformatbottom) { echo '<table>'; echo '<tr><td>'; echo '<form id="inputform" method="post" action="registration_receivedforms.php">'; echo '<input type="hidden" name="action" value="received" />'; echo i18n("Enter the registration number from the $signatureformpermissionform : ") . '<br />'; echo '<input id="registration_number" type="text" size="15" name="registration_number" />'; echo '<input type="submit" value="' . i18n('Lookup Registration Number') . '" />'; echo '</form>'; ?> <script type="text/javascript"> document.forms.inputform.registration_number.focus(); </script> <? echo '<br/><br/>'; echo '</td></tr><tr><td>'; echo '<font size="2" color="red">This button does not keep track of payments</font>'; echo '</td></tr><tr><td>'; echo '<form method="post" action="registration_receivedforms.php">'; echo '<input type="hidden" name="action" value="receive_all" />'; echo '<input type="submit" value="' . i18n('Receive All') . "\" onclick=\"return confirmClick('Are you sure you wish to mark all students as has having their $signatureformpermissionform received?')\" />"; echo '</form>'; echo '</tr></td>'; echo '</table>'; echo '<br>'; echo i18n(" <lh>'Receive All' notes:</lh> <ul><li>The button will mark all open-status students that have completed registration as having their $signatureformpermissionform received. \t \t\t\t\t\t\t\t\t\t\t\t\t <li> Students with above status will be emailed a \"$signatureformpermissionform received\" confirmation. \t \t\t\t\t\t\t\t\t\t\t\t\t <li> Project numbers will be assigned to these students' projects. \t \t\t\t\t\t\t\t\t\t\t\t\t</ul>"); } if (get_value_from_array($_POST, 'action') == 'receive_all') { // Grab all projects that don't have project numbers. Status should therefor be open or new but not complete $query_noprojectnumber = $pdo->prepare('SELECT * FROM projects WHERE projectnumber IS NULL AND year =?'); // Define arrays to append to later $query_noprojectnumber->execute([$config['FAIRYEAR']]); $completed_students = array(); $incomplete_students = array(); $newstatus_students = array(); // loop through each project that doesn't have a project number while ($studentproject = $query_noprojectnumber->fetch(PDO::FETCH_ASSOC)) { // Grab registration information about the current project $q = $pdo->prepare("SELECT * FROM registrations WHERE id=? AND year=?"); $q->execute([$studentproject['registrations_id'],$config['FAIRYEAR']]); $r = $q->fetch(PDO::FETCH_OBJ); $reg_id = $r->id; $reg_num = $r->num; $reg_status = $r->status; // student has completed some or all of the registration process for their project. Let's find out which one is true if ($r->status != 'new') { // make sure all of the statuses are correct $statusstudent = studentStatus($reg_id); $statusemergencycontact = emergencycontactStatus($reg_id); $statusproject = projectStatus($reg_id); if ($config['participant_mentor'] == 'yes') $statusmentor = mentorStatus($reg_id); else $statusmentor = 'complete'; $statussafety = safetyStatus($reg_id); $statusnamecheck = namecheckStatus($reg_id); if ( $statusstudent == 'complete' && $statusemergencycontact == 'complete' && // S$statusproject == "complete" && $statusmentor == 'complete' && $statussafety == 'complete' && $statusnamecheck == 'complete' && $r->status != 'complete' // above: project status must not be complete. If it is complete signature page/permission form has already been received. ) { // Generate project number and update it in data base list($projectnumber, $ps, $pns, $pss) = generateProjectNumber($reg_id); $stmt = $pdo->prepare("UPDATE projects SET projectnumber=?, projectsort=?,projectnumber_seq=?,projectsort_seq=? WHERE registrations_id=? AND year=?"); $stmt->execute([$projectnumber,$ps,$pns,$pss,$reg_id,$config['FAIRYEAR']]); // email stuff // get all students with this registration number // $recipients=getEmailRecipientsForRegistration($reg_id); // Set status to 'complete' $stmt = $pdo->prepare("UPDATE registrations SET status='complete' WHERE num=? AND year=?"); $stmt->execute([$reg_num,$config['FAIRYEAR']]); /*foreach($recipients AS $recip) { $to=$recip['to']; $subsub=array(); $subbod=array( "TO"=>$recip['to'], "EMAIL"=>$recip['email'], "FIRSTNAME"=>$recip['firstname'], "LASTNAME"=>$recip['lastname'], "NAME"=>$recip['firstname']." ".$recip['lastname'], "REGNUM"=>$regnum, "PROJECTNUMBER"=>$projectnumber, ); email_send("register_participants_received",$to,$subsub,$subbod); }*/ // End email stuff // add cuurent registration number to completed_students array $completed_students[] = $reg_num; } else { // or add current registration number to incomplete_student array $incomplete_students[] = $reg_num; } } // New status automatically means student has not completed the registration process for their project. So execute below: else { // or add current registration number to newstatus_students array $newstatus_students[] = $reg_num; } } // Find how many project numbers were assigned/how many projects have complete status (ie signature page/permission form is considered received) $total_completed = count($completed_students); // since incomplete_students and newstatus_students both did not get project numbers and are not considered as having signature page/permission form received // combine them $total_incomplete = array_merge($incomplete_students, $newstatus_students); echo '<br><br>'; echo '<table>'; echo '<tr><td>' . i18n("$total_completed student(s) registered as $non_capital_participationform received.") . '</td></tr>'; // display below only if there are registration numbers that don't have project numbers and the students have not completed the registration process if (count($total_incomplete) > 0) { echo '<tr><td>' . i18n("Registration numbers which are NOT marked as having their $non_capital_participationform received are shown below:") . '</td></tr>'; echo '<tr><td> </td></tr>'; $string = ''; echo '<tr><td>'; // create a string that contains all incomplete registration numbers foreach ($total_incomplete as $regnum) { $string = $string . i18n($regnum); $string = $string . ', '; } // delete the comma at the end of the string $string = substr($string, 0, strlen($string) - 2); echo $string; echo '</td></tr>'; echo '<tr><td> </td></tr>'; echo '<tr><td>'; echo i18n('The above registration numbers correspond to projects in which the registration process has not been completed by the student.'); echo '</td></tr>'; } echo '</table>'; echo happy_(i18n('Received all permision forms for complete students')); } send_footer(); ?>