частые случаи php
<?
/* проверка уровня вложенности раздела (есть ли у раздела родразделы) */
$intCount = CIBlockSection::GetCount(array('IBLOCK_ID' =>6,'SECTION_ID' => $arSection["ID"]));
/* Вывод HTML битрикс */
echo htmlspecialcharsBack($arResult['...']);
/*Ссылка на скачивание битрикс*/
$link=CFile::GetFileArray($value['PROPERTIES']['LINK']['VALUE']);
/* Группы пользователя битрикс */
$myUser = $USER->GetID(); $arGroups = CUser::GetUserGroup($myUser);
/* Сравнение дат */
$result = $DB->CompareDates($date1, $date2);
/*Добавить страницу в цепочку навигации*/
$APPLICATION->AddChainItem($APPLICATION->GetTitle());
/* Получаем значение пользовательского поля у каждого раздела */
foreach($arResult["SECTIONS"] as $key => $arSection){
$arUF = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFields("IBLOCK_5_SECTION",$arSection['ID'],"UF_ANONS_SECTION");
if($arUF["UF_ANONS_SECTION"]["VALUE"] != ""){
$arResult["SECTIONS"][$key]["UF_ANONS_SECTION"] = $arUF["UF_ANONS_SECTION"]["VALUE"];
}
}
/* GetList */
$arSelect = Array("ID", "IBLOCK_ID","IBLOCK_SECTION_ID","NAME", "DATE_ACTIVE_FROM","PROPERTY_*");//CATALOG_GROUP_1 - для цены
$arFilter = Array("IBLOCK_ID"=>IntVal($yvalue), "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y");
$res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>50), $arSelect);
$key_value = 0;
while($ob = $res->GetNextElement()){
$arFields[$key_value] = $ob->GetFields();
$arFields[$key_value]['PROPERTIES'] = $ob->GetProperties();//для всех свойств
//$arFields[$key_value]['PROPERTIES'] = $ob->GetProperty('NAME_OF_PROPERTY');//для конкретного
$key_value++;
}
/* Событие изменения статуса оплаты */
AddEventHandler("sale", "OnSalePayOrder", Array("mail", "OnSaleStatusOrder_mail"));
class mail
{
function OnSaleStatusOrder_mail($ID, $val){
//1 вариант
$fp = fopen($_SERVER["DOCUMENT_ROOT"].'/counter.txt', 'w');
fwrite($fp, 'y');
fclose($fp);
//2вариант
$fp = fopen($_SERVER["DOCUMENT_ROOT"].'/counter.txt', 'w');
foreach ($arFields as $key=>$output) {
fwrite($fp, $key."=>".$output."\n");
}
fclose($fp);
}
}
/* Выборка elements для catalog.section.list */
$id_mass = Array();
foreach($arResult['SECTIONS'] as $section){
$id_mas[] = $section['ID'];
}
$IBLOCK_ID = $arParams['IBLOCK_ID'];
$arSelect = Array("ID", "NAME", "DATE_ACTIVE_FROM","IBLOCK_SECTION_ID", "DETAIL_PAGE_URL");
$arFilter = Array("IBLOCK_ID"=>IntVal($IBLOCK_ID),"SECTION_ID"=>$id_mas, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y");
$res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>50), $arSelect);
while($ob = $res->GetNextElement())
{
$temp = $ob->GetFields();
$id = $temp['IBLOCK_SECTION_ID'];
$arFields[$id][] = $temp;
}
foreach($arResult['SECTIONS'] as $key=>$section){
if (array_key_exists($section['ID'], $arFields)) {
$arResult['SECTIONS'][$key]['ITEMS'] = $arFields[$section['ID']];
}
}
/* Получить название всех разделов, в которых лежит элемент */
$parent = true;
$iblock_section_id = $arResult['IBLOCK_SECTION_ID'];
$parent_tree = Array();
$key = 0;
while($parent == true){
$rsSections = CIBlockSection::GetByID($iblock_section_id);
$arSection = $rsSections->Fetch();
$parent_tree[$key]['NAME'] = $arSection['NAME'];
$parent_tree[$key]['SECTION_PAGE_URL'] = $arSection['SECTION_PAGE_URL'];
if(!empty($arSection['IBLOCK_SECTION_ID'])){
$iblock_section_id = $arSection['IBLOCK_SECTION_ID'];
}
else{
$parent = false;
}
$key++;
}
$arResult['PARENT_TREE'] = $parent_tree;
/* Сортировка по свойствам торговых предложений */
$rsBooks = CIBlockElement::GetList(
array(),
array(
"IBLOCK_ID" => 2,//ID каталога
"ACTIVE" => "Y",
"ID" => CIBlockElement::SubQuery
("PROPERTY_CML2_LINK",
array(//PROPERTY_CML2_LINK это свойство торгового предложения "привязка к товарам"
"IBLOCK_ID" => 5,//ID торгового предложения
"PROPERTY_COLOR_VALUE" => "",
"PROPERTY_SIZE_VALUE" => "S",
">CATALOG_PRICE_1" => "",
"<CATALOG_PRICE_1" => "12500",
)
),
),
false,
false,
array("ID")
);
while($arBook = $rsBooks->GetNext())
$all_size[] = $arBook["ID"];
/* Картинка анонса и сумма в малой корзине (код в result_modifier.php) */
CModule::IncludeModule("iblock");
if(!empty($arResult['ITEMS'])){
$elements_id = Array();
$total_count = 0;
foreach($arResult['ITEMS'] as $key=>$value){
$elements_id[] = $value['PRODUCT_ID'];
$temp_count = $value['PRICE'] * $value['QUANTITY'];
$total_count += $temp_count;
}
$arSelect = Array("ID", "IBLOCK_ID","NAME", "PREVIEW_PICTURE");
$arFilter = Array("IBLOCK_ID"=>IntVal(2), "ID"=>$elements_id);
$res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>50), $arSelect);
while($ob = $res->GetNextElement()){
$temp = $ob->GetFields();
$arFields[$temp['ID']] = $temp;
}
foreach($arResult['ITEMS'] as $key=>$value){
$arResult['ITEMS'][$key]['PREVIEW_PICTURE'] = $arFields[$value['PRODUCT_ID']]['PREVIEW_PICTURE'];
}
$arResult['TOTAL_COUNT'] = $total_count;
}
/* Получить названия разделов элементов */
$_SECTIONS_NAME = Array();
$_IBLOCK_ID = ;
foreach($arResult['ITEMS'] as $key=>$value){
if (!in_array($value['IBLOCK_SECTION_ID'], $_SECTIONS_NAME)){
$_SECTIONS_NAME[] = $value['IBLOCK_SECTION_ID'];
}
}
$arFilter = array('IBLOCK_ID' => $_IBLOCK_ID, 'ID' => $_SECTIONS_NAME);
$rsSect = CIBlockSection::GetList(array(),$arFilter);
while ($arSect = $rsSect->GetNext()){
$temp_id = $arSect['ID'];
$arSections[$temp_id] = $arSect['NAME'];
}
foreach($arResult['ITEMS'] as $key=>$value){
if (array_key_exists($value['IBLOCK_SECTION_ID'], $arSections)) {
$arResult['ITEMS'][$key]['SECTION_NAME'] = $arSections[$value['IBLOCK_SECTION_ID']];
}
}
/* Минимальная цена торгового предложения */
foreach($arResult['ITEMS'] as $key=>$value){
$level = count($value['OFFERS']);
if($level==1){
$arResult['ITEMS'][$key]['MIN_PRICE']=$value['OFFERS'][0]['MIN_PRICE']['VALUE_NOVAT'];
}
else{
$i = 0;
while ($i < $level){
$TEMP_PRICE[$i]=$value['OFFERS'][$i]['MIN_PRICE']['VALUE_NOVAT'];
$i++;
}
$arResult['ITEMS'][$key]['MIN_PRICE']=min($TEMP_PRICE);
$TEMP_PRICE=Array();
}
}
/* Предыдущий_следующий (детальная карточка товара) */
$rs=CIBlockElement::GetList(
array("active_from" => "desc"),
array("ACTIVE"=>"Y", "IBLOCK_ID"=>$arResult["IBLOCK_ID"]),
false,
array("nElementID"=>$arResult["ID"], "nPageSize"=>1),
array("DETAIL_PAGE_URL")
);
while($ar=$rs->GetNext()) $page[] = $ar;
if(count($page)==3){ //если есть соседние товары, выводится 2 кнопки
$prev = $page[0]['DETAIL_PAGE_URL'];
$next = $page[2]['DETAIL_PAGE_URL'];
echo '<a href="'.$prev.'" class="prevprod">Previou Item</a>';
echo '<a href="'.$next.'" class="nextprod">Next Item</a>';
}
elseif(count($page)==2){ /*если первый или последний, выводится 1 кнопка*/
if($arResult['ID']==$page[1]['ID']){
$prev = $page[0]['DETAIL_PAGE_URL'];
echo '<a href="'.$prev.'" class="prevprod">Previou Item</a>';
}
elseif($arResult['ID']==$page[0]['ID']){
$next = $page[1]['DETAIL_PAGE_URL'];
echo '<a href="'.$next.'" class="nextprod">Next Item</a>';
}
}
/* Информация по ID элемента, свойство "привязка к элементам" (В result_modifier.php) */
function get_info_elements($IBLOCK_ID, $PROPERTY_NAME, $arResult){
$select_array = Array();
foreach($arResult['ITEMS'] as $key=>$value){
$temp_id = $value['PROPERTIES'][$PROPERTY_NAME]['VALUE'];
if (!in_array($temp_id, $select_array)) {
$select_array[] = $temp_id;
}
}
$arSelect = Array("ID", "NAME", "PREVIEW_PICTURE");
$arFilter = Array("IBLOCK_ID"=>IntVal($IBLOCK_ID), $ID => $select_array, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y");
$res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>30), $arSelect);
while($ob = $res->GetNextElement()){
$arTemp = $ob->GetFields();
$arField[$arTemp['ID']] = $arTemp;
}
foreach($arResult['ITEMS'] as $key=>$value){
$key_sel = $value['PROPERTIES'][$PROPERTY_NAME]['VALUE'];
$arResult['ITEMS'][$key][$PROPERTY_NAME] = $arField[$key_sel];
}
return $arResult;
}
$arResult = get_info_elements(ID , 'MAP', $arResult);//ID ифоблока для выборки, CODE свойства , массив $arResult
/* Данные о пользователе, по ID заказа */
$ORDER_ID = ;
$res = CSaleOrderPropsValue::GetList(
$arOrder = array(), // Индекс сортировки.
$arFilter = array("ORDER_ID" => $ORDER_ID), // Фильтр
$arGroupBy = false, // Групировка
$arNavStartParams = false, // Навигация
$arSelectFields = array() // Необходимые поля.
);
while ( $arVals[] = $res->Fetch() );
echo "<pre>".print_r($arVals , true)."</pre>";
/* Подписка на рассылку */
//страница ajax:
include($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
CModule::IncludeModule("subscribe");
$RUB_ID[0]=2;
$arFields = Array(
"EMAIL" => $_POST['mail'],
"ACTIVE" => "Y",
"SEND_CONFIRM" => "Y",
"RUB_ID" => $RUB_ID
);
$subscr = new CSubscription;
if($ID = $subscr->Add($arFields)) echo "true";
else echo "false";
//Подтверждение подписки:
$subscr = new CSubscription;
$subscription = CSubscription::GetByEmail($_GET['mail']);
if($subscription->ExtractFields("str_")) $ID = (integer)$str_ID;
$CONFIRM = $str_CONFIRMED;
if($CONFIRM=='N' and $ID>0){
if($subscr->Update($ID, array("CONFIRM_CODE"=>$_GET['confirm'])))
$str_CONFIRMED = "Y";
echo "<h2>Подписка на новости подтверждена, перейти на <a href='/'>главную</a></h2>";
}
else echo "<h2>Ошибка</h2>"
/* Получить все торговые предложения по ID товара */
CModule::IncludeModule("catalog");
CModule::IncludeModule("iblock");
$IBLOCK_ID = ; //ID инфоблока предложениями
$ID = ; //ID товара
$rsOffers = CIBlockElement::GetList(array(),array('IBLOCK_ID' => 5, 'PROPERTY_CML2_LINK' => 105));
while ($arOffer = $rsOffers->GetNextElement())
$arFields[] = $arOffer->GetFields();
$min_price = 0;
foreach($arFields as $key=>$value){
$ar_res = CCatalogProduct::GetByIDEx($value['ID']);
if($min_price==0)
$min_price = $ar_res['PRICES'][1]['PRICE'];
elseif($min_price > $ar_res['PRICES'][1]['PRICE'])
$min_price = $ar_res['PRICES'][1]['PRICE'];
}
/* Добавление деталей заказа в письмо */
AddEventHandler("sale", "OnOrderNewSendEmail", "OnOrderUpdateHandler");
function OnOrderUpdateHandler($ID,&$eventName,&$arFields,$val){
if (CModule::IncludeModule("sale"))
{
$ORDER_ID = $arFields['ORDER_ID'];
$arOrder = CSaleOrder::GetByID($ORDER_ID);
$PAY_SYSTEM_ID = $arOrder['PAY_SYSTEM_ID'];
$PERSON_TYPE = $arOrder['PERSON_TYPE_ID'];
$arPaySys = CSalePaySystem::GetByID($PAY_SYSTEM_ID, $PERSON_TYPE);
if($arPaySys['ID']==4){
$_PaySystemName = "ВНИМАНИЕ — ЗАКАЗ С ОПЛАТОЙ ЧЕРЕЗ ТЕРМИНАЛ ПРИЕМА БАНКОВСКИХ КАРТ";
}
else{
$_PaySystemName = "Система оплаты: ".$arPaySys['NAME'];
}
$arFields['PAY_SYSTEM'] = trim($_PaySystemName);
}
}
?>
<!-- preview youtube
http://i3.ytimg.com/vi/ID_ролика/sddefault.jpg
-->