vyacheslavkulik
4/8/2016 - 2:24 PM

частые случаи php

частые случаи 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
-->