Files
2026-10-19 15:22:52 -07:00

370 lines
12 KiB
PHP

<?php
require_once("include/globals.php");
if (SessionActive() != 1 || ! UserLoggedIn()) {
header("Location: /");
exit();
}
//
// Process all actions to list and edit records
//
$action = "manage-documents";
$CurrentTable = "documents";
$DeleteField = "title,uploaded_date";
$dSeparator = "<br>\n";
$FormFile = "documents.form.php";
$OrderBy = "category,document_date desc,title";
// Start the template and output buffering
$templatePageTitle = getLanguageText('TEXT-DOCUMENT-ADMINISTRATION');
startTemplate();
// Ensure that only valid user types have access to this module
$AllowedUserTypes = array('SuperUser','System Administrator','Application Administrator','Communications Administrator','Administration Team');
if (checkPermission($AllowedUserTypes) != 1) {
$error_message = getLanguageText('ERRORMSG-ACCESS-DENIED');
$action = '';
$naction = '';
header("Location: /?action=$action&naction=$naction&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
exit();
}
$school_num = $school_record['record_num'];
// Determine if there are document categories defined
$numCats = db_getVal("SELECT count(*) FROM document_categories WHERE school_num = $base_school_num");
if ($numCats == 0) {
$error_message = getLanguageText('ERRORMSG-NO-DOCUMENT-CATEGORIES');
}
if (array_key_exists('naction',$_GET)) $naction = $_GET['naction'];
if (array_key_exists('naction',$_POST)) $naction = $_POST['naction'];
// Perform the requested action
switch (strtolower($naction)) {
case 'add':
// Unable to insert if there are no document categories
if ($numCats == 0) {
$error_message = getLanguageText('ERRORMSG-NO-DOCUMENT-CATEGORIES');
header("Location: /?action=document-categories&naction=add&error_message=".urlencode($error_message));
exit();
}
$next_naction = "upload";
include $FormFile;
break;
case 'upload':
extract($_POST);
$temp_name = $_FILES['filename']['tmp_name'];
$file_name = str_replace(' ','_',$_FILES['filename']['name']);
// Remove accents and special characters from file names
$file_name = normalizeString($file_name);
$error_message = '';
// Check that a title has been entered
if (strlen($title) == 0) {
$title = $_FILES['filename']['name'];
}
if (strlen($temp_name) && strlen($file_name)) {
// Check if a file with this name already exists
if (is_file("$uploaddir/$file_name")) {
$error_message = "Unable to upload file - $file_name exists already";
}
// Move file to documents folder
if (!move_uploaded_file($temp_name,"$uploaddir/$file_name")) {
$error_message = "Unable to upload file - $uploaddir/$file_name";
}
}
else {
if (isset($selected_filename) && strlen($selected_filename)) $file_name = $selected_filename;
if (strlen($title) == 0) $title = str_replace('_',' ',$file_name);
}
// If there has been an error then display form again
if (strlen($error_message) > 0) {
$next_naction = "upload";
include $FormFile;
break;
}
// Update database
$documents = new Table("documents");
$query = $documents->BuildInsert();
db_query($query);
$naction = 'list';
break;
case 'edit':
$next_naction = "update";
$record_num = intval($_GET['record_num']);
if ($record_num == 0) {
$error_message = getLanguageText('TEXT-INVALID-ACCESS');
header("Location: /?error_message=".urlencode($error_message));
exit();
}
$query = "select * from documents where record_num = $record_num";
$results = db_query($query);
if (db_num_rows($results) == 0) {
$error_message = getLanguageText('TEXT-INVALID-ACCESS');
header("Location: /?error_message=".urlencode($error_message));
exit();
}
$row = db_fetch_array($results);
extract($row);
include $FormFile;
break;
case 'update':
if (array_key_exists('document_date', $_POST)) $document_date = db_escape_string($_POST['document_date']);
if (array_key_exists('title', $_POST)) $title = db_escape_string($_POST['title']);
if (array_key_exists('display', $_POST)) $display = db_escape_string($_POST['display']);
if (array_key_exists('rnum', $_POST)) $record_num = intval($_POST['rnum']);
if ($record_num == 0) {
$error_message = getLanguageText('TEXT-INVALID-ACCESS');
header("Location: /?error_message=".urlencode($error_message));
exit();
}
// Update database
$documents = new Table("documents");
$query = $documents->BuildUpdate();
db_query($query);
$form_message = getLanguageText('RECORD-UPDATED-MSG');
$naction = "list";
header("Location: /?action=$action&naction=$naction&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
exit();
case 'delete':
$record_num = intval($_GET['record_num']);
if ($record_num == 0) {
$error_message = getLanguageText('TEXT-INVALID-ACCESS');
header("Location: /?error_message=".urlencode($error_message));
exit();
}
// Get current record
$query = "select * from $CurrentTable " .
"where school_num = $school_num " .
"and record_num = $record_num";
$results = db_query($query);
if (db_num_rows($results) == 1) {
$row = db_fetch_array($results);
extract($row);
$dFields = explode(",",$DeleteField);
$dTitle = "";
for ($i = 0; $i < count($dFields); $i++) {
$dTitle .= $row[$dFields[$i]] . $dSeparator;
}
include "delete.form.php";
}
else {
$error_message = getLanguageText('ERRORMSG-NOT-FOUND');
$naction = 'list';
header("Location: /?action=$action&naction=$naction&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
exit();
}
break;
case "delete-confirmed":
extract($_GET);
if ($record_num == 0) {
$error_message = getLanguageText('TEXT-INVALID-ACCESS');
header("Location: /?error_message=".urlencode($error_message));
exit();
}
// Get file name
$file_name = db_getVal("SELECT file_name FROM documents WHERE school_num = $school_num AND record_num = $record_num");
// Delete record from database
$query = "delete from documents " .
"where school_num = $school_num " .
"and record_num = $record_num";
db_query($query);
// Remove file
if (is_file("$uploaddir/$file_name")) {
unlink("$uploaddir/$file_name");
}
$form_message = getLanguageText('RECORD-DELETED-MSG');
$naction = "list";
header("Location: /?action=$action&naction=$naction&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
exit();
default:
$date = date("Y-m-d",time());
$naction = "list";
break;
}
//
// List all records if naction is "list"
//
if ($naction == "list") {
if (1 == 2 && $school_num == 240) {
// Check uploads directoy for files not in database
$dir = opendir($uploaddir);
$files = array();
while (($file = readdir($dir)) != false) {
if ($file == ".") continue;
if ($file == "..") continue;
$files[] = $file;
}
$documents = new Table("documents");
for ($i = 0; $i < count($files); $i++) {
$file = db_escape_string($files[$i]);
$query = "SELECT * FROM documents WHERE school_num = $school_num AND file_name = '$file'";
$r = db_getVal($query);
if (is_array($r)) {
continue;
}
else {
$sequence = intval(db_getVal("SELECT max(sequence) FROM documents WHERE school_num = $school_num"));
$sequence++;
$title = $file;
$uploaded_date = date("Y-m-d H:i:s",filemtime("$uploaddir/$file"));
$document_date = $uploaded_date;
$category_num = 8835;
$category = "Misc";
$uploaded_by = 0;
$file_name = $file;
$entry = array();
if (isset($school_num)) $entry['school_num'] = $school_num;
if (isset($category)) $entry['category'] = $category;
if (isset($category_num)) $entry['category_num'] = $category_num;
if (isset($title)) $entry['title'] = $title;
if (isset($document_date)) $entry['document_date'] = $document_date;
if (isset($description)) $entry['description'] = $description;
if (isset($file_name)) $entry['file_name'] = $file_name;
if (isset($uploaded_by)) $entry['uploaded_by'] = $uploaded_by;
if (isset($uploaded_date)) $entry['uploaded_date'] = $uploaded_date;
if (isset($status)) $entry['status'] = $status;
if (isset($sequence)) $entry['sequence'] = $sequence;
$query = $documents->BuildInsert($entry);
db_query($query);
echo("<!-- $uploaddir/$file - $query -->\n");
}
}
}
// Manage subset selection
$swhere = "";
$show_type = "";
if (array_key_exists('show_type',$_REQUEST) && strlen($_REQUEST['show_type'])) {
$show_type = $_REQUEST['show_type'];
$swhere = "and u.type = '$show_type' ";
$TitleText = "$show_type $TitleText";
}
$scriptName = str_replace("/m/data1/app.hotlunches.net/","",__FILE__);
include "help.docs.php";
// Check document entries
$query = "SELECT * FROM documents WHERE school_num = $school_num";
$results = db_query($query);
while ($row = db_fetch_assoc($results)) {
extract($row);
if (!is_file("$uploaddir/$file_name")) {
// db_query("DELETE from documents WHERE school_num = $school_num AND record_num = $record_num");
}
}
// Get set of document records
$columnHeaders = array(getLanguageText('TEXT-TITLE'),
getLanguageText('TEXT-UPLOADED-DATE'),
getLanguageText('TEXT-CATEGORY'),
getLanguageText('TEXT-STATUS')
);
$query = "SELECT d.title,d.document_date,d.uploaded_date,dc.category,d.status,file_name,d.record_num " .
"FROM documents as d, document_categories as dc " .
"WHERE d.school_num = $school_num " .
"AND dc.school_num = $base_school_num " .
"AND d.category_num = dc.record_num " .
$swhere .
"ORDER BY dc.sequence,d.sequence,document_date";
echo("\n\n");
echo("<!-- $query -->\n");
echo("\n\n");
$results = db_query($query);
$data = array();
while ($row = db_fetch_assoc($results)) {
extract($row);
if (is_file("$uploaddir/$file_name")) {
$data[] = array($title,$uploaded_date,$category,$status,"record_num" => $record_num);
}
else {
db_query("DELETE from documents WHERE school_num = $school_num AND record_num = $record_num");
}
}
include "form.messages.php";
if ($school_num != 3) {
$msg = getLanguageText('TEXT-CONFIRM-DELETE');
$commands = array(
"<a href='?action=$action&naction=edit&record_num=%d' title='Edit Current Entry'>$edit_icon</a>",
"<a href='?action=$action&naction=delete-confirmed&record_num=%d' onClick='return confirm(\"$msg\");' title='Delete Current Entry'>$delete_icon</a>",
"<a href='view-doc.php?dnum=%d' title='View Document'>$view_icon</a>"
);
}
else {
$commands = array(
"<a href='?action=$action&naction=edit&record_num=%d' title='Edit Current Entry'>$edit_icon</a>",
"<a href='view-doc.php?dnum=%d' title='View Document'>$view_icon</a>"
);
}
$customTableID = "documents-table";
$useRowIDS = true;
include "table.dnd.php";
listDataCustom($data,$columnHeaders,$action,$commands,'N');
?>
<br>
<p><a href='?action=manage-documents&naction=add' class='btn btn--primary>'>&nbsp;&nbsp;Upload New&nbsp;&nbsp;</a></p>
<?php
}
endTemplate();
?>