Index: trunk/ippMonitor/czartool/czarpoll.pl
===================================================================
--- trunk/ippMonitor/czartool/czarpoll.pl	(revision 38200)
+++ trunk/ippMonitor/czartool/czarpoll.pl	(revision 38206)
@@ -45,7 +45,9 @@
         "staticsky",
         "diff",
+        "fullforce",
         "dist",
-        "pub",
-        "chipbackground");
+        "pub");
+
+# "chipbackground"
 
 my @ippToPspsStages = (
Index: trunk/ippMonitor/czartool/czartool.pl
===================================================================
--- trunk/ippMonitor/czartool/czartool.pl	(revision 38200)
+++ trunk/ippMonitor/czartool/czartool.pl	(revision 38206)
@@ -16,5 +16,5 @@
 my $interval = undef;
 
-GetOptions ( 
+GetOptions (
         "dbname|d=s" => \$czarDbName,
         "interval|i=s" => \$interval,
@@ -32,5 +32,7 @@
 my @publishingLabels = undef;
 
-my @stages = ("chip", "cam", "fake", "warp", "stack", "staticsky", "diff", "dist", "pub", "chipbackground"); 
+my @stages = ("chip", "cam", "fake", "warp", "stack", "staticsky", "diff", "fullforce", "dist", "pub");
+# "chipbackground"
+
 promptPoll();
 
@@ -48,5 +50,5 @@
 ###########################################################################
 #
-# Polls waiting for input from user 
+# Polls waiting for input from user
 #
 ###########################################################################
@@ -124,5 +126,5 @@
         printf("| %12s ", $server);
         chomp($results[0]);
-        chomp($results[1]); 
+        chomp($results[1]);
         printf("|   %3s   |         %3s          |\n", $results[0], $results[1]);
     }
Index: trunk/ippMonitor/czartool/czartool/CzarDb.pm
===================================================================
--- trunk/ippMonitor/czartool/czartool/CzarDb.pm	(revision 38200)
+++ trunk/ippMonitor/czartool/czartool/CzarDb.pm	(revision 38206)
@@ -280,8 +280,10 @@
 #        push @{$labels}, 'LAP.PV3.20140730.restack';
 #        push @{$labels}, 'LAP.PV3.20140730.bigmem';
-        push @{$labels}, 'LAP.PV3.20140730.skycal01';
-        push @{$labels}, 'LAP.PV3.20140730.sky01.remote';
-        push @{$labels}, 'LAP.PV3.20140730.diff01';
-        push @{$labels}, 'LAP.PV3.20140730.diff01.left';
+#        push @{$labels}, 'LAP.PV3.20140730.skycal01';
+#        push @{$labels}, 'LAP.PV3.20140730.sky01.remote';
+#        push @{$labels}, 'LAP.PV3.20140730.diff01';
+#        push @{$labels}, 'LAP.PV3.20140730.diff01.left';
+        push @{$labels}, 'LAP.PV3.20140730.ff01';
+        push @{$labels}, 'LAP.PV3.20140730.ff01.left';
         push @{$labels}, 'LAP.PV3W.20150312';
 #       push @{$labels}, 'SAS.20141118';
Index: trunk/ippMonitor/czartool/czartool/DayMetrics.pm
===================================================================
--- trunk/ippMonitor/czartool/czartool/DayMetrics.pm	(revision 38200)
+++ trunk/ippMonitor/czartool/czartool/DayMetrics.pm	(revision 38206)
@@ -28,8 +28,8 @@
     # Call the constructor of the parent class
     my $self = $class->SUPER::new(
-            $_[1],  # config object 
+            $_[1],  # config object
             $_[2],  # verbose
             $_[3]   # save_temps
-            ); 
+            );
 
     $self->{day} = $_[4];
@@ -78,5 +78,5 @@
     print $htmlFile "<a href=\"../$previousDay/index.html\"> \< previous day</a> | <a href=\"../index.html\">all</a> | <a href=\"../$nextDay/index.html\">next day \></a><br>\n";
     print $htmlFile "Measured from $self->{begin} to $self->{end} HST<br>\n";
-    printf ( $htmlFile "%d exposures taken on summit last night, %d through chip today</h5>\n", 
+    printf ( $htmlFile "%d exposures taken on summit last night, %d through chip today</h5>\n",
             $summitExposures, $chipMetrics->getProcessed() ? $chipMetrics->getProcessed() : 0 );
     print $htmlFile "</head>\n";
@@ -99,14 +99,15 @@
 
     my @stages = (
-            "chip", 
-            "cam", 
-            "fake", 
-            "warp", 
-            "stack", 
-            "staticsky", 
-            "diff", 
-            "dist",
-            "chipbackground");
-
+            "chip",
+            "cam",
+            "fake",
+            "warp",
+            "stack",
+            "staticsky",
+            "diff",
+            "fullforce",
+            "dist");
+
+#           "chipbackground"
 
 # loop through all labels and create tables for each that have content
@@ -175,6 +176,6 @@
         $table .= "<br>\n";
 
-        if ($haveLabelData) { 
-            $labelTables{$label} = $table; 
+        if ($haveLabelData) {
+            $labelTables{$label} = $table;
             if ($self->{verbose}) {print " - $label\n";}
         }
@@ -274,13 +275,13 @@
     # MDF surveys
     my @mdfs = ("M31.nightlyscience",
-            "MD01.nightlyscience", 
-            "MD02.nightlyscience", 
-            "MD03.nightlyscience", 
-            "MD04.nightlyscience", 
-            "MD05.nightlyscience", 
-            "MD06.nightlyscience", 
-            "MD07.nightlyscience", 
-            "MD08.nightlyscience", 
-            "MD09.nightlyscience", 
+            "MD01.nightlyscience",
+            "MD02.nightlyscience",
+            "MD03.nightlyscience",
+            "MD04.nightlyscience",
+            "MD05.nightlyscience",
+            "MD06.nightlyscience",
+            "MD07.nightlyscience",
+            "MD08.nightlyscience",
+            "MD09.nightlyscience",
             "MD10.nightlyscience",
             "MD11.nightlyscience");
Index: trunk/ippMonitor/czartool/czartool/Gpc1Db.pm
===================================================================
--- trunk/ippMonitor/czartool/czartool/Gpc1Db.pm	(revision 38200)
+++ trunk/ippMonitor/czartool/czartool/Gpc1Db.pm	(revision 38206)
@@ -19,18 +19,18 @@
     ${$id} = $stage."_id";
 
-    if ($stage eq "chip") {${$joinTable}="chipProcessedImfile";}
-    elsif ($stage eq "cam") {${$joinTable}="camProcessedExp";}
-    elsif ($stage eq "fake") {${$joinTable}="fakeProcessedImfile";}
-    elsif ($stage eq "warp") {${$joinTable}="warpSkyfile";}
-    elsif ($stage eq "stack") {${$joinTable}="stackSumSkyfile";}
+    if ($stage eq "chip")         {${$joinTable}="chipProcessedImfile";}
+    elsif ($stage eq "cam")       {${$joinTable}="camProcessedExp";}
+    elsif ($stage eq "fake")      {${$joinTable}="fakeProcessedImfile";}
+    elsif ($stage eq "warp")      {${$joinTable}="warpSkyfile";}
+    elsif ($stage eq "stack")     {${$joinTable}="stackSumSkyfile";}
     elsif ($stage eq "staticsky") {${$id} = "sky_id"; ${$joinTable}="staticskyResult";}
-    elsif ($stage eq "diff") {${$joinTable}="diffSkyfile";}
-    elsif ($stage eq "magic") {${$joinTable}="magicNodeResult";}
-    elsif ($stage eq "magicDS") {${$id} = "magic_ds_id"; ${$joinTable}="magicDSFile";}
-    elsif ($stage eq "dist") {${$joinTable}="distComponent";}
-    elsif ($stage eq "pub") {${$joinTable}="publishDone";}
+    elsif ($stage eq "diff")      {${$joinTable}="diffSkyfile";}
+    elsif ($stage eq "fullforce") {${$id} = "ff_id"; ${$joinTable}="fullForceResult";}
+    elsif ($stage eq "magic")     {${$joinTable}="magicNodeResult";}
+    elsif ($stage eq "magicDS")   {${$id} = "magic_ds_id"; ${$joinTable}="magicDSFile";}
+    elsif ($stage eq "dist")      {${$joinTable}="distComponent";}
+    elsif ($stage eq "pub")       {${$joinTable}="publishDone";}
     elsif ($stage eq "chipbackground") {${$id}="chip_bg_id"; ${$joinTable}="chipBackgroundImfile";}
     else {
-
         print "* ERROR: could not find joinTable and ID for '$stage' stage\n";
         return 0;
@@ -55,4 +55,5 @@
     elsif ($stage eq "staticsky" ) {return "staticskyRun";}
     elsif ($stage eq "diff" ) {return "diffRun";}
+    elsif ($stage eq "fullforce" ) {return "fullForceRun";}
     elsif ($stage eq "magic" ) {return "magicRun";}
     elsif ($stage eq "magicDS" ) {return "magicDSRun";}
@@ -67,5 +68,5 @@
 #
 # Returns the number of science exposures taken 'last night' for a given day
-# 
+#
 # Notes:
 #
@@ -78,11 +79,11 @@
     my ($self, $day) = @_;
 
-    my $begin = "$day 03"; 
-    my $end = "$day 17"; 
+    my $begin = "$day 03";
+    my $end = "$day 17";
 
     my $query = $self->{_db}->prepare(<<SQL);
     SELECT COUNT(*)
-        FROM summitExp 
-        WHERE dateobs > '$begin' 
+        FROM summitExp
+        WHERE dateobs > '$begin'
         AND dateobs < '$end' AND
         exp_type = 'OBJECT';
@@ -96,5 +97,5 @@
 #
 # Returns the number of exposures between two dates that have been registered with chip
-# 
+#
 # Notes:
 #
@@ -109,8 +110,8 @@
 
     my $query = $self->{_db}->prepare(<<SQL);
-        SELECT rawExp.exp_id 
-        FROM chipRun, rawExp 
-        WHERE chipRun.exp_id = rawExp.exp_id 
-        AND rawExp.dateobs >= '$beginDate' 
+        SELECT rawExp.exp_id
+        FROM chipRun, rawExp
+        WHERE chipRun.exp_id = rawExp.exp_id
+        AND rawExp.dateobs >= '$beginDate'
         AND rawExp.dateobs <= '$endDate';
 SQL
@@ -145,5 +146,5 @@
 
     my $query =  $self->{_db}->prepare(<<SQL);
-    SELECT COUNT(DISTINCT $id) 
+    SELECT COUNT(DISTINCT $id)
         FROM $table
         JOIN $joinTable USING ($id)
@@ -164,7 +165,7 @@
 
     my $query = $self->{_db}->prepare(<<SQL);
-    SELECT priority 
-        FROM Label 
-        WHERE label LIKE '$label' 
+    SELECT priority
+        FROM Label
+        WHERE label LIKE '$label'
 SQL
 
@@ -188,11 +189,11 @@
 
     my $query = $self->{_db}->prepare(<<SQL);
-    SELECT COUNT(*) 
-        FROM summitExp 
-        JOIN newExp USING (summit_id) 
-        JOIN rawExp USING(exp_id) 
-        JOIN chipRun USING(exp_id) 
-        WHERE summitExp.dateobs > '$date' 
-        AND summitExp.exp_type = 'OBJECT' 
+    SELECT COUNT(*)
+        FROM summitExp
+        JOIN newExp USING (summit_id)
+        JOIN rawExp USING(exp_id)
+        JOIN chipRun USING(exp_id)
+        WHERE summitExp.dateobs > '$date'
+        AND summitExp.exp_type = 'OBJECT'
         AND chipRun.label = "$label";
 SQL
@@ -225,8 +226,8 @@
             $query = $self->{_db}->prepare(<<SQL);
             SELECT COUNT(state)
-                FROM $table JOIN $joinTable 
-                USING($id) 
+                FROM $table JOIN $joinTable
+                USING($id)
                 WHERE label LIKE '$label'
-                AND state = 'update' 
+                AND state = 'update'
                 AND data_state = 'update';
 SQL
@@ -237,11 +238,11 @@
                 FROM $table
                 WHERE label LIKE '$label'
-                AND state = 'update'; 
-SQL
-        
+                AND state = 'update';
+SQL
+
         }
 
     }
-    # 'new' stuff really includes 'update' stuff, at least for LAP. This is a hack, but there you go    
+    # 'new' stuff really includes 'update' stuff, at least for LAP. This is a hack, but there you go
     elsif ($state eq "new") {
 
@@ -249,8 +250,8 @@
             # get count of runs in new state and update state that have components left to update
             $query = $self->{_db}->prepare(<<SQL);
-            SELECT COUNT(DISTINCT $id)  
+            SELECT COUNT(DISTINCT $id)
                 FROM $table LEFT JOIN $joinTable
                 USING($id)
-                WHERE label LIKE '$label' 
+                WHERE label LIKE '$label'
                 AND (state = 'new' OR (state = 'update' AND data_state = 'update'))
 SQL
@@ -260,5 +261,5 @@
                 FROM $table
                 WHERE label LIKE '$label'
-                AND (state = 'new' OR state = 'update'); 
+                AND (state = 'new' OR state = 'update');
 SQL
         }
@@ -267,7 +268,7 @@
 
         $query = $self->{_db}->prepare(<<SQL);
-        SELECT COUNT(state)  
-            FROM $table 
-            WHERE label LIKE '$label' 
+        SELECT COUNT(state)
+            FROM $table
+            WHERE label LIKE '$label'
             AND state = '$state'
 SQL
@@ -289,10 +290,10 @@
 
             my $query = $self->{_db}->prepare(<<SQL);
-            SELECT component, streak_frac 
-                FROM magicDSFile  
-                JOIN magicDSRun USING(magic_ds_id) 
-                JOIN camRun USING(cam_id) 
-                JOIN chipRun USING(chip_id) 
-                WHERE exp_id = $exp_id 
+            SELECT component, streak_frac
+                FROM magicDSFile
+                JOIN magicDSRun USING(magic_ds_id)
+                JOIN camRun USING(cam_id)
+                JOIN chipRun USING(chip_id)
+                WHERE exp_id = $exp_id
                 AND camRun.label LIKE "%nightlyscience"
                 AND component LIKE "XY%";
@@ -306,5 +307,5 @@
 ###########################################################################
 #
-# Returns average magic mask fraction, sum of mask fractions and chip count 
+# Returns average magic mask fraction, sum of mask fractions and chip count
 # for a particular exposure
 #
@@ -314,10 +315,10 @@
 
             my $query = $self->{_db}->prepare(<<SQL);
-            SELECT AVG(streak_frac), SUM(streak_frac), COUNT(*) 
-                FROM magicDSFile  
-                JOIN magicDSRun USING(magic_ds_id) 
-                JOIN camRun USING(cam_id) 
-                JOIN chipRun USING(chip_id) 
-                WHERE exp_id = $exp_id 
+            SELECT AVG(streak_frac), SUM(streak_frac), COUNT(*)
+                FROM magicDSFile
+                JOIN magicDSRun USING(magic_ds_id)
+                JOIN camRun USING(cam_id)
+                JOIN chipRun USING(chip_id)
+                WHERE exp_id = $exp_id
                 AND camRun.label LIKE "%nightlyscience"
                 AND component LIKE "XY%"
Index: trunk/ippMonitor/czartool/czartool/Plotter.pm
===================================================================
--- trunk/ippMonitor/czartool/czartool/Plotter.pm	(revision 38200)
+++ trunk/ippMonitor/czartool/czartool/Plotter.pm	(revision 38206)
@@ -11,14 +11,16 @@
 
 my @allStages = (
-        "chip",
-        "cam",
-        "fake",
-        "warp",
-        "stack",
-        "staticsky",
-        "diff",
-        "dist",
-        "pub",
-        "chipbackground");
+    "chip",
+    "cam",
+    "fake",
+    "warp",
+    "stack",
+    "staticsky",
+    "diff",
+    "fullforce",
+    "dist",
+    "pub");
+
+#        "chipbackground"
 
 my @allIppToPspsStages = (
@@ -671,5 +673,5 @@
         "set ylabel \"Space (TB)\";" .
         "set xtic rotate by -90 scale 0;" .
-	"set yrange [:100];" .
+        "set yrange [:100];" .
         "plot '".$tmpFile->filename."' " .
         "using 2:xtic(1) t \"Used\" lt 7," .
@@ -716,5 +718,5 @@
         "set style data histograms;" .
         "set ylabel \"Space (TB)\";" .
-	"set yrange [:100];" .
+        "set yrange [:100];" .
         "set xtic rotate by -90 scale 0;" .
         "plot '".$tmpFile->filename."' " .
Index: trunk/ippMonitor/czartool/roboczar.pl
===================================================================
--- trunk/ippMonitor/czartool/roboczar.pl	(revision 38200)
+++ trunk/ippMonitor/czartool/roboczar.pl	(revision 38206)
@@ -22,13 +22,15 @@
 
 my @stages = (
-        "chip", 
-        "cam", 
-        "fake", 
-        "warp", 
-        "stack", 
-        "staticsky", 
-        "diff", 
-        "dist",
-        "chipbackground"); # TODO get from Pantasks
+        "chip",
+        "cam",
+        "fake",
+        "warp",
+        "stack",
+        "staticsky",
+        "diff",
+        "fullforce",
+        "dist"); # TODO get from Pantasks
+
+#       "chipbackground"
 
 my @interestedServers = $config->getRoboczarInterestedServers();
