Account Suspended
Account Suspended
This Account has been suspended.
Contact your hosting provider for more information.
 All Data Structures Functions Variables Pages
ImportDataAnalysisSequentialProcess.php
1 <?php
2  /*********************************************************************************
3  * Zurmo is a customer relationship management program developed by
4  * Zurmo, Inc. Copyright (C) 2017 Zurmo Inc.
5  *
6  * Zurmo is free software; you can redistribute it and/or modify it under
7  * the terms of the GNU Affero General Public License version 3 as published by the
8  * Free Software Foundation with the addition of the following permission added
9  * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
10  * IN WHICH THE COPYRIGHT IS OWNED BY ZURMO, ZURMO DISCLAIMS THE WARRANTY
11  * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
12  *
13  * Zurmo is distributed in the hope that it will be useful, but WITHOUT
14  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15  * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
16  * details.
17  *
18  * You should have received a copy of the GNU Affero General Public License along with
19  * this program; if not, see http://www.gnu.org/licenses or write to the Free
20  * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21  * 02110-1301 USA.
22  *
23  * You can contact Zurmo, Inc. with a mailing address at 27 North Wacker Drive
24  * Suite 370 Chicago, IL 60606. or at email address contact@zurmo.com.
25  *
26  * The interactive user interfaces in original and modified versions
27  * of this program must display Appropriate Legal Notices, as required under
28  * Section 5 of the GNU Affero General Public License version 3.
29  *
30  * In accordance with Section 7(b) of the GNU Affero General Public License version 3,
31  * these Appropriate Legal Notices must retain the display of the Zurmo
32  * logo and Zurmo copyright notice. If the display of the logo is not reasonably
33  * feasible for technical reasons, the Appropriate Legal Notices must display the words
34  * "Copyright Zurmo Inc. 2017. All rights reserved".
35  ********************************************************************************/
36 
42  {
47  protected $sanitizableColumnNames;
48 
49  protected static function resolveCustomFieldsInstructionDataIntoImportAndSaveImport(
50  ImportDataAnalyzer $importDataAnalyzer, Import $import)
51  {
52  $adapter = new ImportToCustomFieldsInstructionDataAdapter($import);
53  $adapter->appendCustomFieldsInstructionData($importDataAnalyzer->getCustomFieldsInstructionData());
54  $saved = $import->save();
55  if (!$saved)
56  {
57  throw new FailedToSaveModelException();
58  }
59  }
60 
61  protected static function resolveSanitizableColumnNames($mappingData)
62  {
63  assert('is_array($mappingData)');
64  $sanitizableColumnNames = array();
65  foreach ($mappingData as $columnName => $columnMappingData)
66  {
67  if ($columnMappingData['attributeIndexOrDerivedType'] != null &&
68  $columnMappingData['type'] != 'extraColumn')
69  {
70  $sanitizableColumnNames[] = $columnName;
71  }
72  }
73  return $sanitizableColumnNames;
74  }
75 
76  public function __construct(Import $import, ImportDataProvider $dataProvider)
77  {
78  $unserializedData = unserialize($import->serializedData);
79  $this->import = $import;
80  $this->mappingData = $unserializedData['mappingData'];
81  $this->importRules = ImportRulesUtil::makeImportRulesByType($unserializedData['importRulesType']);
82  $this->dataProvider = $dataProvider;
83  $this->sanitizableColumnNames = static::resolveSanitizableColumnNames($this->mappingData);
84  }
85 
86  public function getAllStepsMessage()
87  {
88  return Zurmo::t('ImportModule', 'Analyzing the import data...');
89  }
90 
91  protected function steps()
92  {
93  return array('processRows', 'complete');
94  }
95 
96  protected function stepMessages()
97  {
98  return array('processRows' => Zurmo::t('ImportModule', 'Analyzing'),
99  'complete' => Zurmo::t('ImportModule', 'Finalizing Analysis...'));
100  }
101 
102  protected function processRows($params)
103  {
104  $page = static::resolvePageByParams($params);
105  $this->dataProvider->getPagination()->setCurrentPage($page);
106  $importDataAnalyzer = new ImportDataAnalyzer($this->importRules, $this->dataProvider,
107  $this->mappingData, $this->sanitizableColumnNames);
108  $importDataAnalyzer->analyzePage();
109  static::resolveCustomFieldsInstructionDataIntoImportAndSaveImport($importDataAnalyzer, $this->import);
110  return $this->resolveNextPagingAndParams($page, $params);
111  }
112 
113  protected function resolveNextInformationByCurrentStep($step)
114  {
115  assert('is_string($step)');
116  $steps = $this->steps();
117  $currentKey = array_search($step, $steps);
118  $nextKey = $currentKey + 1;
119  if (count($steps) == 2)
120  {
121  $this->completionPercentage = $this->subSequenceCompletionPercentage;
122  }
123  else
124  {
125  $extraPercentage = ($this->subSequenceCompletionPercentage / 100) * (100 / count($steps));
126  $this->completionPercentage = ((($currentKey + 1) / count($steps)) * 100) + $extraPercentage;
127  }
128  }
129  }
130 ?>
static makeImportRulesByType($importRulesType)
Generated on Wed Jul 8 2020 07:10:34
Account Suspended
Account Suspended
This Account has been suspended.
Contact your hosting provider for more information.