php скрипты

D7 Работа с ExpressionField в getList

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


$resOrder = Bitrix\Sale\OrderTable::getList(
    array(
        'filter' => array('=USER_ID' => 1),
        'group' => array('PAYED'),
        'runtime' => array(           
            new Bitrix\Main\Entity\ExpressionField('IDS', 'GROUP_CONCAT(%s)', array('ID')),
        ),
    )
);

Bitrix d7 получить список пользователей по группам

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

           $arUsers = Bitrix\Main\UserGroupTable::getList(
		array(
			'order'=>array('USER_ID' => 'asc'),
			'group'=>array('USER_ID'),
			'select' => array(
				'USER_ID',
				'USER_DATE_REGISTER' => 'USER.DATE_REGISTER',
				'USER_ACTIVE' => 'USER.ACTIVE',
				'USER_EMAIL' => 'USER.EMAIL',
				'USER_LOGIN' => 'USER.LOGIN',
				'USER_WORK_COMPANY' => 'USER.WORK_COMPANY',
				'USER_NAME' => 'USER.NAME',
				'USER_GROUP_STR',
			),
			'filter' => array(
				'GROUP.ACTIVE' => 'Y',
				'USER.ACTIVE' => 'Y',
				'GROUP_ID' => array(3, 4),
				array(
					'LOGIC' => 'OR',
					'=DATE_ACTIVE_FROM' => null,
					'<=DATE_ACTIVE_FROM' => $nowTimeExpression,
				),
				array(
					'LOGIC' => 'OR',
					'=DATE_ACTIVE_TO' => null,
					'>=DATE_ACTIVE_TO' => $nowTimeExpression,
				),
			),
			'runtime' => array(
				'USER_GROUP_STR' => array(
					'data_type' => 'string',
					'expression' => array('GROUP_CONCAT(%s)', 'GROUP_ID')
				),

			)
		)
	)->fetchAll();

Отпарвка письма с влоожениями

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

Подробней тут http://www.spravkaweb.ru/php/sovet/mail/file

        $mailFields = array (
		'TITLE' => 'Тема письма ололо',
		'TEXT' => 'Текст ололо',
	);

	$arFile = array (
		0 => $_SERVER['DOCUMENT_ROOT'].'/upload/test.php',
		1 => $_SERVER['DOCUMENT_ROOT'].'/robots.txt',
	);


	function sendMessage($mailFields, $arFile)
	{
		$subject = '=?windows-1251?B?'.base64_encode($mailFields['TITLE']).'?=';
		// Subject: =?<кодировка текста>?<способ кодирования>?<закодированный Subject>?= 
		// Кодировка текста = windows-1251 или koi8-r или .... смотря в какой кодировке был текст когда ты его (Subject) кодировал.
		// Способ кодирования = Q (quoted_printable) или B (base64)
		// Соответственно функции quoted_printable_encode или base64_encode
		// Но лучше не изобретать велосипед, а использовать iconv_mime_encode (благо тут уже все придумано).

		$comment_mail = $mailFields['TEXT'];

		$arAttachment = array();
		
		if (!empty($arFile)) {
			foreach($arFile as $file) {
				$arFile = CFile::MakeFileArray($file);
				if($arFile){				
					$file = fopen($arFile['tmp_name'], "r");
					$text = fread($file, filesize($arFile['tmp_name']));
					fclose($file);					
					$arAttachment[] = array(
						"attachment" => chunk_split(base64_encode($text)),
						"name" => $arFile["name"],
						"type" => $arFile["type"],
						"arFile" => $arFile,
					);
				}
			}
		}
		
		$boundary = '#####' . time();
		$sStartOrEndLetter = '--';
		$sImplode = "\r\n";
		
		$sHeader = '';
		$sHeader.= 'From: "Ололий" <ololo@ololo.com>'.$sImplode;	
		$sHeader.= 'To: ololo@ololo.com'.$sImplode;						
		$sHeader.= 'Subject: '.$subject.$sImplode;		
		$sHeader.= 'Mime-Version: 1.0'.$sImplode;	
		$sHeader.= 'Content-Type: multipart/mixed; boundary="'.$boundary.'"'.$sImplode;	
		
		$sMessage = '';
		$sMessage.= $sStartOrEndLetter.$boundary.$sImplode;
		$sMessage.= 'Content-type: text/plain; charset="windows-1251"'.$sImplode;
		$sMessage.= 'Content-Transfer-Encoding: quoted-printable'.$sImplode;
		$sMessage.= "\n";
		$sMessage.= $comment_mail;
		$sMessage.= "\n\n";
		
		
		if(count($arAttachment) > 0){
		
			foreach($arAttachment as $attachment){
				$sMessage.= $sStartOrEndLetter.$boundary.$sImplode;		
				$sMessage.= 'Content-Type: application/x-rar-compressed; name="'.$attachment['name'].'"'.$sImplode;
				$sMessage.= 'Content-Transfer-Encoding:base64'.$sImplode;
				$sMessage.= 'Content-Disposition:attachment;'.$sImplode;
				$sMessage.= $sImplode;
				$sMessage.= $attachment['attachment'];
				$sMessage.= $sImplode;		
			}
			
		}

		$sMessage.= $sStartOrEndLetter.$boundary.$sStartOrEndLetter.$sImplode;
		
		// echo "<pre>";
			// print_r($sHeader);	
			// print_r($sMessage);
		// echo "</pre>";

		if(mail('ololo@ololo.com', $subject, $sMessage, $sHeader) ){
			print_r('cool');
		}else{
			print_r('bad');
		}
	}

