src.dualinventive.com/mtinfo/dist/webroot/main/include/db_file.php

791 lines
32 KiB
PHP

<?php
/** \file include\db_file.php
* \brief DI webinterface database functions
* \author Rob Schalken, Core|Vision
* \version 1.0
* \date 17-10-2008
*
* This file contains the file database functions. This file is always included.
*/
/**
* Private function: fetch files using the provided query
*
* Inputs:
* - query Database query to fetch the requested documents.
* - doc_table: Document table
* - read_doc: Read the document data (if FALSE, only the info about the document is returned)
*
* Return: Multidimensional array containing all file information
*/
function db_fetch_files_by_query($query, $doc_table, $read_doc)
{
global $_RELEASE;
// Initial return value
$result = array();
// download document from a directory; currently not implemented for all document tables
$upload_dir = realpath($_RELEASE[((is_ReleaseCandidate()) ? 'rc' : 'release')]['upload'] . strtolower($doc_table));
// upload directory should exist, so the error is never triggered in a release environment
if (!$upload_dir) {
trigger_error("Cannot open document: path \"" . $upload_dir . "\" is invalid, expanded from \"" . $_RELEASE[((is_ReleaseCandidate()) ? 'rc' : 'release')]['upload'] . strtolower($doc_table) . "\"", E_USER_ERROR);
return FALSE;
}
// get documents and info from the database and build the resulting array
$row_docs = db_fetch_data($query);
if (!empty($row_docs)) {
$doc_types = array(
'zkl_documenten' => 'zkl',
'device_documenten' => 'device',
'project_documenten' => array(
'' => 'project',
'RO' => 'user upload',
'RO-WO' => 'work order'
),
'klant_documenten' => 'customer',
'algemene_documenten' => 'general'
);
foreach ($row_docs as $document) {
switch ($doc_table) {
case "project_documenten":
case "klant_documenten":
case "gebruiker_profiel":
$file = $upload_dir . "/" . $document['id'];
break;
default:
$file = FALSE;
break;
}
// check for file on filesystem (but only read it when the document data is requested)
if ($read_doc && $file && file_exists($file)) {
// Open the file
$handle = fopen($file, "r");
// read document data from file
$file_data = fread($handle, filesize($file));
// close handle
fclose($handle);
// save file data in the 'document'
$document['document'] = $file_data;
}
// else: document['document'] contains the document data from the database (or not, if 'read_doc' is FALSE)
// set document type
if (!$document['doc_type']) {
if (is_array($doc_types[$doc_table])) {
// the 'omschrijving' in 'project_documenten' is abused to set the document type;
// this should become a separate database field in the future
$document['doc_type'] = $doc_types[$doc_table][$document['omschrijving']];
} else $document['doc_type'] = $doc_types[$doc_table];
}
// else: part of the database data (future addition to the 'project_documenten' table)
// save result
$result[] = $document;
}
}
return $result;
}
/**
* Fetch file database id
*
* Inputs:
* - file: File id
* - doc_table: Document table
*
* Return: Array containing user information
*/
function db_fetch_file($file_id, $doc_table, $read_doc = FALSE)
{
// fetch document info
switch ($doc_table) {
case "algemene_documenten":
$filter = ($read_doc) ? "*" : "filename,titel,omschrijving,categorie,id,mimetype";
$query = "SELECT " . $filter . " FROM " . $doc_table . " WHERE id='" . $file_id . "'";
break;
case "zkl_documenten":
$filter = ($read_doc) ? "*" : "zkl,filename,omschrijving,id,public,mimetype";
$query = "SELECT " . $filter . " FROM " . $doc_table . " WHERE id='" . $file_id . "'";
break;
case "device_documenten":
$filter = ($read_doc) ? "*" : "device,filename,omschrijving,id,mimetype";
$query = "SELECT " . $filter . " FROM " . $doc_table . " WHERE id='" . $file_id . "'";
break;
case "project_documenten":
$filter = ($read_doc) ? "*" : "doc_type,filename,omschrijving,id,mimetype,latitude,longitude,heading";
$query = "SELECT " . $filter . " FROM " . $doc_table . " WHERE id='" . $file_id . "'";
break;
case "klant_documenten":
$filter = ($read_doc) ? "*" : "klant,filename,titel,omschrijving,categorie,id,mimetype";
$query = "SELECT " . $filter . " FROM " . $doc_table . " WHERE id='" . $file_id . "'";
break;
default:
trigger_error("Bad function call: " . $doc_table . " is not valid", E_USER_ERROR);
return FALSE;
}
// get document and info from the database and build the resulting array
// NB: only one document expected, so only the first element in the resulting array
// is returned
$result = db_fetch_files_by_query($query, $doc_table, $read_doc);
if ($result) return $result[0];
else return FALSE;
}
/**
* Fetch file data which match lance id
*
* Inputs:
* - lance_id: Lance/project/zkl db id
* - doc_table: Document table
* - read_doc: Read the document data (if FALSE, only the info about the document is returned)
* - options / sort: Possibility to parse some extra options / old: Sort the documents by date, descending if "DESC" (the default), ascending ("ASC")
* or not at all (empty string, FALSE, etc)
*
* Return: Multidimensional array containing all file information
*/
function db_fetch_files($id, $doc_table, $read_doc = FALSE, $options = NULL)
{
// Default value
$order = "DESC";
$order_by = "datum";
// Stay backwards compatible
if (!is_null($options)) {
// Not an array with options but old sort parameter
if (!is_array($options)) {
$order = $options;
} else {
// Order
if (isset($options['order'])) {
$order = $options['order'];
}
// Order by
if (isset($options['order_by'])) {
$order_by = $options['order_by'];
}
}
}
// fetch document info
switch ($doc_table) {
case "algemene_documenten":
$filter = ($read_doc) ? "*" : "gebruiker,filename,titel,omschrijving,categorie,id,mimetype";
$query = "SELECT " . $filter . " FROM " . $doc_table;
break;
case "zkl_documenten":
$filter = ($read_doc) ? "*" : "filename,omschrijving,id,public,mimetype";
$query = "SELECT " . $filter . " FROM " . $doc_table . " WHERE zkl='" . $id . "'";
break;
case "device_documenten":
$filter = ($read_doc) ? "*" : "filename,omschrijving,id,mimetype";
$query = "SELECT " . $filter . " FROM " . $doc_table . " WHERE device='" . $id . "'";
break;
case "project_documenten":
$filter = ($read_doc) ? "*" : "level,doc_type,filename,omschrijving,id,mimetype,gebruiker,datum,latitude,longitude,heading,gebruiker_tabel";
$query = "SELECT " . $filter . " FROM " . $doc_table . " WHERE project='" . $id . "'";
if (!is_null($options)) {
foreach ($options as $key => $option) {
switch ($key) {
// Select specific doctype
case 'doctype':
$query .= " AND doc_type = '" . $option . "'";
break;
// Do nothing
default:
break;
}
}
}
break;
case "klant_documenten":
$filter = ($read_doc) ? "*" : "klant,gebruiker,filename,titel,omschrijving,categorie,id,mimetype";
$query = "SELECT " . $filter . " FROM " . $doc_table . " WHERE klant=" . $id;
break;
default:
trigger_error("Bad function call: " . $doc_table . " is not valid", E_USER_ERROR);
return FALSE;
}
// sort
if ($order) $query .= " ORDER BY " . $order_by . " " . $order;
// get documents and info from the database and build the resulting array
return db_fetch_files_by_query($query, $doc_table, $read_doc);
}
/**
* Search files which match some parameters (only used for general docs!)
*
* Inputs:
* - doc_table "algemene_documenten" or "klant_documenten"
* - cust_id database id for the customer (for "klant_doucmenten" only)
* - category document category
* - title document title
* - description document description
* - date_begin begin of period
* - time_begin begin of period
* - date_end end of period
* - time_end end of period
*
* Return: Multidimensional array containing all document information
*/
function db_search_files($doc_table, $cust_id, $cat, $title, $descr, $date_begin, $time_begin, $date_end, $time_end, $read_doc = FALSE)
{
// fetch document info
switch ($doc_table) {
case "algemene_documenten":
$filter = ($read_doc) ? "*" : "gebruiker,filename,titel,omschrijving,categorie,id,mimetype";
break;
case "klant_documenten":
$filter = ($read_doc) ? "*" : "klant,gebruiker,filename,titel,omschrijving,categorie,id,mimetype";
break;
default:
trigger_error("Bad function call: " . $doc_table . " is not valid or not supported", E_USER_ERROR);
return FALSE;
}
// build query to search for the requested documents
$query = "SELECT " . $filter . " FROM " . $doc_table . " WHERE ";
if ($doc_table == "klant_documenten" && is_numeric($cust_id)) {
$query .= "klant=" . $cust_id . " AND ";
}
$query .= "categorie like '%" . $cat . "%' AND ";
$query .= "(titel like '%" . $title . "%' OR filename like '%" . $title . "%') AND ";
$query .= "omschrijving like '%" . $descr . "%'";
if ((strlen($date_begin)) && (strlen($date_end))) {
$query .= "AND datum BETWEEN '" . $date_begin . " " . $time_begin . "' AND '" . $date_end . " " . $time_end . "'";
} else if (strlen($date_begin)) {
$query .= " AND datum >= '" . $date_begin . " " . $time_begin . "'";
} else if (strlen($date_end)) {
$query .= " AND datum <= '" . $date_end . " " . $time_end . "'";
}
// Order by titel
$query .= " ORDER BY titel";
// get documents and info from the database and build the resulting array
$documents = db_fetch_files_by_query($query, $doc_table, $read_doc);
// No customers selected?
if ($doc_table == "klant_documenten" && !is_numeric($cust_id)) {
if (is_array($documents)) {
// Initial array
$found_documents = array();
// Get all customers down the pyramid
$customers = db_search_customers();
for ($i = 0; $i < sizeof($documents); $i++) {
// Initial value
$found = FALSE;
// Valid customer?
for ($j = 0; (($j < sizeof($customers)) && (!$found)); $j++) {
$found = ($customers[$j]['id'] === $documents[$i]['klant']);
}
// Customer found?
if ($found) {
array_push($found_documents, $documents[$i]);
}
}
// Return value
$documents = $found_documents;
}
}
return $documents;
}
/**
* Private function: check for duplicate filenames
*
* Input:
* - file_array: Array containing all info about the new file
* - file_obj: Item in the array to check
* - doc_table Document table
* - documents Exisiting documents to check
*
* Output:
* - Possibly modified filename
*/
function db_check_duplicate_filenames($file_array, $file_obj = NULL, $doc_table, $documents)
{
$filename_addition = "";
$filename_counter = 0;
// get extension and base name
if (!is_null($file_obj)) {
$filename = $file_array[$file_obj];
} else {
$filename = $file_array['name'];
}
$extension = GetExtension($filename);
$filename = substr($filename, 0, strlen($filename) - strlen($extension));
if (is_array($documents)) {
$valid = FALSE;
while (!$valid) {
$valid = TRUE;
foreach ($documents as $document) {
// correct type?
if (
($doc_table == 'project_documenten' && $document['doc_type'] == $file_array['doc_type']) ||
$doc_table != 'project_documenten'
) {
// Same filename?
if ($document['filename'] == ($filename . $filename_addition . $extension)) {
// add an incrementing number to the filename
$filename_addition = " (" . ++$filename_counter . ")";
$valid = FALSE;
break;
}
}
}
}
}
// adjust filename (and reattach the extension)
return $filename . $filename_addition . $extension;
}
/**
* Store new file
*
* Inputs:
* - file_array: Array containing all customer info
* - doc_table: Documenten table
*
* Return: FALSE on error of file identifier on success
*/
function db_store_file($file_array, $doc_table)
{
global $_RELEASE;
global $_PAGE_INFO;
// Initial return value
$result = FALSE;
// upload document to a directory; currently not implemented for all document tables
$save_file_in_upload_dir = FALSE;
$upload_dir = realpath($_RELEASE[((is_ReleaseCandidate()) ? 'rc' : 'release')]['upload'] . strtolower($doc_table));
// upload directory should exist, so the error is never triggered in a release environment
if (!$upload_dir) {
trigger_error("Cannot save document: path \"" . $upload_dir . "\" is invalid, expanded from \"" . $_RELEASE[((is_ReleaseCandidate()) ? 'rc' : 'release')]['upload'] . strtolower($doc_table) . "\"", E_USER_ERROR);
return FALSE;
}
// Query storing new file
switch ($doc_table) {
case "algemene_documenten":
$query = "INSERT INTO algemene_documenten (categorie, titel, omschrijving, datum, filename, mimetype, document) VALUES (";
$query .= "'" . specialchars($file_array['categorie']) . "',";
$query .= "'" . specialchars($file_array['titel']) . "',";
$query .= "'" . specialchars($file_array['omschrijving']) . "',";
$date = (!isset($file_array['datum'])) ? date('Y-m-d H:i:s') : $file_array['datum'];
$query .= "'" . ($date) . "',";
$query .= "'" . addslashes($file_array['filename']) . "',";
$query .= "'" . ($file_array['mimetype']) . "',";
// document data for 'algemene_documenten' is still in a 'longblob' in the database
$query .= "'" . addslashes($file_array['document']) . "')";
break;
case "zkl_documenten":
$query = "INSERT INTO zkl_documenten (zkl, omschrijving, datum, public, mimetype, filename, document) VALUES (";
$query .= "'" . ($file_array['zkl']) . "',";
$query .= "'" . specialchars($file_array['omschrijving']) . "',";
$date = (!isset($file_array['datum'])) ? date('Y-m-d H:i:s') : $file_array['datum'];
$query .= "'" . ($date) . "',";
$query .= "'" . ($file_array['public']) . "',";
$query .= "'" . ($file_array['mimetype']) . "',";
$query .= "'" . addslashes($file_array['filename']) . "',";
// document data for 'zkl_documenten' is still in a 'longblob' in the database
$query .= "'" . addslashes($file_array['document']) . "')";
break;
case "device_documenten":
$query = "INSERT INTO device_documenten (device,omschrijving, datum, filename, mimetype, document) VALUES (";
$query .= "'" . ($file_array['zkl']) . "',";
$query .= "'" . specialchars($file_array['omschrijving']) . "',";
$date = (!isset($file_array['datum'])) ? date('Y-m-d H:i:s') : $file_array['datum'];
$query .= "'" . ($date) . "',";
$query .= "'" . addslashes($file_array['filename']) . "',";
$query .= "'" . ($file_array['mimetype']) . "',";
// document data for 'device_documenten' is still in a 'longblob' in the database
$query .= "'" . addslashes($file_array['document']) . "')";
break;
case "klant_documenten":
// 'klant_documenten' are always saved in the upload directory
$save_file_in_upload_dir = TRUE;
// adjust filename to accomodate duplicates
$docs = db_fetch_files($_SESSION[$_PAGE_INFO['id']]['login']['customer']['id'], $doc_table);
$file_array['filename'] = db_check_duplicate_filenames($file_array, 'filename', $doc_table, $docs);
unset($docs); // no longer needed
$query = "INSERT INTO klant_documenten (gebruiker,klant,categorie, titel, omschrijving, datum, filename, mimetype) VALUES (";
$query .= $_SESSION[$_PAGE_INFO['id']]['login']['user']['id'] . ",";
$query .= $_SESSION[$_PAGE_INFO['id']]['login']['customer']['id'] . ",";
$query .= "'" . specialchars($file_array['categorie']) . "',";
$query .= "'" . specialchars($file_array['titel']) . "',";
$query .= "'" . specialchars($file_array['omschrijving']) . "',";
$date = (!isset($file_array['datum'])) ? date('Y-m-d H:i:s') : $file_array['datum'];
$query .= "'" . ($date) . "',";
$query .= "'" . addslashes($file_array['filename']) . "',";
$query .= "'" . ($file_array['mimetype']) . "')";
break;
case "project_documenten":
// 'project_documenten' are always saved in the upload directory
$save_file_in_upload_dir = TRUE;
// adjust filename to accomodate duplicates
$docs = db_fetch_files($file_array['project'], $doc_table);
$file_array['filename'] = db_check_duplicate_filenames($file_array, 'filename', $doc_table, $docs);
unset($docs);
// Check whether to use the id of the user or the id of the profile
if (isset($_SESSION[$_PAGE_INFO['id']]['signin_check_in_out_info'])) {
$checkInOutInfo = $_SESSION[$_PAGE_INFO['id']]['signin_check_in_out_info'];
$userTable = 'gebruiker_profiel';
$insertUserId = $checkInOutInfo['gebruiker'];
} else {
$userTable = 'gebruiker';
$insertUserId = $_SESSION[$_PAGE_INFO['id']]['login']['user']['id'];
}
$query = "INSERT INTO project_documenten (level,doc_type,project,omschrijving,gebruiker,datum,latitude,longitude,heading,filename,mimetype,gebruiker_tabel) VALUES (";
$query .= "'" . ($file_array['level']) . "',";
$query .= "'" . ($file_array['doc_type']) . "',";
$query .= "'" . ($file_array['project']) . "',";
$query .= "'" . specialchars($file_array['omschrijving']) . "',";
$query .= $insertUserId . ",";
$date = (!isset($file_array['datum'])) ? date('Y-m-d H:i:s') : $file_array['datum'];
$query .= "'" . ($date) . "',";
$query .= (!isset($file_array['latitude'])) ? "NULL," : "'" . specialchars($file_array['latitude']) . "',";
$query .= (!isset($file_array['longitude'])) ? "NULL," : "'" . specialchars($file_array['longitude']) . "',";
$query .= (!isset($file_array['heading'])) ? "NULL," : "'" . specialchars($file_array['heading']) . "',";
$query .= "'" . addslashes($file_array['filename']) . "',";
$query .= "'" . ($file_array['mimetype']) . "',";
$query .= "'$userTable'";
$query .= ")";
break;
default:
trigger_error("Bad function call: " . $doc_table . " is not valid", E_USER_ERROR);
return FALSE;
}
if (db_store_data($query)) {
// successfully stored in the database; write the file in the upload directory
// NB: currently not fully implemented for all document tables
// save off the identifier for the new document
$file_array['id'] = db_fetch_last_id();
if ($save_file_in_upload_dir) {
// Open/create handle
$handle = fopen($upload_dir . "/" . $file_array['id'], "w");
// Write document data to file
fwrite($handle, $file_array['document']);
// Close handle
fclose($handle);
}
// don't store the file data in the user log (zap it before calling 'serialize')
unset($file_array['document']);
switch ($doc_table) {
case "zkl_documenten":
// Log user-lance action
db_log_user_lance($file_array['zkl'], "menu:lansen:onderhoudsrapporten:nieuw", serialize($file_array));
break;
case "device_documenten":
// Log user-lance action
db_log_user_lance($file_array['zkl'], "menu:lansen:materieel_documentatie:nieuw", serialize($file_array));
break;
case "algemene_documenten":
// Log user action
db_log_user("menu:documentatie:nieuw", serialize($file_array));
break;
case "klant_documenten":
// Log user action
db_log_user("menu:documentatie:nieuw", serialize($file_array));
break;
case "project_documenten":
// Log user-project action
db_log_user_project($file_array['project'], "menu:projecten:project_documentatie:nieuw", serialize($file_array));
break;
default:
break;
}
// Result OK
$result = $file_array['id'];
}
return $result;
}
/**
* Update exisiting file
*
* Inputs:
* - file_array: Array containing all customer info
* - doc_table: Documenten table
*
* Return: FALSE on error of file identifier on success
*/
function db_update_file($file_array, $doc_table)
{
// Initial return value
$result = FALSE;
// Query updating document
switch ($doc_table) {
case "algemene_documenten":
$query = "UPDATE algemene_documenten SET ";
$query .= "categorie='" . specialchars($file_array['categorie']) . "',";
$query .= "omschrijving='" . specialchars($file_array['omschrijving']) . "',";
$query .= "titel='" . specialchars($file_array['titel']) . "' ";
$query .= "WHERE id='" . $file_array['id'] . "'";
break;
case "zkl_documenten":
$query = "UPDATE zkl_documenten SET ";
$query .= "omschrijving='" . specialchars($file_array['omschrijving']) . "',";
$query .= "public='" . $file_array['public'] . "' ";
$query .= "WHERE id='" . $file_array['id'] . "'";
break;
case "device_documenten":
$query = "UPDATE device_documenten SET ";
$query .= "omschrijving='" . specialchars($file_array['omschrijving']) . "' ";
$query .= "WHERE id='" . $file_array['id'] . "'";
break;
case "klant_documenten":
$query = "UPDATE klant_documenten SET ";
$query .= "categorie='" . specialchars($file_array['categorie']) . "',";
$query .= "omschrijving='" . specialchars($file_array['omschrijving']) . "',";
$query .= "titel='" . specialchars($file_array['titel']) . "' ";
$query .= "WHERE id='" . $file_array['id'] . "'";
break;
case "project_documenten":
$query = "UPDATE project_documenten SET ";
$query .= "level='" . specialchars($file_array['level']) . "' ";
$query .= "WHERE id='" . $file_array['id'] . "'";
break;
default:
trigger_error("Bad function call: " . $doc_table . " is not valid", E_USER_ERROR);
return FALSE;
}
if (db_store_data($query)) {
// Result OK
$result = $file_array['id'];
}
if ($result) {
// Get doc and zkl data
$doc_data = db_fetch_file($file_array['id'], $doc_table);
unset($file_array['document']);
switch ($doc_table) {
case "algemene_documenten":
db_log_user("menu:documentatie:wijzigen", serialize($file_array));
break;
case "zkl_documenten":
// Log user-lance action
db_log_user_lance($doc_data['zkl'], "menu:lansen:onderhoudsrapporten:wijzigen", serialize($doc_data));
break;
case "device_documenten":
// Log user-lance action
db_log_user_lance($doc_data['device'], "menu:lansen:materieel_documentatie:wijzigen", serialize($doc_data));
break;
case "klant_documenten":
// Log user-lance action
db_log_user("menu:documentatie:wijzigen", serialize($file_array));
break;
case "project_documenten":
// Log user-project action
db_log_user_project($file_array['project'], "menu:projecten:project_documentatie:wijzigen", serialize($file_array));
break;
default:
break;
}
}
return $result;
}
/**
* Delete file
*
* Inputs:
* - file_id: File database id
* - doc_table: Documenten table
* - lance_id: Equipment id for logging
* - project_id: Project id for logging
*
* Return: Boolean (success or failure)
*/
function db_delete_file($file_id, $doc_table, $lance_id = "", $project_id = "")
{
global $_RELEASE;
// Initial return value
$result = FALSE;
// upload document to a directory; currently not implemented for all document tables
$upload_dir = realpath($_RELEASE[((is_ReleaseCandidate()) ? 'rc' : 'release')]['upload'] . strtolower($doc_table));
// upload directory should exist, so the error is never triggered in a release environment
if (!$upload_dir) {
trigger_error("Cannot delete document: path \"" . $upload_dir . "\" is invalid, expanded from \"" . $_RELEASE[((is_ReleaseCandidate()) ? 'rc' : 'release')]['upload'] . strtolower($doc_table) . "\"", E_USER_ERROR);
return FALSE;
}
// Get original data
$orig_data = db_fetch_file($file_id, $doc_table, FALSE);
// Start transaction
db_start_transaction();
// Delete documents
$query = "DELETE FROM " . $doc_table . " WHERE id='" . $file_id . "'";
db_store_data($query);
// Commit transaction
if (db_commit_transaction()) {
// by default assume that the document table does not use the upload directory
$file = FALSE;
switch ($doc_table) {
case "zkl_documenten":
// Log user-lance action
db_log_user_lance($lance_id, "menu:lansen:onderhoudsrapporten:verwijderen", serialize($orig_data));
break;
case "device_documenten":
// Log user-lance action
db_log_user_lance($lance_id, "menu:lansen:materieel_documentatie:verwijderen", serialize($orig_data));
break;
case "algemene_documenten":
// Log user action
db_log_user("menu:documentatie:verwijderen", $file_id);
break;
case "klant_documenten":
// delete file from filessystem
$file = $upload_dir . "/" . $file_id;
// Log user action
db_log_user("menu:documentatie:verwijderen", $file_id);
break;
case "project_documenten":
// delete file from filessystem
$file = $upload_dir . "/" . $file_id;
// Log user-project action
db_log_user_project($project_id, "menu:projecten:project_documentatie:verwijderen", serialize($orig_data));
break;
default:
trigger_error("Bad function call: " . $doc_table . " is not valid", E_USER_ERROR);
return FALSE;
}
// delete the file itself from the upload directory
if ($file && file_exists($file)) unlink($file);
$result = TRUE;
}
return $result;
}
/**
* Fetch user document comment
*
* Inputs:
* - comment_array: Array containing all comment info
* - order: 1 = recent comment first
*
* Return: TRUE (OK)/ FALSE (Error)
*/
function db_fetch_data_user_comment($comment_array, $order = null)
{
// Initial return value
$result = "";
$order = ($order == 1) ? 'order by id desc' : '';
// Query storing new user comment
$query = "SELECT * FROM project_documenten_comment WHERE document='" . $comment_array['document'] . "' " . $order . ";";
// excute query
$row_docs = db_fetch_data($query);
// Parse into result
if (!empty($row_docs)) {
for ($i = 0; $i < sizeof($row_docs); $i++) {
// Parse result
$result[$i] = $row_docs[$i];
}
}
return $result;
}
/**
* Store user document comment
*
* Inputs:
* - comment_array: Array containing all comment info
*
* Return: TRUE (OK)/ FALSE (Error)
*/
function db_store_data_user_comment($comment_array)
{
// Initial return value
$result = 0;
$userTable = $comment_array['gebruiker_tabel'];
$userId = $comment_array['gebruiker'];
// Query storing new user comment
$query = "INSERT INTO project_documenten_comment (document,gebruiker,datum,latitude,longitude,tekst,gebruiker_tabel) VALUES (";
$query .= "'" . addslashes($comment_array['document']) . "',";
$query .= $userId . ",";
$query .= "'" . date('Y-m-d H:i:s') . "',";
$query .= (isset($comment_array['latitude']) ? ("'" . specialchars($comment_array['latitude']) . "'") : "NULL") . ",";
$query .= (isset($comment_array['longitude']) ? ("'" . specialchars($comment_array['longitude']) . "'") : "NULL") . ",";
$query .= "'" . specialchars($comment_array['tekst']) . "',";
$query .= "'$userTable'";
$query .= ")";
if (db_store_data($query)) {
// Result OK
$result = 1;
}
return $result;
}