"; //var_dump($_REQUEST); //echo "

incoming array
"; //var_dump($incoming); // ******** begin database manipulation ******** // get min, max report and action_dates from writeups table, validate input dates/times and set defaults $minmaxqry=mysqli_query($drs_db,"select min(report_date),max(report_date),min(action_date),max(action_date) from writeups"); $minmaxdates=mysqli_fetch_row($minmaxqry); if (!$s_report_date_start || !validateDate($s_report_date_start)) $s_report_date_start=$minmaxdates[0]; if (!$s_report_date_end || !validateDate($s_report_date_end)) $s_report_date_end=$minmaxdates[1]; if (!$s_report_time_start || !validateTime($s_report_time_start)) $s_report_time_start="00:00:00"; if (!$s_report_time_end || !validateTime($s_report_time_end)) $s_report_time_end="23:59:59"; if ($search) { // strip whitespace from beginning and end of text fields $s_reported_by=trim($s_reported_by); $s_action_text=trim($s_action_text); $s_discrepancy_text=trim($s_discrepancy_text); $s_id=trim($s_id); // build the query string $query_string=""; // device if ($s_device) { $query_string="{$query_string}("; $device_param="{$device_term}s:"; foreach ($s_device as $dev_val) { $query_string="{$query_string}device=\"{$dev_val}\" or "; $device_dsp=dblookup($drs_db,"devices","id","name",$dev_val); $device_param="{$device_param} {$device_dsp}, "; } $device_param=rtrim($device_param,", "); $num_devices=mysqli_num_rows(mysqli_query($drs_db,"select id from devices")); if (count($s_device)==$num_devices) $device_param="{$device_term}s: any"; $query_string=rtrim($query_string," or "); $query_string="{$query_string})"; $query_string="{$query_string} and "; } // subsystem if ($s_subsystem) { $query_string="{$query_string}("; $subsystem_param="Subsystems:"; foreach ($s_subsystem as $sub_val) { $query_string="{$query_string}subsystem=\"{$sub_val}\" or "; $subsystem_dsp=dblookup($drs_db,"subsystems","id","name",$sub_val); $subsystem_param="{$subsystem_param} {$subsystem_dsp}, "; } $subsystem_param=rtrim($subsystem_param,", "); $num_subsystems=mysqli_num_rows(mysqli_query($drs_db,"select id from subsystems")); if (count($s_subsystem)==$num_subsystems) $subsystem_param="Subsystems: any"; $query_string=rtrim($query_string," or "); $query_string="{$query_string})"; $query_string="{$query_string} and "; } // id if ($s_id) { $query_string="{$query_string}("; $query_string="{$query_string}id={$s_id}"; $query_string="{$query_string})"; $query_string="{$query_string} and "; $id_param="ID: {$s_id}"; } else { $id_param="ID: any"; } // discovered if ($s_discovered) { $query_string="{$query_string}("; $discovered_param="{$discovered_term_short}:"; foreach ($s_discovered as $disc_val) { $query_string="{$query_string}discovered=\"{$disc_val}\" or "; $disc_dsp=$disc_val; $discovered_param="{$discovered_param} {$disc_dsp}, "; } $discovered_param=rtrim($discovered_param,", "); $num_discovereds=mysqli_num_rows(mysqli_query($drs_db,"select id from discovered")); if (count($s_discovered)==$num_discovereds) $discovered_param="{$discovered_term_short}s: any"; $query_string=rtrim($query_string," or "); $query_string="{$query_string})"; $query_string="{$query_string} and "; } // functional if ($s_functional) { $query_string="{$query_string}("; $func_param="$functional_term:"; foreach ($s_functional as $func_val) { $query_string="{$query_string}functional=\"{$func_val}\" or "; if ($func_val=="0") $func_dsp="$functional_no_short"; if ($func_val=="1") $func_dsp="$functional_yes_short"; $func_param="{$func_param} {$func_dsp}, "; } $func_param=rtrim($func_param,", "); $query_string=rtrim($query_string," or "); $query_string="{$query_string})"; $query_string="{$query_string} and "; } // status if ($s_status) { $query_string="{$query_string}("; $status_param="Status:"; foreach ($s_status as $stat_val) { $query_string="{$query_string}status=\"{$stat_val}\" or "; if ($stat_val=="1") $stat_dsp="OPEN"; if ($stat_val=="2") $stat_dsp="CLSD"; if ($stat_val=="3") $stat_dsp="DFRD"; $status_param="{$status_param} {$stat_dsp}, "; } $status_param=rtrim($status_param,", "); $query_string=rtrim($query_string," or "); $query_string="{$query_string})"; $query_string="{$query_string} and "; } // action by if ($s_action_by) { $query_string="{$query_string}("; $actionby_param="Status changed by:"; foreach ($s_action_by as $actby_val) { $query_string="{$query_string}action_by=\"{$actby_val}\" or "; if ($actby_val==0) { $actionby_dsp=" (none set)"; } else { $actionby_dsp=dblookup($drs_db,"users","id","firstname",$actby_val)." ".dblookup($drs_db,"users","id","lastname",$actby_val); } $actionby_param="{$actionby_param} {$actionby_dsp}, "; } $actionby_param=rtrim($actionby_param,", "); $num_users=mysqli_num_rows(mysqli_query($drs_db,"select id from users")); if (count($s_action_by)==$num_users+1) $actionby_param="Status changed by: any"; $query_string=rtrim($query_string," or "); $query_string="{$query_string})"; $query_string="{$query_string} and "; } // action reason if ($s_action_reason) { $query_string="{$query_string}("; $reason_param="Status change reason:"; foreach ($s_action_reason as $actrn_val) { $query_string="{$query_string}action_reason=\"{$actrn_val}\" or "; if ($actrn_val==0) { $reason_dsp=" (none set)"; } else { $reason_dsp=dblookup($drs_db,"reasons","id","text",$actrn_val); } $reason_param="{$reason_param} {$reason_dsp}, "; } $reason_param=rtrim($reason_param,", "); $num_reasons=mysqli_num_rows(mysqli_query($drs_db,"select id from reasons")); if (count($s_action_reason)==$num_reasons+1) $reason_param="Status change reason: any"; $query_string=rtrim($query_string," or "); $query_string="{$query_string})"; $query_string="{$query_string} and "; } // report date $query_string="{$query_string}("; $query_string="{$query_string}report_date between \"{$s_report_date_start}\" and \"{$s_report_date_end}\""; $query_string="{$query_string})"; $query_string="{$query_string} and "; $reportdate_param="Report date between {$s_report_date_start} and {$s_report_date_end}"; // report time $query_string="{$query_string}("; $query_string="{$query_string}report_time between \"{$s_report_time_start}\" and \"{$s_report_time_end}\""; $query_string="{$query_string})"; $query_string="{$query_string} and "; $reporttime_param="Report time between {$s_report_time_start} and {$s_report_time_end}"; // action date if ($s_action_date_start && $s_action_date_end) { $query_string="{$query_string}("; $query_string="{$query_string}action_date between \"{$s_action_date_start}\" and \"{$s_action_date_end}\""; $query_string="{$query_string})"; $query_string="{$query_string} and "; $actiondate_param="Action taken date between {$s_action_date_start} and {$s_action_date_end}"; } else { $actiondate_param="Action taken date: any"; } // action time if ($s_action_time_start && $s_action_time_end) { $query_string="{$query_string}("; $query_string="{$query_string}action_time between \"{$s_action_time_start}\" and \"{$s_action_time_end}\""; $query_string="{$query_string})"; $query_string="{$query_string} and "; $actiontime_param="Action taken time between {$s_action_time_start} and {$s_action_time_end}"; } else { $actiontime_param="Action taken time: any"; } // discrepancy text if ($s_discrepancy_text) { $query_string="{$query_string}("; $query_string="{$query_string}discrepancy_text like \"%{$s_discrepancy_text}%\""; $query_string="{$query_string})"; $query_string="{$query_string} and "; $discrepancytext_param="Text in discrepancy: {$s_discrepancy_text}"; } else { $discrepancytext_param="Text in discrepancy: any"; } // action text if ($s_action_text) { $query_string="{$query_string}("; $query_string="{$query_string}action_text like \"%{$s_action_text}%\""; $query_string="{$query_string})"; $query_string="{$query_string} and "; $actiontext_param="Text in Action taken: {$s_action_text}"; } else { $actiontext_param="Text in Action taken: any"; } // reported by if ($s_reported_by) { $query_string="{$query_string}("; $query_string="{$query_string}reported_by like \"%{$s_reported_by}%\""; $query_string="{$query_string})"; $query_string="{$query_string} and "; $repby_param="Text in Reported by: {$s_reported_by}"; } else { $repby_param="Text in Reported by: any"; } $query_string=rtrim($query_string," and "); $query_string="select * from writeups where {$query_string} order by $sort $order"; // group membership if ($s_group) { $group_param="Group member:"; foreach ($s_group as $group_val) { if ($group_val=="0") $group_dsp="No"; if ($group_val=="1") $group_dsp="Yes"; $group_param="{$group_param} {$group_dsp}, "; } $group_param=rtrim($group_param,", "); } } // ******** end database manipulation ******** if (! $exportcsv) { pagetable("begin"); if(!$print) { pageblock("left","begin"); sidemenu(); echo "

