/**
* Prepare array for our job
*/
$arrayOne = [
0 => 80,
1 => 80,
2 => 90,
];
$arrayTwo = [
0 => [
0 => 190,
1 => 195,
],
1 => [
0 => 200,
],
2 => [
0 => 190,
1 => 195,
],
];
$arrayThree = [
0 => 1,
1 => 2,
2 => 3,
];
/**
* @var array Array with actual data in our structure
*/
$arResult = [];
foreach ( $arrayTwo as $iKeyOne => $arrayTwoElement )
{
// if in second array exist unknown key
if ( !array_key_exists($iKeyOne, $arrayOne) )
{
continue;
}
// if in third array exist unknown key
if ( !array_key_exists($iKeyOne, $arrayThree) )
{
continue;
}
// if in second array no elements
if ( empty($arrayTwoElement) || !is_array($arrayTwoElement) )
{
continue;
}
/* @var integer Key for first depth level */
$iLevelKey = (int) $arrayOne[ $iKeyOne ];
/* @var integer Value for second depth level */
$iLevelValue = (int) $arrayThree[ $iKeyOne ];
foreach ($arrayTwoElement as $k => $v)
{
$arResult[ $iLevelKey ][ $v ] = $iLevelValue;
}
}
var_dump($arResult);
/*
Will display:
array(2) {
[80]=>
array(3) {
[190]=> int(1)
[195]=> int(1)
[200]=> int(2)
}
[90]=>
array(2) {
[190]=> int(3)
[195]=> int(3)
}
}
*/
Что делать?
Во вкладке SEO, когда меняю пункты META и оставляю галочку на "Изменить для этого раздела и его подразделов", то изменения сохраняются, но они еще сохраняются в подразделов. Мне этого не надо, потому что у каждого подраздела будут свои МЕТА пункты.
encrypt($text, $m);
return encrypt($text, $m);
function encrypt($text, $n)
{
if ( $n < 1 )
{
return $text;
}
$str1 = $str2 = "";
for($i = 0, $len = strlen($text); $i < $len; $i++)
{
if ( $i%2 == 0 )
{
$str2 .= $text[$i];
}
else
{
$str1 .= $text[$i];
}
}
return encrypt( $str1.$str2, ($n-1));
}
echo encrypt('This is a test!', 2);
public static function getTags(array $requestTags): array
{
$tags = [];
foreach ($requestTags as $tag) {
if (is_numeric($tag)) {
$tags[] = $tag;
} else {
$newTag = Tag::upsert(['name' => $tag]);
$tags[] = $newTag->id;
}
}
return $tags;
}
function mapTags( array &$value )
{
if ( is_numeric($value) )
{
return $value;
}
$newTag = Tag::upsert(['name' => $tag]);
return $newTag->id;
}
public static function getTags( array $requestTags ): array
{
return array_map('mapTags', $requestTags);
}
public static function getTags($requestTags): array
{
$tags = [];
if ( !$requestTags )
{
return $tags;
}
foreach ($requestTags as $tag) {
if (is_numeric($tag)) {
$tags[] = $tag;
} else {
$newTag = Tag::upsert(['name' => $tag]);
$tags[] = $newTag->id;
}
}
return $tags;
}
public static function getTags(array $requestTags): array
{
if ( empty($requestTags) )
{
return $requestTags;
}
$existedTags = array_filter($requestTags, 'is_numeric');
$newTags = array_diff($requestTags, $existedTags);
/**
* Тут единый batch-метод который отправляет
* 1 запрос на все теги сразу.
* В results - массив Tag, обработанных batch-методом
*/
foreach ($results as $tag)
{
$existedTags[] = $tag->id;
}
return array_unique($existedTags);
}
при входящем звонке показ истории звонков и заявок с этого номера
Поиск заявок по адресу
отслеживания статуса заявок
переадресация заявок на ответственных лиц
• Задание решить с помощью включаемых областей.
• Реализовать возможность администратору сайта указывать текст в блоке Полезная информация без необходимости редактироваться исходный код.
• Должна быть возможность указывать разный текст для разных разделов сайта.
• Верстка, реализующая «каркас» блока, не должна быть в файле, который содержит редактируемый администратором текст. Это позволит минимизировать возможность «поломки» шаблона сайта.
use \Bitrix\Catalog;
$arStore = Catalog\StoreTable::getRow([
'select' => ['TITLE'],
'filter' => [
'ID' => $iStoreId,
]
]);
if ( $arStore )
{
// В $arStore['TITLE'] название
}
else
{
// Склад не найден
}
Обработчики событий лучше группировать в одном файле и тщательно аннотировать где они используются и какая задача перед ними стоит.
/**
* - /local/classes/{Path|raw}/{*|raw}.php
* - /local/classes/{Path|ucfirst,lowercase}/{*|ucfirst,lowercase}.php
*/
spl_autoload_register(function($sClassName)
{
$sClassFile = __DIR__.'/classes';
if ( file_exists($sClassFile.'/'.str_replace('\\', '/', $sClassName).'.php') )
{
require_once($sClassFile.'/'.str_replace('\\', '/', $sClassName).'.php');
}
$arClass = explode('\\', strtolower($sClassName));
foreach($arClass as $sPath )
{
$sClassFile .= '/'.ucfirst($sPath);
}
$sClassFile .= '.php';
if (file_exists($sClassFile))
{
require_once($sClassFile);
}
});
/**
* File with event handlers
*/
require_once(__DIR__.'/events.php');
$eventManager = \Bitrix\Main\EventManager::getInstance();
/**
* For new core of bitrix use
* $eventManager->addEventHandler( #module#, #handler#, [#namespace#, #function#]);
*
* For old core of bitrix use
* $eventManager->addEventHandlerCompatible( #module#, #handler#, [#namespace#, #function#]);
*/
$eventManager->addEventHandlerCompatible("module", "event", ['\\Project\\Module\\Event\\Handler', 'onEvent']);
В один из прекрасных дней перестал делаться бекап битрикса - точней делается бекап только sql -www.site.ru_20180309_051402_full_c8dd87.sql.
Проблема номер 2 - не могу зайти в админку. Просто рефрешится страница с логином. Обновлял, сбрасывал кеш, заходил под разными ip - не заходит.