@@ -57,9 +59,9 @@
 
     if ($anythingToReport && $message ne $lastMessage) {
-    
+
 print "\n\n$message\n\n";
 
         sendEmail($config->getRoboczarEmail(),
-                "Roboczar warnings", 
+                "Roboczar warnings",
                 "$message\n");
     }
@@ -101,5 +103,5 @@
 
         if ($stageMetrics->getStuck()) {
-        
+
             ${$message} = ${$message} ."\n - '$stage' is stuck with ".$stageMetrics->getFinalPending()." pending exposures (and ".$stageMetrics->getFaults()." faults)";
             $anyStuckStages = 1;
@@ -112,5 +114,5 @@
 ###########################################################################
 #
-# Checks that the important servers are running 
+# Checks that the important servers are running
 #
 ###########################################################################
@@ -141,9 +143,9 @@
 
     return $anythingToReport;
-} 
+}
 
 ###########################################################################
 #
-# Sends an email 
+# Sends an email
 #
 ###########################################################################
Index: trunk/ippMonitor/raw/czartool_labels.php
===================================================================
--- trunk/ippMonitor/raw/czartool_labels.php	(revision 38200)
+++ trunk/ippMonitor/raw/czartool_labels.php	(revision 38206)
@@ -34,4 +34,5 @@
         "stack",
         "staticsky",
