tessguefen
4/19/2015 - 6:14 PM

GHJ Variants (Re-arranged 3DCart CSV to remove unnecessary columns

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>