Импорт в bitrix

Есть задачка, прочитать excel файл, напротив каждого региона есть запись. Нужно регион сопоставить с его ID в bitrix и дальше методом add добавить.

Написал такую функцию

 

 

function getNumberRegion($name){

    $arrayRegion=array(
        38285=>'Брянская область',
        38284=>'Владимирская область',
        38283=>'Волгоградская область',
        38282=>'Вологодская область',
        38281=>'Воронежская область',
        38280=>'Еврейская автономная область',
        38279=>'Ивановская область',
        38278=>'Иркутская область',
        38277=>'Калининградская облатсь',
        38276=>'Калужская область',
        38275=>'Кемеровская область',
        38274=>'Кировская область',
        38273=>'Костромская область',
        38272=>'Курганская область',
        38271=>'Курская область',
        38269=>'Липецкая область',
        38268=>'Магаданская область',
        38267=>'Москва',
        38265=>'Мурманская область',
        38264=>'Республика Адыгея',
        38263=>'Нижегородская область',
        38262=>'Республика Алтай',
        38261=>'Республика Башкортостан',
        38260=>'Новгородская область',
        38259=>'Новосибирская область',
        38258=>'Республика Бурятия',
        38257=>'Республика Дагестан',
        38256=>'Омская область',
        38255=>'Республика Ингушетия',
        38254=>'Кабардино-Балкарская республика',
        38253=>'Оренбургская область',
        38252=>'Орловская область',
        38251=>'Пензенская область',
        38250=>'Псковская область',
        38249=>'Ростовская область',
        38248=>'Рязанская область',
        38247=>'Самарская область',
        38246=>'Санкт-Петербург',
        38245=>'Саратовская область',
        38244=>'Сахалинская область',
        38243=>'Свердловская область',
        38242=>'Смоленская область',
        38241=>'Тамбовская область',
        38240=>'Тверская область',
        38239=>'Томская область',
        38238=>'Тульская область',
        38237=>'Тюменская область',
        38236=>'Ульяновская область',
        38235=>'Челябинская область',
        38234=>'Ярославская область',
        38233=>'Ханты-Мансийский автономный округ - ЮГРА',
        38232=>'Чукотский автономный округ',
        38231=>'Ямало-Ненецкий автономный округ',
        38230=>'Республика Калмыкия',
        38229=>'Карачаево-Черкесская республика',
        38228=>'Республика Карелия',
        38227=>'Республика Коми',
        38226=>'Республика Марий Эл',
        38225=>'Республика Мордовия',
        38224=>'Республика Саха (Якутия)',
        38223=>'Республика Северная Осетия-Алания',
        38222=>'Республика Татарстан',
        38221=>'Республика Тыва',
        38220=>'Удмуртская республика',
        38219=>'Республика Хакасия',
        38218=>'Чеченская республика',
        38217=>'Чувашская республика',
        38216=>'Забайкальский край',
        38215=>'Камчатский край',
        38214=>'Краснодарский край',
        38213=>'Красноярский край',
        38212=>'Пермский край',
        38211=>'Приморский край',
        38210=>'Ставропольский край',
        38209=>'Хабаровский край',
        38208=>'Амурская область',
        38207=>'Архангельская область',
        38206=>'Астраханская область',
        38190=>'Ленинградская область',
        38189=>'Белгородская область',
        38188=>'Алтайский край',
        38185=>'Московская область',
    );
    // в нижний регистр массив
    array_walk_recursive($arrayRegion, function (&$item, $key) { if (is_string($item)) $item = mb_strtolower($item); });
    return array_search(mb_strtolower(trim($name)),$arrayRegion,true);

}

function delc2a0($str){
    return str_replace("\xc2\xa0", '', $str);
}

 

подаем на функцию регион, он возвращает его номер,  ничего сложного.

PS функция delc2a0 для удаления мусора, когда читаем excel.

 

SOAP and BASE64

Потратил около часа, чтобы понять, почему при кодировании в base64 и передачи это через SOAP, получатель не может прочитать файл.

Оказалось все просто. SOAP сам упаковывает данные в BASE64 и конструкция

$imgbinary = fread(fopen($data['FormFileBuffer'], "r"), filesize($data['FormFileBuffer']));
 $base64File = base64_encode($imgbinary);

 

оказалась не нужна, достаточно сразу было отдать $imgbinary

 

Как запустить любое Android приложение через Google Chrome

Нашел тут интересный рецепт, как запустить андройн приложения на пк

 
1. Установить ARC Welder с интернет-магазина Chrome: https://chrome.google.com/webstore/detail/arc-welder/emfinbmielocnlhgmfkkmkngdoccbadn

2. Открыть установленное приложение (для этого открыть «Сервисы»: chrome://apps/ )
3. Указать приложению папку для хранения приложений.
4. Добавляем любой APK. Для этого жмём «Add your APK» и выбираем.
5. Выбираем ориентацию экрана (горизонтальную или вертикальную), размер приложения (планшет, телефон или на весь экран).
6. Приложение запущено и вы добились того, чего хотели :)

P.S. APK приложений вы можете скачать с http://4pda.ru/forum/index.php?showforum=281

 

Вот здесь можно скачать apk, вставив ссылку из маркета:

http://apps.evozi.com/apk-downloader/?id=ru.ok.android

 

 

Удалить все куки с вашего сайта

Delete all cookies of my website.

Это можно сделать через JS, или через запрос сервера.

Как выяснилось, через JS нельзя удалить все куки.

Вот скрипт на php + JS, которой удалить все куки, установленные на вашем сайте + куки всяких сторонних сервисов (гугл плюс, фейсбук и тд)

 

<?php

$past = time() - 3600;
foreach ( $_COOKIE as $key => $value )
{
setcookie( $key, $value, $past, '/' );
}

?>
<!doctype html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Clear </title>
</head>
<body>

<script>
function deleteAllCookies() {
var cookies = document.cookie.split(";");

for (var i = 0; i < cookies.length; i++) {
var cookie = cookies[i];
var eqPos = cookie.indexOf("=");
var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
}
}
deleteAllCookies();
</script>

</body>
</html>


Сертификаты

С таким количеством установки сертификатов решил написать небольшую статью.

1. генерация сертификата

openssl genrsa -des3 -out serov.key 2048
openssl req -new -key serov.key -out serov.csr

запоминаем пароль, отправляем файл  serov.csr организации выпускающая сертификаты.

 

после получаем от корневого сертификата файлы. (в моем случае их 4)

корневой
промежуточный 1
промежуточный 2
сертификат домена

 

переименовываем их в

4.crt
3.crt
2.crt
1.crt

склеиваем

cat 4.crt 3.crt 2.crt 1.crt  > serov.crt

снимаем пароль с файла serov.key

openssl rsa -in serov.key -out serov.key

копируем в одну папку файлы serov.crt  serov.key

в nginx пишем путь до них

 ssl_certificate /etc/httpd/ssl/serov.crt;
 ssl_certificate_key /etc/httpd/ssl/serov.key;

между httpd и nginx сертификат не надо ставит, конечно если на одном сервера.

перезапускаем nginx

service nginx restart

проверяем дату

echo | openssl s_client -connect serov.eu:443 2>/dev/null | openssl x509 -noout -dates

Готово

PS. при склеивании сертификатов в crt, первый идет сертификат домена, потом промежуточные и в конец корневой.