3 +--------------------------------------------------------------------+
4 | CiviCRM version 4.3 |
5 +--------------------------------------------------------------------+
6 | Copyright CiviCRM LLC (c) 2004-2013 |
7 +--------------------------------------------------------------------+
8 | This file is a part of CiviCRM. |
10 | CiviCRM is free software; you can copy, modify, and distribute it |
11 | under the terms of the GNU Affero General Public License |
12 | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. |
14 | CiviCRM is distributed in the hope that it will be useful, but |
15 | WITHOUT ANY WARRANTY; without even the implied warranty of |
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
17 | See the GNU Affero General Public License for more details. |
19 | You should have received a copy of the GNU Affero General Public |
20 | License and the CiviCRM Licensing Exception along |
21 | with this program; if not, contact CiviCRM LLC |
22 | at info[AT]civicrm[DOT]org. If you have questions about the |
23 | GNU Affero General Public License or the licensing of CiviCRM, |
24 | see the CiviCRM license FAQ at http://civicrm.org/licensing |
25 +--------------------------------------------------------------------+
31 * @copyright CiviCRM LLC (c) 2004-2013
37 * This class previews the uploaded file and returns summary
40 class CRM_Activity_Import_Form_Preview
extends CRM_Core_Form
{
43 * Function to set variables up before form is built
48 public function preProcess() {
49 $skipColumnHeader = $this->controller
->exportValue('UploadFile', 'skipColumnHeader');
51 //get the data from the session
52 $dataValues = $this->get('dataValues');
53 $mapper = $this->get('mapper');
54 $invalidRowCount = $this->get('invalidRowCount');
55 $conflictRowCount = $this->get('conflictRowCount');
56 $mismatchCount = $this->get('unMatchCount');
58 //get the mapping name displayed if the mappingId is set
59 $mappingId = $this->get('loadMappingId');
61 $mapDAO = new CRM_Core_DAO_Mapping();
62 $mapDAO->id
= $mappingId;
64 $this->assign('loadedMapping', $mappingId);
65 $this->assign('savedName', $mapDAO->name
);
68 if ($skipColumnHeader) {
69 $this->assign('skipColumnHeader', $skipColumnHeader);
70 $this->assign('rowDisplayCount', 3);
73 $this->assign('rowDisplayCount', 2);
76 if ($invalidRowCount) {
77 $urlParams = 'type=' . CRM_Activity_Import_Parser
::ERROR
. '&parser=CRM_Activity_Import_Parser';
78 $this->set('downloadErrorRecordsUrl', CRM_Utils_System
::url('civicrm/export', $urlParams));
81 if ($conflictRowCount) {
82 $urlParams = 'type=' . CRM_Activity_Import_Parser
::CONFLICT
. '&parser=CRM_Activity_Import_Parser';
83 $this->set('downloadConflictRecordsUrl', CRM_Utils_System
::url('civicrm/export', $urlParams));
87 $urlParams = 'type=' . CRM_Activity_Import_Parser
::NO_MATCH
. '&parser=CRM_Activity_Import_Parser';
88 $this->set('downloadMismatchRecordsUrl', CRM_Utils_System
::url('civicrm/export', $urlParams));
93 'dataValues', 'columnCount',
94 'totalRowCount', 'validRowCount',
95 'invalidRowCount', 'conflictRowCount',
96 'downloadErrorRecordsUrl',
97 'downloadConflictRecordsUrl',
98 'downloadMismatchRecordsUrl',
101 foreach ($properties as $property) {
102 $this->assign($property, $this->get($property));
107 * Function to actually build the form
112 public function buildQuickForm() {
114 $this->addButtons(array(
117 'name' => ts('<< Previous'),
121 'name' => ts('Import Now >>'),
122 'spacing' => ' ',
127 'name' => ts('Cancel'),
134 * Return a descriptive name for the page, used in wizard header
139 public function getTitle() {
140 return ts('Preview');
144 * Process the mapped fields and map it into the uploaded file
145 * preview the file and extract some summary statistics
150 public function postProcess() {
151 $fileName = $this->controller
->exportValue('UploadFile', 'uploadFile');
152 $skipColumnHeader = $this->controller
->exportValue('UploadFile', 'skipColumnHeader');
153 $invalidRowCount = $this->get('invalidRowCount');
154 $conflictRowCount = $this->get('conflictRowCount');
155 $onDuplicate = $this->get('onDuplicate');
157 $config = CRM_Core_Config
::singleton();
158 $seperator = $config->fieldSeparator
;
160 $mapper = $this->controller
->exportValue('MapField', 'mapper');
161 $mapperKeys = array();
162 $mapperLocType = array();
163 $mapperPhoneType = array();
165 foreach ($mapper as $key => $value) {
166 $mapperKeys[$key] = $mapper[$key][0];
168 if (CRM_Utils_Array
::value(1, $mapper[$key]) && is_numeric($mapper[$key][1])) {
169 $mapperLocType[$key] = $mapper[$key][1];
172 $mapperLocType[$key] = NULL;
175 if (CRM_Utils_Array
::value(2, $mapper[$key]) && (!is_numeric($mapper[$key][2]))) {
176 $mapperPhoneType[$key] = $mapper[$key][2];
179 $mapperPhoneType[$key] = NULL;
183 $parser = new CRM_Activity_Import_Parser_Activity($mapperKeys, $mapperLocType, $mapperPhoneType);
185 $mapFields = $this->get('fields');
187 foreach ($mapper as $key => $value) {
189 if (isset($mapFields[$mapper[$key][0]])) {
190 $header[] = $mapFields[$mapper[$key][0]];
192 $mapperFields[] = implode(' - ', $header);
194 $parser->run($fileName, $seperator,
197 CRM_Activity_Import_Parser
::MODE_IMPORT
,
201 // add all the necessary variables to the form
202 $parser->set($this, CRM_Activity_Import_Parser
::MODE_IMPORT
);
204 // check if there is any error occured
206 $errorStack = CRM_Core_Error
::singleton();
207 $errors = $errorStack->getErrors();
208 $errorMessage = array();
210 if (is_array($errors)) {
211 foreach ($errors as $key => $value) {
212 $errorMessage[] = $value['message'];
215 $errorFile = $fileName['name'] . '.error.log';
217 if ($fd = fopen($errorFile, 'w')) {
218 fwrite($fd, implode('\n', $errorMessage));
222 $this->set('errorFile', $errorFile);
223 $urlParams = 'type=' . CRM_Activity_Import_Parser
::ERROR
. '&parser=CRM_Activity_Import_Parser';
224 $this->set('downloadErrorRecordsUrl', CRM_Utils_System
::url('civicrm/export', $urlParams));
225 $urlParams = 'type=' . CRM_Activity_Import_Parser
::CONFLICT
. '&parser=CRM_Activity_Import_Parser';
226 $this->set('downloadConflictRecordsUrl', CRM_Utils_System
::url('civicrm/export', $urlParams));
227 $urlParams = 'type=' . CRM_Activity_Import_Parser
::NO_MATCH
. '&parser=CRM_Activity_Import_Parser';
228 $this->set('downloadMismatchRecordsUrl', CRM_Utils_System
::url('civicrm/export', $urlParams));