Opencart, как проверить, установлен ли vqmod?

Я написал модуль, который использует vqmod для opencart. Как я могу проверить, установлен ли vqmod из административного модуля?

Я хотел бы отобразить предупреждение внутри модуля, который проверяет, установлен ли vqmod? Еще лучше было бы проверить, есть ли у него правильное разрешение на запись для создания кэшированных файлов и записи в vamod.log.

Как лучше всего это сделать?

PS: было бы здорово, если бы вы могли помечать вопросы с помощью vqmod. У меня недостаточно репутации для создания нового тега.


person John Magnolia    schedule 02.05.2012    source источник
comment
если у вас есть доступ к ftp, вы можете просто проверить, существует ли каталог, нет? я тоже не могу создавать теги, поэтому пока только xml.   -  person Rooster    schedule 02.05.2012
comment
Вы можете попробовать проверить, что vqmod.log существует и в него записывается (т.е. дата последнего изменения файла). Это предполагает, что у вас нет $vqmod->logging = FALSE; в index.php. Обычно настроишь и забудешь. Я предполагаю, что вы пытаетесь реализовать какой-то установщик плагинов?   -  person Brad    schedule 02.05.2012
comment
@Brad, нет, это обычный модуль, я просто хочу добавить пару дополнительных функций, чтобы проверить правильность настройки vqmod. Надеюсь уменьшить количество комментариев поддержки   -  person John Magnolia    schedule 02.05.2012
comment
@Brad, в некоторых случаях, если ошибок нет, файл vqmod.log не будет существовать до тех пор, пока не возникнет ошибка.   -  person John Magnolia    schedule 02.05.2012
comment
Тогда, я думаю, вам нужно проверить vqmod/cache на наличие файла, если вы знаете имя файла. Что вы и сделаете, если вы написали для него XML-конфигурацию. Это помогает?   -  person Brad    schedule 02.05.2012


Ответы (3)


/vqmod/install

если он установлен, он скажет вам, что "vqmod уже установлен"

person jaja    schedule 04.10.2013

Чтобы проверить через код, вам нужно будет сделать

global $vqmod;
if(!empty($vqmod) && is_a($vqmod, 'VQMod')) {
    // INSTALLED
} else {
    //
}

Хотя @NADH находится в правильном направлении, он проверяет только то, что класс vqmod был включен, а не то, что он был установлен в переменную $vqmod

Редактировать

Начиная с версии 2.4.0, это больше не будет работать, и рекомендуется использовать метод NADH.

person Jay Gilford    schedule 02.05.2012
comment
Нет, извините, я имею в виду, что внутри кода модуля я хочу сделать что-то вроде: if(!$vqmodInstalled) { die('сначала установите vqmod'); } - person John Magnolia; 02.05.2012
comment
@Джон. В своем исходном вопросе, который вы задали, проверьте, имеет ли он также правильное разрешение на запись для создания кэшированных файлов. Как этот ответ решает эту проблему? - person Brad; 02.05.2012
comment
@Брэд, это отвечает на половину моих вопросов. Кэширование было бы просто хорошим требованием, хотя и не обязательным. - person John Magnolia; 02.05.2012
comment
Честно говоря, я думаю, что проверка записи файлов кеша немного выходит за рамки модификации для проверки. Существует также проблема, заключающаяся в том, что файлы могут кэшироваться с использованием $vqmod->useCache = true;, что может означать, что они могли быть записаны неточно. - person Jay Gilford; 02.05.2012

Основываясь на ваших комментариях @John, поскольку вы ищете подтверждение того, что VQmod установлен и также работает правильно, самое безопасное, что можно сделать, это проверить имя файла, которое вы ожидаете отобразить в vqmod/ директория кэша. Вы узнаете имя файла, если сами создали файл определения vqmod/xml.

Вы также можете проверить, существует ли класс VQMod, как предложил @NADH, но это не означает, что он работает правильно. Немного похоже на написание модульных тестов, всегда подтверждайте желаемый результат. В этом случае это файл кэша, который вы создаете.

person Brad    schedule 02.05.2012