+        "fullforce",
         "diff",
         "dist", 
@@ -39,4 +40,43 @@
 	);
         # "chipbackground");
+
+$getFailures = array(
+        "chip"      => "failedChipProcessedImfile.php",
+        "cam"       => "failedCamProcessedExp.php",
+        "fake"      => "failedFakeProcessedImfile.php",
+        "warp"      => "failedWarpSkyfiles.php",
+        "stack"     => "failedStackSkyfile.php",
+        "staticsky" => "failedStaticsky.php",
+        "fullforce" => "failedChipProcessedImfile.php",
+        "diff"      => "failedDiffSkyfile.php",
+        "dist"      => "NONE", 
+        "pub"       => "publishDone.php",
+);	     
+
+$mainTable = array(
+        "chip"      => "chipRun",
+        "cam"       => "camRun",
+        "fake"      => "fakeRun",
+        "warp"      => "warpRun",
+        "stack"     => "stackRun",
+        "staticsky" => "staticskyRun",
+        "fullforce" => "fullForceRun",
+        "diff"      => "diffRun",
+        "dist"      => "distRun", 
+        "pub"       => "publishRun",
+);	     
+
+$addSearchState = array(
+        "chip"      => 0,
+        "cam"       => 0,
+        "fake"      => 1,
+        "warp"      => 0,
+        "stack"     => 0,
+        "staticsky" => 0,
+        "fullforce" => 0,
+        "diff"      => 0,
+        "dist"      => 0,
+        "pub"       => 0,
+);	     
 
 $servers=array(
@@ -448,45 +488,29 @@
         $anyFaults = false; 
 
-        // Note: Do not include the state for chip, cam, and warp so that both new and update faults are listed
-        $link = "failedChipProcessedImfile.php?pass=" . $pass . "&proj=" . $proj . "&chipRun.label=" . $thisLabel ; # . "&chipRun.state=".$searchState;
-        getStateAndFaults($db, $thisLabel, $selectedState, "chip", $str, $anyFaults);
-        createFormattedTableCell($anyFaults, $link, $str, $anyFaults, 0);
-
-        $link = "failedCamProcessedExp.php?pass=" . $pass . "&proj=" . $proj . "&camRun.label=" . $thisLabel ; # . "&camRun.state=".$searchState;
-        getStateAndFaults($db, $thisLabel, $selectedState, "cam", $str, $anyFaults);
-        createFormattedTableCell($anyFaults, $link, $str, $anyFaults, 0);
-
-        $link =  "failedFakeProcessedImfile.php?pass=" . $pass . "&proj=" . $proj . "&fakeRun.label=" . $thisLabel . "&fakeRun.state=".$searchState;
-        getStateAndFaults($db, $thisLabel, $selectedState, "fake", $str, $anyFaults);
-        createFormattedTableCell($anyFaults, $link, $str, $anyFaults, 0);
-
-        $link = "failedWarpSkyfiles.php?pass=" . $pass . "&proj=" . $proj . "&warpRun.label=" . $thisLabel ; # . "&warpRun.state=".$searchState;
-        getStateAndFaults($db, $thisLabel, $selectedState, "warp", $str, $anyFaults);
-        createFormattedTableCell($anyFaults, $link, $str, $anyFaults, 0);
-
-        $link = "failedStackSkyfile.php?pass=" . $pass . "&proj=" . $proj . "&stackRun.label=" . $thisLabel . "&stackRun.state=".$searchState;
-        getStateAndFaults($db, $thisLabel, $selectedState, "stack", $str, $anyFaults);
-        createFormattedTableCell($anyFaults, $link, $str, $anyFaults, 0);
-
-        $link = "failedStaticsky.php?pass=" . $pass . "&proj=" . $proj . "&staticskyRun.label=" . $thisLabel . "&staticskyRun.state=".$searchState;
-        getStateAndFaults($db, $thisLabel, $selectedState, "staticsky", $str, $anyFaults);
-        createFormattedTableCell($anyFaults, $link, $str, $anyFaults, 0);
-
-        $link = "failedDiffSkyfile.php?pass=" . $pass . "&proj=" . $proj . "&diffRun.label=" . $thisLabel . "&diffRun.state=".$searchState;
-        getStateAndFaults($db, $thisLabel, $selectedState, "diff", $str, $anyFaults);
-        createFormattedTableCell($anyFaults, $link, $str, $anyFaults, 0);
-
-        $link = $defaultlink;
-        getStateAndFaults($db, $thisLabel, $selectedState, "dist", $str, $anyFaults);
-        createFormattedTableCell($anyFaults, $link, $str, $anyFaults, (!$isUpdate && !$distributing) ? "gray" : null);
-
-        $link = "publishDone.php?pass=" . $pass . "&proj=" . $proj . "&publishRun.label=" . $thisLabel . "&publishRun.state=".$searchState;
-        getStateAndFaults($db, $thisLabel, $selectedState, "pub", $str, $anyFaults);
-        createFormattedTableCell($anyFaults, $link, $str, $anyFaults, (!$isUpdate && !$publishing) ? "gray" : null);
-
-        $link = $defaultlink;
-        getStateAndFaults($db, $thisLabel, $selectedState, "chipbackground", $str, $anyFaults);
-        createFormattedTableCell($anyFaults, $link, $str, $anyFaults, 0);
-
+        foreach ($stages as &$stage) {
+          // Note: Do not include the state for chip, cam, and warp so that both new and update faults are listed
+	  $myTable    = $mainTable[$stage];
+	  $myFailures = $getFailures[$stage];
+
+	  if ("$myFailures" == "NONE") {
+            $link = $defaultlink;
+          } else {
+            $link = $getFailures[$stage] . "?pass=" . $pass . "&proj=" . $proj . "&" . $myTable . ".label=" . $thisLabel;
+	    if ($addSearchState[$stage]) {
+              // Note: Do not include the state for chip, cam, and warp so that both new and update faults are listed
+              $link .= "&" . $myTable . ".state=" . $searchState;
+            }
+          }
+          getStateAndFaults($db, $thisLabel, $selectedState, $stage, $str, $anyFaults);
+
+	  $cellcolor = 0;
+	  if ("$stage" == "dist") { 
+	    $cellcolor = (!$isUpdate && !$distributing) ? "gray" : 0;
+          }
+          if ("$stage" == "pub") {
+	    $cellcolor = (!$isUpdate && !$publishing) ? "gray" : 0;
+          }
+          createFormattedTableCell($anyFaults, $link, $str, $anyFaults, $cellcolor);
+        }
         echo "</tr>\n";
     }
