Все получилось-работает, но $arResult не фильтруется, а перестраивается полностью.
Прошу специалистов - укажите на ошибки.
result-modifier.php:
<?
foreach($arResult['ITEMS'] as $k=>$arElement)
{
$user_id = $arElement['DISPLAY_PROPERTIES']['USER_ID']['DISPLAY_VALUE'];
if ($user_id)
{
$rsUSER = CUser::GetById($user_id);
$f=$rsUSER->Fetch();
$arResult['ITEMS'][$k]['DISPLAY_PROPERTIES']['USER_ID']['DISPLAY_VALUE'] = $f['NAME'].' '.$f['LAST_NAME'];
}
if (is_object($this))
{
$this->arResult['ITEMS'][$k]['FOR_F'] = 'N';
$this->arResult['ITEMS'][$k]['FOR_U'] = 'N';
$this->arResult['ITEMS'][$k]['FOR_V'] = 'N';
if (!isset($arResult['ITEMS'][$k]['FOR_U']))
{
$arResult['ITEMS'][$k]['FOR_F'] = $this->arResult['ITEMS'][$k]['FOR_F'];
$arResult['ITEMS'][$k]['FOR_U'] = $this->arResult['ITEMS'][$k]['FOR_U'];
$arResult['ITEMS'][$k]['FOR_V'] = $this->arResult['ITEMS'][$k]['FOR_V'];
}
}
CModule::IncludeModule('iblock');
$arFilter = Array("IBLOCK_ID"=>9, "PROPERTY_CATEGORY1"=>$arResult['ITEMS'][$k]['ID']);
$res = CIBlockElement::GetList(Array("ID"=>"ASC"), $arFilter);
while($ar_fields = $res->GetNext())
{
$db_props = CIBlockElement::GetProperty(9, $ar_fields["ID"], Array("ID"=>"asc"),Array("CODE"=>"FOR"));
while ($ob = $db_props->GetNext())
{
if ($ob["VALUE"] == 9)
{
$this->arResult['ITEMS'][$k]['FOR_F']='Y';
$arResult['ITEMS'][$k]['FOR_F'] = $this->arResult['ITEMS'][$k]['FOR_F'];
}
if ($ob["VALUE"] == 10)
{
$this->arResult['ITEMS'][$k]['FOR_U']='Y';
$arResult['ITEMS'][$k]['FOR_U'] = $this->arResult['ITEMS'][$k]['FOR_U'];
}
if ($ob["VALUE"] == 11)
{
$this->arResult['ITEMS'][$k]['FOR_V']='Y';
$arResult['ITEMS'][$k]['FOR_V'] = $this->arResult['ITEMS'][$k]['FOR_V'];
}
}
}
}
$res_tmp=array();
foreach($arResult['ITEMS'] as $k=>$arElement)
{
if($_GET['rid']=='fiz')
{
if ($arResult['ITEMS'][$k]['FOR_F']=='N')
{
unset($arResult['ITEMS'][$k]);
};
};
if($_GET['rid']=='ur')
{
if ($arResult['ITEMS'][$k]['FOR_U']=='N')
{
unset($arResult['ITEMS'][$k]);
};
};
if($_GET['rid']=='vlast')
{
if ($arResult['ITEMS'][$k]['FOR_V']=='N')
{
unset($arResult['ITEMS'][$k]);
};
};
}
foreach($arResult['ITEMS'] as $k=>$arElement)
{
array_push($res_tmp,$arResult['ITEMS'][$k]);
}
$arResult['ITEMS']=$res_tmp;
?>
Прошу специалистов - укажите на ошибки.
result-modifier.php:
<?
foreach($arResult['ITEMS'] as $k=>$arElement)
{
$user_id = $arElement['DISPLAY_PROPERTIES']['USER_ID']['DISPLAY_VALUE'];
if ($user_id)
{
$rsUSER = CUser::GetById($user_id);
$f=$rsUSER->Fetch();
$arResult['ITEMS'][$k]['DISPLAY_PROPERTIES']['USER_ID']['DISPLAY_VALUE'] = $f['NAME'].' '.$f['LAST_NAME'];
}
if (is_object($this))
{
$this->arResult['ITEMS'][$k]['FOR_F'] = 'N';
$this->arResult['ITEMS'][$k]['FOR_U'] = 'N';
$this->arResult['ITEMS'][$k]['FOR_V'] = 'N';
if (!isset($arResult['ITEMS'][$k]['FOR_U']))
{
$arResult['ITEMS'][$k]['FOR_F'] = $this->arResult['ITEMS'][$k]['FOR_F'];
$arResult['ITEMS'][$k]['FOR_U'] = $this->arResult['ITEMS'][$k]['FOR_U'];
$arResult['ITEMS'][$k]['FOR_V'] = $this->arResult['ITEMS'][$k]['FOR_V'];
}
}
CModule::IncludeModule('iblock');
$arFilter = Array("IBLOCK_ID"=>9, "PROPERTY_CATEGORY1"=>$arResult['ITEMS'][$k]['ID']);
$res = CIBlockElement::GetList(Array("ID"=>"ASC"), $arFilter);
while($ar_fields = $res->GetNext())
{
$db_props = CIBlockElement::GetProperty(9, $ar_fields["ID"], Array("ID"=>"asc"),Array("CODE"=>"FOR"));
while ($ob = $db_props->GetNext())
{
if ($ob["VALUE"] == 9)
{
$this->arResult['ITEMS'][$k]['FOR_F']='Y';
$arResult['ITEMS'][$k]['FOR_F'] = $this->arResult['ITEMS'][$k]['FOR_F'];
}
if ($ob["VALUE"] == 10)
{
$this->arResult['ITEMS'][$k]['FOR_U']='Y';
$arResult['ITEMS'][$k]['FOR_U'] = $this->arResult['ITEMS'][$k]['FOR_U'];
}
if ($ob["VALUE"] == 11)
{
$this->arResult['ITEMS'][$k]['FOR_V']='Y';
$arResult['ITEMS'][$k]['FOR_V'] = $this->arResult['ITEMS'][$k]['FOR_V'];
}
}
}
}
$res_tmp=array();
foreach($arResult['ITEMS'] as $k=>$arElement)
{
if($_GET['rid']=='fiz')
{
if ($arResult['ITEMS'][$k]['FOR_F']=='N')
{
unset($arResult['ITEMS'][$k]);
};
};
if($_GET['rid']=='ur')
{
if ($arResult['ITEMS'][$k]['FOR_U']=='N')
{
unset($arResult['ITEMS'][$k]);
};
};
if($_GET['rid']=='vlast')
{
if ($arResult['ITEMS'][$k]['FOR_V']=='N')
{
unset($arResult['ITEMS'][$k]);
};
};
}
foreach($arResult['ITEMS'] as $k=>$arElement)
{
array_push($res_tmp,$arResult['ITEMS'][$k]);
}
$arResult['ITEMS']=$res_tmp;
?>