/** * Returns the html table rows for the article matrix. * * @param array $data The data we should build the matrix from * @param string $resultRows The rendered resulting rows * @param int $counter The article counter * @param string $headRow The header row for inserting after a number of articles * @param array $extraRowData Some additional data like checkbox column * @param int $index The level inside the matrix * @param array $row The current row data * * @return void */ protected function getRows(array $data, &$resultRows, &$counter, $headRow, array $extraRowData = array(), $index = 1, array $row = array()) { if (is_array($data)) { foreach ($data as $dataItem) { $dummyData = $dataItem; unset($dummyData['other']); $row[$index] = $dummyData; if (is_array($dataItem['other'])) { $this->getRows($dataItem['other'], $resultRows, $counter, $headRow, $extraRowData, $index + 1, $row); } else { // serialize data for formsaveing $labelData = array(); $hashData = array(); foreach ($row as $rd) { $hashData[$rd['aUid']] = $rd['vUid']; $labelData[] = $rd['vLabel']; } asort($hashData); // try to fetch an article with this special attribute values $hashData = serialize($hashData); $hash = md5($hashData); if ($this->belib->checkArray($hash, $this->existingArticles, 'attribute_hash')) { continue; } ++$counter; // select format and insert headrow if we are in the 20th row if ($counter % 20 == 0) { $resultRows .= $headRow; } $class = $counter % 2 == 1 ? 'background-color: silver' : 'background: none'; // create the row $resultRows .= '<tr><td style="' . $class . '"> <input type="checkbox" name="createList[' . $counter . ']" id="createRow_' . $counter . '" /> <input type="hidden" name="createData[' . $counter . ']" value="' . htmlspecialchars($hashData) . '" /></td>'; $resultRows .= '<td style="' . $class . '">' . implode('</td><td style="' . $class . '">', \CommerceTeam\Commerce\Utility\GeneralUtility::removeXSSStripTagsArray($labelData)) . '</td>'; if (!empty($extraRowData)) { $resultRows .= '<td style="' . $class . '">' . implode('</td><td style="' . $class . '">', \CommerceTeam\Commerce\Utility\GeneralUtility::removeXSSStripTagsArray($extraRowData)) . '</td>'; } $resultRows .= '</tr>'; } } } }
/** * Check attributes of products and categories. * * @param array $incomingFieldArray Incoming field array * @param bool|int $handleAttributes Whether to handle attributes * * @return mixed */ protected function preProcessAttributes(array $incomingFieldArray, $handleAttributes) { if ($handleAttributes) { // get all parent categories, excluding this $this->belib->getParentCategoriesFromList($this->catList); $correlationTypes = array(); // get all correlation types from flexform thats was created by dynaflex! if (is_array($incomingFieldArray) && isset($incomingFieldArray['attributes']) && is_array($incomingFieldArray['attributes']) && isset($incomingFieldArray['attributes']['data']) && is_array($incomingFieldArray['attributes']['data']) && isset($incomingFieldArray['attributes']['data']['sDEF']) && is_array($incomingFieldArray['attributes']['data']['sDEF']) && isset($incomingFieldArray['attributes']['data']['sDEF']['lDEF']) && is_array($incomingFieldArray['attributes']['data']['sDEF']['lDEF'])) { $correlationTypes = $incomingFieldArray['attributes']['data']['sDEF']['lDEF']; } $usedAttributes = array(); foreach ($correlationTypes as $key => $data) { $keyData = array(); // @todo this cant work, we are checking on a new created empty array if ($keyData[0] == 'ct') { // get the attributes from the categories of this product $localAttributes = explode(',', $data['vDEF']); if (is_array($localAttributes)) { $validAttributes = array(); foreach ($localAttributes as $localAttribute) { if ($localAttribute == '') { continue; } $attributeUid = $this->belib->getUidFromKey($localAttribute, $keyData); if (!$this->belib->checkArray($attributeUid, $usedAttributes, 'uid_foreign')) { $validAttributes[] = $localAttribute; $usedAttributes[] = array('uid_foreign' => $attributeUid); } } $incomingFieldArray['attributes']['data']['sDEF']['lDEF'][$key]['vDEF'] = implode(',', $validAttributes); } } } } return $incomingFieldArray; }