public function getPropertyByCat($catID, $groupID, &$total) { $sqlSearch = '1=1'; if ($catID) { $sqlSearch .= ' And ' . global_mapping::ArticleTypeID . '=\'' . $catID . '\''; } if ($groupID) { $sqlSearch .= 'AND' . global_mapping::PropertyGroupID . '=\'' . $groupID . '\''; } $strSQL .= global_common::prepareQuery(global_common::SQL_SELECT_FREE, array('*', Model_PropertyGroup::TBL_SL_PROPERTY_GROUP, 'WHERE ' . $sqlSearch . ' Order by `' . global_mapping::Order . '`')); // echo $strSQL; $arrResult = $this->_objConnection->selectCommand($strSQL); if (!$arrResult) { global_common::writeLog('get sl_product ByID:' . $strSQL, 1, $_mainFrame->pPage); return null; } else { //print_r($arrResult); $groupIDs = global_common::getArrayColumn($arrResult, global_mapping::PropertyGroupID); $groupIDs = array_unique($groupIDs); //print_r($groupIDs); $objPropertyGroup = new Model_PropertyGroup($this->_objConnection); $properties = $this->getPropertyGroupByIDs($groupIDs); $total = count($properties); //print_r($properties); $propertyGroups = $objPropertyGroup->getPropertyGroupByIDs($groupIDs); $temp = array(); foreach ($arrResult as $key => $info) { $temp[$info[global_mapping::PropertyID]] = $info; unset($arrResult[$key]); } $arrResult = $temp; $temp = array(); foreach ($groupIDs as $item) { foreach ($propertyGroups as $subitem) { if ($item == $subitem[global_mapping::PropertyGroupID]) { //echo $item.':'; $temp = array_merge($temp, array($subitem)); } } } $propertyGroups = $temp; //print_r($arrResult); //print_r($propertyGroups); $count = count($propertyGroups); //print_r($properties); for ($i = 0; $i < $count; $i++) { foreach ($properties as $item) { if ($item[global_mapping::PropertyGroupID] == $propertyGroups[$i][global_mapping::PropertyGroupID]) { //change defaut value to product property value //$item[global_mapping::Status] = $arrResult[$item[global_mapping::PropertyID]][global_mapping::Status]; //$item[global_mapping::TypeID] = $arrResult[$item[global_mapping::PropertyID]][global_mapping::TypeID]; //$item[global_mapping::StatusID] = $arrResult[$item[global_mapping::PropertyID]][global_mapping::StatusID]; //$item[global_mapping::Order] = $arrResult[$item[global_mapping::PropertyID]][global_mapping::Order]; if (count($propertyGroups[$i]['Properties']) > 0) { array_push($propertyGroups[$i]['Properties'], $item); } else { $propertyGroups[$i]['Properties'] = array($item); } $propertyGroups[$i]['Properties'] = $propertyGroups[$i]['Properties'] ?: array($item); //$propertyGroups[$i]['Properties'] = array_push($propertyGroups[$i]['Properties'], array($item)); // print_r($propertyGroups[$i]); } } } } //print_r($propertyGroups[0]); // print_r($propertyGroups); return $propertyGroups; }
public function getPropertyInfoByID($objID) { $strSQL .= global_common::prepareQuery(global_common::SQL_SELECT_FREE, array('*', Model_ProductProperty::TBL_SL_PRODUCT_PROPERTY, 'WHERE ProductID = \'' . $objID . '\' Order by `' . global_mapping::Order . '`')); //echo $strSQL; $arrResult = $this->_objConnection->selectCommand($strSQL); if (!$arrResult) { global_common::writeLog('get sl_product ByID:' . $strSQL, 1, $_mainFrame->pPage); return null; } else { //print_r($arrResult); $propertyIDs = global_common::getArrayColumn($arrResult, global_mapping::PropertyID); $propertyIDs = array_unique($propertyIDs); //print_r($propertyIDs); $objProperty = new Model_Property($this->_objConnection); $objPropertyGroup = new Model_PropertyGroup($this->_objConnection); $properties = $objProperty->getPropertyByIDs($propertyIDs); $temp = array(); foreach ($propertyIDs as $item) { foreach ($properties as $subitem) { if ($item == $subitem[global_mapping::PropertyID]) { //echo $item.':'; $temp = array_merge($temp, array($subitem)); } } } $properties = $temp; //print_r($properties); $propertyGroupIDs = global_common::getArrayColumn($properties, global_mapping::PropertyGroupID); $propertyGroupIDs = array_unique($propertyGroupIDs); //print_r($propertyGroupIDs); $propertyGroups = $objPropertyGroup->getPropertyGroupByIDs($propertyGroupIDs); $temp = array(); foreach ($arrResult as $key => $info) { $temp[$info[global_mapping::PropertyID]] = $info; unset($arrResult[$key]); } $arrResult = $temp; $temp = array(); foreach ($propertyGroupIDs as $item) { foreach ($propertyGroups as $subitem) { if ($item == $subitem[global_mapping::PropertyGroupID]) { //echo $item.':'; $temp = array_merge($temp, array($subitem)); } } } $propertyGroups = $temp; //print_r($arrResult); //print_r($propertyGroups); $count = count($propertyGroups); for ($i = 0; $i < $count; $i++) { foreach ($properties as $item) { if ($item[global_mapping::PropertyGroupID] == $propertyGroups[$i][global_mapping::PropertyGroupID]) { //change defaut value to product property value $item[global_mapping::PropertyValue] = $arrResult[$item[global_mapping::PropertyID]][global_mapping::PropertyValue]; $item[global_mapping::Status] = $arrResult[$item[global_mapping::PropertyID]][global_mapping::Status]; $item[global_mapping::TypeID] = $arrResult[$item[global_mapping::PropertyID]][global_mapping::TypeID]; $item[global_mapping::StatusID] = $arrResult[$item[global_mapping::PropertyID]][global_mapping::StatusID]; $item[global_mapping::Order] = $arrResult[$item[global_mapping::PropertyID]][global_mapping::Order]; $propertyGroups[$i]['Properties'] = $propertyGroups[$i]['Properties'] ? $propertyGroups[$i]['Properties'] : array(); $propertyGroups[$i]['Properties'] = array_merge($propertyGroups[$i]['Properties'], array($item)); } } } } //print_r($propertyGroups); return $propertyGroups; }