ошибка в БД

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО InstantCMS 2.X
#1 28 декабря 2020 в 02:35
Здравствуйте. Помогите разобраться с проблемой в БД.
Ни с того ни с сего при публикации очередной новости возникла следующая ошибка (полный отчёт при включённом режиме отладки):
  1. Notice: Array to string conversion in /var/www/.../data/www/.../system/controllers/content/actions/item_view.php on line 697 Notice: Array to string conversion in /var/www/.../data/www/.../system/controllers/content/actions/item_view.php on line 698 Notice: Undefined index: content_types in /var/www/.../data/.../.../system/controllers/writeauthor/hooks/content_before_item.php on line 12 Warning: in_array() expects parameter 2 to be array, null given in /var/www/.../data/www/.../system/controllers/writeauthor/hooks/content_before_item.php on line 14
  2. Ошибка в запросе БД:
  3. Таблица '..._con_Array' не существует
  4. SELECT i.*, f.title as `folder_title`, u.nickname as `user_nickname`, u.slug as `user_slug`, u.is_deleted as `user_is_deleted`, u.groups as `user_groups`, u.avatar as `user_avatar`
  5. FROM ..._con_Array i
  6. INNER JOIN ..._users as u ON u.id = i.user_id
  7. LEFT JOIN ..._content_folders as f ON f.id = i.folder_id
  8. WHERE (i.slug = 'ссылка новости')
  9. LIMIT 1
  10. Последние вызовы:
  11. cmsModel->getItem() @ /system/core/model.php : 1751
  12. cmsModel->getItemByField() @ /system/controllers/content/model.php : 2584
  13. modelContent->getContentItem() @ /system/controllers/content/model.php : 2590
  14. modelContent->getContentItemBySLUG() @ /system/controllers/content/widgets/anticopy/widget.php : 25
  15. widgetContentAnticopy->run()
  16. call_user_func_array() @ /system/core/core.php : 926
  17. cmsCore->runWidget() @ /system/core/core.php : 881
  18. cmsCore->runWidgets() @ /system/core/template.php : 546
  19. cmsTemplate->hasWidgetsOn() @ /system/core/template.php : 487
  20. cmsTemplate->widgets() @ /templates/news/content/default_item.tpl.php : 192
  21. include() @ /system/core/template.php : 2279
Как ни странно новость опубликовалась, но она не видна гостям. При включённой отладке выводится приведённый выше ворнинг. Авторизованным она видна. По крайней мере мне, как администратору.
Запрашиваемой таблицы '..._con_Array' никогда не было и не создавалось.
Помогите решить проблему.
#2 28 декабря 2020 в 06:19
Вам к автору компонента writeauthor.
Такого нет в icms2
И данной ошибки мало. Нужно смотреть код system/controllers/writeauthor/hooks/content_before_item.php
#3 28 декабря 2020 в 10:16


Нужно смотреть код system/controllers/writeauthor/hooks/content_before_item.php

Zau4man
Код этого файла.
  1. <?php
  2.  
  3. class onWriteauthorContentBeforeItem extends cmsAction {
  4.  
  5. public function run($data) {
  6.  
  7. if (!$this->isEnabled()) {
  8.  
  9. return $data;
  10. }
  11.  
  12. $content_types = $this->options['content_types'];
  13.  
  14. if (in_array($data[0]['name'], $content_types)) {
  15.  
  16. $options = $this->loadOptions('writeauthor');
  17.  
  18. if ($options['groups_user'][0] <> 0) {
  19.  
  20. if (!$this->cms_user->isInGroups($options['groups_user'])) {
  21.  
  22. return $data;
  23. }
  24. }
  25.  
  26. $this->cms_template->addCSS("templates/default/controllers/writeauthor/writeauthor.css");
  27.  
  28. $html = $data[0]['item_append_html'];
  29.  
  30. $back = href_to($data[0]['name'], $data[1]['slug'] . '.html');
  31.  
  32. $list_html = href_to('writeauthor') . '?id=' . $data[1]['user_id'] . '&back=' . $back;
  33.  
  34. $list_html = '<a class="wrau" href="' . $list_html . '"> &#128386; ' . LANG_WRITEAUTHOR_WRITE_AUTHOR . '</a>';
  35.  
  36. $html = $list_html . $html;
  37.  
  38. $data[0]['item_append_html'] = $html;
  39.  
  40. return $data;
  41. } else {
  42.  
  43. return $data;
  44. }
  45. }
  46.  
  47. }
  48.  
