Index: trunk/ippTasks/survey.pro
===================================================================
--- trunk/ippTasks/survey.pro	(revision 29587)
+++ trunk/ippTasks/survey.pro	(revision 29720)
@@ -32,4 +32,5 @@
  book create SURVEY_CHIP_BG
  book create SURVEY_WARP_BG
+ book create SURVEY_PUBLISH
  $haveSurveyBooks = TRUE
 end
@@ -44,6 +45,7 @@
 $SURVEY_CHIP_BG_DB = 0
 $SURVEY_WARP_BG_DB = 0
-
-$SURVEY_EXEC = 120
+$SURVEY_PUBLISH_DB = 0
+
+$SURVEY_EXEC = 5
 $SURVEY_POLL = 10
 $SURVEY_TIMEOUT = 600
@@ -77,4 +79,7 @@
     active true
   end
+  task survey.publish
+    active true
+  end
 end
 
@@ -105,4 +110,7 @@
   end
   task survey.warp.bg
+    active false
+  end
+  task survey.publish
     active false
   end
@@ -355,4 +363,32 @@
   book listbook SURVEY_WARP_BG
 end
+
+# user functions to manipulate publish labels
+macro survey.add.publish
+  if ($0 != 3)
+    echo "USAGE: survey.add.publish (label) (client_id)"
+    break
+  end
+  book newpage SURVEY_PUBLISH $1
+  book setword SURVEY_PUBLISH $1 CLIENT_ID $2
+  book setword SURVEY_PUBLISH $1 STATE PENDING
+end
+
+macro survey.del.publish
+  if ($0 != 2)
+    echo "USAGE: survey.del.publish (label)"
+    break
+  end
+  book delpage SURVEY_PUBLISH $1
+end
+
+macro survey.show.publish
+  if ($0 != 1)
+    echo "USAGE: survey.show.publish"
+    break
+  end
+  book listbook SURVEY_PUBLISH
+end
+
 
 task survey.diff
@@ -579,5 +615,5 @@
     end
     
-    echo $run
+    # echo $run
     command $run
   end
@@ -651,5 +687,5 @@
     end
     
-    echo $run
+    # echo $run
     command $run
   end
@@ -674,4 +710,5 @@
   end
 end
+
 
 task survey.addstar
@@ -723,5 +760,5 @@
     
     $run = $run -definebyquery -destreaked -label $label -set_dvodb $dvodb -set_minidvodb_group $minidvodb_group -set_minidvodb -set_label $minidvodb_group
-    echo $run
+    # echo $run
     command $run
   end
@@ -934,5 +971,5 @@
     end
     
-    echo $run
+    # echo $run
     command $run
   end
@@ -957,4 +994,7 @@
   end
 end
+
+
+
 
 task survey.warp.bg
@@ -1004,5 +1044,5 @@
     end
     
-    echo $run
+    # echo $run
     command $run
   end
@@ -1027,2 +1067,72 @@
   end
 end
+
+task survey.publish
+  host local
+ 
+  periods      -poll $SURVEY_POLL
+  periods      -exec $SURVEY_EXEC
+  periods      -timeout $SURVEY_TIMEOUT
+  npending     1
+
+#  stdout $LOGDIR/survey.publish.log
+#  stderr $LOGDIR/survey.publish.log
+
+  # generate publish runs
+  task.exec
+    book npages SURVEY_PUBLISH -var N
+    if ($N == 0)
+      echo "No labels for processing"
+      break
+    endif
+
+    book getpage SURVEY_PUBLISH 0 -var label -key STATE NEW
+    if ("$label" == "NULL")
+      # All labels have been done --- reset
+      echo "Resetting labels"
+      for i 0 $N
+        book getpage SURVEY_PUBLISH $i -var label
+	book setword SURVEY_PUBLISH $label STATE NEW
+      end
+      book getpage SURVEY_PUBLISH 0 -var label -key STATE NEW
+
+      # Select different database
+      $SURVEY_PUBLISH ++
+      if ($SURVEY_PUBLISH >= $DB:n) set SURVEY_PUBLISH = 0
+    end
+
+    book setword SURVEY_PUBLISH $label STATE DONE
+    book getword SURVEY_PUBLISH $label CLIENT_ID -var client_id
+  
+    $run = pubtool -definerun -label $label -client_id $client_id
+
+    if ($DB:n == 0)
+      option DEFAULT
+    else
+      $run = $run -dbname $DB:$SURVEY_PUBLISH
+      option $DB:$SURVEY_PUBLISH
+    end
+    
+    echo $run
+    command echo $run
+  end
+
+  # success
+  task.exit    0
+    echo "Success"
+  end
+
+  # locked list
+  task.exit    default
+    showcommand failure
+  end
+
+  task.exit    crash
+    showcommand crash
+  end
+
+  # operation times out?
+  task.exit    timeout
+    showcommand timeout
+  end
+end
