Skip to content

Commit 0af3775

Browse files
committed
Converted the bulk import files with Rector (PHPExcel) and refactored the Box\Spout ones. bulk_importer doesn't work, but the rest do. #1352
1 parent 0b68555 commit 0af3775

File tree

3,381 files changed

+326477
-693
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

3,381 files changed

+326477
-693
lines changed

bulk_cabinet.php

+117-152
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
11
<?php
2-
require_once('db.inc.php');
3-
require_once('facilities.inc.php');
2+
require_once "db.inc.php";
3+
require_once "facilities.inc.php";
4+
require_once __DIR__."/vendor/autoload.php";
45

56
if(!$person->BulkOperations){
67
header('Location: '.redirect());
78
exit;
89
}
910

10-
require_once 'vendor/box/spout/src/Spout/Autoloader/autoload.php';
11-
use Box\Spout\Reader\ReaderFactory;
12-
use Box\Spout\Common\Type;
13-
1411
// Uncomment these if you need/want to set a title in the header
1512
// $header=__("");
1613
$subheader=__("Bulk Cabinet Importer");
@@ -24,30 +21,21 @@
2421
// the /tmp directory. We'll set the filename as a session variable so that we can keep track
2522
// of it more simply as we move from stage to stage.
2623
//
24+
2725
$target_dir = '/tmp/';
2826
$targetFile = $target_dir . basename($_FILES['inputfile']['name']);
2927

30-
$targetInfo = pathinfo($targetFile);
31-
$targetType = $targetInfo['extension'];
32-
33-
move_uploaded_file( $_FILES['inputfile']['tmp_name'], $targetFile );
34-
3528
try {
36-
if ( $targetType == "xlsx" ) {
37-
$objReader = ReaderFactory::create(Type::XLSX);
38-
} elseif ( $targetType == "csv" ) {
39-
$objReader = ReaderFactory::create(Type::CSV);
40-
} else {
41-
die("Error identifying file type.");
42-
}
43-
$objReader->open($targetFile);
44-
$objReader->close();
29+
$inFileType = \PhpOffice\PhpSpreadsheet\IOFactory::identify($_FILES['inputfile']['tmp_name']);
30+
$objReader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inFileType);
31+
$objXL = $objReader->load($_FILES['inputfile']['tmp_name']);
4532
} catch (Exception $e) {
4633
die("Error opening file: ".$e->getMessage());
4734
}
4835

36+
move_uploaded_file( $_FILES['inputfile']['tmp_name'], $targetFile );
37+
4938
$_SESSION['inputfile'] = $targetFile;
50-
$_SESSION['inputtype'] = $targetType;
5139

5240
echo "<meta http-equiv='refresh' content='0; url=" . $_SERVER['SCRIPT_NAME'] . "?stage=headers'>";
5341
exit;
@@ -61,16 +49,10 @@
6149

6250
// Make sure that we can still access the file
6351
$targetFile = $_SESSION['inputfile'];
64-
$targetType = $_SESSION['inputtype'];
6552
try {
66-
if ( $targetType == "xlsx" ) {
67-
$objReader = ReaderFactory::create(Type::XLSX);
68-
} elseif ( $targetType == "csv" ) {
69-
$objReader = ReaderFactory::create(Type::CSV);
70-
} else {
71-
die("Error identifying file type.");
72-
}
73-
$objReader->open($targetFile);
53+
$inFileType = \PhpOffice\PhpSpreadsheet\IOFactory::identify($targetFile);
54+
$objReader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inFileType);
55+
$objXL = $objReader->load($targetFile);
7456
} catch (Exception $e) {
7557
die("Error opening file: ".$e->getMessage());
7658
}
@@ -86,19 +68,13 @@
8668

8769
// Find out how many columns are in the spreadsheet so that we can load them as possible values for the fields
8870
// and we don't really care how many rows there are at this point.
89-
$rowCount = 1;
90-
foreach( $objReader->getSheetIterator() as $sheet ) {
91-
foreach( $sheet->getRowIterator() as $row ) {
92-
if ( $rowCount == 1 ) {
93-
$headerList = $row;
94-
break;
95-
}
96-
}
97-
break;
98-
}
71+
$sheet = $objXL->getSheet(0);
72+
$highestColumn = $sheet->getHighestColumn();
73+
74+
$headerList = $sheet->rangeToArray('A1:' . $highestColumn . '1' );
9975

