GHJ Variants (Re-arranged 3DCart CSV to remove unnecessary columns
<?php
//guy-harvey-data
$fh = fopen('guy-harvey-1-8-2015.csv', 'r');
$header = array('Master_Product_Code','PART_PRODUCT_CODE','ATTRIBUTE_TYPE','ATTRITUBTE_PROMPT','ATTRIBUTE_REQUIRED','OPTION_PROMPT','OPTION_PRICE','IMAGE_TYPE:_MAIN');
$products = array();
$i = 0;
$currentMasterCode = null;
$currentAttribute = null;
$currentAttributeType = null;
while(($_row = fgetcsv($fh))) {
if (!$i){
$i++;
continue;
}
$row = array();
foreach($header as $key => $name) {
$row[$name] = isset($_row[$key]) ? $_row[$key] : null;
}
if(!empty($row['Master_Product_Code']) && $row['Master_Product_Code'] != $currentMasterCode) {
$currentMasterCode = $row['Master_Product_Code'];
}
if(!empty($row['ATTRITUBTE_PROMPT']) && $row['ATTRITUBTE_PROMPT'] != $currentAttribute) {
$currentAttribute = $row['ATTRITUBTE_PROMPT'];
$currentAttribute = str_replace('Please Choose Your ', '', $currentAttribute);
$currentAttribute = str_replace('Please Choose your ', '', $currentAttribute);
$currentAttribute = str_replace('Pleae Choose your ', '', $currentAttribute);
}
if(!empty($row['ATTRIBUTE_TYPE'])) {
$currentAttributeType = $row['ATTRIBUTE_TYPE'];
$currentAttributeType = str_replace('DropImage', 'swatch-select', $currentAttributeType);
}
if(!isset($products[$currentMasterCode])) {
$products[$currentMasterCode] = array();
}
if(!isset($products[$currentMasterCode][$currentAttribute])) {
$products[$currentMasterCode][$currentAttribute] = array();
}
// Create Option Code
$optionCode = $row['OPTION_PROMPT'];
$optionCode = str_replace('"', '_in', $optionCode);
$optionCode = str_replace(' ', '_', $optionCode);
$optionCode = strtolower($optionCode);
//Create Attribute Code
$attrCode = str_replace(' ', '_', $currentAttribute);
$attrCode = strtolower($attrCode);
if ($currentAttributeType == 'swatch-select') {
$optImg = $row['IMAGE_TYPE:_MAIN'];
$optImg = str_replace('assets/images/', 'graphics/00000001/', $optImg);
} else {
$optImg = '';
}
$products[$currentMasterCode][$currentAttribute][] = array(
'required' => '1',
'variant_code' => $row['PART_PRODUCT_CODE'],
'attr_type' => $currentAttributeType,
'attr_code' => $attrCode,
'opt_prompt' => $row['OPTION_PROMPT'],
'opt_code' => $optionCode,
'opt_price' => $row['OPTION_PRICE'],
'opt_image' => $optImg,
);
$i++;
}
?>
<table>
<tr>
<th>MASTER_PRODUCT_CODE</th>
<th>ATTRIBUTE_PROMPT</th>
<th>ATTRIBUTE_CODE</th>
<th>PART_PRODUCT_CODE</th>
<th>ATTRIBUTE_TYPE</th>
<th>ATTRIBUTE_REQUIRED</th>
<th>OPTION_CODE</th>
<th>OPTION_PROMPT</th>
<th>OPTION_PRICE</th>
<th>IMAGE_TYPE:_MAIN</th>
</tr>
<?php
foreach ( $products as $masterProduct => $optionz ) {
foreach ( $optionz as $attrPrompt => $options ) {
foreach ( $options as $option ) {
foreach ( $optionz as $attrPrompt2 => $options2 ) {
//if there is only one option
if ( count($optionz) === 1 ) {
echo '<tr>';
echo '<td>' . $masterProduct . '</td>';
echo '<td>' . $attrPrompt . '</td>';
echo '<td>' . $option['attr_code'] . '</td>';
echo '<td>' . $option['variant_code'] . '</td>';
echo '<td>' . $option['attr_type'] . '</td>';
echo '<td>' . $option['required'] . '</td>';
echo '<td>' . $option['opt_code'] . '</td>';
echo '<td>' . $option['opt_prompt'] . '</td>';
echo '<td>' . $option['opt_price'] . '</td>';
echo '<td>' . $option['opt_image'] . '</td>';
echo '</tr>';
}
}
}
//Multiple Options
if ( count($optionz) > 1 ) {
$keys = array_keys($optionz);
$opt1 = $keys[0];
$opt2 = $keys[1];
for ($a=0;$a<count($optionz[$opt1]);$a++) {
for ($b=0; $b<count($optionz[$opt2]);$b++) {
echo '<tr>';
echo '<td>' . $masterProduct . '</td>';
echo '<td>' . $opt1 . '</td>';
echo '<td>' . $optionz[$opt1][$a]['attr_code'] . '</td>';
echo '<td>' . $masterProduct . '_' . $optionz[$opt1][$a]['opt_code'] . '-' . $optionz[$opt2][$b]['opt_code'] . '</td>';
echo '<td>' . $optionz[$opt1][$a]['attr_type'] . '</td>';
echo '<td>' . $optionz[$opt1][$a]['required'] . '</td>';
echo '<td>' . $optionz[$opt1][$a]['opt_code'] . '</td>';
echo '<td>' . $optionz[$opt1][$a]['opt_prompt'] . '</td>';
echo '<td>' . $optionz[$opt1][$a]['opt_price'] . '</td>';
echo '<td>' . $optionz[$opt1][$a]['opt_image'] . '</td>';
echo '</tr>';
echo '<tr>';
echo '<td>' . $masterProduct . '</td>';
echo '<td>' . $opt2 . '</td>';
echo '<td>' . $optionz[$opt2][$b]['attr_code'] . '</td>';
echo '<td>' . $masterProduct . '_' . $optionz[$opt1][$a]['opt_code'] . '-' . $optionz[$opt2][$b]['opt_code'] . '</td>';
echo '<td>' . $optionz[$opt2][$b]['attr_type'] . '</td>';
echo '<td>' . $optionz[$opt2][$b]['required'] . '</td>';
echo '<td>' . $optionz[$opt2][$b]['opt_code'] . '</td>';
echo '<td>' . $optionz[$opt2][$b]['opt_prompt'] . '</td>';
echo '<td>' . $optionz[$opt2][$b]['opt_price'] . '</td>';
echo '<td>' . $optionz[$opt1][$a]['opt_image'] . '</td>';
echo '</tr>';
}
}
}
}
}
?>
</table>