Bitrix Загрука файла, ресайз, сохранение в базу

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

require $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php';
	$arFileToUploads = $_FILES['userfile'];
	CAllFile::ResizeImage(
		&$arFileToUploads, // путь к изображению, сюда же будет записан уменьшенный файл
		array(
			"width" => 1000,  // новая ширина
			"height" => 5000 // новая высота
		),
		BX_RESIZE_IMAGE_PROPORTIONAL // метод масштабирования. обрезать прямоугольник без учета пропорций
	);
	$arFileToUploads['MODULE_ID'] = 'iblock';	
	$sPathToSave = 'posts';
	if(intval($USER->GetID()) > 0){
		$sPathToSave .= '/user_'.intval($USER->GetID());
	}
	$iFileId = CFile::SaveFile($arFileToUploads, $sPathToSave);	
	$arFile = CFile::GetFileArray($iFileId);
exit;

geo ip example

28.01.2016 php скрипты , ,

<?
$ip = '192.168.11.5';
if($ch = curl_init()){		
	$url = "http://freegeoip.net/json/". $ip; 
	$headers = array(
		"Content-type: application/json",
		"Accept: application/json",
		"Accept-Language:ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4"
	); 
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL,$url);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_TIMEOUT, 30);
	curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);	
 
	$data = curl_exec($ch); 
 
	if (curl_errno($ch)) {

		// curl_error($ch);         

	  
	} else {		         
		$arData = json_decode($data, true) ; 
	}
	
	curl_close($ch);  
}
print_r($arData);
?>

Curl для dadata.ru

07.10.2015 php, php скрипты

       $url = "https://dadata.ru/api/v2/suggest/address"; 
     
        $headers = array( 
            "Content-type: application/json", 
            "Accept: application/json", 
			"Authorization: Token ДЛИННЫЙ_КЛЮЧ" 
        ); 
       
        $ch = curl_init(); 
        curl_setopt($ch, CURLOPT_URL,$url); 
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
        curl_setopt($ch, CURLOPT_TIMEOUT, 60); 
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
        curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU"); 

        curl_setopt($ch, CURLOPT_POST, 1); 
        curl_setopt($ch, CURLOPT_POSTFIELDS, '{ "query": "Москва Площадь Ленина 5 6", "count": 5 }'); 

        $data = curl_exec($ch); 
		
		

        if (curl_errno($ch)) { 
		
			echo  "Error: " . curl_error($ch);			
         
			
        } else { 
		
			curl_close($ch);			
			echo json_decode($data, true);	
        }

