fix CRM-12027
authorDonald A. Lobo <lobo@civicrm.org>
Wed, 6 Mar 2013 05:42:15 +0000 (21:42 -0800)
committerDonald A. Lobo <lobo@civicrm.org>
Wed, 6 Mar 2013 05:42:15 +0000 (21:42 -0800)
CRM/Import/DataSource/CSV.php
CRM/Import/Form/DataSource.php

index cf1c4885a1541f1af9d39c0176ee4a6c0b0f9ea8..a5ed74284362b7643d5d5eca4d5e6169b531e0a9 100644 (file)
@@ -33,7 +33,9 @@
  *
  */
 class CRM_Import_DataSource_CSV extends CRM_Import_DataSource {
-  CONST NUM_ROWS_TO_INSERT = 100;
+  CONST
+    NUM_ROWS_TO_INSERT = 100;
+
   function getInfo() {
     return array('title' => ts('Comma-Separated Values (CSV)'));
   }
index b385a5b0a5779456825b8404dc0fcbfd6b4c4073..0f998d6d05a6a1ee001f7e33dee790a58826c908 100644 (file)
@@ -45,6 +45,8 @@ class CRM_Import_Form_DataSource extends CRM_Core_Form {
 
   private $_dataSourceClassFile;
 
+  private $_dataSourceClass;
+
   /**
    * Function to set variables up before form is built
    *
@@ -125,7 +127,8 @@ class CRM_Import_Form_DataSource extends CRM_Core_Form {
     if ($this->_dataSourceIsValid) {
       $this->_dataSourceClassFile = str_replace('_', '/', $this->_dataSource) . ".php";
       require_once $this->_dataSourceClassFile;
-      eval("{$this->_dataSource}::buildQuickForm( \$this );");
+      $this->_dataSourceClass = new $this->_dataSource;
+      $this->_dataSourceClass->buildQuickForm( $this );
     }
 
     // Get list of data sources and display them as options
@@ -256,7 +259,8 @@ class CRM_Import_Form_DataSource extends CRM_Core_Form {
       ) {
         $dataSourceClass = "CRM_Import_DataSource_" . $matches[1];
         require_once $dataSourceDir . DIRECTORY_SEPARATOR . $dataSourceFile;
-        eval("\$object = new $dataSourceClass(); \$info = \$object->getInfo();");
+        $object = new $dataSourceClass;
+        $info   = $object->getInfo();
         $dataSources[$dataSourceClass] = $info['title'];
       }
     }
@@ -308,8 +312,7 @@ class CRM_Import_Form_DataSource extends CRM_Core_Form {
         $this->_params['import_table_name'] = 'civicrm_import_job_' . md5(uniqid(rand(), TRUE));
       }
 
-      require_once $this->_dataSourceClassFile;
-      eval("$this->_dataSource::postProcess( \$this->_params, \$db, \$this );");
+      $this->_dataSourceClass->postProcess( $this->_params, $db, $this );
 
       // We should have the data in the DB now, parse it
       $importTableName = $this->get('importTableName');