Как выполнить ресолвер только при обновлении с 3 на 4 версию компонента?
        Добрый день! В моем компоненте планируются большие правки базы и нужно при обновлении на новую версию компонента внести изменения в базу (скопировать данные из одной таблицы в другую), но нужно выполнить это только 1 раз, при обновлении с 3 на 4 версию, не выполнять при новой установке и не выполнять при деинсталляции и установки заново. Как это сделать? Или может можно как нибудь в ресолвере получить номер обновляемой( предыдущей) версии и номер устанавливаемой?    
    
    
                                                        
            
                Поблагодарить автора            
            
                 Отправить деньги            
        
        
            Комментарии: 5
                Посмотрел код установщика пакетов. Похоже никак нельзя предыдущею версию нельзя получить :(            
                    
                Проверяй не версию пакета, а существование новой таблицы и данных в ней.            
                    
                Спасибо. Этот вариант как-то не пришел в голову :)            
                    
                Можно так
                    $c = $modx->newQuery('transport.modTransportPackage');
$c->select('version_major')
    ->where(array(
    'package_name' => 'ИМЯ ПАКЕТА',
))
    ->sortby('version_major','DESC')
    ->limit(1);
$version = (int) $modx->getValue($c->prepare());
if ($version == 3)  {
    ...
}            
                Кажется немного не верно. Здесь https://github.com/modxcms/revolution/blob/769b4f498bfc486b6417835f01443666178abc72/core/model/modx/transport/modtransportpackage.class.php#L233 Происходит сохранение пакета в таблицу до его установки. То есть ваш запрос вернет версию, которая ставиться. Надо добавить фильтр по installed не null. 
Наверно так
                    Наверно так
$c = $modx->newQuery('transport.modTransportPackage');
$c->select('version_major')
    ->where(array(
    'package_name' => 'ИМЯ ПАКЕТА',
    'installed:!=' => null,
))
    ->sortby('version_major','DESC')
    ->limit(1);
$version = (int) $modx->getValue($c->prepare());
if ($version == 3)  {
    ...
}Проверять надо. Но проверка на пустое содержимое таблицы мне подходит. Надеюсь никто не додумается поставить пакет и потом сразу же обновить.            
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.