| Current Path : /var/www/element/data/www/greenpr.ru/bitrix/modules/iblock/classes/general/ |
| Current File : /var/www/element/data/www/greenpr.ru/bitrix/modules/iblock/classes/general/iblock_element.php |
<?
class _CIBElement
{
var $fields;
var $props=false;
function GetFields()
{
return $this->fields;
}
function GetProperties($arOrder = false, $arFilter=Array())
{
if($arOrder===false)
$arOrder = Array("sort"=>"asc","id"=>"asc","enum_sort"=>"asc","value_id"=>"asc");
if(count($arFilter)==0 && is_array($this->props))
{
$arAllProps = Array();
foreach($this->props as $arProp)
{
if(strlen(trim($arProp["CODE"]))>0)
$PIND = $arProp["CODE"];
else
$PIND = $arProp["ID"];
$arProp["VALUE"] = $this->fields["PROPERTY_".$arProp["ID"]];
$arProp["DESCRIPTION"] = $this->fields["DESCRIPTION_".$arProp["ID"]];
if($arProp["MULTIPLE"]=="N")
{
if($arProp["PROPERTY_TYPE"]=="L")
{
$arProp["VALUE_ENUM_ID"] = $val = $arProp["VALUE"];
$arEnum = CIBlockPropertyEnum::GetByID($val);
if($arEnum!==false)
{
$arProp["~VALUE"] = $arEnum["VALUE"];
if(is_array($arProp["VALUE"]) || preg_match("/[;&<>\"]/", $arProp["VALUE"]))
$arProp["VALUE"] = htmlspecialcharsex($arEnum["VALUE"]);
else
$arProp["VALUE"] = $arEnum["VALUE"];
}
else
{
$arProp["~VALUE"] = "";
$arProp["VALUE"] = "";
}
}
elseif(strlen($arProp["VALUE"])>0)
{
if($arProp["PROPERTY_TYPE"]=="N")
$arProp["VALUE"] = htmlspecialcharsex(CIBlock::NumberFormat($arProp["VALUE"]));
$arProp["~VALUE"] = $this->fields["~PROPERTY_".$arProp["ID"]];
$arProp["~DESCRIPTION"] = $this->fields["~DESCRIPTION_".$arProp["ID"]];
}
else
{
$arProp["VALUE"] = $arProp["~VALUE"] = "";
$arProp["DESCRIPTION"] = $arProp["~DESCRIPTION"] = "";
}
}
else
{
$arList = $arProp["VALUE"];
$arListTilda = $this->fields["~PROPERTY_".$arProp["ID"]];
if($arProp["PROPERTY_TYPE"]=="L")
{
$arProp["~VALUE"] = $arProp["VALUE"] = $arProp["VALUE_ENUM_ID"] = false;
foreach($arList as $key=>$val)
{
if(strlen($val)>0)
{
if(is_array($arProp["VALUE"]))
{
$arProp["VALUE_ENUM_ID"][] = $key;
$arProp["~VALUE"][] = $val;
if(is_array($val) || preg_match("/[;&<>\"]/", $val))
$arProp["VALUE"][] = htmlspecialcharsex($val);
else
$arProp["VALUE"][] = $val;
}
else
{
$arProp["VALUE_ENUM_ID"] = array($key);
$arProp["~VALUE"] = array($val);
if(is_array($val) || preg_match("/[;&<>\"]/", $val))
$arProp["VALUE"] = array(htmlspecialcharsex($val));
else
$arProp["VALUE"] = array($val);
}
}
}
}
else
{
$arDesc = $arProp["DESCRIPTION"];
$arDescTilda = $this->fields["~DESCRIPTION_".$arProp["ID"]];
$arProp["~VALUE"] = $arProp["VALUE"] = false;
$arProp["~DESCRIPTION"] = $arProp["DESCRIPTION"] = false;
foreach($arList as $key=>$val)
{
if(strlen($val)>0)
{
if(is_array($arProp["VALUE"]))
{
$arProp["~VALUE"][] = $arListTilda[$key];
if($arProp["PROPERTY_TYPE"]=="N")
$val = htmlspecialcharsex(CIBlock::NumberFormat($val));
$arProp["VALUE"][] = $val;
$arProp["~DESCRIPTION"][] = $arDescTilda[$key];
$arProp["DESCRIPTION"][] = $arDesc[$key];
}
else
{
$arProp["~VALUE"] = array($arListTilda[$key]);
if($arProp["PROPERTY_TYPE"]=="N")
$val = htmlspecialcharsex(CIBlock::NumberFormat($val));
$arProp["VALUE"] = array($val);
$arProp["~DESCRIPTION"] = array($arDescTilda[$key]);
$arProp["DESCRIPTION"] = array($arDesc[$key]);
}
}
}
}
}
$arAllProps[$PIND]=$arProp;
}
return $arAllProps;
}
if(array_key_exists("ID", $arFilter) && !is_numeric(substr($arFilter["ID"], 0, 1)))
{
$arFilter["CODE"] = $arFilter["ID"];
unset($arFilter["ID"]);
}
if(!array_key_exists("ACTIVE", $arFilter))
$arFilter["ACTIVE"]="Y";
$props = CIBlockElement::GetProperty($this->fields["IBLOCK_ID"], $this->fields["ID"], $arOrder, $arFilter);
$arAllProps = Array();
while($arProp = $props->Fetch())
{
if(strlen(trim($arProp["CODE"]))>0)
$PIND = $arProp["CODE"];
else
$PIND = $arProp["ID"];
if($arProp["PROPERTY_TYPE"]=="L")
{
$arProp["VALUE_ENUM_ID"] = $arProp["VALUE"];
$arProp["VALUE"] = $arProp["VALUE_ENUM"];
}
if(is_array($arProp["VALUE"]) || (strlen($arProp["VALUE"]) > 0))
{
$arProp["~VALUE"] = $arProp["VALUE"];
if(is_array($arProp["VALUE"]) || preg_match("/[;&<>\"]/", $arProp["VALUE"]))
$arProp["VALUE"] = htmlspecialcharsex($arProp["VALUE"]);
$arProp["~DESCRIPTION"] = $arProp["DESCRIPTION"];
if(preg_match("/[;&<>\"]/", $arProp["DESCRIPTION"]))
$arProp["DESCRIPTION"] = htmlspecialcharsex($arProp["DESCRIPTION"]);
}
else
{
$arProp["VALUE"] = $arProp["~VALUE"] = "";
$arProp["DESCRIPTION"] = $arProp["~DESCRIPTION"] = "";
}
if($arProp["MULTIPLE"]=="Y")
{
if(array_key_exists($PIND, $arAllProps))
{
$arTemp = &$arAllProps[$PIND];
if($arProp["VALUE"]!=="")
{
if(is_array($arTemp["VALUE"]))
{
$arTemp["VALUE"][] = $arProp["VALUE"];
$arTemp["~VALUE"][] = $arProp["~VALUE"];
$arTemp["DESCRIPTION"][] = $arProp["DESCRIPTION"];
$arTemp["~DESCRIPTION"][] = $arProp["~DESCRIPTION"];
$arTemp["PROPERTY_VALUE_ID"][] = $arProp["PROPERTY_VALUE_ID"];
if($arProp["PROPERTY_TYPE"]=="L")
$arTemp["VALUE_ENUM_ID"][] = $arProp["VALUE_ENUM_ID"];
}
else
{
$arTemp["VALUE"] = array($arProp["VALUE"]);
$arTemp["~VALUE"] = array($arProp["~VALUE"]);
$arTemp["DESCRIPTION"] = array($arProp["DESCRIPTION"]);
$arTemp["~DESCRIPTION"] = array($arProp["~DESCRIPTION"]);
$arTemp["PROPERTY_VALUE_ID"] = array($arProp["PROPERTY_VALUE_ID"]);
if($arProp["PROPERTY_TYPE"]=="L")
$arTemp["VALUE_ENUM_ID"] = array($arProp["VALUE_ENUM_ID"]);
}
}
}
else
{
$arProp["~NAME"] = $arProp["NAME"];
if(preg_match("/[;&<>\"]/", $arProp["NAME"]))
$arProp["NAME"] = htmlspecialcharsex($arProp["NAME"]);
$arProp["~DEFAULT_VALUE"] = $arProp["DEFAULT_VALUE"];
if(is_array($arProp["DEFAULT_VALUE"]) || preg_match("/[;&<>\"]/", $arProp["DEFAULT_VALUE"]))
$arProp["DEFAULT_VALUE"] = htmlspecialcharsex($arProp["DEFAULT_VALUE"]);
if($arProp["VALUE"]!=="")
{
$arProp["VALUE"] = array($arProp["VALUE"]);
$arProp["~VALUE"] = array($arProp["~VALUE"]);
$arProp["DESCRIPTION"] = array($arProp["DESCRIPTION"]);
$arProp["~DESCRIPTION"] = array($arProp["~DESCRIPTION"]);
$arProp["PROPERTY_VALUE_ID"] = array($arProp["PROPERTY_VALUE_ID"]);
if($arProp["PROPERTY_TYPE"]=="L")
$arProp["VALUE_ENUM_ID"] = array($arProp["VALUE_ENUM_ID"]);
}
else
{
$arProp["VALUE"] = false;
$arProp["~VALUE"] = false;
$arProp["DESCRIPTION"] = false;
$arProp["~DESCRIPTION"] = false;
$arProp["PROPERTY_VALUE_ID"] = false;
if($arProp["PROPERTY_TYPE"]=="L")
$arProp["VALUE_ENUM_ID"] = false;
}
$arAllProps[$PIND] = $arProp;
}
}
else
{
$arProp["~NAME"] = $arProp["NAME"];
if(preg_match("/[;&<>\"]/", $arProp["NAME"]))
$arProp["NAME"] = htmlspecialcharsex($arProp["NAME"]);
$arProp["~DEFAULT_VALUE"] = $arProp["DEFAULT_VALUE"];
if(is_array($arProp["DEFAULT_VALUE"]) || preg_match("/[;&<>\"]/", $arProp["DEFAULT_VALUE"]))
$arProp["DEFAULT_VALUE"] = htmlspecialcharsex($arProp["DEFAULT_VALUE"]);
$arAllProps[$PIND] = $arProp;
}
}
return $arAllProps;
}
function GetProperty($ID)
{
$res = $this->GetProperties(Array(), Array("ID"=>$ID));
list(, $res) = each($res);
return $res;
}
function GetGroups()
{
$res = CIBlockElement::GetElementGroups($this->fields["ID"]);
return $res;
}
}
?>