10076
$fieldList = array( "None" );
101-
foreach( $headerList as $fName ) {
77+
foreach( $headerList[0] as $fName ) {
10278
$fieldList[] = $fName;
10379
}
10480

@@ -134,17 +110,10 @@
134110
//
135111

136112
$targetFile = $_SESSION['inputfile'];
137-
$targetType = $_SESSION['inputtype'];
138-
139113
try {
140-
if ( $targetType == "xlsx" ) {
141-
$objReader = ReaderFactory::create(Type::XLSX);
142-
} elseif ( $targetType == "csv" ) {
143-
$objReader = ReaderFactory::create(Type::CSV);
144-
} else {
145-
die("Error identifying file type.");
146-
}
147-
$objReader->open($targetFile);
114+
$inFileType = \PhpOffice\PhpSpreadsheet\IOFactory::identify($targetFile);
115+
$objReader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inFileType);
116+
$objXL = $objReader->load($targetFile);
148117
} catch (Exception $e) {
149118
die("Error opening file: ".$e->getMessage());
150119
}
@@ -156,125 +125,121 @@
156125
$content = "";
157126
$fields = array( "DataCenter", "Label", "Owner", "Zone", "Row", "Height", "Model", "U1Position", "MaxkW", "MaxWeight", "MapX1", "MapX2", "MapY1", "MapY2", "FrontEdge", "Notes" );
158127

128+
$sheet = $objXL->getSheet(0);
129+
$highestRow = $sheet->getHighestRow();
130+
159131
$rowNum = 1;
160132

