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

917 lines
49 KiB
PHP

<?php
/** \file scripts\page\report_log.php
* \brief DI webinterface evaluation report script.
* \author Rob Schalken, Core|Vision
* \version $Revision: 1.10 $
* \date $Date: 2013/10/31 15:49:59 $
*
* This file contains the log report scripts.
*/
require_once("report.php");
require_once("report_evaluation.php");
/*
* Definition(s)
*/
define("SUB_STEP", 3);
/**
* Create the mtinfo log report (project based)
*/
function report_log($id, $destination = "D", $download_by = NULL)
{
global $_PAGE_INFO;
// Default values
$valid_script = FALSE;
// Get all filled in logs
$logs = db_fetch_questionaire_answers($id, QUESTIONAIRE_PROJECT, "draaiboek");
// Retrieve info
$date = date('Y-m-d');
$datetime = date('Y-m-d / H:i:s');
$user = (is_null($download_by)) ? db_fetch_user($_PAGE_INFO['login']['user']['id'], "", 1) : $download_by;
$customer = db_fetch_customer($_PAGE_INFO['login']['customer']['id'], 1);
// Fetch project info
$project = db_fetch_project($id, "", 1);
// Set file info
$_PAGE_INFO['report_type'] = "pdf";
$_PAGE_INFO['dest'] = $destination;
$_PAGE_INFO['orientation'] = "portrait";
$_PAGE_INFO['file'] = _("MTinfo") . "_" . strtolower(_("Project")) . "_" . strtolower(_("logbook")) . "_" . $project['naam'] . "_" . str_replace("-", "", $date) . ".pdf";
// Create header info
report_header(array(subject => _("MTinfo") . " " . strtolower(_("Project")) . " " . strtolower(_("logbook")),
header => _("MTinfo") . " " . strtolower(_("Project")) . " " . strtolower(_("logbook") . " - " . $project['naam']),
data => array(array("Date", $datetime),
array("Timezone", ucfirst($customer['tz'])),
array("MTinfo", VERSION . (is_ReleaseCandidate() ? " - " . $_SESSION[$_PAGE_INFO['id']]['release_dir'] : "")),
array("User", getUser($user['id'])))));
// Default table layout
$single_report_data = array(border => array("LBT", "RBT"),
bold => array(0, 0),
align => array("L", "L"),
font_size => array(8, 8),
cell_width => array(1, 179),
check_page_end => 1);
$double_report_data = array(border => array("LRBT", "LRBT"),
bold => array(1, 0),
align => array("L", "L"),
font_size => array(8, 8),
cell_width => array(70, 110),
check_page_end => 1);
// Initial values
$log_found = FALSE;
$weco_found = FALSE;
$sub_found = FALSE;
$scripts = array(ENQ_FRONT_COVER_LWB,
ENQ_FRONT_COVER_LLV,
ENQ_KEY_LIST,
ENQ_LMRA,
ENQ_SWITCH_LIST,
ENQ_TRANSFER_TECH_MEAS,
ENQ_WECO,
ENQ_WECO_TRDL,
ENQ_WECO_WORKPLACE,
ENQ_WECO_WORKTIME,
ENQ_WECO_NOVOLTAGE,
ENQ_WECO_SAFETY);
// Determine level current user
$current_user = db_fetch_project_users($id, $_PAGE_INFO['login']['user']['id']);
// Not a project user
$current_level = 100;
if (is_array($current_user)) {
foreach ($current_user as $user) {
// #14 Project leaders of a project are supposed to be able to see the log regardless of their assigned access level
if ($user['rol'] === 'projectleider-rc' || $user['rol'] === 'projectleider') {
$current_level = 1;
} elseif ($user['level'] < $current_level) {
$current_level = $user['level'];
}
}
}
if (is_array($logs)) {
$llv_overview = FALSE;
$lwb_overview = FALSE;
foreach ($scripts as $script) {
$script_first = TRUE;
foreach ($logs as $log) {
$found = FALSE;
$valid = FALSE;
$userTable = $log['gebruiker_tabel'];
if ($log['enquete'] == $script) {
// Current user log?
// Exception are keylists
if (($log['gebruiker'] == $_PAGE_INFO['login']['user']['id'] && $userTable == 'gebruiker') ||
($script == ENQ_KEY_LIST) ||
($script == ENQ_SWITCH_LIST) ||
($script == ENQ_WECO) ||
($script == ENQ_WECO_TRDL) ||
($script == ENQ_WECO_WORKPLACE) ||
($script == ENQ_WECO_WORKTIME) ||
($script == ENQ_WECO_NOVOLTAGE) ||
($script == ENQ_WECO_SAFETY)
) {
$found = TRUE;
$log_id = $log['id'];
// Not a project user
$project_user_level = 100;
if ($userTable == 'gebruiker_profiel') {
// Get access level of when the profile was last signed in
$checkInOutAccessLevel = getCheckInOutAccessLevel($log['gebruiker'], $id, 'incheck');
if ($checkInOutAccessLevel) {
$project_user_level = $checkInOutAccessLevel;
}
} else {
// Determine level user
$project_user = db_fetch_project_users($id, $log['gebruiker']);
if (is_array($project_user)) {
foreach ($project_user as $user) {
if ($user['level'] < $project_user_level) {
$project_user_level = $user['level'];
}
}
}
}
// Check level
if (($current_level <= $project_user_level) && ($current_level != 100)) {
$valid = TRUE;
}
}
}
// Valid
// Exception is LWB icw LLV overview
if ((($found) && ($valid)) || (($current_level == 8) && ($script == ENQ_FRONT_COVER_LLV) && (!llv_overview))) {
// This is a valid script
$valid_script = TRUE;
if (($found) && ($valid)) {
// Get the answers
$answers = db_fetch_questionaire_answers($log_id, QUESTIONAIRE_SINGLE);
// Only saved items
if ((is_array($answers)) && (!empty($answers))) {
$tmp = $answers;
$answers = array();
foreach ($tmp as $tmp_item) {
if ($tmp_item['antwoorden'][0]['opgeslagen'] == "yes") {
array_push($answers, $tmp_item);
}
}
}
if ((is_array($answers)) && (!empty($answers))) {
// Display chapter title when saved questions
switch ($script) {
case ENQ_FRONT_COVER_LWB:
case ENQ_FRONT_COVER_LLV:
case ENQ_KEY_LIST:
case ENQ_SWITCH_LIST:
case ENQ_LMRA:
case ENQ_TRANSFER_TECH_MEAS:
if (!$log_found) {
$log_found = TRUE;
// Chapter title
report_data(array_merge($double_report_data, array(value => array(ucfirst(_("logbook"))), cell_width => array(180, 0), font_size => array(12, 12), border => array("", ""), ishtml => array(array(type => "bookmark", data => ucfirst(_("logbook")), parent => 0, bold => 1)))));
}
break;
case ENQ_WECO:
case ENQ_WECO_TRDL:
case ENQ_WECO_WORKPLACE:
case ENQ_WECO_WORKTIME:
case ENQ_WECO_NOVOLTAGE:
case ENQ_WECO_SAFETY:
if (!$weco_found) {
// Add extra empty line
if ($log_found) {
empty_line();
}
$weco_found = TRUE;
// Chapter title
report_data(array_merge($double_report_data, array(value => array(ucfirst(_("Weco"))), cell_width => array(180, 0), font_size => array(12, 12), border => array("", ""), ishtml => array(array(type => "bookmark", data => ucfirst(_("Weco")), parent => 0, bold => 1)))));
}
break;
}
// Default value
$enquete_id = 0;
$i18n = getI18n($answers[0]['gebruiker'], $answers[0]['gebruiker_tabel']);
// Get the questions
$questions = db_fetch_questionaires($i18n, $id);
// Determine set of questions used
if (is_array($questions)) {
for ($i = 0; $i < sizeof($questions); $i++) {
if ($questions[$i]['id'] == $answers[0]['enquete']) {
$enquete_id = $i;
}
}
}
$bookmark = "";
if ($script_first) {
// Add empty line
empty_line();
// Add bookmark
$bookmark = array(type => "bookmark", data => $questions[$enquete_id]['titel'], parent => $_PAGE_INFO['bookmark_handle'], bold => 0);
// Clear flag
$script_first = FALSE;
// Enquete title
report_data(array_merge($double_report_data, array(value => array($questions[$enquete_id]['titel']), cell_width => array(180, 0), font_size => array(10, 10), border => array("", ""), ishtml => array($bookmark))));
}
// Initial value
$count = 0;
$max_chars = 100;
$number = 0;
do {
// Initial value
$finished = TRUE;
$first = TRUE;
foreach ($answers[0]['antwoorden'] as $answer) {
if ($answer['volgnummer'] == $number) {
// Initial values
$valid = TRUE;
// Get the dependency questions
$dependency = db_fetch_dependency_questionaire($answer['vraag'], 0);
if ((!is_array($dependency)) || (empty($dependency))) {
// Increment counter
$count++;
// Clear sub counter
$count_sub = 0;
// No sub item?
$sub_item = FALSE;
} else {
// Increment sub counter
$count_sub++;
// Default level
$sub_item = 1;
do {
$found = FALSE;
for ($i = 0; (($i < sizeof($dependency)) && ($found !== TRUE)); $i++) {
// Get the dependency questions
$new_dependency = db_fetch_dependency_questionaire($dependency[$i]['dependency'], 0);
if ((is_array($new_dependency)) && (!empty($new_dependency))) {
$found = TRUE;
}
}
// New dependency?
if ($found) {
$dependency = $new_dependency;
$sub_item++;
}
} while ($found);
}
if ($valid) {
// Add sub-title
if ($first) {
switch ($script) {
case ENQ_KEY_LIST:
case ENQ_SWITCH_LIST:
case ENQ_LMRA:
case ENQ_WECO_TRDL:
case ENQ_WECO_WORKPLACE:
case ENQ_WECO_WORKTIME:
case ENQ_WECO_NOVOLTAGE:
switch ($script) {
case ENQ_KEY_LIST:
$data = 126;
break;
case ENQ_SWITCH_LIST:
$data = 215;
break;
case ENQ_WECO_TRDL:
$data = 123;
break;
case ENQ_WECO_WORKPLACE:
$data = 107;
break;
case ENQ_WECO_WORKTIME:
$data = 111;
break;
case ENQ_WECO_NOVOLTAGE:
$data = 115;
break;
}
// Get key name
$subtitle = db_fetch_questionaire_answer($answer['enquete_entry'], $data, $answer['volgnummer']);
// Get user
$entry = db_get_enquete_entry_id($answer['enquete_entry'], "", "", 3);
// Define subtitle
if ((is_array($subtitle)) && (!empty($subtitle))) {
$sub = $subtitle[0]['antwoord'];
if (($subtitle[0]['opgeslagen'] == "no") || (!strlen($subtitle[0]['antwoord']))) {
// Display "-" when empty/not saved
$sub = "-";
}
} else {
$sub = "-";
}
$userOrProfileName = getUserOrProfileName($entry[0]['gebruiker'], $entry[0]['gebruiker_tabel']);
multiple_lines($sub . " ($userOrProfileName)", $max_chars, 1, $single_report_data, NULL, FALSE, array('cell' => "fillcolor={rgb 0.78 0.80 0.78}"));
break;
default:
break;
}
// Clear flag
$first = FALSE;
}
if (!empty($questions[$enquete_id]['vragen'][$answer['vraag']]['vraag'])) {
// Add question (italic and red when not saved)
multiple_lines($questions[$enquete_id]['vragen'][$answer['vraag']]['vraag'], $max_chars, 1, $single_report_data, NULL, $sub_item, array('cell' => "fillcolor={rgb 0.78 0.80 0.78}"));
// Get type of question
switch ($questions[$enquete_id]['vragen'][$answer['vraag']]['type']) {
// Type=input
case "text":
// Type=datetime
case "datetime":
// Type=textarea
case "listbox":
// Type=listbox
case "simpletext":
// Pre-action required?
switch ($script) {
case ENQ_FRONT_COVER_LWB:
case ENQ_FRONT_COVER_LLV:
// Initial value
$user = "";
switch ($questions[$enquete_id]['vragen'][$answer['vraag']]['actie']) {
case "php:wbu";
$user = db_fetch_project_users($id, "", "wbu");
break;
case "php:wbv";
$user = db_fetch_project_users($id, "", "wbv");
break;
case "php:lwb";
$user[0]['id'] = $_PAGE_INFO['login']['user']['id'];
break;
}
if (isset($user[0]['id'])) {
$transfer = db_fetch_project_transfer($id, $user[0]['id']);
if ((is_array($transfer)) && (!empty($transfer))) {
switch ($transfer[0]['status']) {
case "goedgekeurd":
$answer['antwoord'] .= " (" . ucfirst(_("accepted")) . ": " . convert_datetime($transfer[0]['t'], TRUE) . ")";
break;
case "afgekeurd":
$answer['antwoord'] .= " (" . ucfirst(_("rejected")) . ": " . convert_datetime($transfer[0]['t'], TRUE) . ")";
break;
case "gewijzigd":
$answer['antwoord'] .= " (" . ucfirst(_("changed")) . ": " . convert_datetime($transfer[0]['t'], TRUE) . ")";
break;
}
}
}
break;
case ENQ_WECO_WORKPLACE:
switch ($questions[$enquete_id]['vragen'][$answer['vraag']]['id']) {
case 109:
// Set wbi number as value of the simpletext
$answer['antwoord'] .= $project['wbi_nummer'];
break;
}
break;
default:
// Do nothing
break;
}
// Add result (when saved)
multiple_lines(html_entity_decode($answer['antwoord'], ENT_QUOTES), $max_chars, 0, $single_report_data, NULL, $sub_item);
break;
// Type=checkbox
case "set":
// Type=enum
case "enum":
if (is_array($questions[$enquete_id]['vragen'][$answer['vraag']]['antwoorden'])) {
$answer_array = explode(",", html_entity_decode($answer['antwoord'], ENT_QUOTES));
foreach ($questions[$enquete_id]['vragen'][$answer['vraag']]['antwoorden'] as $item) {
// Determine image
$image = ($questions[$enquete_id]['vragen'][$answer['vraag']]['type'] == "enum") ? "radiobutton" : "checkbox";
// Define image
$found = FALSE;
foreach ($answer_array as $answer_item) {
if (!$found) {
// Only display when saved
if (($answer['antwoord'] == "yes") || ($answer['antwoord'] == $item['key'])) {
if (strtolower($answer_item) == strtolower($item['key'])) {
$image .= "_checked";
// Set flag
$found = TRUE;
// Store answer
$answer_data = $answer_item;
}
}
}
}
// Add extension
$image .= ".png";
// Extra input textfield available?
$extra_input_data = "";
$extra_input = explode(':', $item['antwoord']);
if (is_array($extra_input)) {
$item['antwoord'] = $extra_input[0];
if ($found) {
// "Title" added to input textfield?
if (($item['key'] != "*") && (isset($extra_input[1]))) {
if (!empty($extra_input[1])) {
$extra_input_data = $extra_input[1] . ":";
}
// Get input textfield data
$data = explode(":\"", $answer_data);
if ((is_array($data)) && (isset($data[1]))) {
// Remove trailing quote/other
$pos = strrpos($data[1], '"');
if ($pos !== FALSE) {
$extra_input_data .= " " . substr($data[1], 0, $pos);
}
}
}
}
}
// Others filled in?
if ($item['key'] == "*") {
$other_answer = "";
$pos = array_search($item['key'], $answer_array);
if ($pos !== FALSE) {
if (isset($answer_array[$pos + 1])) {
// Find next result
$other_answer = $answer_array[$pos + 1];
}
}
$item['antwoord'] .= ": " . $other_answer;
}
// Add extra input textfield data
$item['antwoord'] .= "\r\n" . $extra_input_data;
// Add result (when saved)
multiple_lines(" " . $item['antwoord'], $max_chars, 0, $single_report_data, array(array(type => "image", left => 2 + ($sub_item * SUB_STEP), width => 7, filename => $image)), $sub_item);
}
}
break;
case "image:inline":
if (!empty($answer['antwoord'])) {
// Does it fit on this page?
$nr_lines = 7;
$cell_height = 16;
if ((($_PAGE_INFO['height'] - ($nr_lines * $cell_height)) < PDF_MARGIN_BOTTOM) || (($nr_lines * $cell_height) > $_PAGE_INFO['height'])) {
pdf_page_new();
}
// Store current position
$old_pdf_height = $_PAGE_INFO['height'];
empty_line();
// Clear/delete array
$_PAGE_INFO['delete'] = array();
// Strip header info
$pos = strpos($answer['antwoord'], ',');
$image = base64_decode(substr($answer['antwoord'], $pos + 1));
// Download file
download_document_header("image/png", "report_log_attachment_" . $answer['enquete_entry'] . ".png", "write_file", "report_log_attachment_" . $answer['enquete_entry']);
download_document_data($image, "write_file", "report_log_attachment_" . $answer['enquete_entry']);
// Get image info
if ((file_exists($_PAGE_INFO["report_log_attachment_" . $answer['enquete_entry']])) && (filesize($_PAGE_INFO["report_log_attachment_" . $answer['enquete_entry']]) > 0)) {
$imagesize = getimagesize($_PAGE_INFO["report_log_attachment_" . $answer['enquete_entry']]);
// Get width/height
$width = $imagesize[0];
$height = $imagesize[1];
// Determine max width
$max_width = 400;
$width = ($width > $max_width) ? $max_width : $width;
if ($width != $imagesize[0]) {
// Determine height (keep aspect ratio)
$height = $height * floatval($width / $imagesize[0]);
}
// empty line
empty_line();
pdf_print_image("Test", $_PAGE_INFO["report_log_attachment_" . $answer['enquete_entry']], $height, $width, (($_PAGE_INFO['PDF_WIDTH'] / 2) - ($width / 2) + PDF_MARGIN_LEFT));
}
// Restore old position
$_PAGE_INFO['height'] = $old_pdf_height;
// Add result (when saved)
for ($i = 0; $i < $nr_lines; $i++) {
if (!$i) {
report_data(array_merge($single_report_data, array(value => array("", ""), border => array("LT", "RT"))));
} else if ($i == ($nr_lines - 1)) {
report_data(array_merge($single_report_data, array(value => array("", ""), border => array("LB", "RB"))));
} else {
report_data(array_merge($single_report_data, array(value => array("", ""), border => array("L", "R"))));
}
}
} else {
report_data(array_merge($single_report_data, array(value => array("", ""), border => array("LBT", "RBT"))));
}
break;
default:
// Do nothing
break;
// Empty line
empty_line();
}
}
}
} else {
if ($answer['volgnummer'] > $number) {
// Not yet finished
$finished = FALSE;
}
}
}
// Increment number
$number++;
} while (!$finished);
}
}
// Display titles when overview displayed
if ((($script == ENQ_FRONT_COVER_LWB) && (!$lwb_overview) && ($current_level == 8)) ||
(($script == ENQ_FRONT_COVER_LLV) && (!$llv_overview) && ($current_level == 8))
) {
if (!$log_found) {
$log_found = TRUE;
// Chapter title
report_data(array_merge($double_report_data, array(value => array(ucfirst(_("logbook"))), cell_width => array(180, 0), font_size => array(12, 12), border => array("", ""), ishtml => array(array(type => "bookmark", data => ucfirst(_("logbook")), parent => 0, bold => 1)))));
// Empty line
empty_line();
}
$i18n = getI18n($log['gebruiker'], $userTable);
// Get the questions
$questions = db_fetch_questionaires($i18n, $id);
// Determine set of questions used
if (is_array($questions)) {
for ($i = 0; $i < sizeof($questions); $i++) {
if ($questions[$i]['id'] == $answers[0]['enquete']) {
$enquete_id = $i;
}
}
}
if (!$count) {
// Get enquete
$enq = db_fetch_enquete_translations(NULL, 'nl', $log['enquete']);
// Enquete title
report_data(array_merge($double_report_data, array(value => array($enq[0]['data']), cell_width => array(180, 0), font_size => array(10, 10), border => array("", ""), ishtml => array($bookmark))));
}
}
// Post-action required?
switch ($script) {
case ENQ_FRONT_COVER_LWB:
case ENQ_FRONT_COVER_LLV:
$user_handled = array();
$profilesHandled = array();
switch ($script) {
case ENQ_FRONT_COVER_LWB:
// LWB level/title
$level = 8;
$title = "Acceptance lwb overview";
// Overview?
if (($current_level == 8) && (!$lwb_overview)) {
$lwb_overview = TRUE;
$overview = TRUE;
}
break;
case ENQ_FRONT_COVER_LLV:
// LLV level/title
$level = 9;
$title = "Acceptance llv overview";
// Overview?
if (($current_level == 8) && (!$llv_overview)) {
$llv_overview = TRUE;
$overview = TRUE;
}
break;
}
// Overview valid?
if ($overview) {
if ($count) {
// Empty line
empty_line();
}
// Add LWB overview
multiple_lines($title, $max_chars, 1, $single_report_data, NULL, $sub_item, array('cell' => "fillcolor={rgb 0.78 0.80 0.78}"));
// Get LWB transfers
$users = db_fetch_project_users($id, "", "", $level);
// Get signed users
$signedUsers = user_check_inout_info($id, null, 13, null, null, $level);
$status = array("goedgekeurd", "afgekeurd", "gewijzigd");
foreach ($status as $item) {
switch ($item) {
case "goedgekeurd":
multiple_lines(_("accepted") . ":", $max_chars, 1, $single_report_data, NULL, $sub_item);
break;
case "afgekeurd":
multiple_lines(_("rejected") . ":", $max_chars, 1, $single_report_data, NULL, $sub_item);
break;
case "gewijzigd":
multiple_lines(_("changed") . ":", $max_chars, 1, $single_report_data, NULL, $sub_item);
break;
}
// Initial value
$found = FALSE;
if (renderTransfers($id, $item, $max_chars, $single_report_data, $sub_item, $user_handled, 'id', 'gebruiker', $users)) {
$found = true;
}
if (renderTransfers($id, $item, $max_chars, $single_report_data, $sub_item, $profilesHandled, 'gebruiker', 'gebruiker_profiel', $signedUsers)) {
$found = true;
}
if (!$found) {
multiple_lines("-", $max_chars, 1, $single_report_data, NULL, $sub_item, array(border => array("LRT", "LRT")));
}
}
}
break;
}
}
}
}
}
// Add subscription list
// Subscription table layout
$sub_report_data = array(border => array("LRBT", "LRBT", "LRBT", "LRBT", "LRBT", "LRBT", "LRBT", "LRBT", "LRBT"),
bold => array(0, 0, 0, 0, 0, 0, 0, 0, 0),
align => array("L", "C", "L", "L", "L", "L", "L", "L", "L"),
font_size => array(8, 8, 8, 8, 8, 8, 8, 8, 8),
cell_width => array(27, 10, 27, 14, 27, 20, 20, 26, 12),
check_page_end => 1);
// Get for eacht user the in/out data
$inout_items = user_check_inout_info($id, "", 11);
// Level check_page
if (is_array($inout_items)) {
$tmp = $inout_items;
$inout_items = array();
foreach ($tmp as $tmp_item) {
$rightsHoldingUserId = getRightsHoldingUserId($id, $tmp_item['lwb'], $tmp_item['lwb_tabel']);
// Get check in by user level
$users = db_fetch_project_users($id, $rightsHoldingUserId);
// Initial value
$level = 100;
if (is_array($users)) {
foreach ($users as $user) {
if ($user['level'] < $level) {
$level = $user['level'];
}
}
if ($current_level <= $level) {
array_push($inout_items, $tmp_item);
}
}
}
}
if ((is_array($inout_items)) && (!empty($inout_items))) {
if (!$sub_found) {
// Add extra empty line
if (($log_found) || ($weco_found)) {
empty_line();
}
$sub_found = TRUE;
// Chapter title
report_data(array_merge($double_report_data, array(value => array(ucfirst(_("Subscriptionlist"))), cell_width => array(180, 0), font_size => array(12, 12), border => array("", ""), ishtml => array(array(type => "bookmark", data => ucfirst(_("Subscriptionlist")), parent => 0, bold => 1)))));
}
// Initial values
$gps_info = "-";
$gps_info_link = "";
// Add title
$value = array(ucfirst(_("User")), ucfirst(_("Action")), ucfirst(_("Mobile number")), ucfirst(_("Dvp number")), ucfirst(_("by")), ucfirst(_("Date")), ucfirst(_("location")), ucfirst(_("signInListAccessLevel")), ucfirst(_("Work location")));
$styling_options = array();
$bold = array();
$last_dvp = "";
foreach ($value as $item) {
array_push($bold, 1);
array_push($styling_options, array('cell' => "fillcolor={rgb 0.78 0.80 0.78}"));
}
report_data(array_merge($sub_report_data, array(value => $value, bold => $bold, styling_options => $styling_options)));
foreach ($inout_items as $inout) {
if ((strlen($inout['longitude'])) && (strlen($inout['latitude']))) {
$gps_info_link = GOOGLE_MAPS . "maps?q=" . $inout['latitude'] . ", " . $inout['longitude'];
$gps_info = $inout['latitude'] . ", " . $inout['longitude'];
}
switch ($inout['level']) {
case 9:
$accessLevel = _("signInListOptionSafetyFunction");
break;
case 10:
$accessLevel = _("signInListOptionTeamMember");
break;
default:
$accessLevel = _("signInListOptionNone");
break;
}
$value = array($inout['naam'], ($inout['actie'] == "incheck") ? ucfirst(_("in")) : ucfirst(_("out")), $inout['mobielnr'], $inout['dvp'], getUserOrProfileName($inout['lwb'], $inout['lwb_tabel']), convert_datetime($inout['t'], TRUE), $gps_info, $accessLevel, $inout['work_location']);
$styling_options = array();
$bookmark = "";
if ($last_dvp != $inout['dvp']) {
$last_dvp = $inout['dvp'];
// Add bookmark
$bookmark = array(type => "bookmark", data => $inout['naam'] . " (" . $inout['dvp'] . ")", parent => $_PAGE_INFO['bookmark_handle'], bold => 0);
// Add colors
foreach ($value as $item) {
$color = ($inout['actie'] == "incheck") ? "fillcolor={rgb 1 0 0}" : "fillcolor={rgb 0 1 0}";
$textcolor = ($inout['actie'] == "incheck") ? "fillcolor={rgb 1 1 1}" : "fillcolor={rgb 0 0 0}";
array_push($styling_options, array('cell' => $color, 'font' => $textcolor));
}
}
report_data(array_merge($sub_report_data, array(value => $value, ishtml => array($bookmark, "", "", "", "", "", array(type => link, data => $gps_info_link)), styling_options => $styling_options)));
}
}
if (($valid_script) || ($destination == "D")) {
// Generate document
return report_generate();
} else {
// Return nothing
return "";
}
}
function getI18n($userId, $userTable)
{
$i18n = 'nl';
if ($userTable == 'gebruiker') {
// Get user i18n
$user_info = db_fetch_user($userId, "", 1);
$i18n = $user_info['i18n'];
}
return $i18n;
}
/**
* Returns the id of the user holding the app rights
*
* @param int $projectId The id of the project to check the rights for
* @param int $lwbId The id of the LWB user
* @param string $lwbTable The name of the LWB table
* @return int The id of the user holding the rights
*/
function getRightsHoldingUserId($projectId, $lwbId, $lwbTable)
{
if ($lwbTable == 'gebruiker') {
return $lwbId;
} else {
$checkInOutInfo = user_check_inout_info($projectId, $lwbId, 8, $lwbTable);
if (is_array($checkInOutInfo)) {
$projectId = $checkInOutInfo['project'];
$lwbId = $checkInOutInfo['lwb'];
$lwbTable = $checkInOutInfo['lwb_tabel'];
// Get rights holding user id
return getRightsHoldingUserId($projectId, $lwbId, $lwbTable);
} else {
return null;
}
}
}
function renderTransfers($projectId, $status, $max_chars, $single_report_data, $sub_item, &$handled, $userIdColumn, $userTable, $users)
{
$found = false;
if (is_array($users)) {
foreach ($users as $user) {
$transfer = db_fetch_project_transfer($projectId, $user[$userIdColumn]);
if ((is_array($transfer)) && (!empty($transfer))) {
if ($transfer[0]['status'] == $status) {
if (!in_array($user[$userIdColumn], $handled)) {
multiple_lines(getUserOrProfileName($user[$userIdColumn], $userTable) . ": " . convert_datetime($transfer[0]['t'], TRUE), $max_chars, 0, $single_report_data, NULL, $sub_item);
// Add to array
array_push($handled, $user[$userIdColumn]);
// Set Flag
$found = true;
}
}
}
}
}
return $found;
}