示例#1
0
 /**
  * Store the form's values for this job.
  * @param JOB $obj
  * @access private
  */
 public function commit($obj)
 {
     parent::commit($obj);
     // after the object has been stored with (possible) new assignee and reporter
     // fix up the subscriptions, maintaining at most one per unique user
     $creator = $obj->creator();
     $reporter = $obj->reporter();
     $assignee = $obj->assignee();
     $creator_equal_reporter = $creator->equals($reporter);
     if ($assignee) {
         $creator_equal_assignee = $creator->equals($assignee);
         $assignee_equal_reporter = $assignee->equals($reporter);
     } else {
         $creator_equal_assignee = false;
         $assignee_equal_reporter = false;
     }
     $subscribe_creator_explicit = $this->value_for('subscribe_creator');
     $subscribe_reporter_explicit = $this->value_for('subscribe_reporter');
     $subscribe_assignee_explicit = $this->value_for('subscribe_assignee');
     $subscribe_creator = $subscribe_creator_explicit || $creator_equal_reporter && $subscribe_reporter_explicit || $creator_equal_assignee && $subscribe_assignee_explicit;
     $subscribe_reporter = $subscribe_reporter_explicit || $creator_equal_reporter && $subscribe_creator_explicit || $assignee_equal_reporter && $subscribe_assignee_explicit;
     $subscribe_assignee = $subscribe_assignee_explicit || $creator_equal_assignee && $subscribe_creator_explicit || $assignee_equal_reporter && $subscribe_reporter_explicit;
     if ($creator) {
         $subscriber = $creator->subscriber();
         if ($subscriber->email) {
             $subscriber->set_subscribed($obj, Subscribe_entry, $subscribe_creator);
         }
     }
     if ($reporter && !$creator_equal_reporter) {
         $subscriber = $reporter->subscriber();
         if ($subscriber->email) {
             $subscriber->set_subscribed($obj, Subscribe_entry, $subscribe_reporter);
         }
     }
     if ($assignee && !$creator_equal_assignee && !$assignee_equal_reporter) {
         $subscriber = $assignee->subscriber();
         if ($subscriber->email) {
             $subscriber->set_subscribed($obj, Subscribe_entry, $subscribe_assignee);
         }
     }
 }