161-
foreach( $objReader->getSheetIterator() as $sheet ) {
162-
foreach( $sheet->getRowIterator() as $sheetRow ) {
163-
// Skip the header row
164-
if ( $rowNum == 1 ) {
165-
$rowNum++;
166-
continue;
167-
}
133+
for ( $n = 2; $n <= $highestRow; $n++ ) {
134+
$rowError = false;
168135

169-
$rowError = false;
170136

171-
$cab = new Cabinet();
172-
173-
// Load up the $row[] array with the values according to the mapping supplied by the user
174-
foreach( $fields as $fname ) {
175-
if ( $_REQUEST[$fname] != 0 ) {
176-
$row[$fname] = sanitize($sheetRow[$_REQUEST[$fname]-1]);
177-
}
178-
}
137+
$cab = new Cabinet();
179138

180-
// Stop processing once you hit the first blank cell for 'Location' - some Excel files will return $sheet->getHighestRow() way past the end of any meaningful data
181-
if ( $row["Label"] == "" ) {
182-
break;
183-
}
139+
140+
// Load up the $row[] array with the values according to the mapping supplied by the user
141+
foreach( $fields as $fname ) {
142+
$addr = chr( 64 + $_REQUEST[$fname]);
143+
$row[$fname] = sanitize($sheet->getCell( $addr . $n )->getValue());
144+
}
145+
146+
// Stop processing once you hit the first blank cell for 'Location' - some Excel files will return $sheet->getHighestRow() way past the end of any meaningful data
147+
if ( $row["Label"] == "" ) {
148+
break;
149+
}
150+
151+
// Pull in the raw data fields
152+
$cab->Location = $row["Label"];
153+
$cab->AssignedTo = $row["Owner"];
154+
$cab->CabinetHeight = $row["Height"];
155+
$cab->Model = $row["Model"];
156+
$cab->U1Position = $row["U1Position"];
157+
$cab->MaxKW = $row["MaxkW"];
158+
$cab->MaxWeight = $row["MaxWeight"];
159+
$cab->MapX1 = $row["MapX1"];
160+
$cab->MapX2 = $row["MapX2"];
161+
$cab->MapY1 = $row["MapY1"];
162+
$cab->MapY2 = $row["MapY2"];
163+
$cab->FrontEdge = ucfirst(strtolower($row["FrontEdge"]));
164+
$cab->Notes = $row["Notes"];
165+
166+
/*
167+
*
168+
* Section for looking up the DataCenter and setting the true DataCenterID
169+
*
170+
*/
171+
$st = $dbh->prepare( "select count(DataCenterID) as TotalMatches, DataCenterID from fac_DataCenter where ucase(Name)=ucase(:DataCenter)" );
172+
$st->execute( array( ":DataCenter"=>$row["DataCenter"] ));
173+
if ( ! $val = $st->fetch() ) {
174+
$info = $dbh->errorInfo();
175+
error_log( "PDO Error: {$info[2]}");
176+
}
177+
178+
if ( $val["TotalMatches"] == 1 ) {
179+
$cab->DataCenterID = $val["DataCenterID"];
180+
} else {
181+
$errors = true;
182+
$content .= "<li>Cabinet: DataCenter = " . $row["DataCenter"] . " is not unique or not found.";
183+
}
184184

185-
// Pull in the raw data fields
186-
$cab->Location = $row["Label"];
187-
$cab->AssignedTo = $row["Owner"];
188-
$cab->CabinetHeight = $row["Height"];
189-
$cab->Model = $row["Model"];
190-
$cab->U1Position = $row["U1Position"];
191-
$cab->MaxKW = $row["MaxkW"];
192-
$cab->MaxWeight = $row["MaxWeight"];
193-
$cab->MapX1 = $row["MapX1"];
194-
$cab->MapX2 = $row["MapX2"];
195-
$cab->MapY1 = $row["MapY1"];
196-
$cab->MapY2 = $row["MapY2"];
197-
$cab->FrontEdge = ucfirst(strtolower($row["FrontEdge"]));
198-
$cab->Notes = $row["Notes"];
199-
200-
/*
201-
*
202-
* Section for looking up the DataCenter and setting the true DataCenterID
203-
*
204-
*/
205-
$st = $dbh->prepare( "select count(DataCenterID) as TotalMatches, DataCenterID from fac_DataCenter where ucase(Name)=ucase(:DataCenter)" );
206-
$st->execute( array( ":DataCenter"=>$row["DataCenter"] ));
185+
/*
186+
*
187+
* Section for looking up the ZoneID and setting the true ZoneID in the cab variable
188+
*
189+
*/
190+
if ( $row["Zone"] != "" && $cab->DataCenterID > 0 ) {
191+
$st = $dbh->prepare( "select count(ZoneID) as TotalMatches, ZoneID from fac_Zone where DataCenterID=:DataCenterID and ucase(Description)=ucase(:Zone)" );
192+
$st->execute( array( ":DataCenterID"=>$cab->DataCenterID, ":Zone"=>$row["Zone"] ));
207193
if ( ! $val = $st->fetch() ) {
208194
$info = $dbh->errorInfo();
209195
error_log( "PDO Error: {$info[2]}");
210196
}
197+
}
211198

212-
if ( $val["TotalMatches"] == 1 ) {
213-
$cab->DataCenterID = $val["DataCenterID"];
214-
} else {
215-
$errors = true;
216-
$content .= "<li>Cabinet: DataCenter = " . $row["DataCenter"] . " is not unique or not found.";
217-
}
199+
if ( $row["Zone"]!="" && $val["TotalMatches"] == 1 ) {
200+
$cab->ZoneID = $val["ZoneID"];
201+
} elseif ($row["Zone"]!="" ) {
202+
$errors = true;
203+
$content .= "<li>Cabinet: Data Center + Zone = " . $row["Zone"] . " is not unique or not found.";
204+
}
218205

219-
/*
220-
*
221-
* Section for looking up the ZoneID and setting the true ZoneID in the cab variable
222-
*
223-
*/
224-
if ( $row["Zone"] != "" && $cab->DataCenterID > 0 ) {
225-
$st = $dbh->prepare( "select count(ZoneID) as TotalMatches, ZoneID from fac_Zone where DataCenterID=:DataCenterID and ucase(Description)=ucase(:Zone)" );
226-
$st->execute( array( ":DataCenterID"=>$cab->DataCenterID, ":Zone"=>$row["Zone"] ));
227-
if ( ! $val = $st->fetch() ) {
228-
$info = $dbh->errorInfo();
229-
error_log( "PDO Error: {$info[2]}");
230-
}
206+
/*
207+
*
208+
* Section for looking up the Row by DataCenterID + name and setting the true RowID
209+
*
210+
*/
211+
if ( $row["Row"] != "" ) {
212+
$st = $dbh->prepare( "select count(*) as TotalMatches, CabRowID from fac_CabRow where DataCenterID=:DataCenterID and ucase(Name)=ucase(:Row)" );
213+
$st->execute( array( ":DataCenterID"=>$cab->DataCenterID, ":Row"=>$row["Row"] ));
214+
if ( ! $val = $st->fetch() ) {
215+
$info = $dbh->errorInfo();
216+
error_log( "PDO Error: {$info[2]}");
231217
}
232218

233-
if ( $row["Zone"]!="" && $val["TotalMatches"] == 1 ) {
234-
$cab->ZoneID = $val["ZoneID"];
235-
} elseif ($row["Zone"]!="" ) {
219+
if ( $val["TotalMatches"] == 1 ) {
220+
$cab->CabRowID = $val["CabRowID"];
221+
} else {
236222
$errors = true;
237-
$content .= "<li>Cabinet: Data Center + Zone = " . $row["Zone"] . " is not unique or not found.";
223+
$content .= "<li>Cabinet: Data Center + Row = " . $row["Row"] . " is not unique or not found.";
238224
}
225+
}
239226

240-
/*
241-
*
242-
* Section for looking up the Row by DataCenterID + name and setting the true RowID
243-
*
244-
*/
245-
if ( $row["Row"] != "" ) {
246-
$st = $dbh->prepare( "select count(*) as TotalMatches, CabRowID from fac_CabRow where DataCenterID=:DataCenterID and ucase(Name)=ucase(:Row)" );
247-
$st->execute( array( ":DataCenterID"=>$cab->DataCenterID, ":Row"=>$row["Row"] ));
248-
if ( ! $val = $st->fetch() ) {
249-
$info = $dbh->errorInfo();
250-
error_log( "PDO Error: {$info[2]}");
251-
}
252-
253-
if ( $val["TotalMatches"] == 1 ) {
254-
$cab->CabRowID = $val["CabRowID"];
255-
} else {
256-
$errors = true;
257-
$content .= "<li>Cabinet: Data Center + Row = " . $row["Row"] . " is not unique or not found.";
258-
}
227+
if ( $row["Owner"] != "" ) {
228+
$st = $dbh->prepare( "select DeptID from fac_Department where ucase(Name)=ucase(:Name)" );
229+
$st->execute( array( ":Name" => $row["Owner"] ));
230+
if ( ! $val = $st->fetch()) {
231+
$info = $dbh->errorInfo();
232+
error_log( "PDO Error: {$info[2]} (Department search)");
259233
}
260234

261-
if ( $row["Owner"] != "" ) {
262-
$st = $dbh->prepare( "select DeptID from fac_Department where ucase(Name)=ucase(:Name)" );
263-
$st->execute( array( ":Name" => $row["Owner"] ));
264-
if ( ! $val = $st->fetch()) {
265-
$info = $dbh->errorInfo();
266-
error_log( "PDO Error: {$info[2]} (Department search)");
267-
}
268-
269-
$cab->AssignedTo = $val["DeptID"];
270-
}
235+
$cab->AssignedTo = $val["DeptID"];
236+
}
271237

272-
if ( ! $errors && ! $cab->CreateCabinet(true) ) {
273-
$errors = true;
274-
$content .= "<li><strong>" . __("Error adding cabinet on Row $n of the spreadsheet.") . "</strong>";
275-
} else {
276-
$content .= "<li>Added cabinet " . $cab->Location . "(" . $cab->CabinetID . ")";
277-
}
238+
if ( ! $errors && ! $cab->CreateCabinet(true) ) {
239+
$errors = true;
240+
$content .= "<li><strong>" . __("Error adding cabinet on Row $n of the spreadsheet.") . "</strong>";
241+
} else {
242+
$content .= "<li>Added cabinet " . $cab->Location . "(" . $cab->CabinetID . ")";
278243
}
279244
}
280245

@@ -319,14 +284,14 @@
319284
<head>
320285
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
321286
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
322-
287+
323288
<title>openDCIM</title>
324289
<link rel="stylesheet" href="css/inventory.php" type="text/css">
325290
<link rel="stylesheet" href="css/jquery-ui.css" type="text/css">
326291
<!--[if lt IE 9]>
327292
<link rel="stylesheet" href="css/ie.css" type="text/css" />
328293
<![endif]-->
329-
294+
330295
<script type="text/javascript" src="scripts/jquery.min.js"></script>
331296
<script type="text/javascript" src="scripts/jquery-ui.min.js"></script>
332297
</head>

0 commit comments

Comments
 (0)