use Bitrix\Main\Mail;
/**
* Get from b_event table
* @var integer Existed event id
*/
$displayedEventId = 336020;
/**
* List of site ids, for event theme generation
* must be replaced by current site id in public
* @var array
*/
$arSites = [
's1'
];
try
{
/**
* First, try to find event
*/
$arEvent = Mail\Internal\EventTable::getRow([
'filter' => [
'=ID' => $displayedEventId,
]
]);
if ( !$arEvent )
{
throw new \Exception('Event not found');
}
$arEvent['FIELDS'] = $arEvent['C_FIELDS'];
/**
* Try to find all message templates for
* sites. In event handler we send for one letter
* per site.
*/
$arEventMessageFilter = [
'=ACTIVE' => 'Y',
'=EVENT_NAME' => $arEvent["EVENT_NAME"],
'=EVENT_MESSAGE_SITE.SITE_ID' => $arSites,
];
$messageDb = Mail\Internal\EventMessageTable::getList([
'select' => ['ID'],
'filter' => $arEventMessageFilter,
'group' => ['ID']
]);
foreach ($messageDb as $arMessage)
{
$eventMessage = Mail\Internal\EventMessageTable::getRowById($arMessage['ID']);
$eventMessage['FILES'] = array();
$attachmentDb = Mail\Internal\EventMessageAttachmentTable::getList(array(
'select' => array('FILE_ID'),
'filter' => array('=EVENT_MESSAGE_ID' => $arMessage['ID']),
));
while($arAttachmentDb = $attachmentDb->fetch())
{
$eventMessage['FILE'][] = $arAttachmentDb['FILE_ID'];
}
$arFields = $arEvent['FIELDS'];
// get message object for send mail
$arMessageParams = array(
'EVENT' => $arEvent,
'FIELDS' => $arFields,
'MESSAGE' => $eventMessage,
'SITE' => $arSites,
'CHARSET' => $charset,
);
$message = Mail\EventMessageCompiler::createInstance($arMessageParams);
$message->compile();
echo $message->getMailBody();
}
}
catch( \Exception $e )
{
var_dump($e);
}
/* хром, сафари */
.element::-webkit-scrollbar { width: 0; }
/* ie 10+ */
.element { -ms-overflow-style: none; }
/* фф (свойство больше не работает, других способов тоже нет)*/
.element { overflow: -moz-scrollbars-none; }
useradd -m -s /sbin/nologin crazyadmin
/sbin/nologin
запрещает пользователю использовать shell.passwd crazyadmin
userdel crazyadmin
mkdir /home/crazysadmin/chroot
/etc/ssh/sshd_config
Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
Match User crazyadmin
X11Forwarding no
AllowTcpForwarding no
AllowAgentForwarding no
PermitTunnel no
ForceCommand internal-sftp
ChrootDirectory %h/chroot
PasswordAuthentication yes
service ssh restart
/home
и там ищем папку свежесозданного пользователя, а в ней папку chroot. Устанавливаем её владельцем пользователя root:chown root:root /home/crazyadmin/chroot
chmod 755 /home/crazyadmin
/var/www/sysadmin.ru
. Создаем в домашнем каталоге пользователя /home/crazyadmin
папку с названием sysadmin.ru.mkdir /home/crazyadmin/sysadmin.ru
mount --bind /var/www/sysadmin.ru/ /home/crazyadmin/sysadmin.ru/chroot
/var/www/sysadmin.ru
:chmod 777 /var/www/sysadmin.ru
find /var/www/sysadmin.ru -type f -exec chmod 664 {} +
find /var/www/sysadmin.ru -type d -exec chmod 777 {} +
umount /home/crazysyadmin/sysadmin.ru
fatal: bad ownership or modes for chroot directory component
- как писалось выше, данная ошибка появляется тогда, когда владельцем ChrootDirectory является не пользователь root, и права не равны 755.No supported authentication methods available (server sent public key)
- сервер настроен на авторизацию по ключу. Если нужна авторизация по паролю, то в конфиге /etc/ssh/sshd_config
нужно поменять значение у переменной PasswordAuthentication с no на yes, а после перезапустить сервер командой service ssh restart.
define('BX_COMP_MANAGED_CACHE', true);
var myHeaders = new Headers();
myHeaders.append("Cookie", "csrftoken=lsDzlik5lO5y33cshMhIgMYIOzmh3CLv; rur=FTW");
var formdata = new FormData();
formdata.append("client_id", "990602627938098");
formdata.append("client_secret", "eb8c7...");
formdata.append("grant_type", "authorization_code");
formdata.append("redirect_uri", "https://socialsizzle.herokuapp.com/auth/");
formdata.append("code", "AQBx-hBsH3...");
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: formdata,
redirect: 'follow'
};
fetch("https://api.instagram.com/oauth/access_token", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
var data = new FormData();
data.append("client_id", "990602627938098");
data.append("client_secret", "eb8c7...");
data.append("grant_type", "authorization_code");
data.append("redirect_uri", "https://socialsizzle.herokuapp.com/auth/");
data.append("code", "AQBx-hBsH3...");
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function() {
if(this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://api.instagram.com/oauth/access_token");
xhr.setRequestHeader("Cookie", "csrftoken=lsDzlik5lO5y33cshMhIgMYIOzmh3CLv; rur=FTW");
xhr.send(data);
var form = new FormData();
form.append("client_id", "990602627938098");
form.append("client_secret", "eb8c7...");
form.append("grant_type", "authorization_code");
form.append("redirect_uri", "https://socialsizzle.herokuapp.com/auth/");
form.append("code", "AQBx-hBsH3...");
var settings = {
"url": "https://api.instagram.com/oauth/access_token",
"method": "POST",
"timeout": 0,
"headers": {
"Cookie": "csrftoken=lsDzlik5lO5y33cshMhIgMYIOzmh3CLv; rur=FTW"
},
"processData": false,
"mimeType": "multipart/form-data",
"contentType": false,
"data": form
};
$.ajax(settings).done(function (response) {
console.log(response);
});
<?php
// [1- Скачиваем файл
// Создаем поток
$opts = array(
'http' => array(
'method' => 'GET',
'timeout' => 10,
),
);
$context = stream_context_create($opts);
// Открываем файл с помощью установленных выше HTTP-заголовков
$page_content = file_get_contents('http://lubematch.shell.com/ru/ru/equipment/100_2_8i_avant_001755', false, $context);
// -1]
// [2- Парсим данные
// [3- Строим DOM
// по сути - отключаем вывод ошибок валидации
libxml_use_internal_errors(true);
$page_dom = new \DOMDocument();
$page_dom->strictErrorChecking = false;
$page_dom->preserveWhiteSpace = false;
$page_dom->validateOnParse = true;
$page_dom = new \DOMDocument();
// [4- loadHTML не дает использовать utf-8, делаем хаком http://php.net/manual/en/domdocument.loadhtml.php#95251
$page_dom->loadHTML('<?xml encoding="UTF-8">' . $page_content);
foreach ($page_dom->childNodes as $node) {
if ($node->nodeType == XML_PI_NODE) {
$page_dom->removeChild($node);
}
}
$page_dom->encoding = 'UTF-8';
// -4]
$page_xpath = new \DOMXPath($page_dom);
// -3]
// Вытаскиваем Standard
$param_1 = $page_xpath->query('//table[@id="recommendation"]//tr[2]/th')->item(0)->nodeValue;
// Вытаскиваем Spirax S4 ATF HDX
$param_2 = $page_xpath->query('//table[@id="recommendation"]//tr[5]/td[1]')->item(0)->nodeValue;
// -2]
var_dump($param_1, $param_2);
const blabla = this.nameFunction();
function nameFunction () {
let result = false;
if (Условие1 && Условие2) { переопределяем result}
else if (Условие3 && (условие4 || условие 5)) {переопределяем result}
else {переопределяем result}
return result;
}
а как добавить классы к движущемуся объекту в местах остановки?
<header class="main-header bg-cover bg-fixed">...</header>
.main-header {background-image: url(img/picjumbo-bg5.jpg);}
.bg-cover {background-repeat: no-repeat; background-position: center center; background-size: cover; -webkit-background-size: cover;}
.bg-fixed {background-attachment: fixed;}
var device = navigator.userAgent.toLowerCase();
var mob = device.match(/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/);
if (mob) {
$(".bg-cover").removeClass("bg-fixed");
}