phpexcel получение код ячейки по номеру

10.09.2015 php скрипты

function num2alpha($n)
{
    for($r = ""; $n >= 0; $n = intval($n / 26) - 1)
    $r = chr($n%26 + 0x41) . $r;
    return $r;
}

function alpha2num($a) {
    $l = strlen($a);
    $n = 0;
    for($i = 0; $i < $l; $i++)
        $n = $n*26 + ord($a[$i]) - 0x40;
    return $n-1;
}
$col = num2alpha(0); // A
$col = alpha2num('B'); // 1

создание ZIP архива на лету и отдача на скачивание bitrix

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

<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
// require($_SERVER["DOCUMENT_ROOT"]."/download/createzip.php");
$arrFile = array(
					"/upload/item.jpg", 
					"/upload/item2.jpg", 
					"/upload/slide.jpg",
					"/upload/products/doc/CWSO.pdf",
					"/upload/products/doc/CWSS-C-W.pdf",
					"/upload/products/doc/CWSS-O.pdf",
					"/upload/products/doc/CWST.pdf",
					"/upload/products/doc/DBS1224B4W_manual.pdf",
					"/upload/products/doc/EMA_DBS_Certificate.pdf",
					"/upload/products/doc/EnScape_Certificate.pdf",
					"/upload/products/doc/ExitPoint_Certificate.pdf",
					"/upload/products/doc/ExitPoint_manual.pdf",
					);

createZipAndDownload($arrFile);

function createZipAndDownload($arFiles)
{
	$zip = new ZipArchive();
	$filename = "system_sensor_archive_".date("d.m.Y").".zip";
	var_dump($filename);
	if ($zip->open($filename, ZipArchive::CREATE)!==TRUE) {
	    exit("Невозможно открыть <$filename>\n");
	}

	foreach ($arFiles as $file) 
	{		
	 	$arr = explode("/", $file);	 	
	 	var_dump($arr);
		$zip->addFile($_SERVER["DOCUMENT_ROOT"].$file, end($arr));
	}
	
	$zip->close();

	file_force_download($filename);
}

function file_force_download($file) {
  if (file_exists($file)) {
    // сбрасываем буфер вывода PHP, чтобы избежать переполнения памяти выделенной под скрипт
    // если этого не сделать файл будет читаться в память полностью!
    if (ob_get_level()) {
      ob_end_clean();
    }
    // заставляем браузер показать окно сохранения файла
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename=' . basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    // читаем файл и отправляем его пользователю
    readfile($file);

    unlink($file);
    exit;
  }
}

Оригинал тут http://pastebin.com/h8zubtLz

Удалить все пробелы

15.09.2014 php, php скрипты, Парсинг

$line = str_replace(' ', '', trim($line));
$line = trim(preg_replace('/\s{2,}/', ' ', $line))

Заменить данные

                                    $arItem['BODY_FORMATED'] = str_replace(
                                        array("<b>", "</b>"),
                                        array("<mark>", "</mark>"),
                                        $arItem['BODY_FORMATED']
                                    );

Чистит строку: убирает спец символы из строки и конвертит в win1251

16.05.2014 php скрипты ,

if (!function_exists("yandex_text2xml"))
{
 function yandex_text2xml($text, $bHSC = false, $bDblQuote = false)
 {
  global $APPLICATION;

  $bHSC = (true == $bHSC ? true : false);
  $bDblQuote = (true == $bDblQuote ? true: false);

  if ($bHSC)
  {
   $text = htmlspecialcharsbx($text);
   if ($bDblQuote)
    $text = str_replace('&quot;', '"', $text);
  }
  $text = preg_replace("/[\x1-\x8\xB-\xC\xE-\x1F]/", "", $text);
  $text = str_replace("'", "&apos;", $text);
  $text = $APPLICATION->ConvertCharset($text, LANG_CHARSET, 'windows-1251');
  return $text;
 }
}