while ($ar_fields = $res->GetNext()) {
        $n++;
        // ай пока что через пень-колоду
    }
    global $CACHE_MANAGER;
    $CACHE_MANAGER->ClearByTag('iblock_id_9');
    // абы што
    CIBlockElement::SetPropertyValuesEx($itemID, false, array('COMMNETS_CNT' => $n));
}
CModule::IncludeModule('iblock');
$res = CIBlockElement::GetByID($id);
if ($comment = $res->GetNext()) {
    if ($comment['IBLOCK_ID'] != COption::GetOptionString('comments', 'iblock')) {
        die('err1');
    }
    if ($comment['CREATED_BY'] != $USER->GetID()) {
        die('err2');
    }
    $_REQUEST['text'] = trim($_REQUEST['text']);
    switch ($action) {
        case 'edit':
            $el = new CIBlockElement();
            $el->Update($id, array("PREVIEW_TEXT" => $_REQUEST['text']));
            break;
        case 'delete':
            CIBlockElement::Delete($id);
            $itemID = intval($_REQUEST['item']);
            reCalculateCommentsCnt($itemID);
            break;
    }
}
    if (!$arResult['ERROR']) { 
        CModule::IncludeModule('iblock');
        $el = new CIBlockElement; 
        $arLoadProductArray = Array(
            "MODIFIED_BY" => $USER->GetID(),
            "IBLOCK_SECTION_ID" => false,
            "IBLOCK_ID" => COMMENTS_IBLOCK_ID,
            "DATE_ACTIVE_FROM" => ConvertTimeStamp(false, 'FULL'),
            "PROPERTY_VALUES" => $PROP,
            "NAME" => TruncateText($_REQUEST['commment'], 255),
            "ACTIVE" => "Y",
            "PREVIEW_TEXT" => TruncateText($_REQUEST['commment'], 5000)
        ); 
        if ($PRODUCT_ID = $el->Add($arLoadProductArray)) {
            $arResult['OK'] = true;
            reCalculateCommentsCnt($arParams['ID']);
        } else {
            $arResult['ERROR'] = $el->LAST_ERROR;
        }
    }
}

$arResult['USER_ID'] = $USER->GetID();

$cache_id = serialize($arParams); 
$cache_dir = '/comments';
$obCache = new CPHPCache;
if ($obCache->InitCache($arParams['CACHE_TIME'], $cache_id, $cache_dir)) {
    
    $arResult = $obCache->GetVars();