"; pageblock("left","end"); } pageblock("right","begin"); banner($print); echo "
"; // show search form if (!$print) { echo "
"; echo " "; echo "
"; // ID cell ***************** echo " ID
"; // ********************************** echo "
"; // Device cell ********************* echo " $device_term
"; // ********************************** echo "
"; // Subsystem cell ******************* echo " Subsystem
"; // ********************************** echo "
"; // Discovered cell ********************** echo " $discovered_term
"; // ********************************** echo "
"; // Report Date cell ***************** echo " Report Date Between
 and  "; // ********************************** echo "
"; // Report Time cell ***************** echo " Report Time Between
 and  "; // ********************************** echo "
"; // Discrepancy text cell ************ echo " Words in Discrepancy

"; // ********************************** echo "
"; // Reported by cell ***************** echo " Reported by
"; // ********************************** echo "
"; // functional cell ************ echo " $functional_term?  
"; if ($search) { $funcyesstate=$funcnostate=""; if (in_array("1",$s_functional,true)) $funcyesstate="selected"; if (in_array("0",$s_functional,true)) $funcnostate="selected"; } else { $funcyesstate=$funcnostate="selected"; } echo " "; // ********************************** echo "
"; // Group status cell ************** echo " Group Member?
"; if ($search) { $yesgroupstate=$nogroupstate=""; if (in_array("1",$s_group,true)) $yesgroupstate="selected"; if (in_array("0",$s_group,true)) $nogroupstate="selected"; } else { $yesgroupstate=$nogroupstate="selected"; }echo " "; // ************************************ echo "
"; // Status cell ********************** echo " Status
"; if ($search) { $openstate=$clsdstate=$dfrdstate=""; if (in_array("1",$s_status,true)) $openstate="selected"; if (in_array("2",$s_status,true)) $clsdstate="selected"; if (in_array("3",$s_status,true)) $dfrdstate="selected"; } else { $openstate=$clsdstate=$dfrdstate="selected"; } echo " "; // ********************************** echo "
"; // action by cell ************ echo " Status changed by
"; // *********************************** echo "
"; // action reason cell ********* echo " Status change reason
"; // *********************************** echo "
"; // Action taken text cell ************ echo " Words in Action Taken

