php скрипты

Для дебага в файл

11.04.2014 php, php скрипты

ob_start(); echo '<pre>';var_dump($arDebug);echo "</pre>\n"; $body = ob_get_contents(); ob_end_clean();
$f=@fopen('fail_'.md5('ololo_').".txt","a+"); fputs($f,"$body"); fclose($f);

Обрезать PREVIEW_TEXT с html тегами

09.04.2014 Bitrix, php, php скрипты ,

 preg_replace('/\s[^\s]+$/', '', substr(strip_tags($arItem["PREVIEW_TEXT"]), 0, 40)).'...';
$obParser = new CTextParser;
		if($arParams["PREVIEW_TRUNCATE_LEN"] > 0){
			$arItem["PREVIEW_TEXT"] = $obParser->html_cut($arItem["PREVIEW_TEXT"], $arParams["PREVIEW_TRUNCATE_LEN"]);	
		}

В строке подстроку

09.12.2013 php, php скрипты ,

if(strpos($_REQUEST['ELEMENT_CODE'], $arItem['CODE']) !== false){}

где ищем, потом что ищем
Ищет в строке подстроку

Начало недели и конец недели php

18.09.2013 php, php скрипты ,

$weekStart	= date('Y-m-d H:i:s', strtotime(date('Y').'W'.date('W').'1'));
$weekEnd	= date('Y-m-d H:i:s', strtotime(date('Y').'W'.date('W').'7'));

// или так

$current_week_start = date("d.m.Y", strtotime("last Monday"));
$current_week_end = date("d.m.Y", strtotime("Sunday"));

// для любого timestamp $firstWeek;

$firstWeekStart= date(("d.m.Y" , strtotime("Monday",$firstWeek));
$firstWeekEnd= date(("d.m.Y" , strtotime("Sunday",$firstWeek));

добавление переменных в component_epilog.php из result_modifier.php

15.08.2013 Bitrix, php скрипты , ,

в result_modifier.php

$this->__component->arResultCacheKeys[] = 'OLOLO';
$arResult['OLOLO'] = 'OLOLO';

в component_epilog.php

var_dump($arResult);

Пример использования nElementID

20.07.2013 Bitrix, php скрипты , ,

        $arSort = array( // сортировка из параметров компонента
			$arParams["SORT_BY1"]=>$arParams["SORT_ORDER1"],
			$arParams["SORT_BY2"]=>$arParams["SORT_ORDER2"],
		);
		$arSelect = array( // выбирать будем несколько необходимых полей
			"ID",
		);
		$arNavParams = array(
			"nPageSize"		=> 1, // выбираем по 1 элементу с каждой стороны от текущего
			"nElementID"	=> $GLOBALS['arFiltr']['ID'], // тот элемент, соседей которого ищем
		);




		$arItems = Array();
		$rsItems = CIBlockElement::GetList($arSort, array('IBLOCK_ID'=>$arParams["IBLOCK_ID"]), false, $arNavParams, $arSelect);
		$rsItems->SetUrlTemplates($arParams["DETAIL_URL"]);
		while($obItem = $rsItems->GetNextElement()) {
			$arItem = $obItem->GetFields();
			$arItems[] = $arItem;
		}




		if(count($arItems)==3){ // если выборка вернула 3 элемента, значит есть оба соседа
			$arResult["PREV_NEXT_NAV"]["PREV_ITEM"] = $arItems[0];
			$arResult["PREV_NEXT_NAV"]["NEXT_ITEM"] = $arItems[2];
		}elseif(count($arItems)==2){ // если 2 - то соседний элемент только 1
			if($arItems[0]["ID"]!=$arResult["ID"]){			// определяем, слева он или справа
				$arResult["PREV_NEXT_NAV"]["PREV_ITEM"] = $arItems[0];
			}else{
				$arResult["PREV_NEXT_NAV"]["NEXT_ITEM"] = $arItems[1];
			}
		}

Для cron bitrix

29.04.2013 Bitrix, php скрипты ,

Если нужен в bitrix крон, то в начало скрипта укажите этот код.

$_SERVER["DOCUMENT_ROOT"] = '/home/www';

define('NO_AGENT_STATISTIC', 'Y');
define("NO_KEEP_STATISTIC", true);
define("NOT_CHECK_PERMISSIONS",true); 
define('CHK_EVENT', false);
 
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
 
@set_time_limit(0);
@ignore_user_abort(true);


CModule::IncludeModule('iblock');
$_SERVER["DOCUMENT_ROOT"] = realpath(dirname(__FILE__)."/..");
$DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"];

define("NO_KEEP_STATISTIC", true);
define("NOT_CHECK_PERMISSIONS",true); 
define('CHK_EVENT', true);

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

@set_time_limit(0);
@ignore_user_abort(true);

Скачивание файл

15.04.2013 php, php скрипты

// выводим в браузер
if (file_exists($fName)) {
  header('Content-Description: File Transfer');
  header('Content-Type: application/octet-stream');
  header('Content-Disposition: attachment; filename="'.basename($fName).'"');
  header('Content-Transfer-Encoding: binary');
  header('Expires: 0');
  header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  header('Pragma: public');
  header('Content-Length: ' . filesize($fName));
  ob_clean();
  flush();
  readfile($fName);
  exit;
}

Предыдущий и следующий элемент в детальном просмотре элемента

08.04.2013 Bitrix, php скрипты

<?
//в result_modifier.php элемента 

$arOrder = array("timestamp_x" => "desc"); // упорядочиваем как и в разделе.
$arSelect = Array("ID", "NAME","DETAIL_PAGE_URL");
$arFilter = Array("IBLOCK_ID"=>$arParams["IBLOCK_ID"], "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y");
$res = CIBlockElement::GetList($arOrder, $arFilter, false, array("nPageSize" => "1","nElementID" => $arResult["ID"]), $arSelect);
//"nPageSize" - количество элементов на странице при постраничной навигации 
//"nElementID" - ID элемента который будет выбран вместе со своими соседями. Количество соседей определяется параметром nPageSize.
while($ob = $res->GetNext())
{
  $arFields[] = $ob;
}

$arResult["RIGHT_ARROW"]["LINK"] = str_replace("#ELEMENT_ID#",$arFields["2"]["ID"],$arFields["2"]["DETAIL_PAGE_URL"]);
$arResult["RIGHT_ARROW"]["NAME"] = $arFields["2"]["NAME"];

$arResult["LEFT_ARROW"]["LINK"] = str_replace("#ELEMENT_ID#",$arFields["0"]["ID"],$arFields["0"]["DETAIL_PAGE_URL"]);
$arResult["LEFT_ARROW"]["NAME"] = $arFields["0"]["NAME"];
?>

Удаление папки с файлами в PHP

06.04.2013 php, php скрипты

<?
$folder = 'upload1';
$dir = $_SERVER['DOCUMENT_ROOT']."/".$folder;
function rmDir($dir) {
	if ($elemDir = glob($dir."/*")) {		
	   foreach($elemDir as $elem) {
		 is_dir($elem) ? rmDir($elem) : unlink($elem);
	   }
	}
	rmDir($dir);
}

rmDir($dir);
?>