1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
<?php
/**
* Load assemblies and components from KitlockerAssemblies.csv.
*
* Reads storage/stock/KitlockerAssemblies.csv (header row present).
* Each row is routed to StockAssembly or StockComponent based on the Type column.
* Append ?clear=y to delete existing records by title before re-importing.
*
* @package stock
*/
namespace Bitweaver\Stock;
require_once '../../kernel/includes/setup_inc.php';
global $gBitSystem, $gBitSmarty, $gBitDb;
$gBitSystem->verifyPackage( 'stock' );
$gBitSystem->verifyPermission( 'p_stock_admin' );
require_once __DIR__.'/ImportKitlockerAssemblies.php';
$csvFile = STOCK_IMPORT_PATH . 'KitlockerAssemblies.csv';
$doClear = ( ( $_REQUEST['clear'] ?? '' ) === 'y' );
$loaded = 0;
$skipped = 0;
$deleted = 0;
$errors = [];
if( !file_exists( $csvFile ) ) {
$errors[] = 'CSV file not found: '.$csvFile;
} else {
$handle = fopen( $csvFile, 'r' );
if( $handle === false ) {
$errors[] = 'Cannot open CSV file.';
} else {
$rows = [];
while( ( $data = fgetcsv( $handle, 0, ',', '"', '' ) ) !== false ) {
$rows[] = $data;
}
fclose( $handle );
// Skip header row
$dataRows = array_slice( $rows, 1 );
if( $doClear ) {
foreach( $dataRows as $data ) {
$title = trim( $data[0] ?? '' );
$type = strtoupper( trim( $data[6] ?? '' ) );
if( !empty( $title ) && in_array( $type, [ 'A', 'C' ] ) ) {
if( stockExpungeKitlockerItemByTitle( $title, $type ) ) {
$deleted++;
}
}
}
}
foreach( $dataRows as $idx => $data ) {
$result = stockImportKitlockerItem( $data, $idx + 2 );
$loaded += $result['loaded'];
$skipped += $result['skipped'];
$errors = array_merge( $errors, $result['errors'] );
}
}
}
$gBitSmarty->assign( 'loaded', $loaded );
$gBitSmarty->assign( 'skipped', $skipped );
$gBitSmarty->assign( 'deleted', $deleted );
$gBitSmarty->assign( 'errors', $errors );
$gBitSmarty->assign( 'csvFile', $csvFile );
$gBitSystem->display( 'bitpackage:stock/import_results.tpl', 'Import Kitlocker Assemblies & Components' );
|