Запустили свой fork с обновлениями подсказок ядра bitrix для IDE
UPD. Про решение bxApiDocs писали много где, напр.
или =
UPD. Про решение bxApiDocs писали много где, напр.
или =
// init.php
use Bitrix\Main\Loader;
use Bitrix\Main;
use Bitrix\Main\EventManager;
use Bitrix\Main\Application;
use Bitrix\Sale\Basket;
use Bitrix\Sale\Order;
use Bitrix\Sale\OrderBase;
use Bitrix\Sale\Helpers;
use Bitrix\Sale\PropertyValueCollection;
$eventManager = EventManager::getInstance();
$request = Application::getInstance()->getContext()->getRequest();
$eventManager->addEventHandler('sale', /*\Bitrix\Sale\Notify::EVENT_ORDER_STATUS_SEND_EMAIL= */ 'OnOrderStatusSendEmail',
static function ($orderId, &$eventName, &$fields, $statusId) use ($request) {
$entity = Bitrix\Sale\Order::load($orderId);
$separator = "<br/>";
$eventName = Bitrix\Sale\Notify::EVENT_DEFAULT_STATUS_CHANGED_ID . $statusId;
$filter = array(
"EVENT_NAME" => $eventName,
'ACTIVE' => 'Y',
);
if ($entity instanceof OrderBase) {
$filter['SITE_ID'] = $entity->getSiteId();
} elseif (defined('SITE_ID') && SITE_ID != '') {
$filter['SITE_ID'] = SITE_ID;
}
$res = \CEventMessage::GetList('', '', $filter);
if ($eventMessage = $res->Fetch()) {
if ($eventMessage['BODY_TYPE'] == 'text') {
$separator = "\n";
}
}
$basketList = '';
/** @var Basket $basket */
$basket = $entity->getBasket();
if ($basket) {
$basketTextList = $basket->getListOfFormatText();
if (!empty($basketTextList)) {
foreach ($basketTextList as $basketItemCode => $basketItemData) {
$basketList .= $basketItemData . $separator;
}
}
}
$getUserEmail = static function (Order $order) {
$userEmail = "";
if (empty($userEmail)) {
/** @var PropertyValueCollection $propertyCollection */
if ($propertyCollection = $order->getPropertyCollection()) {
if ($propUserEmail = $propertyCollection->getUserEmail()) {
$userEmail = $propUserEmail->getValue();
}
}
}
if (empty($userEmail)) {
$userRes = Main\UserTable::getList(array(
'select' => array('ID', 'LOGIN', 'NAME', 'LAST_NAME', 'SECOND_NAME', 'EMAIL'),
'filter' => array('=ID' => $order->getUserId()),
));
if ($userData = $userRes->fetch()) {
$userEmail = $userData['EMAIL'];
}
}
return $userEmail;
};
$getUserName = static function (Order $order) {
$userName = "";
if (empty($userName)) {
/** @var PropertyValueCollection $propertyCollection */
if ($propertyCollection = $order->getPropertyCollection()) {
if ($propPayerName = $propertyCollection->getPayerName()) {
$userName = $propPayerName->getValue();
}
}
}
if (empty($userName)) {
$userRes = Main\UserTable::getList(array(
'select' => array('ID', 'LOGIN', 'NAME', 'LAST_NAME', 'SECOND_NAME', 'EMAIL'),
'filter' => array('=ID' => $order->getUserId()),
));
if ($userData = $userRes->fetch()) {
$userData['PAYER_NAME'] = \CUser::FormatName(
\CSite::GetNameFormat(null, $order->getSiteId()), $userData, true
);
$userName = $userData['PAYER_NAME'];
}
}
return $userName;
};
$fields = array_merge($fields, array(
"ORDER_ID" => $entity->getField("ACCOUNT_NUMBER"),
"ORDER_REAL_ID" => $entity->getField("ID"),
"ORDER_ACCOUNT_NUMBER_ENCODE" => urlencode(urlencode($entity->getField("ACCOUNT_NUMBER"))),
"ORDER_DATE" => $entity->getDateInsert()->toString(),
"ORDER_USER" => $getUserName($entity),
"PRICE" => SaleFormatCurrency($entity->getPrice(), $entity->getCurrency()),
"BCC" => Main\Config\Option::get("sale", "order_email",
"order@" . $request->getServer()->getServerName()),
"EMAIL" => $getUserEmail($entity),
"ORDER_LIST" => $basketList,
"SALE_EMAIL" => Main\Config\Option::get("sale", "order_email",
"order@" . $request->getServer()->getServerName()),
"DELIVERY_PRICE" => $entity->getDeliveryPrice(),
"ORDER_PUBLIC_URL" => Helpers\Order::isAllowGuestView($entity) ? Helpers\Order::getPublicLink($entity) : ""
));
return true;
}
);
|
| Важно! Пиши на PHP 5.3! Все вещи, которые доступны выше 5.3 необходимо решать путем создания промежуточных вспомогательных переменных! |
$eventManager = \Bitrix\Main\EventManager::getInstance();
// draw user picture after login
$eventManager->addEventHandler(
"main",
"OnAdminListDisplay",
/** @param CAdminUiList $this_al */
static function (&$this_al) {
if ($this_al->table_id == "tbl_user") {
foreach ($this_al->aRows as &$row) {
$userId = (int)$row->arRes['ID'];
$picPath = CFile::GetPath( (CUser::GetByID($userId)->Fetch())["PERSONAL_PHOTO"] );
if (trim($picPath) != '') {
$row->aFields["LOGIN"]["view"]["value"] .= ' <br><a target="_blank" href="' . $picPath . '">'
. '<img style="max-width:200px;" src="' . $picPath . '"></a>';
}
}
}
}
); |
\Bitrix\Main\Loader::includeModule('iblock');
// сортировать в таком порядке ID
$ids = [115, 120, 117, 109, 128];
$rs = \CIBlockElement::GetList(
['ID' => $ids],
['IBLOCK_ID' => '5', 'ID' => $ids],
false, false,
['ID', 'IBLOCK_ID', 'NAME']
);
while ($ar = $rs->Fetch()) {
echo $ar['ID'] . ' ';
}
// имеем вывод:
// 115 120 117 109 128 |
SEL ECT `ID`, `IBLOCK_ID`, `NAME` FR OM `b_iblock_element` WHERE `ID` IN (115, 120, 117, 109, 128) AND `IBLOCK_ID` = 5 ORDER BY FIELD(`ID`, 115, 120, 117, 109, 128); |
d:\server\Apache\bin>ab -n 5000 -c 10 -s 300 -k http://***********:80**/w***h/m*****************i/ |
Usage: ab [options] [http://]hostname[:port]/path Options are: -n requests Number of requests to perform -c concurrency Number of multiple requests to make at a time -s timeout Seconds to max. wait for each response Default is 30 seconds -k Use HTTP KeepAlive feature … |
| PHP 5.6 on Bitrix Vs. | PHP7 (Zend Engine v3.0.0) on Bitrix | ||
| | ||
|
| ||
|
| ||
| |
// \bitrix\components\bitrix\blog.blog\component.php
global ${$arParams["FILTER_NAME"]};
$arFilter = $$arParams["FILTER_NAME"]; // ошибка php7:
if(!is_array($arFilter))
$arFilter = array();
|
[ParseError] syntax error, unexpected '[', expecting ',' or ';' (0) |
// \bitrix\components\bitrix\blog.blog\component.php
global ${$arParams["FILTER_NAME"]};
$arFilter = ${$arParams["FILTER_NAME"]}; // вот так мы явно указываем имя переменной
if(!is_array($arFilter))
$arFilter = array();
|

LoadModule evasive2_module modules/mod_evasive2.so <IfModule evasive2_module> DOSDisplayToken Off DOSHashTableSize 3097 DOSPageCount 2 DOSSiteCount 50 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 10 DOSLogDir "<Your-dir>Apache/logs" DOSWhitelist 127.0.0.1 DOSWhitelist 192.168.1.* </IfModule> |

cat /var/log/httpd/access_log | awk ' {print $1}' | sort | uniq -c | sort -n | tail -n 10 |
cat /var/log/httpd/access_log | grep 5.255.253.63 | head -1 |
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».