function GetPublicViewHTML($arProperty, $value, $strHTMLControlName) { if (!is_array($value["VALUE"])) { $value = CIBlockPropertyHTML::ConvertFromDB($arProperty, $value); } $ar = $value["VALUE"]; if ($ar) { return FormatText($ar["TEXT"], $ar["TYPE"]); } else { return ""; } }
public static function GetPublicViewHTML($arProperty, $value, $strHTMLControlName) { if (!is_array($value["VALUE"])) { $value = CIBlockPropertyHTML::ConvertFromDB($arProperty, $value); } $ar = $value["VALUE"]; if (!empty($ar) && is_array($ar)) { if (isset($strHTMLControlName['MODE']) && $strHTMLControlName['MODE'] == 'CSV_EXPORT') { return '[' . $ar["TYPE"] . ']' . $ar["TEXT"]; } else { return FormatText($ar["TEXT"], $ar["TYPE"]); } } else { return ''; } }
/** * <p>Возвращает массив значений полей приведенный в HTML-безопасный вид. Если достигнут конец результата выборки метод вернет <i>false</i>. Динамичный метод.</p> * * * @param bool $TextHtmlAuto = true Если значение данного параметра - "true", то метод будет * автоматически обрабатывать поля с выбором формата * text/html.<br>Необязательный. По умолчанию - "true". * * @param bool $use_tilda = true Если значение данного параметра - "true", то помимо преобразованных * в HTML-безопасный вид полей, в результирующий массив будут включены * также оригинальные (исходные) значения этих полей (ключи массива * с оригинальными значениями этих полей будут иметь суффикс * "~").<br>Необязательный. По умолчанию - "true". * * @return mixed * * <h4>Example</h4> * <pre> * <select> * <? * $rs = CGroup::GetList($order="ID", $by="ASC"); * while ($arGroup=<b>$rs->GetNext</b>()) : * ?><option value="<?=$arGroup["ID"]?>" * <?if (IntVal($arGroup["ID"])==IntVal($show_perms_for)) echo " selected";?> * ><?=$arGroup["NAME"]?></option><? * endwhile; * ?> * </select> * </pre> * * * <h4>See Also</h4> * <ul> <li> <a href="http://dev.1c-bitrix.ru/api_help/main/reference/cdbresult/fetch.php">CDBResult::Fetch</a> </li> <li> * <a href="http://dev.1c-bitrix.ru/api_help/main/reference/cdbresult/extractfields.php">CDBResult::ExtractFields</a> </li> * <li> <a href="http://dev.1c-bitrix.ru/api_help/main/reference/cdbresult/navnext.php">CDBResult::NavNext</a> </li> * </ul><a name="examples"></a> * * * @static * @link http://dev.1c-bitrix.ru/api_help/main/reference/cdbresult/getnext.php * @author Bitrix */ public function GetNext($bTextHtmlAuto = true, $use_tilda = true) { if ($arRes = $this->Fetch()) { if ($this->arGetNextCache == false) { $this->arGetNextCache = array(); foreach ($arRes as $FName => $arFValue) { $this->arGetNextCache[$FName] = array_key_exists($FName . "_TYPE", $arRes); } } if ($use_tilda) { $arTilda = array(); foreach ($arRes as $FName => $arFValue) { if ($this->arGetNextCache[$FName] && $bTextHtmlAuto) { $arTilda[$FName] = FormatText($arFValue, $arRes[$FName . "_TYPE"]); } elseif (is_array($arFValue)) { $arTilda[$FName] = htmlspecialcharsEx($arFValue); } elseif (preg_match("/[;&<>\"]/", $arFValue)) { $arTilda[$FName] = htmlspecialcharsEx($arFValue); } else { $arTilda[$FName] = $arFValue; } $arTilda["~" . $FName] = $arFValue; } return $arTilda; } else { foreach ($arRes as $FName => $arFValue) { if ($this->arGetNextCache[$FName] && $bTextHtmlAuto) { $arRes[$FName] = FormatText($arFValue, $arRes[$FName . "_TYPE"]); } elseif (is_array($arFValue)) { $arRes[$FName] = htmlspecialcharsEx($arFValue); } elseif (preg_match("/[;&<>\"]/", $arFValue)) { $arRes[$FName] = htmlspecialcharsEx($arFValue); } } } } return $arRes; }
function exportElementFields($arElement, $SECTION_MAP) { fwrite($this->fp, "\t\t\t\t<" . GetMessage("IBLOCK_XML2_NAME") . ">" . htmlspecialcharsbx($arElement["NAME"]) . "</" . GetMessage("IBLOCK_XML2_NAME") . ">\n"); if ($this->bExtended) { fwrite($this->fp, "\t\t\t\t<" . GetMessage("IBLOCK_XML2_BX_TAGS") . ">" . htmlspecialcharsbx($arElement["TAGS"]) . "</" . GetMessage("IBLOCK_XML2_BX_TAGS") . ">\n"); } $arSections = array(); $rsSections = CIBlockElement::GetElementGroups($arElement["ID"], true); while ($arSection = $rsSections->Fetch()) { if (array_key_exists($arSection["ID"], $SECTION_MAP)) { $arSections[] = $SECTION_MAP[$arSection["ID"]]; } } fwrite($this->fp, "\t\t\t\t<" . GetMessage("IBLOCK_XML2_GROUPS") . ">\n"); foreach ($arSections as $xml_id) { fwrite($this->fp, "\t\t\t\t\t<" . GetMessage("IBLOCK_XML2_ID") . ">" . htmlspecialcharsbx($xml_id) . "</" . GetMessage("IBLOCK_XML2_ID") . ">\n"); } fwrite($this->fp, "\t\t\t\t</" . GetMessage("IBLOCK_XML2_GROUPS") . ">\n"); if (!$this->bExtended) { fwrite($this->fp, "\t\t\t\t<" . GetMessage("IBLOCK_XML2_DESCRIPTION") . ">" . htmlspecialcharsbx(FormatText($arElement["DETAIL_TEXT"], $arElement["DETAIL_TEXT_TYPE"])) . "</" . GetMessage("IBLOCK_XML2_DESCRIPTION") . ">\n"); } fwrite($this->fp, $this->formatXMLNode(4, GetMessage("IBLOCK_XML2_PICTURE"), $this->ExportFile($arElement["DETAIL_PICTURE"]))); }
function ExportElements($PROPERTY_MAP, $SECTION_MAP, $start_time, $INTERVAL, $counter_limit = 0, $arElementFilter = false) { $counter = 0; $arSelect = array( "ID", "IBLOCK_ID", "XML_ID", "ACTIVE", "CODE", "NAME", "PREVIEW_TEXT", "PREVIEW_TEXT_TYPE", "ACTIVE_FROM", "ACTIVE_TO", "SORT", "TAGS", "DETAIL_TEXT", "DETAIL_TEXT_TYPE", "PREVIEW_PICTURE", "DETAIL_PICTURE", ); if(is_array($arElementFilter)) { $arFilter = $arElementFilter; } else { if($arElementFilter === "none") return 0; $arFilter = array ( "IBLOCK_ID"=> $this->arIBlock["ID"], "ACTIVE" => "Y", ">ID" => $this->next_step["LAST_ID"], ); if($arElementFilter === "all") unset($arFilter["ACTIVE"]); } $arOrder = array( "ID" => "ASC", ); $arPropOrder = array( "sort" => "asc", "id" => "asc", "enum_sort" => "asc", "value_id" => "asc", ); $rsElements = CIBlockElement::GetList($arOrder, $arFilter, false, false, $arSelect); while($arElement = $rsElements->Fetch()) { if($this->next_step["catalog"]) fwrite($this->fp, "\t\t\t<".GetMessage("IBLOCK_XML2_OFFER").">\n"); else fwrite($this->fp, "\t\t\t<".GetMessage("IBLOCK_XML2_POSITION").">\n"); if(strlen($arElement["XML_ID"])>0) $xml_id = $arElement["XML_ID"]; else $xml_id = $arElement["ID"]; if($this->PRODUCT_IBLOCK_ID > 0) { $rsLink = CIBlockElement::GetProperty($this->arIBlock["ID"], $arElement["ID"], $arPropOrder, array("ACTIVE"=>"Y", "CODE" => "CML2_LINK")); $arLink = $rsLink->Fetch(); if(is_array($arLink) && !is_array($arLink["VALUE"]) && $arLink["VALUE"] > 0) $xml_id = $this->GetElementXML_ID($this->PRODUCT_IBLOCK_ID, $arLink["VALUE"])."#".$xml_id; } fwrite($this->fp, "\t\t\t\t<".GetMessage("IBLOCK_XML2_ID").">".htmlspecialcharsbx($xml_id)."</".GetMessage("IBLOCK_XML2_ID").">\n"); if(!$this->only_price) { fwrite($this->fp, "\t\t\t\t<".GetMessage("IBLOCK_XML2_NAME").">".htmlspecialcharsbx($arElement["NAME"])."</".GetMessage("IBLOCK_XML2_NAME").">\n"); if($this->bExtended) fwrite($this->fp, "\t\t\t\t<".GetMessage("IBLOCK_XML2_BX_TAGS").">".htmlspecialcharsbx($arElement["TAGS"])."</".GetMessage("IBLOCK_XML2_BX_TAGS").">\n"); $arSections = array(); $rsSections = CIBlockElement::GetElementGroups($arElement["ID"], true); while($arSection = $rsSections->Fetch()) if(array_key_exists($arSection["ID"], $SECTION_MAP)) $arSections[] = $SECTION_MAP[$arSection["ID"]]; fwrite($this->fp, "\t\t\t\t<".GetMessage("IBLOCK_XML2_GROUPS").">\n"); foreach($arSections as $xml_id) fwrite($this->fp, "\t\t\t\t\t<".GetMessage("IBLOCK_XML2_ID").">".htmlspecialcharsbx($xml_id)."</".GetMessage("IBLOCK_XML2_ID").">\n"); fwrite($this->fp, "\t\t\t\t</".GetMessage("IBLOCK_XML2_GROUPS").">\n"); if(!$this->bExtended) fwrite($this->fp, "\t\t\t\t<".GetMessage("IBLOCK_XML2_DESCRIPTION").">".htmlspecialcharsbx(FormatText($arElement["DETAIL_TEXT"], $arElement["DETAIL_TEXT_TYPE"]))."</".GetMessage("IBLOCK_XML2_DESCRIPTION").">\n"); fwrite($this->fp, $this->formatXMLNode(4, GetMessage("IBLOCK_XML2_PICTURE"), $this->ExportFile($arElement["DETAIL_PICTURE"]))); fwrite($this->fp, "\t\t\t\t<".GetMessage("IBLOCK_XML2_PROPERTIES_VALUES").">\n"); if($this->bExtended) { $this->ExportPropertyValue("CML2_ACTIVE", ($arElement["ACTIVE"]=="Y"? "true": "false")); $this->ExportPropertyValue("CML2_CODE", $arElement["CODE"]); $this->ExportPropertyValue("CML2_SORT", intval($arElement["SORT"])); $this->ExportPropertyValue("CML2_ACTIVE_FROM", CDatabase::FormatDate($arElement["ACTIVE_FROM"], CLang::GetDateFormat("FULL"), "YYYY-MM-DD HH:MI:SS")); $this->ExportPropertyValue("CML2_ACTIVE_TO", CDatabase::FormatDate($arElement["ACTIVE_TO"], CLang::GetDateFormat("FULL"), "YYYY-MM-DD HH:MI:SS")); $this->ExportPropertyValue("CML2_PREVIEW_TEXT", $arElement["PREVIEW_TEXT"], $arElement["PREVIEW_TEXT_TYPE"]); $this->ExportPropertyValue("CML2_DETAIL_TEXT", $arElement["DETAIL_TEXT"], $arElement["DETAIL_TEXT_TYPE"]); $this->ExportPropertyValue("CML2_PREVIEW_PICTURE", $this->ExportFile($arElement["PREVIEW_PICTURE"])); } $rsProps = CIBlockElement::GetProperty($this->arIBlock["ID"], $arElement["ID"], $arPropOrder, array("ACTIVE"=>"Y")); $arProps = array(); while($arProp = $rsProps->Fetch()) { $pid = $arProp["ID"]; if(!array_key_exists($pid, $arProps)) $arProps[$pid] = array( "PROPERTY_TYPE" => $arProp["PROPERTY_TYPE"], "LINK_IBLOCK_ID" => $arProp["LINK_IBLOCK_ID"], "VALUES" => array(), ); if($arProp["PROPERTY_TYPE"] == "L") $arProps[$pid]["VALUES"][] = array( "VALUE" => $arProp["VALUE_ENUM"], "DESCRIPTION" => $arProp["DESCRIPTION"], "VALUE_ENUM_ID" => $arProp["VALUE"], ); else $arProps[$pid]["VALUES"][] = array( "VALUE" => $arProp["VALUE"], "DESCRIPTION" => $arProp["DESCRIPTION"], "VALUE_ENUM_ID" => $arProp["VALUE_ENUM_ID"], ); } foreach($arProps as $pid => $arProp) { $bEmpty = true; fwrite($this->fp, "\t\t\t\t\t<".GetMessage("IBLOCK_XML2_PROPERTY_VALUES").">\n"); fwrite($this->fp, "\t\t\t\t\t\t<".GetMessage("IBLOCK_XML2_ID").">".htmlspecialcharsbx($PROPERTY_MAP[$pid])."</".GetMessage("IBLOCK_XML2_ID").">\n"); foreach($arProp["VALUES"] as $arValue) { $value = $arValue["VALUE"]; if(is_array($value) || strlen($value)) { $bEmpty = false; $bSerialized = false; if($this->bExtended) { if($arProp["PROPERTY_TYPE"]=="L") { $value = CIBlockPropertyEnum::GetByID($arValue["VALUE_ENUM_ID"]); $value = $value["XML_ID"]; } elseif($arProp["PROPERTY_TYPE"]=="F") { $value = $this->ExportFile($value); } elseif($arProp["PROPERTY_TYPE"]=="G") { $value = $this->GetSectionXML_ID($arProp["LINK_IBLOCK_ID"], $value); } elseif($arProp["PROPERTY_TYPE"]=="E") { $value = $this->GetElementXML_ID($arProp["LINK_IBLOCK_ID"], $value); } if(is_array($value) && $arProp["PROPERTY_TYPE"]!=="F") { $bSerialized = true; $value = serialize($value); } } fwrite($this->fp, $this->formatXMLNode(6, GetMessage("IBLOCK_XML2_VALUE"), $value)); if($this->bExtended) { fwrite($this->fp, "\t\t\t\t\t\t<".GetMessage("IBLOCK_XML2_PROPERTY_VALUE").">\n"); if($bSerialized) fwrite($this->fp, "\t\t\t\t\t\t\t<".GetMessage("IBLOCK_XML2_SERIALIZED").">true</".GetMessage("IBLOCK_XML2_SERIALIZED").">\n"); fwrite($this->fp, $this->formatXMLNode(7, GetMessage("IBLOCK_XML2_VALUE"), $value)); fwrite($this->fp, "\t\t\t\t\t\t\t<".GetMessage("IBLOCK_XML2_DESCRIPTION").">".htmlspecialcharsbx($arValue["DESCRIPTION"])."</".GetMessage("IBLOCK_XML2_DESCRIPTION").">\n"); fwrite($this->fp, "\t\t\t\t\t\t</".GetMessage("IBLOCK_XML2_PROPERTY_VALUE").">\n"); } } } if($bEmpty) fwrite($this->fp, "\t\t\t\t\t\t<".GetMessage("IBLOCK_XML2_VALUE")."></".GetMessage("IBLOCK_XML2_VALUE").">\n"); fwrite($this->fp, "\t\t\t\t\t</".GetMessage("IBLOCK_XML2_PROPERTY_VALUES").">\n"); } fwrite($this->fp, "\t\t\t\t</".GetMessage("IBLOCK_XML2_PROPERTIES_VALUES").">\n"); } if($this->next_step["catalog"]) { $arPrices = array(); $rsPrices = CPrice::GetList(array(), array("PRODUCT_ID" => $arElement["ID"])); while($arPrice = $rsPrices->Fetch()) { if(!$arPrice["QUANTITY_FROM"] && !$arPrice["QUANTITY_TO"]) { $arPrices[] = array( GetMessage("IBLOCK_XML2_PRICE_TYPE_ID") => $this->prices[$arPrice["CATALOG_GROUP_ID"]], GetMessage("IBLOCK_XML2_PRICE_FOR_ONE") => $arPrice["PRICE"], GetMessage("IBLOCK_XML2_CURRENCY") => $arPrice["CURRENCY"], GetMessage("IBLOCK_XML2_MEASURE") => GetMessage("IBLOCK_XML2_PCS"), ); } } if(count($arPrices)>0) { fwrite($this->fp, "\t\t\t\t<".GetMessage("IBLOCK_XML2_PRICES").">\n"); foreach($arPrices as $arPrice) { fwrite($this->fp, "\t\t\t\t\t<".GetMessage("IBLOCK_XML2_PRICE").">\n"); foreach($arPrice as $key=>$value) { fwrite($this->fp, "\t\t\t\t\t\t<".$key.">".htmlspecialcharsbx($value)."</".$key.">\n"); } fwrite($this->fp, "\t\t\t\t\t</".GetMessage("IBLOCK_XML2_PRICE").">\n"); } fwrite($this->fp, "\t\t\t\t</".GetMessage("IBLOCK_XML2_PRICES").">\n"); $arCatalogProduct = CCatalogProduct::GetByID($arElement["ID"]); if($arCatalogProduct) fwrite($this->fp, "\t\t\t\t<".GetMessage("IBLOCK_XML2_AMOUNT").">".htmlspecialcharsbx($arCatalogProduct["QUANTITY"])."</".GetMessage("IBLOCK_XML2_AMOUNT").">\n"); } } if($this->next_step["catalog"]) fwrite($this->fp, "\t\t\t</".GetMessage("IBLOCK_XML2_OFFER").">\n"); else fwrite($this->fp, "\t\t\t</".GetMessage("IBLOCK_XML2_POSITION").">\n"); $this->next_step["LAST_ID"] = $arElement["ID"]; $counter++; if($INTERVAL > 0 && (time()-$start_time) > $INTERVAL) break; if($counter_limit > 0 && ($counter >= $counter_limit)) break; } return $counter; }