"; // *********************************** echo "
"; // Action date cell ****************** echo " Action Taken Date Between
 and  "; // *********************************** echo "
"; // Action time cell ****************** echo " Action Taken Time Between
 and  "; // *********************************** $summarystat=$detailstat=""; if ($viewtype=="detail") { $detailstat="checked"; } else { $summarystat="checked"; } $idsort=$statussort=$datesort=$discsort=$devicesort=$subsyssort=$repbysort=$discrepsort=$funcsort=""; switch ($sort) { case "id": $idsort="checked"; break; case "status": $statussort="checked"; break; case "report_date": $datesort="checked"; break; case "discovered": $discsort="checked"; break; case "device": $devicesort="checked"; break; case "subsystem": $subsyssort="checked"; break; case "reported_by": $repbysort="checked"; break; case "discrepancy_text": $discrepsort="checked"; break; case "functional": $funcsort="checked"; break; default: $datesort="checked"; } $ascsort=$descsort=""; if ($order=="desc") { $descsort="checked"; } else { $ascsort="checked"; } echo "

   

Sort Field:
                                   
Sort Order:
       

       

"; } } // display the results if ($search) { if (! $exportcsv) { //display the search parameters used if (!$print) echo ""; echo " "; } else { echo ""; } echo "
Parameters used in this search "; if (!$print) { echo "        Scroll up to modify parameters
$status_param    $device_param    $subsystem_param    $id_param   
$discovered_param    $reportdate_param    $reporttime_param   
$discrepancytext_param
$repby_param    $func_param    $group_param   
$actionby_param    $reason_param   
$actiontext_param
$actiondate_param    $actiontime_param   

