В программе всегда есть еще одна ошибка
(Законы Мерфи для программистов)
(Законы Мерфи для программистов)
Часть 3
Параллельно с упражнениями по работоспособности instant 1.10.7 с PHP 5.2.12 (на Денвере), своим чередом велась работа над новым сайтом, развёрнутом в Open Server, где по умолчанию установлен PHP 7.1
Помня о том, что 1.10.7 работает с PHP от 5.3 до 7.0 подвох приходилось ожидать в любой момент.
И вот случилось!
При попытке редактирования рубрики в разделе "Меню" появлялось сообщение об ошибке:
Fatal error: Uncaught ArgumentCountError: Too few arguments to function cpAddPathway(), 1 passed in \admin\applets\menu.php on line 528 and exactly 2 expected in \admin\includes\cp.php:326
Но тут долгой истории не сложилось. Собственно из самой ошибки понятно, что функция cpAddPathway() получает только один параметр из двух.
PHP 5 на это внимания не обращает, а PHP 7 — относится более ревностно.
Меняем
function cpAddPathway($title, $link){
на
function cpAddPathway($title, $link=false){
и работаем дальше.
В результате.
Чтобы расширить ограничения для instant 1.10.7 в плане допустимых PHP, нужно выполнить следующие изменения:
\admin\includes\cp.php:326
function cpAddPathway($title, $link){
на
function cpAddPathway($title, $link=false){
\core\classes\db.class.php on line 39
$this->db_link = static::initConnection();
на
$this->db_link = self::initConnection();
\core\classes\plugin.class.php on line 22
$this->config = array_merge($this->config, $this->inCore->loadPluginConfig(get_called_class()));
на
$this->config = array_merge($this->config, $this->inCore->loadPluginConfig($this->info['plugin']));
\admin\applets\menu.php on line 107
\admin\applets\modules.php on line 172
'prc'=> function ($i){
$i['titles'] = cmsCore::yamlToArray($i['titles']);
// переопределяем название пункта меню в зависимости от языка
if(!empty($i['titles'][cmsConfig::getConfig('lang')])){
$i['title'] = $i['titles'][cmsConfig::getConfig('lang')];
}
return $i['title'];
}
на
'prc'=>'cpLangTitle'
\admin\includes\cp.php добавить функцию
function cpLangTitle($i){
$i['titles'] = cmsCore::yamlToArray($i['titles']);
// переопределяем название пункта меню в зависимости от языка
if(!empty($i['titles'][cmsConfig::getConfig('lang')])){
$i['title'] = $i['titles'][cmsConfig::getConfig('lang')];
}
return $i['title'];
}
Реклама #
Loadырь 5 лет назад #
Олег Васильевич я 5 лет назад #
Fuze 5 лет назад #
Ленивый, убедительно прошу больше не тратить своё время на подобное, заспамливая ленту блогов.
Олег Васильевич я 5 лет назад #
Олег Васильевич я 5 лет назад #
Максим Анисимов 4 года назад #