From 1db6723acb3d362f7bc0a5119fa0b1144b272061 Mon Sep 17 00:00:00 2001
From: sarvesh211999 <sarvesh211999@gmail.com>
Date: Fri, 5 Jul 2019 21:46:18 +0530
Subject: [PATCH] added import from file

---
 CRM/Dataprocessor/Form/Import.php           | 30 ++++++++++++++++-----
 templates/CRM/Dataprocessor/Form/Import.tpl |  5 +---
 2 files changed, 24 insertions(+), 11 deletions(-)

diff --git a/CRM/Dataprocessor/Form/Import.php b/CRM/Dataprocessor/Form/Import.php
index 54d39d3d..7380d28d 100644
--- a/CRM/Dataprocessor/Form/Import.php
+++ b/CRM/Dataprocessor/Form/Import.php
@@ -19,7 +19,7 @@ class CRM_Dataprocessor_Form_Import extends CRM_Core_Form {
   }
 
   public function buildQuickForm() {
-    $this->add('textarea', 'code', E::ts('Import code'), 'rows=30 style="width:100%"', true);
+    $this->add('file', 'uploadFile', ts('Import Data File'), 'size=30 maxlength=255', TRUE);
     $this->addButtons(array(
       array('type' => 'next', 'name' => E::ts('Import'), 'isDefault' => TRUE,),
       array('type' => 'cancel', 'name' => E::ts('Cancel'))
@@ -27,14 +27,30 @@ class CRM_Dataprocessor_Form_Import extends CRM_Core_Form {
   }
 
   public function postProcess() {
-    $values = $this->exportValues();
-    $importCode = json_decode($values['code'], true);
-    $importResult = CRM_Dataprocessor_Utils_Importer::import($importCode, '', true);
+    $values = $this->getSubmitValues(True);
+    // Check for JSON extension required
+    $filetype = $values['uploadFile']['type'];
+    if($filetype != 'application/json'){
+    CRM_Core_Session::setStatus(E::ts('Imported file should be a json file'), '', 'error');
+    $redirectUrl = CRM_Utils_System::url('civicrm/dataprocessor/form/import', array('reset' => 1, 'action' => 'add'));
+    
+    parent::preProcess();
+    CRM_Utils_System::redirect($redirectUrl);
+    
+    
+    }
+    else{
 
-    CRM_Core_Session::setStatus(E::ts('Imported data processor'), '', 'success');
+      $configuration = file_get_contents($values['uploadFile']['tmp_name']);
 
-    $redirectUrl = CRM_Utils_System::url('civicrm/dataprocessor/form/edit', array('reset' => 1, 'action' => 'update', 'id' => $importResult['new_id']));
-    CRM_Utils_System::redirect($redirectUrl);
+      $importCode = json_decode($configuration, true);
+      $importResult = CRM_Dataprocessor_Utils_Importer::import($importCode, '', true);
+
+      CRM_Core_Session::setStatus(E::ts('Imported data processor'), '', 'success');
+
+      $redirectUrl = CRM_Utils_System::url('civicrm/dataprocessor/form/edit', array('reset' => 1, 'action' => 'update', 'id' => $importResult['new_id']));
+      CRM_Utils_System::redirect($redirectUrl);
+    }
   }
 
 
diff --git a/templates/CRM/Dataprocessor/Form/Import.tpl b/templates/CRM/Dataprocessor/Form/Import.tpl
index 19bd5d42..3e83de15 100644
--- a/templates/CRM/Dataprocessor/Form/Import.tpl
+++ b/templates/CRM/Dataprocessor/Form/Import.tpl
@@ -1,10 +1,7 @@
 {crmScope extensionKey='dataprocessor'}
     {* block for rule data *}
     <h3>{ts}Import data processor{/ts}</h3>
-    <div class="crm-block crm-form-block crm-data-processor_source-block">
-            <h3>{ts}Code{/ts}</h3>
-            {$form.code.html}
-    </div>
+	<div class="crm-block crm-form-block crm-data-processor_source-block">	{$form.uploadFile.html}</div>
 
     <div class="crm-submit-buttons">
         {include file="CRM/common/formButtons.tpl" location="bottom"}
-- 
GitLab