Тема для никого - 1.10.7 и PHP 7.1 (часть 4)

+4
1.38K
В программе всегда есть еще одна ошибка
(Законы Мерфи для программистов)


Часть 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'];
}
+2
Loadырь Loadырь 5 лет назад #
Ленивый, а не поленился столько написать.
Олег Васильевич я Олег Васильевич я 5 лет назад #
Комментарий удален
+2
Fuze Fuze 5 лет назад #
Даже комментировать нечего тут.
Ленивый, убедительно прошу больше не тратить своё время на подобное, заспамливая ленту блогов.
Олег Васильевич я Олег Васильевич я 5 лет назад #
Комментарий удален
Олег Васильевич я Олег Васильевич я 5 лет назад #
Комментарий удален
+1
Максим Анисимов Максим Анисимов 4 года назад #
Спасибо, тема полезная v

Еще от автора

Тема для никого - 1.10.7 и PHP 5.2.12 (часть 1)
Сложность программы растёт до тех пор, пока не превысит способности программиста (Законы Мерфи для программистов) Недавно ставил себе на локалку 1.10.
Тема для никого - 1.10.7 и PHP 5.2.12 (часть 2)
Программисты действуют рационально, лишь тогда, когда другие способы исчерпаны (Законы Мерфи для программистов) Часть 1 Порадовавшись успешной установ
Тема для никого - 1.10.7 и PHP 5.2.12 (часть 3)
Если программа полезна, ее обязательно переделывают (Законы Мерфи для программистов) Часть 2 Запустив сайт я проверил все доступные после установки ра
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.