Exemple #1
0
 /**
  * Get items for view.
  * @return mixed[]  array('ID' => array(), 'ID' => array(), ...)
  */
 protected function getItems()
 {
     if (empty($this->productIdsMap) || empty($this->arParams['SHOW_PRODUCTS'])) {
         return array();
     }
     $elementIterator = CIBlockElement::GetList(array(), $this->filter, false, false, $this->selectFields);
     $elementIterator->SetUrlTemplates($this->arParams["DETAIL_URL"]);
     $defaultMeasure = $this->data['DEFAULT_MEASURE'];
     $items = array();
     while ($elementObj = $elementIterator->GetNextElement()) {
         $item = $elementObj->GetFields();
         $item['ID'] = intval($item['ID']);
         $item['ACTIVE_FROM'] = $item['DATE_ACTIVE_FROM'];
         $item['ACTIVE_TO'] = $item['DATE_ACTIVE_TO'];
         // Inherited Properties
         $ipropValues = new \Bitrix\Iblock\InheritedProperty\ElementValues($item["IBLOCK_ID"], $item["ID"]);
         $item["IPROPERTY_VALUES"] = $ipropValues->getValues();
         $item["PREVIEW_PICTURE"] = 0 < $item["PREVIEW_PICTURE"] ? CFile::GetFileArray($item["PREVIEW_PICTURE"]) : false;
         if ($item["PREVIEW_PICTURE"]) {
             $item["PREVIEW_PICTURE"]["ALT"] = $item["IPROPERTY_VALUES"]["ELEMENT_PREVIEW_PICTURE_FILE_ALT"];
             if ($item["PREVIEW_PICTURE"]["ALT"] == "") {
                 $item["PREVIEW_PICTURE"]["ALT"] = $item["NAME"];
             }
             $item["PREVIEW_PICTURE"]["TITLE"] = $item["IPROPERTY_VALUES"]["ELEMENT_PREVIEW_PICTURE_FILE_TITLE"];
             if ($item["PREVIEW_PICTURE"]["TITLE"] == "") {
                 $item["PREVIEW_PICTURE"]["TITLE"] = $item["NAME"];
             }
         }
         $item["DETAIL_PICTURE"] = 0 < $item["DETAIL_PICTURE"] ? CFile::GetFileArray($item["DETAIL_PICTURE"]) : false;
         if ($item["DETAIL_PICTURE"]) {
             $item["DETAIL_PICTURE"]["ALT"] = $item["IPROPERTY_VALUES"]["ELEMENT_DETAIL_PICTURE_FILE_ALT"];
             if ($item["DETAIL_PICTURE"]["ALT"] == "") {
                 $item["DETAIL_PICTURE"]["ALT"] = $item["NAME"];
             }
             $item["DETAIL_PICTURE"]["TITLE"] = $item["IPROPERTY_VALUES"]["ELEMENT_DETAIL_PICTURE_FILE_TITLE"];
             if ($item["DETAIL_PICTURE"]["TITLE"] == "") {
                 $item["DETAIL_PICTURE"]["TITLE"] = $item["NAME"];
             }
         }
         $itemIblockId = (int) $item['IBLOCK_ID'];
         $needItemProperties = isset($this->arParams['PROPERTY_CODE'][$itemIblockId]) && !empty($this->arParams['PROPERTY_CODE'][$itemIblockId]) || isset($this->arParams['ADDITIONAL_PICT_PROP'][$itemIblockId]) || isset($this->arParams['LABEL_PROP'][$itemIblockId]);
         $item["PROPERTIES"] = array();
         $item["DISPLAY_PROPERTIES"] = array();
         if ($needItemProperties) {
             $item["PROPERTIES"] = $elementObj->getProperties();
             CCatalogDiscount::SetProductPropertiesCache($item['ID'], $item["PROPERTIES"]);
         }
         if (isset($this->arParams['PROPERTY_CODE'][$item['IBLOCK_ID']])) {
             $properties = $this->arParams['PROPERTY_CODE'][$item['IBLOCK_ID']];
             foreach ($properties as $propertyName) {
                 if (!isset($item["PROPERTIES"][$propertyName])) {
                     continue;
                 }
                 $prop =& $item["PROPERTIES"][$propertyName];
                 $boolArr = is_array($prop["VALUE"]);
                 if ($boolArr && !empty($prop["VALUE"]) || !$boolArr && strlen($prop["VALUE"]) > 0) {
                     $item["DISPLAY_PROPERTIES"][$propertyName] = CIBlockFormatProperties::GetDisplayValue($item, $prop, "catalog_out");
                 }
             }
         }
         $item["PRODUCT_PROPERTIES"] = array();
         $item['PRODUCT_PROPERTIES_FILL'] = array();
         if ($this->arParams['ADD_PROPERTIES_TO_BASKET'] == 'Y' && !empty($this->arParams['CART_PROPERTIES'][$item['IBLOCK_ID']])) {
             $item["PRODUCT_PROPERTIES"] = CIBlockPriceTools::GetProductProperties($item['IBLOCK_ID'], $item["ID"], $this->arParams['CART_PROPERTIES'][$item['IBLOCK_ID']], $item["PROPERTIES"]);
             if (!empty($item["PRODUCT_PROPERTIES"])) {
                 $item['PRODUCT_PROPERTIES_FILL'] = CIBlockPriceTools::getFillProductProperties($item['PRODUCT_PROPERTIES']);
             }
         }
         if (!isset($item["CATALOG_MEASURE_RATIO"])) {
             $item["CATALOG_MEASURE_RATIO"] = 1;
         }
         if (!isset($item['CATALOG_MEASURE'])) {
             $item['CATALOG_MEASURE'] = 0;
         }
         $item['CATALOG_MEASURE'] = intval($item['CATALOG_MEASURE']);
         if (0 > $item['CATALOG_MEASURE']) {
             $item['CATALOG_MEASURE'] = 0;
         }
         if (!isset($item['CATALOG_MEASURE_NAME'])) {
             $item['CATALOG_MEASURE_NAME'] = '';
         }
         $item['CATALOG_MEASURE_NAME'] = $defaultMeasure['SYMBOL_RUS'];
         $item['~CATALOG_MEASURE_NAME'] = $defaultMeasure['~SYMBOL_RUS'];
         $items[$item['ID']] = $item;
     }
     return $items;
 }
