- Модуль: intranet
- Путь к файлу: ~/bitrix/modules/intranet/lib/update/themepickerconvert.php
- Класс: BitrixIntranetUpdateThemePickerConvert
- Вызов: ThemePickerConvert::execute
public function execute(array &$result)
{
if (!(
Loader::includeModule('intranet')
&& Option::get('intranet', 'needConvertThemePicker', 'Y') === 'Y'
))
{
return false;
}
$return = false;
$params = Option::get('intranet', 'themepickerconvert', '');
$params = ($params !== '' ? @unserialize($params, [ 'allowed_classes' => false ]) : []);
$params = (is_array($params) ? $params : []);
if (empty($params))
{
$params = [
'lastId' => 0,
'number' => 0,
'count' => $this->getCount(),
];
}
if ($params['count'] > 0)
{
$result['title'] = '';
$result['progress'] = 1;
$result['steps'] = '';
$result['count'] = $params['count'];
$connection = Application::getInstance()->getConnection();
$queryObject = $connection->query("SELECT `ID`, `USER_ID`, `NAME`, `VALUE` FROM `b_user_option` WHERE `CATEGORY` = 'intranet' AND `NAME` LIKE 'bitrix24_theme_%' AND `ID` > " . (int)$params['lastId'] . " ORDER BY ID ASC LIMIT 0, " . (int)$this->limit);
$found = false;
while ($record = $queryObject->fetch())
{
$themeId = @unserialize($record['VALUE'], [ 'allowed_classes' => false ]);
$userId = 0;
if (is_array($themeId) && isset($themeId['userId'], $themeId['themeId']))
{
$themeId = $themeId['themeId'];
$userId = (int)$themeId['userId'];
}
if (preg_match('/^bitrix24_theme_(.+)/is' . BX_UTF_PCRE_MODIFIER, $record['NAME'], $matches))
{
ThemeTable::set([
'THEME_ID' => $themeId,
'USER_ID' => $userId,
'ENTITY_TYPE' => ThemePicker::ENTITY_TYPE_USER,
'ENTITY_ID' => $record['USER_ID'],
'CONTEXT' => $matches[1],
]);
}
$params['lastId'] = $record['ID'];
$params['number']++;
$found = true;
}
if ($found)
{
Option::set('intranet', 'themepickerconvert', serialize($params));
$return = true;
}
$result['progress'] = (int)($params['number'] * (int)$this->limit / $params['count']);
$result['steps'] = $params['number'];
if ($found === false)
{
Option::delete('intranet', [ 'name' => 'themepickerconvert' ]);
Option::set('intranet', 'needConvertThemePicker', 'N');
}
}
else
{
Option::set('intranet', 'needConvertThemePicker', 'N');
}
return $return;
}