Не могу вспомнить откуда появился этот модуль. При его удалении, при заходе в пост или новость выдаётся:
  1. Требуемый компонент не найден: system/controllers/writeauthor/frontend.php
  2. Последние вызовы:
  3. cmsEventsManager::hook() @ /system/controllers/content/actions/item_view.php : 358
  4. actionContentItemView->run()
  5. call_user_func_array() @ /system/core/controller.php : 582
  6. cmsController->runExternalAction() @ /system/core/controller.php : 453
  7. cmsController->executeAction() @ /system/core/controller.php : 429
  8. cmsController->runAction() @ /system/controllers/content/frontend.php : 24
  9. content->route()
  10. call_user_func() @ /system/core/controller.php : 476
  11. cmsController->executeAction() @ /system/core/controller.php : 429
  12. cmsController->runAction() @ /system/core/core.php : 779
  13. cmsCore->runController() @ /index.php : 46
#5 28 декабря 2020 в 13:07
Pawell, поле удалите. Которое в типе контента выводит кнопку этого компонента.
И ошибки не будет
#6 28 декабря 2020 в 13:11


Pawell, поле удалите. Которое в типе контента выводит кнопку этого компонента.
И ошибки не будет

Zau4man
Так нет этого поля и не пользовался я им вообще, так как не обнаружил. Было это давно, когда я только начинал "познавать" эту систему.
Впрочем, судя по комментарию — эта проблема не у меня одного, если это тот компонент — writeautor.
#7 28 декабря 2020 в 13:27
Pawell, в списке компонентов компонент удален?
тогда откройте Компоненты — События
Там должно быть уведомление о необходимости обновить события — обновите
#8 28 декабря 2020 в 13:33


Pawell, в списке компонентов компонент удален?

Zau4man
Нет и не было никогда. В списке полей тоже нет и не было.

тогда откройте Компоненты — События
Там должно быть уведомление о необходимости обновить события — обновите

Zau4man
В событиях никаких упоминаний нет и не было о нём. Только в самой БД два пустых поля, созданных этим компонентом content и email. Боюсь их удалять.
Ранее при включённой отладке выскакивал ворнинг, ругающийся на этот компонент, при удалении папки с которым, накрывался сайт. Но при выключенном режиме отладки никаких намёков на этот компонент не было. Пока вчера, ни с того ни с сего появилась ошибка.
#9 28 декабря 2020 в 17:57
Компонент writeauthor удалил корректно, вместе с хуками. На такую же ошибку стал жаловаться другой виджет.
Т.е. проблема где-то раньше.

При включенной отладке вылазит еще ряд ошибок, которые свидетельствуют о том, что шаблон не обновлен. Кроме того, на сайте юзается хук с двойным вызовом виджетов, который вроде как не работает на 2.14.0 или работает некорректно.

Предположу также, что обновление на 2.14.0 прошло с ошибкой и сайт не обновился полностью.

В общем, моя рекомендация такова. Надо откатывать сайт на 2.13.1
Делать копию на поддомене и обновлять ее. Затем добиваться, чтобы на копии не было warning ов и notice ов. И уже потом, запомнив все исправления и получив корректный шаблон, обновлять основной сайт.
#10 28 декабря 2020 в 23:44
Огромное спасибо Zau4man за участие. Обновление на 2.14 произошло около месяца назад и никаких предпосылок в создавшейся проблеме не было. Пришлось откатить систему на двое суток назад. В итоге всё восстановилось, тьфу-тьфу.
#11 29 декабря 2020 в 09:35
Тема закрыта.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.