Exemple #2
0
         }
         if ($bGetProperties) {
             foreach ($arParams["PROPERTY_CODE"] as $pid) {
                 if (!isset($arItem["PROPERTIES"][$pid])) {
                     continue;
                 }
                 $prop =& $arItem["PROPERTIES"][$pid];
                 $boolArr = is_array($prop["VALUE"]);
                 if ($boolArr && !empty($prop["VALUE"]) || !$boolArr && strlen($prop["VALUE"]) > 0) {
                     $arItem["DISPLAY_PROPERTIES"][$pid] = CIBlockFormatProperties::GetDisplayValue($arItem, $prop, "catalog_out");
                 }
             }
             if ($bGetProductProperties) {
                 $arItem["PRODUCT_PROPERTIES"] = CIBlockPriceTools::GetProductProperties($arParams["IBLOCK_ID"], $arItem["ID"], $arParams["PRODUCT_PROPERTIES"], $arItem["PROPERTIES"]);
                 if (!empty($arItem["PRODUCT_PROPERTIES"])) {
                     $arItem['PRODUCT_PROPERTIES_FILL'] = CIBlockPriceTools::getFillProductProperties($arItem['PRODUCT_PROPERTIES']);
                 }
             }
         }
     }
     if (isset($arItem)) {
         unset($arItem);
     }
 }
 if ($bIBlockCatalog) {
     if (!empty($arResult["ELEMENTS"])) {
         $rsRatios = CCatalogMeasureRatio::getList(array(), array('PRODUCT_ID' => $arResult["ELEMENTS"]), false, false, array('PRODUCT_ID', 'RATIO'));
         while ($arRatio = $rsRatios->Fetch()) {
             $arRatio['PRODUCT_ID'] = (int) $arRatio['PRODUCT_ID'];
             if (isset($arElementLink[$arRatio['PRODUCT_ID']])) {
                 $intRatio = (int) $arRatio['RATIO'];
Exemple #3
0
 /**
  * Get items for view.
  * @return mixed[]  array('ID' => array(), 'ID' => array(), ...)
  */
 protected function getItems()
 {
     if (empty($this->productIdsMap) || empty($this->arParams['SHOW_PRODUCTS'])) {
         return array();
     }
     $this->separateItemsByIblock();
     $defaultMeasure = $this->data['DEFAULT_MEASURE'];
     $items = array();
     foreach (array_keys($this->arParams['SHOW_PRODUCTS']) as $iblock) {
         $this->linkItems = array();
         if (empty($this->iblockItems[$iblock])) {
             continue;
         }
         $filter = $this->filter;
         $filter['IBLOCK_ID'] = $iblock;
         $filter['ID'] = $this->iblockItems[$iblock];
         $elementIterator = CIBlockElement::GetList(array(), $filter, false, false, $this->selectFields);
         $elementIterator->SetUrlTemplates($this->arParams['DETAIL_URL']);
         while ($element = $elementIterator->GetNext()) {
             $element['ID'] = (int) $element['ID'];
             $element['ACTIVE_FROM'] = $element['DATE_ACTIVE_FROM'];
             $element['ACTIVE_TO'] = $element['DATE_ACTIVE_TO'];
             $buttons = CIBlock::GetPanelButtons($element['IBLOCK_ID'], $element['ID'], 0, array("SECTION_BUTTONS" => false, "SESSID" => false, "CATALOG" => true));
             $element['EDIT_LINK'] = $buttons['edit']['edit_element']['ACTION_URL'];
             $element['DELETE_LINK'] = $buttons['edit']['delete_element']['ACTION_URL'];
             $ipropValues = new \Bitrix\Iblock\InheritedProperty\ElementValues($element["IBLOCK_ID"], $element["ID"]);
             $element["IPROPERTY_VALUES"] = $ipropValues->getValues();
             $element["PREVIEW_PICTURE"] = $element["PREVIEW_PICTURE"] > 0 ? CFile::GetFileArray($element["PREVIEW_PICTURE"]) : false;
             if ($element["PREVIEW_PICTURE"]) {
                 $element["PREVIEW_PICTURE"]["ALT"] = $element["IPROPERTY_VALUES"]["ELEMENT_PREVIEW_PICTURE_FILE_ALT"];
                 if ($element["PREVIEW_PICTURE"]["ALT"] == "") {
                     $element["PREVIEW_PICTURE"]["ALT"] = $element["NAME"];
                 }
                 $element["PREVIEW_PICTURE"]["TITLE"] = $element["IPROPERTY_VALUES"]["ELEMENT_PREVIEW_PICTURE_FILE_TITLE"];
                 if ($element["PREVIEW_PICTURE"]["TITLE"] == "") {
                     $element["PREVIEW_PICTURE"]["TITLE"] = $element["NAME"];
                 }
             }
             $element["DETAIL_PICTURE"] = $element["DETAIL_PICTURE"] > 0 ? CFile::GetFileArray($element["DETAIL_PICTURE"]) : false;
             if ($element["DETAIL_PICTURE"]) {
                 $element["DETAIL_PICTURE"]["ALT"] = $element["IPROPERTY_VALUES"]["ELEMENT_DETAIL_PICTURE_FILE_ALT"];
                 if ($element["DETAIL_PICTURE"]["ALT"] == "") {
                     $element["DETAIL_PICTURE"]["ALT"] = $element["NAME"];
                 }
                 $element["DETAIL_PICTURE"]["TITLE"] = $element["IPROPERTY_VALUES"]["ELEMENT_DETAIL_PICTURE_FILE_TITLE"];
                 if ($element["DETAIL_PICTURE"]["TITLE"] == "") {
                     $element["DETAIL_PICTURE"]["TITLE"] = $element["NAME"];
                 }
             }
             $element["PROPERTIES"] = array();
             $element["DISPLAY_PROPERTIES"] = array();
             $element["PRODUCT_PROPERTIES"] = array();
             $element['PRODUCT_PROPERTIES_FILL'] = array();
             if (!isset($element["CATALOG_MEASURE_RATIO"])) {
                 $element["CATALOG_MEASURE_RATIO"] = 1;
             }
             if (!isset($element['CATALOG_MEASURE'])) {
                 $element['CATALOG_MEASURE'] = 0;
             }
             $element['CATALOG_MEASURE'] = (int) $element['CATALOG_MEASURE'];
             if ($element['CATALOG_MEASURE'] < 0) {
                 $element['CATALOG_MEASURE'] = 0;
             }
             if (!isset($element['CATALOG_MEASURE_NAME'])) {
                 $element['CATALOG_MEASURE_NAME'] = '';
             }
             $element['CATALOG_MEASURE_NAME'] = $defaultMeasure['SYMBOL_RUS'];
             $element['~CATALOG_MEASURE_NAME'] = $defaultMeasure['~SYMBOL_RUS'];
             $items[$element['ID']] = $element;
             $this->linkItems[$element['ID']] =& $items[$element['ID']];
         }
         unset($element, $elementIterator);
         $propFilter = array('ID' => $this->iblockItems[$iblock], 'IBLOCK_ID' => $iblock);
         CIBlockElement::GetPropertyValuesArray($this->linkItems, $iblock, $propFilter);
         unset($propFilter);
         foreach ($this->linkItems as &$element) {
             CCatalogDiscount::SetProductPropertiesCache($element['ID'], $element['PROPERTIES']);
             if (isset($this->arParams['PROPERTY_CODE'][$iblock])) {
                 $properties = $this->arParams['PROPERTY_CODE'][$iblock];
                 foreach ($properties as $propertyName) {
                     if (!isset($element['PROPERTIES'][$propertyName])) {
                         continue;
                     }
                     $prop =& $element['PROPERTIES'][$propertyName];
                     $boolArr = is_array($prop["VALUE"]);
                     if ($boolArr && !empty($prop["VALUE"]) || !$boolArr && strlen($prop["VALUE"]) > 0) {
                         $element['DISPLAY_PROPERTIES'][$propertyName] = CIBlockFormatProperties::GetDisplayValue($element, $prop, 'catalog_out');
                     }
                     unset($prop);
                 }
             }
             if ($this->arParams['ADD_PROPERTIES_TO_BASKET'] == 'Y' && !empty($this->arParams['CART_PROPERTIES'][$iblock])) {
                 $element["PRODUCT_PROPERTIES"] = CIBlockPriceTools::GetProductProperties($element['IBLOCK_ID'], $element["ID"], $this->arParams['CART_PROPERTIES'][$iblock], $element["PROPERTIES"]);
                 if (!empty($element["PRODUCT_PROPERTIES"])) {
                     $element['PRODUCT_PROPERTIES_FILL'] = CIBlockPriceTools::getFillProductProperties($element['PRODUCT_PROPERTIES']);
                 }
             }
         }
         unset($element, $this->linkItems);
     }
     unset($iblock);
     unset($elementKey);
     return $items;
 }