Кому лень читать - сразу мотаем вниз и скачиваем нужное.
Почему я это сделал или отмазка: какое то время назад я честно за десять кровных еврасов приобрел Fox Contact Form 3.1.3 - нормально он работал, радовал глаз. Понадобился снова, для нового проекта и при попытке установить на Жумлу он мне показал:
Вот здорово, подумал я, это что теперь его покупать с каждым обновлением Жумлы? Т.е. меня будут напаривать на десятку каждый раз? Не, я лучше пожадничаю. Быстренько открыл архив с компонентом и в файле foxinstall.php на 50-строке обнаружил конструкцию:
public function preflight($type, $parent)
{
$jversion = new JVersion();
$jmin = (string)$parent->get("manifest")->attributes()->{"version"};
$jmax = (string)$parent->get("manifest")->{"version"};
if (version_compare($jversion->RELEASE, $jmin, "<") || version_compare($jversion->RELEASE, $jmax, ">"))
{
// Removes the build number
$jmax = preg_replace('/\.[0-9]+$/', "", $jmax);
JFactory::getApplication()->enqueueMessage("Fox Contact " . $jmax . " only works on Joomla " . $jmax . ". You need Fox Contact " . $jversion->RELEASE . " to work on Joomla " . $jversion->RELEASE . ".", "error");
JFactory::getApplication()->redirect(JRoute::_('index.php?option=com_installer', false));
}
$this->component_name = $parent->get("element");
$this->extension_name = substr($this->component_name, 4);
$this->event = $type;
}
Просто выдрал из нее кусок заключенный в скобки после if и все предсказуемо поставилось и стало успешно работать, т.е. Запрет на установку вызван не какими то несовсместимостями со старыми версиями, а тупо желанием срубить бабла:
Ага, сказал я себе, раз уж пиратить, то по полной, у Гугля спросил про Fox Contact 3.3, ну раз мне его навязывают! Нашел его и так же в нем нашел на той же 50-ой строке ту же проверку версии, которую так же откусил, но что то стало глючить, еще при установке не показало картинки, и перестало работать. Может я где накосячил, может еще чего, не стал разбираться. По другому, сказал я и пошел другим путем: проверяются две переменные jmax и jmin, нужно просто им присвоить свои значения. Сказано - сделано! Был вот такой код:
if (version_compare($jversion->RELEASE, $jmin, "RELEASE, $jmax, ">"))
Стал вот такой:
if (version_compare($jversion->RELEASE, 1, "RELEASE, 10, ">"))
Т.о. теперь будет ставится от 1-ой до 10-ой версии Жумлы. Не уверен, что застану десятую и что будет работать на первой, на на некоторое время я освобожден от головной боли, чего и вам желаю:
Ну и в заключение исправленные компоненты, внутри, если захочется привести к девственному состоянию, есть файлы foxinstall_old.php, которыми нужно заменить foxinstall.php - и все станет как от производителя.
Fox Contact Form 3.1
Fox Contact Form 3.3
ЗЫ На буржуйских языках и буржуйских сайтах об этом не пишите, а то защиту сменит жадина и опять нужно будет тупить в код.