"; } $currentparams=arrayCopy($_REQUEST); if (! $exportcsv) { echo "
"; } $writeup=mysqli_query($drs_db,$query_string); // create an array of ids returned by the query string $result_ids=array(); while ($eachid=mysqli_fetch_assoc($writeup)) { $result_ids[]=$eachid['id']; } mysqli_data_seek($writeup,0); // create an array of all ids in groups $groupmems=array(); $groupmem_qry=mysqli_query($drs_db,"select writeupid from links"); while ($groupmemrow=mysqli_fetch_row($groupmem_qry)) { $groupmems[]=$groupmemrow[0]; } $groupmems=array_unique($groupmems); // determine how many group members are in results $member_count=0; foreach($result_ids as $result_id) { if (in_array($result_id,$groupmems)) $member_count += 1; } if (in_array("1",$s_group)) $show_groupmems=true; if (in_array("0",$s_group)) $show_nongroupmems=true; if ($show_groupmems == $show_nongroupmems) $num_results=mysqli_num_rows($writeup); //show members and nonmembers if ($show_groupmems && !$show_nongroupmems) $num_results=$member_count; //only show members if (!$show_groupmems && $show_nongroupmems) $num_results=mysqli_num_rows($writeup)-$member_count; //only show nonmembers if ($num_results > 0) { if ($exportcsv) { // generate csv file // create an array of lines of the csv data $csv_data=array(); $csv_data[]=['WriteupID','Status',$device_term,'Subsystem',$discovered_term_short,$functional_term,'Discrepancy','Group','Report date','Report time','Reported by','Action taken by','Status Change Reason','Action taken','Action date','Action time']; $csv_fp=fopen('php://temp', 'w+'); while ($tablerow = mysqli_fetch_assoc($writeup)) { // writeup id for csv $csv_id=$tablerow['id']; // determine status text if ($tablerow['status']==1) $csv_status_text="Open"; if ($tablerow['status']==2) $csv_status_text="Closed"; if ($tablerow['status']==3) $csv_status_text="Deferred"; // convert device number to name for csv $csv_dname=dblookup($drs_db,"devices","id","name",$tablerow["device"]); // convert subsystem number to name for csv $csv_ssname=dblookup($drs_db,"subsystems","id","name",$tablerow["subsystem"]); // discovered name for csv $csv_discovered=dblookup($drs_db,"discovered","id","whendiscoveredname",$tablerow["discovered"]); // determine functional text for csv if($tablerow["functional"]==1) { $csv_func_text="$functional_yes_short"; } else { $csv_func_text="$functional_no_short"; } // discrepancy text for csv $csv_disc_txt="{$tablerow["discrepancy_text"]}"; $csv_disc_txt=str_replace("\n","\r\n",$csv_disc_txt); // group name or number for csv $member_qry=mysqli_query($drs_db,"select linkgroup from links where writeupid=\"{$tablerow['id']}\""); $is_member=mysqli_num_rows($member_qry); // look up group name if ($is_member) { $group_count=$is_member; if ($group_count == 1) { $group_num=mysqli_fetch_row(mysqli_query($drs_db,"select linkgroup from links where writeupid=\"{$tablerow['id']}\""))[0]; $member_group_name=dblookup($drs_db,"groups","id","name",$group_num); if ($member_group_name) { $csv_member_group_name=$member_group_name; } else { $csv_member_group_name=$group_num; } } else { $csv_member_group_name="multiple"; } } else { $csv_member_group_name="none"; } // report date for csv $csv_report_date="{$tablerow["report_date"]}"; // report time for csv $csv_report_time="{$tablerow["report_time"]}"; // reported by text for csv $csv_reported_by_text="{$tablerow["reported_by"]}"; $csv_reported_by_text=str_replace("\n","\r\n",$csv_reported_by_text); // action taken by text for csv $techfname=dblookup($drs_db,"users","id","firstname","{$tablerow["action_by"]}"); $techlname=dblookup($drs_db,"users","id","lastname","{$tablerow["action_by"]}"); $csv_action_by="$techfname $techlname"; // status change reason for csv $csv_reasonname=dblookup($drs_db,"reasons","id","text","{$tablerow["action_reason"]}"); // action taken text for csv $csv_action_text="{$tablerow["action_text"]}"; $csv_action_text=str_replace("\n","\r\n",$csv_action_text); // action date for csv $csv_action_date="{$tablerow["action_date"]}"; // action time for csv $csv_action_time="{$tablerow["action_time"]}"; if (($show_groupmems == $show_nongroupmems) || ($is_member && $show_groupmems) || (!$is_member && $show_nongroupmems)) { // add line of results to csv array $csv_data[]=[$csv_id, $csv_status_text, $csv_dname, $csv_ssname, $csv_discovered, $csv_func_text, $csv_disc_txt, $csv_member_group_name, $csv_report_date, $csv_report_time, $csv_reported_by_text, $csv_action_by, $csv_reasonname, $csv_action_text, $csv_action_date, $csv_action_time]; } } foreach ($csv_data as $csv_fields) { // add row to csv buffer fputcsv($csv_fp, $csv_fields); } $csv_filename="data_export_" . date("Y-m-d") . ".csv"; // reset pointer back to start rewind($csv_fp); // send file contents $csv_contents=stream_get_contents($csv_fp); //fpassthru($csv_fp); // Close our pointer and free up memory and /tmp space fclose($csv_fp); echo $csv_contents; } else { if ($viewtype=="summary") { echo " "; while ($tablerow = mysqli_fetch_assoc($writeup)) { // determine if this is a member of a group $member_qry=mysqli_query($drs_db,"select linkgroup from links where writeupid=\"{$tablerow['id']}\""); $is_member=mysqli_num_rows($member_qry); // determine functional icon if($tablerow["functional"]==1) { $func_icon="\"$functional_yes_short\""; } else { $func_icon="\"$functional_no_short\""; } // determine status indicator if ($tablerow['status']==1) $statusind="
OPEN
"; if ($tablerow['status']==2) $statusind="
CLSD
"; if ($tablerow['status']==3) $statusind="
DFRD
"; // convert device number to name $dname=dblookup($drs_db,"devices","id","name",$tablerow["device"]); // convert discovered number to description $discname=dblookup($drs_db,"discovered","id","whendiscoveredname",$tablerow["discovered"]); // convert discovered number to description $discdesc=dblookup($drs_db,"discovered","id","whendiscovereddesc",$tablerow["discovered"]); // convert subsystem number to name $ssname=dblookup($drs_db,"subsystems","id","name",$tablerow["subsystem"]); $disc_txt="{$tablerow["discrepancy_text"]}"; // set group indicator if ($is_member) { $group_count=$is_member; if ($group_count == 1) { $group_num=mysqli_fetch_row(mysqli_query($drs_db,"select linkgroup from links where writeupid=\"{$tablerow['id']}\""))[0]; $member_group_name=dblookup($drs_db,"groups","id","name",$group_num); if ($member_group_name) { $imgtitle="Member of group: $member_group_name"; } else { $imgtitle="Member of group ID: $group_num"; } $disc_txt=$disc_txt."
\"GRP\"
"; } else { $disc_txt=$disc_txt."
\"GRP\"
"; } } if (($show_groupmems == $show_nongroupmems) || ($is_member && $show_groupmems) || (!$is_member && $show_nongroupmems)) { // print table row printf( "\n", $tablerow["id"],$tablerow["id"], $statusind, $tablerow["report_date"], $discdesc,$discname, $dname, $ssname, $tablerow["reported_by"], $disc_txt, $func_icon ); } } echo "
ID Status Date $discovered_term_short $device_term Subsystem Reported by Discrepancy $functional_term_short
%s %s %s %s %s %s %s %s %s
\n"; } elseif ($viewtype=="detail") { echo "
"; while ($tablerow = mysqli_fetch_assoc($writeup)) { // determine if this is a member of a group $member_qry=mysqli_query($drs_db,"select linkgroup from links where writeupid=\"{$tablerow['id']}\""); $is_member=mysqli_num_rows($member_qry); if (($show_groupmems == $show_nongroupmems) || ($is_member && $show_groupmems) || (!$is_member && $show_nongroupmems)) { displaywriteup($tablerow['id']); echo "
"; } } echo "
"; } } } else { echo "No writeups match your search parameters.
"; } } if (! $exportcsv) { echo "
"; banner($print); pageblock("right","end"); pagetable("end"); framework("end","","",$print); } ?>