diff --git a/include/class.dynamic_forms.php b/include/class.dynamic_forms.php
index 520447dc2078922758e6481fe3903ca64d5e0c19..479e94736fd3c59e263e0ab017ad968837e94589 100644
--- a/include/class.dynamic_forms.php
+++ b/include/class.dynamic_forms.php
@@ -1104,6 +1104,8 @@ class DynamicFormEntry extends VerySimpleModel {
      * Parameters:
      * $filter - (callback) function to receive each field and return
      *      boolean true if the field's errors are significant
+     * $options - options to pass to form and fields.
+     *
      */
     function isValid($filter=false, $options=array()) {
 
diff --git a/include/class.task.php b/include/class.task.php
index bae276155174c8d33f15986c4960ad0fb3bc1061..867d9151c24eb10c6f0b9410021763c860d876f0 100644
--- a/include/class.task.php
+++ b/include/class.task.php
@@ -437,6 +437,7 @@ class Task extends TaskModel implements RestrictedAccess, Threadable {
     function setStatus($status, $comments='') {
         global $thisstaff;
 
+         $ecb = null;
         switch($status) {
         case 'open':
             if ($this->isOpen())
@@ -444,6 +445,10 @@ class Task extends TaskModel implements RestrictedAccess, Threadable {
 
             $this->reopen();
             $this->closed = null;
+
+            $ecb = function ($t) {
+                $t->logEvent('reopened', false, null, 'closed');
+            };
             break;
         case 'closed':
             if ($this->isClosed())
@@ -451,6 +456,9 @@ class Task extends TaskModel implements RestrictedAccess, Threadable {
 
             $this->close();
             $this->closed = SqlFunction::NOW();
+            $ecb = function($t) {
+                $t->logEvent('closed');
+            };
             break;
         default:
             return false;
@@ -459,6 +467,9 @@ class Task extends TaskModel implements RestrictedAccess, Threadable {
         if (!$this->save(true))
             return false;
 
+        // Log events via callback
+        if ($ecb) $ecb($this);
+
         if ($comments) {
             $errors = array();
             $this->postNote(array(
@@ -528,8 +539,7 @@ class Task extends TaskModel implements RestrictedAccess, Threadable {
                 if ($thisstaff && $thisstaff->getId() == $assignee->getId())
                     $evd['claim'] = true;
                 else
-                    $evd['staff'] = $assignee;
-
+                    $evd['staff'] = array($assignee->getId(), $assignee->getName());
             }
         } elseif ($assignee instanceof Team) {
             if ($this->getTeamId() == $assignee->getId()) {