From 2fb415e85fb4d73bdfea76699b32368e750e6935 Mon Sep 17 00:00:00 2001
From: Jaap Jansma <jaap.jansma@civicoop.org>
Date: Thu, 6 Dec 2018 12:12:36 +0100
Subject: [PATCH] Fixed issue with output field handlers

---
 Civi/DataProcessor/Factory.php                |  1 +
 .../OptionFieldOutputHandler.php              |  2 +-
 .../RawFieldOutputHandler.php                 |  2 +-
 .../DataProcessor/Source/MailingJobSource.php | 35 +++++++++++++++++++
 4 files changed, 38 insertions(+), 2 deletions(-)
 create mode 100644 Civi/DataProcessor/Source/MailingJobSource.php

diff --git a/Civi/DataProcessor/Factory.php b/Civi/DataProcessor/Factory.php
index 2dce3a5b..cb292583 100644
--- a/Civi/DataProcessor/Factory.php
+++ b/Civi/DataProcessor/Factory.php
@@ -107,6 +107,7 @@ class Factory {
     $this->addDataSource('event', 'Civi\DataProcessor\Source\EventSource', E::ts('Event'));
     $this->addDataSource('participant', 'Civi\DataProcessor\Source\ParticipantSource', E::ts('Participant'));
     $this->addDataSource('mailing', 'Civi\DataProcessor\Source\MailingSource', E::ts('Mailing'));
+    $this->addDataSource('mailing_job', 'Civi\DataProcessor\Source\MailingJobSource', E::ts('Mailing Job'));
     $this->addOutput('api', 'Civi\DataProcessor\Output\Api', E::ts('API'));
     $this->addFilter('simple_sql_filter', 'Civi\DataProcessor\FilterHandler\SimpleSqlFilter', E::ts('Simple Filter'));
     $this->addjoinType('simple_join', 'Civi\DataProcessor\DataFlow\MultipleDataFlows\SimpleJoin', E::ts('Simple Join'));
diff --git a/Civi/DataProcessor/FieldOutputHandler/OptionFieldOutputHandler.php b/Civi/DataProcessor/FieldOutputHandler/OptionFieldOutputHandler.php
index 35c106a7..f1127df6 100644
--- a/Civi/DataProcessor/FieldOutputHandler/OptionFieldOutputHandler.php
+++ b/Civi/DataProcessor/FieldOutputHandler/OptionFieldOutputHandler.php
@@ -26,7 +26,7 @@ class OptionFieldOutputHandler extends AbstractFieldOutputHandler {
   public function __construct(FieldSpecification $inputFieldSpec, SourceInterface $dataSource) {
     $this->dataSource = $dataSource;
     $this->inputFieldSpec = $inputFieldSpec;
-    $this->outputFieldSpecification = $inputFieldSpec;
+    $this->outputFieldSpecification = clone $inputFieldSpec;
     $this->outputFieldSpecification->alias = $this->getName();
   }
 
diff --git a/Civi/DataProcessor/FieldOutputHandler/RawFieldOutputHandler.php b/Civi/DataProcessor/FieldOutputHandler/RawFieldOutputHandler.php
index 30fed2b7..424fdf4b 100644
--- a/Civi/DataProcessor/FieldOutputHandler/RawFieldOutputHandler.php
+++ b/Civi/DataProcessor/FieldOutputHandler/RawFieldOutputHandler.php
@@ -25,7 +25,7 @@ class RawFieldOutputHandler extends AbstractFieldOutputHandler {
   public function __construct(FieldSpecification $inputFieldSpec, SourceInterface $dataSource) {
     $this->dataSource = $dataSource;
     $this->inputFieldSpec = $inputFieldSpec;
-    $this->outputFieldSpecification = $inputFieldSpec;
+    $this->outputFieldSpecification = clone $inputFieldSpec;
     $this->outputFieldSpecification->alias = $this->getName();
   }
 
diff --git a/Civi/DataProcessor/Source/MailingJobSource.php b/Civi/DataProcessor/Source/MailingJobSource.php
new file mode 100644
index 00000000..d76e152d
--- /dev/null
+++ b/Civi/DataProcessor/Source/MailingJobSource.php
@@ -0,0 +1,35 @@
+<?php
+/**
+ * @author Jaap Jansma <jaap.jansma@civicoop.org>
+ * @license AGPL-3.0
+ */
+
+namespace Civi\DataProcessor\Source;
+
+use Civi\DataProcessor\DataFlow\SqlTableDataFlow;
+use Civi\DataProcessor\DataSpecification\DataSpecification;
+use Civi\DataProcessor\DataSpecification\FieldSpecification;
+
+use CRM_Dataprocessor_ExtensionUtil as E;
+
+class MailingJobSource extends AbstractCivicrmEntitySource {
+
+  /**
+   * Returns the entity name
+   *
+   * @return String
+   */
+  protected function getEntity() {
+    return 'MailingJob';
+  }
+
+  /**
+   * Returns the table name of this entity
+   *
+   * @return String
+   */
+  protected function getTable() {
+    return 'civicrm_mailing_job';
+  }
+
+}
\ No newline at end of file
-- 
GitLab