Files
OpenLog/distfiles/search.php

826 lines
34 KiB
PHP

<?php
/*
search.php
OpenLog Online Logbook
Copyright (C) 2025 Rod Wright
SPDX-License-Identifier: GPL-2.0
*/
include("functions.php");
$noprint=1;
if (isset($_SESSION['login'])) {
$loggedin=1;
} else {
unset($loggedin);
}
$print=$_REQUEST['print'] ?? NULL;
$search=$_REQUEST['search'] ?? NULL;
$srchnoteid=$_REQUEST['srchnoteid'] ?? NULL;
$srchmfid=$_REQUEST['srchmfid'] ?? NULL;
$srchbdate=$_REQUEST['srchbdate'] ?? NULL;
$srchedate=$_REQUEST['srchedate'] ?? NULL;
$srchshift=$_REQUEST['srchshift'] ?? NULL;
$srchtech=$_REQUEST['srchtech'] ?? NULL;
$srchsubj=$_REQUEST['srchsubj'] ?? NULL;
$srchtext=$_REQUEST['srchtext'] ?? NULL;
$srchuid=$_REQUEST['srchuid'] ?? NULL;
$srchpn=$_REQUEST['srchpn'] ?? NULL;
$srchsn=$_REQUEST['srchsn'] ?? NULL;
$srchpname=$_REQUEST['srchpname'] ?? NULL;
$srchploc=$_REQUEST['srchploc'] ?? NULL;
$srchnha=$_REQUEST['srchnha'] ?? NULL;
$srchrepord=$_REQUEST['srchrepord'] ?? NULL;
$srchflags=$_REQUEST['srchflags'] ?? NULL;
$target=$_REQUEST['target'] ?? NULL;
$doparts=PARTS_FUNCTIONS;
$logname=LOG_NAME;
$techalpha=TECH_ALPHA;
$subjalpha=SUBJ_ALPHA;
$uidtext=UID_TEXT;
if ($print) {
$sbcolor=P_SIDEBAR_COLOR;
$mbgcolor=P_MENUBG_COLOR;
} else {
$sbcolor=SIDEBAR_COLOR;
$mbgcolor=MENUBG_COLOR;
}
framework("begin","$logname Search","Search",$print);
//var_dump($_REQUEST);
// ******** begin database manipulation ********
// get the date range of lognotes
$logdateqry=mysqli_query($db,"select min(date), max(date) from lognotes");
$logdateresults=mysqli_fetch_row($logdateqry);
$logmindate=$logdateresults[0];
if ($logmindate == "") $logmindate = $today;
$logmaxdate=$logdateresults[1];
if ($logmaxdate == "") $logmaxdate = $today;
// get the date range of maintenance forms
$mfdateqry=mysqli_query($db,"select min(mfdate), max(mfdate) from maintforms");
$mfdateresults=mysqli_fetch_row($mfdateqry);
$mfmindate=$mfdateresults[0];
if ($mfmindate == "") $mfmindate = $today;
$mfmaxdate=$mfdateresults[1];
if ($mfmaxdate == "") $mfmaxdate = $today;
// determine entire date range
$mindate=min($logmindate, $mfmindate);
$maxdate=max($logmaxdate, $mfmaxdate);
if ($search) {
// strip whitespace from beginning and end of text fields
$srchtext=trim($srchtext);
$srchpname=trim($srchpname);
$srchploc=trim($srchploc);
$srchnha=trim($srchnha);
if ($target[0]=="") $target=[];
if (in_array("log",$target)) {
// define the query constraints
// log note id
if ($srchnoteid != "any" && $srchnoteid != "") {
$logfromtables[]="lognotes";
$logconstraints[]="lognotes.lognoteid=\"$srchnoteid\"";
}
// maint form id
if ($srchmfid != "any" && $srchmfid != "") {
$logfromtables[]="lognotes";
$logfromtables[]="maintforms";
$logconstraints[]="lognotes.lognoteid=maintforms.lognoteid and maintforms.maintformid=\"$srchmfid\"";
}
// date range
if ($srchbdate != "" && $srchedate != "") {
$logfromtables[]="lognotes";
$logconstraints[]="lognotes.date between \"$srchbdate\" and \"$srchedate\"";
}
// shift
if ($srchshift !="0") {
$logfromtables[]="lognotes";
$logconstraints[]="lognotes.shift=\"$srchshift\"";
}
// tech
if ($srchtech !="0") {
$logfromtables[]="lognotes";
$logconstraints[]="lognotes.tech=\"$srchtech\"";
}
// subject
if ($srchsubj !="0") {
$logfromtables[]="lognotes";
$logconstraints[]="lognotes.subject=\"$srchsubj\"";
}
// search text
if ($srchtext !="") {
$logfromtables[]="lognotes";
$logconstraints[]="lognotes.lognote like \"%$srchtext%\"";
}
// flags
if ($srchflags != NULL) {
foreach ($srchflags as $flagtblnum) {
$flagtblname="flag_{$flagtblnum}";
$logfromtables[]="lognotes";
$logfromtables[]=$flagtblname;
$logconstraints[]="lognotes.lognoteid={$flagtblname}.id and {$flagtblname}.target=\"lognotes\"";
}
}
// uid
if ($srchuid != "any" && $srchuid != "") {
$logfromtables[]="lognotes";
$logfromtables[]="logparts";
$logfromtables[]="parts";
$logconstraints[]="lognotes.lognoteid=logparts.lognoteid and logparts.partid=parts.partid and parts.uid=\"{$srchuid}\"";
}
// part number
if ($srchpn != "any" && $srchpn != "") {
$logfromtables[]="lognotes";
$logfromtables[]="logparts";
$logfromtables[]="parts";
$logconstraints[]="lognotes.lognoteid=logparts.lognoteid and logparts.partid=parts.partid and parts.partnum=\"{$srchpn}\"";
}
// serial number
if ($srchsn != "any" && $srchsn != "") {
$logfromtables[]="lognotes";
$logfromtables[]="logparts";
$logfromtables[]="parts";
$logconstraints[]="lognotes.lognoteid=logparts.lognoteid and logparts.partid=parts.partid and parts.sernum=\"{$srchsn}\"";
}
// part name
if ($srchpname != "any" && $srchpname != "") {
$logfromtables[]="lognotes";
$logfromtables[]="logparts";
$logfromtables[]="parts";
$logconstraints[]="lognotes.lognoteid=logparts.lognoteid and logparts.partid=parts.partid and parts.partname like \"%{$srchpname}%\"";
}
// part location
if ($srchploc != "any" && $srchploc != "") {
$logfromtables[]="lognotes";
$logfromtables[]="logparts";
$logfromtables[]="parts";
$logfromtables[]="maintforms";
$logconstraints[]="lognotes.lognoteid=logparts.lognoteid and logparts.partid=parts.partid and maintforms.mfpart=parts.partid and maintforms.mfpartloc like \"%{$srchploc}%\"";
}
// next higher assembly
if ($srchnha != "any" && $srchnha != "") {
$logfromtables[]="lognotes";
$logfromtables[]="logparts";
$logfromtables[]="parts";
$logfromtables[]="maintforms";
$logconstraints[]="lognotes.lognoteid=logparts.lognoteid and logparts.partid=parts.partid and maintforms.mfpart=parts.partid and maintforms.nha like \"%{$srchnha}%\"";
}
// repair order
if ($srchrepord != "any" && $srchrepord != "") {
$logfromtables[]="lognotes";
$logfromtables[]="logparts";
$logfromtables[]="parts";
$logfromtables[]="maintforms";
$logconstraints[]="lognotes.lognoteid=logparts.lognoteid and logparts.partid=parts.partid and maintforms.mfpart=parts.partid and maintforms.repord=\"{$srchrepord}\"";
}
// build the clauses and run the query
$logfromclause=implode(",",array_unique($logfromtables));
$logwhereclause=implode(" and ",$logconstraints);
$logrowqry=mysqli_query($db,"select lognotes.* from $logfromclause where $logwhereclause order by lognotes.date asc, lognotes.time asc");
}
if ($target[0]=="") $target=[];
if (in_array("maintform",$target)) {
// maintforms search
// define the query constraints
// log note id
if ($srchnoteid != "any" && $srchnoteid != "") {
$mffromtables[]="maintforms";
$mffromtables[]="lognotes";
$mfconstraints[]="maintforms.lognoteid=lognotes.lognoteid and lognotes.lognoteid=\"$srchnoteid\"";
}
// maint form id
if ($srchmfid != "any" && $srchmfid != "") {
$mffromtables[]="maintforms";
$mfconstraints[]="maintforms.maintformid=\"$srchmfid\"";
}
// date range
if ($srchbdate != "" && $srchedate != "") {
$mffromtables[]="maintforms";
$mfconstraints[]="maintforms.mfdate between \"$srchbdate\" and \"$srchedate\"";
}
// shift
if ($srchshift !="0") {
$mffromtables[]="maintforms";
$mffromtables[]="lognotes";
$mfconstraints[]="maintforms.lognoteid=lognotes.lognoteid and lognotes.shift=\"$srchshift\"";
}
// tech
if ($srchtech !="0") {
$mffromtables[]="maintforms";
$mfconstraints[]="maintforms.mftech=\"$srchtech\"";
}
// subject
if ($srchsubj !="0") {
$mffromtables[]="maintforms";
$mffromtables[]="lognotes";
$mfconstraints[]="maintforms.lognoteid=lognotes.lognoteid and lognotes.subject=\"$srchsubj\"";
}
// search text
if ($srchtext !="") {
$mffromtables[]="maintforms";
$mffromtables[]="maintactions";
$mfconstraints[]="maintforms.mfmalfunction like \"%$srchtext%\" or (maintactions.action like \"%$srchtext%\" and maintforms.maintformid=maintactions.maintformnum)";
}
// flags
foreach ($srchflags as $flagtblnum) {
$flagtblname="flag_{$flagtblnum}";
$mffromtables[]="maintforms";
$mffromtables[]=$flagtblname;
$mfconstraints[]="maintforms.maintformid={$flagtblname}.id and {$flagtblname}.target=\"maintforms\"";
}
// uid
if ($srchuid != "any" && $srchuid != "") {
$mffromtables[]="maintforms";
$mffromtables[]="parts";
$mfconstraints[]="maintforms.mfpart=parts.partid and parts.uid=\"{$srchuid}\"";
}
// part number
if ($srchpn != "any" && $srchpn != "") {
$mffromtables[]="maintforms";
$mffromtables[]="parts";
$mfconstraints[]="maintforms.mfpart=parts.partid and parts.partnum=\"{$srchpn}\"";
}
// serial number
if ($srchsn != "any" && $srchsn != "") {
$mffromtables[]="maintforms";
$mffromtables[]="parts";
$mfconstraints[]="maintforms.mfpart=parts.partid and parts.sernum=\"{$srchsn}\"";
}
// part name
if ($srchpname != "any" && $srchpname != "") {
$mffromtables[]="maintforms";
$mffromtables[]="parts";
$mfconstraints[]="maintforms.mfpart=parts.partid and parts.partname like \"%{$srchpname}%\"";
}
// part location
if ($srchploc != "any" && $srchploc != "") {
$mffromtables[]="parts";
$mffromtables[]="maintforms";
$mfconstraints[]="maintforms.mfpart=parts.partid and maintforms.mfpartloc like \"%{$srchploc}%\"";
}
// next higher assembly
if ($srchnha != "any" && $srchnha != "") {
$mffromtables[]="parts";
$mffromtables[]="maintforms";
$mfconstraints[]="maintforms.mfpart=parts.partid and maintforms.nha like \"%{$srchnha}%\"";
}
// repair order
if ($srchrepord != "any" && $srchrepord != "") {
$mffromtables[]="parts";
$mffromtables[]="maintforms";
$mfconstraints[]="maintforms.mfpart=parts.partid and maintforms.repord=\"{$srchrepord}\"";
}
// build the clauses and run the query
$mffromclause=implode(",",array_unique($mffromtables));
$mfwhereclause=implode(" and ",$mfconstraints);
$mfrowqry=mysqli_query($db,"select maintforms.* from $mffromclause where $mfwhereclause order by maintforms.mfdate asc, maintforms.mftime asc");
}
if ($target[0]=="") $target=[];
if (in_array("part",$target)) {
// parts search
// define the query constraints
// log note id
if ($srchnoteid != "any" && $srchnoteid != "") {
$pfromtables[]="parts";
$pfromtables[]="logparts";
$pfromtables[]="lognotes";
$pconstraints[]="parts.partid=logparts.partid and logparts.lognoteid=lognotes.lognoteid and lognotes.lognoteid=\"$srchnoteid\"";
}
// maint form id
if ($srchmfid != "any" && $srchmfid != "") {
$pfromtables[]="parts";
$pfromtables[]="maintforms";
$pconstraints[]="parts.partid=maintforms.mfpart and maintforms.maintformid=\"$srchmfid\"";
}
// date range doesn't apply to parts
// shift doesn't apply to parts
// tech doesn't apply to parts
// subject doesn't apply to parts
// search text doesn't apply to parts
// flags doesn't apply to parts
// uid
if ($srchuid != "any" && $srchuid != "") {
$pfromtables[]="parts";
$pconstraints[]="parts.uid=\"{$srchuid}\"";
}
// part number
if ($srchpn != "any" && $srchpn != "") {
$pfromtables[]="parts";
$pconstraints[]="parts.partnum=\"{$srchpn}\"";
}
// serial number
if ($srchsn != "any" && $srchsn != "") {
$pfromtables[]="parts";
$pconstraints[]="parts.sernum=\"{$srchsn}\"";
}
// part name
if ($srchpname != "any" && $srchpname != "") {
$pfromtables[]="parts";
$pconstraints[]="parts.partname like \"%{$srchpname}%\"";
}
// part location
if ($srchploc != "any" && $srchploc != "") {
$pfromtables[]="parts";
$pfromtables[]="maintforms";
$pconstraints[]="maintforms.mfpart=parts.partid and maintforms.mfpartloc like \"%{$srchploc}%\"";
}
// next higher assembly
if ($srchnha != "any" && $srchnha != "") {
$pfromtables[]="parts";
$pfromtables[]="maintforms";
$pconstraints[]="maintforms.mfpart=parts.partid and maintforms.nha like \"%{$srchnha}%\"";
}
// repair order
if ($srchrepord != "any" && $srchrepord != "") {
$pfromtables[]="parts";
$pfromtables[]="maintforms";
$pconstraints[]="maintforms.mfpart=parts.partid and maintforms.repord=\"{$srchrepord}\"";
}
// build the clauses and run the query
$pfromclause=implode(",",array_unique($pfromtables));
$pwhereclause=implode(" and ",$pconstraints);
$prowqry=mysqli_query($db,"select parts.* from $pfromclause where $pwhereclause order by parts.uid asc");
}
}
// ******** end database manipulation ********
pagetable("begin");
if(!$print){
pageblock("left","begin");
sidemenu();
pageblock("left","end");
}
pageblock("right","begin");
banner($print);
// display the form
if ($srchnoteid) $noteidval=$srchnoteid; else $noteidval="any";
if ($srchmfid) $mfidval=$srchmfid; else $mfidval="any";
if ($srchbdate) $bdateval=$srchbdate; else $bdateval=$mindate;
if ($srchedate) $edateval=$srchedate; else $edateval=$maxdate;
if ($srchshift) $shiftval=$srchshift; else $shiftval=0;
if ($srchtech) $techval=$srchtech; else $techval=0;
if ($srchsubj) $subjval=$srchsubj; else $subjval=0;
if ($srchtext) $textval=$srchtext; else $textval="";
if ($srchuid) $uidval=$srchuid; else $uidval="any";
if ($srchpn) $pnval=$srchpn; else $pnval="any";
if ($srchsn) $snval=$srchsn; else $snval="any";
if ($srchpname) $pnameval=$srchpname; else $pnameval="any";
if ($srchploc) $plocval=$srchploc; else $plocval="any";
if ($srchnha) $nhaval=$srchnha; else $nhaval="any";
if ($srchrepord) $repordval=$srchrepord; else $repordval="any";
if (!$print) {
echo "
<form method=post action=\"search.php\">
<b>Log Note ID:</b>&nbsp;&nbsp;<input type=\"text\" name=\"srchnoteid\" size=\"7\" value=\"$noteidval\" title=\"Only show results with this Logbook Note ID number\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b>Maintenance Form ID:</b>&nbsp;&nbsp;<input type=\"text\" name=\"srchmfid\" size=\"7\" value=\"$mfidval\" title=\"Only show results with this Maintenance Form ID number\">
<br><br>
<b>Start Date:</b>&nbsp;&nbsp;<input type=\"text\" name=\"srchbdate\" size=\"10\" value=\"$bdateval\" id=\"startdatepicker\" title=\"Format: YYYY-MM-DD\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b>End Date:</b>&nbsp;&nbsp;<input type=\"text\" name=\"srchedate\" size=\"10\" value=\"$edateval\" id=\"enddatepicker\" title=\"Format: YYYY-MM-DD\">
<br><br>
<b>Shift:</b>&nbsp;&nbsp;<select name=\"srchshift\" title=\"Only show results with this shift\">
";
if ($shiftval==0) {
echo "<option value=\"0\" selected>any</option>";
} else {
echo "<option value=\"0\">any</option>";
}
$shiftrow=mysqli_query($db,"select * from shifts");
while ($shiftitem=mysqli_fetch_assoc($shiftrow)) {
if ($shiftitem['shiftid']==$shiftval) {
printf("<option value=\"%s\" selected>%s</option>",$shiftitem['shiftid'],$shiftitem['shiftname']);
} else {
printf("<option value=\"%s\">%s</option>",$shiftitem['shiftid'],$shiftitem['shiftname']);
}
}
echo "
</select>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b>Tech:</b>&nbsp;&nbsp;<select name=\"srchtech\" title=\"Only show results with this tech\">
";
if ($techval==0) {
echo "<option value=\"0\" selected>any</option>";
} else {
echo "<option value=\"0\">any</option>";
}
if ($techalpha) $torder="techname"; else $torder="techid";
$techrow=mysqli_query($db,"select * from techs order by $torder asc");
while ($techitem=mysqli_fetch_assoc($techrow)) {
if ($techitem['techid']==$techval) {
printf("<option value=\"%s\" selected>%s</option>",$techitem['techid'],$techitem['techname']);
} else {
printf("<option value=\"%s\">%s</option>",$techitem['techid'],$techitem['techname']);
}
}
echo "
</select>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b>Subject:</b>&nbsp;&nbsp;<select name=\"srchsubj\" title=\"Only show results with this subject\">
";
if ($subjval==0) {
echo "<option value=\"0\" selected>any</option>";
} else {
echo "<option value=\"0\">any</option>";
}
if ($subjalpha) $sorder="subjectname"; else $sorder="subjectid";
$subjrow=mysqli_query($db,"select * from subjects order by $sorder asc");
while ($subjitem=mysqli_fetch_assoc($subjrow)) {
if ($subjitem['subjectid']==$subjval) {
printf("<option value=\"%s\" selected>%s</option>",$subjitem['subjectid'],$subjitem['subjectname']);
} else {
printf("<option value=\"%s\">%s</option>",$subjitem['subjectid'],$subjitem['subjectname']);
}
}
echo "
</select>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<br><br>
";
if ($doparts) {
echo "
<b>$uidtext:</b>&nbsp;&nbsp;<input type=\"text\" name=\"srchuid\" size=\"8\" value=\"$uidval\" title=\"Only show results associated with this $uidtext\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b>Part Number:</b>&nbsp;&nbsp;<input type=\"text\" name=\"srchpn\" size=\"20\" value=\"$pnval\" title=\"Only show results associated with this part number\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b>Serial Number:</b>&nbsp;&nbsp;<input type=\"text\" name=\"srchsn\" size=\"20\" value=\"$snval\" title=\"Only show results associated with this serial number\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<br><br>
<b>Part Name:</b>&nbsp;&nbsp;<input type=\"text\" name=\"srchpname\" size=\"40\" value=\"$pnameval\" title=\"Only show results associated with this part name\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b>Part Location:</b>&nbsp;&nbsp;<input type=\"text\" name=\"srchploc\" size=\"20\" value=\"$plocval\" title=\"Only show results associated with this part location\">
<br><br>
<b>Next Higher Assembly:</b>&nbsp;&nbsp;<input type=\"text\" name=\"srchnha\" size=\"20\" value=\"$nhaval\" title=\"Only show results associated with this next higher assembly\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b>Repair Order:</b>&nbsp;&nbsp;<input type=\"text\" name=\"srchrepord\" size=\"12\" value=\"$repordval\" title=\"Only show results associated with this repair order number\">
<br><br>
";
}
echo "
<b>Text in Log Note, Discrepancy, or Maintenance Action:</b><br>
<textarea rows=\"3\" cols=\"70\" name=\"srchtext\" wrap=\"soft\" title=\"Only show results containing text similar to this\">$textval</textarea>
<br><br>
<b>Flags:</b>
";
$flagslist=mysqli_query($db,"select * from flags");
$flagsperline=8;
$flagcount=1;
while ($flagcheckbox=mysqli_fetch_assoc($flagslist)) {
if ($srchflags[0]=="") $srchflags=[];
if (in_array($flagcheckbox["flagid"],$srchflags)) {
printf("<input type=\"checkbox\" name=\"srchflags[]\" value=\"%s\" checked title=\"When checked, only results with this flag set will be shown\"><font color=\"%s\" title=\"%s\">%s</font>",
$flagcheckbox["flagid"],$flagcheckbox["flagcolor"],$flagcheckbox["flagname"],$flagcheckbox["flagsym"]);
} else {
$flagid=$flagcheckbox["flagid"];
if (mysqli_num_rows(mysqli_query($db,"select flagid from flags where flagid=\"$flagid\" and status=1"))) {
printf("<input type=\"checkbox\" name=\"srchflags[]\" value=\"%s\" title=\"When checked, only results with this flag set will be shown\"><font color=\"%s\" title=\"%s\">%s</font>",
$flagcheckbox["flagid"],$flagcheckbox["flagcolor"],$flagcheckbox["flagname"],$flagcheckbox["flagsym"]);
}
}
if ($flagcount<$flagsperline) {
echo "&nbsp;&nbsp;&nbsp;";
$flagcount++;
} else {
echo "<br>";
$flagcount=1;
}
}
echo "
<br><br>
";
if ($doparts) {
echo "
<b>Search in:</b>&nbsp;&nbsp;
";
if ($target[0]=="") $target=[];
if (in_array("log", $target)) {
echo "<input type=\"checkbox\" name=\"target[]\" value=\"log\" title=\"Search in Logbook\" checked>Logbook&nbsp;&nbsp;";
} else {
echo "<input type=\"checkbox\" name=\"target[]\" value=\"log\" title=\"Search in Logbook\">Logbook&nbsp;&nbsp;";
}
if (in_array("maintform", $target)) {
echo "<input type=\"checkbox\" name=\"target[]\" value=\"maintform\" title=\"Search in Maintenance Forms\" checked>Maintenance Forms&nbsp;&nbsp;";
} else {
echo "<input type=\"checkbox\" name=\"target[]\" value=\"maintform\" title=\"Search in Maintenance Forms\">Maintenance Forms&nbsp;&nbsp;";
}
if (in_array("part", $target)) {
echo "<input type=\"checkbox\" name=\"target[]\" value=\"part\" title=\"Search in Parts\" checked>Parts&nbsp;&nbsp;";
} else {
echo "<input type=\"checkbox\" name=\"target[]\" value=\"part\" title=\"Search in Parts\">Parts&nbsp;&nbsp;";
}
echo "
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
";
} else {
echo "<input type=\"hidden\" name=\"target[]\" value=\"log\">";
}
echo "
<input type=\"submit\" name=\"search\" value=\"Search\">
";
if ($search) {
$allvars=http_build_query($_REQUEST);
echo "
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"search.php?print=1&$allvars\" target=\"_blank\">Print Search Results</a>
";
}
echo "
</form>
<hr>
";
} else {
echo "
<b>Log Note ID:</b>&nbsp;&nbsp; $noteidval &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b>Maintenance Form ID:</b>&nbsp;&nbsp; $mfidval
<br><br>
<b>Start Date:</b>&nbsp;&nbsp; $bdateval &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b>End Date:</b>&nbsp;&nbsp; $edateval
<br><br>
<b>Shift:</b>&nbsp;&nbsp;
";
if ($shiftval==0) {
echo "any";
} else {
$shiftname=dblookup($db,"shifts","shiftid","shiftname",$shiftval);
echo "$shiftname";
}
echo "
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b>Tech:</b>&nbsp;&nbsp;
";
if ($techval==0) {
echo "any";
} else {
$techname=dblookup($db,"techs","techid","techname",$techval);
echo "$techname";
}
echo "
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b>Subject:</b>&nbsp;&nbsp;
";
if ($subjval==0) {
echo "any";
} else {
$subjname=dblookup($db,"subjects","subjectid","subjectname",$subjval);
echo "$subjname";
}
echo "
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<br><br>
";
if ($doparts) {
echo "
<b>$uidtext:</b>&nbsp;&nbsp; $uidval &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b>Part Number:</b>&nbsp;&nbsp; $pnval &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b>Serial Number:</b>&nbsp;&nbsp; $snval &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<br><br>
<b>Part Name:</b>&nbsp;&nbsp; $pnameval &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b>Part Location:</b>&nbsp;&nbsp; $plocval
<br><br>
<b>Next Higher Assembly:</b>&nbsp;&nbsp; $nhaval &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b>Repair Order:</b>&nbsp;&nbsp; $repordval
<br><br>
";
}
echo "
<b>Text in Log Note, Discrepancy, or Maintenance Action:</b><br>
$textval
<br><br>
<b>Flags:</b>
";
$flagslist=mysqli_query($db,"select * from flags");
$flagsperline=8;
$flagcount=1;
while ($flagcheckbox=mysqli_fetch_assoc($flagslist)) {
if ($srchflags) {
if ($srchflags[0]=="") $srchflags=[];
if (in_array($flagcheckbox["flagid"],$srchflags)) {
printf("<font color=\"%s\">%s</font>",
$flagcheckbox["flagcolor"],$flagcheckbox["flagsym"]);
}
}
if ($flagcount<$flagsperline) {
echo "&nbsp;&nbsp;&nbsp;";
$flagcount++;
} else {
echo "<br>";
$flagcount=1;
}
}
echo "
<br><br>
";
if ($doparts) {
if ($target[0]=="") $target=[];
echo "
<b>Search in:</b>&nbsp;&nbsp;
";
if (in_array("log", $target)) {
echo "Logbook&nbsp;&nbsp;";
}
if (in_array("maintform", $target)) {
echo "Maintenance Forms&nbsp;&nbsp;";
}
if (in_array("part", $target)) {
echo "Parts&nbsp;&nbsp;";
}
echo "
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
";
}
echo "
<hr>
";
}
if ($search) {
if ($target[0]=="") $target=[];
if (in_array("log",$target)) {
// run lognotes query and show results
if(mysqli_num_rows($logrowqry)) {
echo "
<b>Results from Logbook</b><br><br>
<table border=\"1\" width=\"100%\">
<tr><th>Note ID</th><th>Date/Time</th><th>Shift</th><th>Tech</th><th>Subject</th><th>Note</th><th>References</th></tr>
";
while ($logtablerow = mysqli_fetch_assoc($logrowqry)) {
$logrefs="&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"logentry.php?refto=$logtablerow[lognoteid]\"><img src=\"icons/plus.png\" border=\"0\" title=\"Add referring note\" alt=\"Add referring note\"></a>";
if (islink($logtablerow['lognoteid'])) {
$logrefs=$logrefs."&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"refchain.php?chainnote=$logtablerow[lognoteid]\"><img src=\"icons/magnifier--arrow.png\" border=\"0\" title=\"View ref chain\" alt=\"View ref chain\"></a>";
}
// convert the shift number to a name
$logshname=dblookup($db,"shifts","shiftid","shiftname",$logtablerow['shift']);
// convert tech number to name
$logtname=dblookup($db,"techs","techid","techname",$logtablerow['tech']);
//convert subject number to name
$logsubjname=dblookup($db,"subjects","subjectid","subjectname",$logtablerow['subject']);
// create links of urls in note
$logfmtnote=convertweblinks($logtablerow['lognote']);
// generate the flags string
$flagstring="";
$allflagqry=mysqli_query($db,"select flagid from flags");
while ($allflagids=mysqli_fetch_row($allflagqry)) {
$flagid=$allflagids[0];
$flag_tbl="flag_".$flagid;
if (mysqli_num_rows(mysqli_query($db,"select id from $flag_tbl where target=\"lognotes\" and id=\"$logtablerow[lognoteid]\""))) {
$flagparam=mysqli_fetch_assoc(mysqli_query($db,"select * from flags where flagid=\"$flagid\""));
$flagcolor=$flagparam["flagcolor"];
$flagsym=$flagparam["flagsym"];
$flagstring=$flagstring."<font color=\"$flagcolor\">$flagsym</font>&nbsp;&nbsp;";
}
}
if ($flagstring) $logfmtnote=$logfmtnote."<br>".$flagstring;
printf("<tr>
<td valign=\"top\"><a href=logentry.php?edit=1&noteid=%s>%s</a></td>
<td valign=\"top\">%s&nbsp;&#047;&nbsp;%s</td>
<td valign=\"top\">%s</td>
<td valign=\"top\">%s</td>
<td valign=\"top\">%s</td>
<td valign=\"top\">%s</td>
<td valign=\"top\">%s</td>
</tr>",
$logtablerow['lognoteid'],$logtablerow['lognoteid'],
$logtablerow['date'],$logtablerow['time'],
$logshname,
$logtname,
$logsubjname,
$logfmtnote,
$logrefs);
}
echo "</table><br><hr>";
} else {
echo "<font size=\"+1\">No Logbook notes match your search criteria.</font><br><hr>";
}
}
if ($target[0]=="") $target=[];
if (in_array("maintform",$target)) {
// run maintforms query and show results
if(mysqli_num_rows($mfrowqry)) {
echo "
<b>Results from Maintenance Forms</b><br><br>
<br><table border=\"1\" width=\"100%\">
<tr>
<th>ID</th>
<th>Date</th>
<th>Tech</th>
<th>$uidtext</th>
<th>Part Number</th>
<th>Serial Number</th>
<th>Part Name</th>
<th>Logbook<br>Note ID</th>
</tr>
";
while ($mfrow = mysqli_fetch_assoc($mfrowqry)) {
// look up part data
$mfuid=dblookup($db,"parts","partid","uid",$mfrow["mfpart"]);
if ($mfuid=="") $mfuid="&nbsp;";
$mfpartno=dblookup($db,"parts","partid","partnum",$mfrow["mfpart"]);
if ($mfpartno=="") $mfpartno="&nbsp;";
$mfserno=dblookup($db,"parts","partid","sernum",$mfrow["mfpart"]);
if ($mfserno=="") $mfserno="&nbsp;";
$mfpartname=dblookup($db,"parts","partid","partname",$mfrow["mfpart"]);
if ($mfpartname=="") $mfpartname="&nbsp;";
// look up tech name
$mftname=dblookup($db,"techs","techid","techname",$mfrow["mftech"]);
if ($mfrow["lognoteid"]==0) {
$mfnoteidval="&nbsp;";
$mfnotetag="%s%s";
} else {
$mfnoteidval=$mfrow["lognoteid"];
$mfnotetag="<a href=\"logentry.php?edit=1&noteid=%s\">%s</a>";
}
printf(
"<tr>
<td align=\"center\" valign=\"top\"><a href=\"maintformentry.php?mfedit=1&maintformid=%s\">%s</a></td>
<td valign=\"top\">%s</td>
<td valign=\"top\">%s</td>
<td valign=\"top\">%s</td>
<td valign=\"top\">%s</td>
<td valign=\"top\">%s</td>
<td valign=\"top\">%s</td>
<td align=\"center\" valign=\"top\">$mfnotetag</td>
</tr>",
$mfrow["maintformid"],$mfrow["maintformid"],
$mfrow["mfdate"],
$mftname,
$mfuid,
$mfpartno,
$mfserno,
$mfpartname,
$mfnoteidval,$mfnoteidval
);
}
echo "</table><br><hr>";
} else {
echo "<font size=\"+1\">No Maintenance Forms match your search criteria.</font><br><hr>";
}
}
if ($target[0]=="") $target=[];
if (in_array("part",$target)) {
// run parts query and show results
if(mysqli_num_rows($prowqry)) {
echo "
<b>Results from Parts</b><br><br>
<table width=\"100%\" border=\"1\" cellpadding=\"5\">
<tr>
<th>Action</th>
<th><a href=\"parts.php?sort=uid&order=$order\" title=\"Sort by $uidtext\">$uidtext</a></th>
<th><a href=\"parts.php?sort=partnum&order=$order\" title=\"Sort by Part Number\">Part Number</a></th>
<th><a href=\"parts.php?sort=sernum&order=$order\" title=\"Sort by Serial Number\">Serial Number</a></th>
<th><a href=\"parts.php?sort=partname&order=$order\" title=\"Sort by Part Name\">Part Name</a></th>
</tr>
";
while ($partrow=mysqli_fetch_assoc($prowqry)) {
if ($loggedin) {
printf("
<tr>
<td>
<a href=\"partentry.php?edit=1&partid=%s\"><img src=\"icons/notebook--pencil.png\" border=\"0\" title=\"Edit this part\" alt=\"Edit this part\"></a>
</td>
<td>%s</td>
<td>%s</td>
<td>%s</td>
<td>%s</td>",
$partrow['partid'],
$partrow['uid'],
$partrow['partnum'],
$partrow['sernum'],
$partrow['partname']
);
} else {
printf("
<tr>
<td>
<img src=\"icons/notebook--pencil.png\" border=\"0\" title=\"You must be logged in to edit a part\" alt=\"You must be logged in to edit a part\">
</td>
<td>%s</td>
<td>%s</td>
<td>%s</td>
<td>%s</td>",
$partrow['uid'],
$partrow['partnum'],
$partrow['sernum'],
$partrow['partname']
);
}
echo "
</tr>
";
}
echo "</table><br><hr>";
} else {
echo "<font size=\"+1\">No Parts match your search criteria.</font><br><hr>";
}
}
} else {
echo "<font size=\"+1\">Use fields above to define your search.</font>";
}
banner($print);
pageblock("right","end");
pagetable("end");
framework("end","","",$print);
?>