Подключаем компонент:

composer require symfony/cache

Как сделать простой кеш в файлах?

require_once __DIR__ . '/vendor/autoload.php';

// создаём объект для управления кешом в файлах
$cache = new FilesystemAdapter(
    // поддиректория в папке кеша
    'mySubDirectoryName',

    // время жизни кеша по умолчанию
    86400,

    // путь к папке кеша 
    __DIR__ . '/cache'
);

// ключ кеша
$cacheKey = 'testKey1';

// получаем по этому ключу данные из кеша
$value = $cache->get(
    $cacheKey,

    // если актуального кеша нет, то выполнится этот callable: 
    function () {
        // тут мы получаем данные без кеша,
        // и отдаём их в return,
        // после этого данные сохранятся в кеш 
        $value = rand();

        return $value;
    }
);

Есть два места где независимо друг от друга хранятся переговорки:

  1. Инфоблок "Календарь" / "Бронирование переговорных". Каждый раздел это переговорка. Для этих переговорок при создании события в календаре работает бронирование с периодичностью.

  2. Таблица b_calendar_section. Сюда попадают переговорки, которые добавляютя в попапе по кнопке "Настроить список". И у этих переговорок на уровне ядра отключено бронирование с периодичностью - выводится ошибка: "Бронирование переговорной периодическим событием недоступно".

Пофиксить её можно так:

В файле:

local/modules/sprint.migration/lib/versionconfig.php:207

добавить условие:

if (strpos($values['migration_dir'], ':') === false) { // @todo fix для windows
    $values['migration_dir'] = Module::getDocRoot() . $values['migration_dir'];
}

Код всего блока:

if (empty($values['migration_dir'])) {
    $values['migration_dir'] = Module::getPhpInterfaceDir() . '/migrations';
} elseif (empty($values['migration_dir_absolute'])) {
    if (strpos($values['migration_dir'], ':') === false) { // @todo fix для windows
        $values['migration_dir'] = Module::getDocRoot() . $values['migration_dir'];
    }
}

Страницы