Jump to content

TypeError: iterator_to_array(): Argument #1 ($iterator) must be of type Traversable|array, int given (0)

Featured Replies

Posted
comment_212786

Спамит ошибкой:

TypeError: iterator_to_array(): Argument #1 ($iterator) must be of type Traversable|array, int given (0)

#0 /applications/core/modules/front/members/profile.php(375): iterator_to_array(0)

#1 /system/Dispatcher/Controller.php(139): IPS\core\modules\front\members\profile->manage()

#2 /applications/core/modules/front/members/profile.php(130): IPS\Dispatcher\Controller->execute()

#3 /system/Dispatcher/Dispatcher.php(169): IPS\core\modules\front\members\profile->execute()

#4 /index.php(16): IPS\Dispatcher->run()

#5 {main}

Обратная трассировка

#0 /init.php(827): IPS\Log::log('TypeError: iter...', 'uncaught_except...')

#1 [internal function]: IPS\IPS::exceptionHandler(Object(TypeError))

#2 {main}

Помогите пожалуйста.

  • Author
comment_212789
6 минут назад, Respected said:

Что там за код на этой строке?

Если ты про 375 строку в Profile.php:

/* Get followers */
		$followers = iterator_to_array(
			$this->member->followers( ( Member::loggedIn()->isAdmin() OR Member::loggedIn()->member_id === $this->member->member_id ) ? \IPS\Content::FOLLOW_PUBLIC + \IPS\Content::FOLLOW_ANONYMOUS : \IPS\Content::FOLLOW_PUBLIC, array( 'immediate', 'daily', 'weekly', 'none' ), NULL, array( 0, 12 ) )
		);
comment_212791

Когда и где возникает ошибка... есть ли у вас какие-либо изменения в шаблоне? Какая у вас версия PHP... Я использую 8.3, и у меня нет такой проблемы


  • Author
comment_212792
2 минуты назад, Silence said:

Когда и где возникает ошибка... есть ли у вас какие-либо изменения в шаблоне? Какая у вас версия PHP... Я использую 8.3, и у меня нет такой проблемы

В том то и дело, не могу понять когда возникает ошибка. Ошибка вызывается гостем, URL страницы, на которой возникла ошибка Недоступно. Я копаю в сторону страницы с подписчиками, есть предположение, но не факт.

Изменений в шаблоне никаких, все из коробки.

PHP 8.3

Я в приватном режиме, как гость, зашел на страницу подписчиков пользователя - ошибка не появилась.

Я зашел как гость на страницу подписчиков темы, ошибка не появилась.

Я зашел как гость на страницу подписчиков тега, ошибка не появилась.

Нашел

Если пользователь запретил на себя подписываться, то если зайти в его профиль, ты получаешь ошибку.

Да, именно так

comment_212793
10 минут назад, ryancoolround said:

Ошибка вызывается гостем, URL страницы, на которой возникла ошибка Недоступно

извини но я не понял...как ошибка выходит у гостя...дайте ссылку на url

  • Author
comment_212794
1 минуту назад, Silence said:

извини но я не понял...как ошибка выходит у гостя...дайте ссылку на url

Просто если войти на страницу пользователя, который запретил на себя подписываться, уже не важно, Гость ты или админ, возникает ошибка. Пример таких профилей:

https://ip-gamers.net/profile/483-vast/

https://ip-gamers.net/profile/44-drlex/

comment_212795

Эта ошибка, я думаю, возникает после обновления.... попробуйте разблокировать пользователя, а затем снова заблокировать или отписаться от него.

  • Author
comment_212796

Так же, если в админке, зайти в раздел Статистика>Пользователи>Подписка>Подписчики мы получаем:

TypeError: IPS\Patterns\ActiveRecord::constructFromData(): Argument #1 ($data) must be of type array, null given, called in /static/templates/core_admin_stats.php on line 1029 and defined in /var/www/fastuser/data/www/ip-gamers.net/system/Patterns/ActiveRecord.php:242

Stack trace:

#0 /static/templates/core_admin_stats.php(1029): IPS\Patterns\ActiveRecord::constructFromData(NULL)

#1 /system/Theme/SandboxedTemplate.php(68): IPS\Theme\class_core_admin_stats->topFollow(Object(IPS\Db\Select), '\n\n\n\t\n\t<ul class...', Array, 35, 'follow_rel_id', 'followers')

#2 /applications/core/modules/admin/stats/follow.php(120): IPS\Theme\SandboxedTemplate->__call('topFollow', Array)

#3 /system/Dispatcher/Controller.php(139): IPS\core\modules\admin\stats\follow->manage()

#4 /applications/core/modules/admin/stats/follow.php(59): IPS\Dispatcher\Controller->execute()

#5 /system/Dispatcher/Dispatcher.php(169): IPS\core\modules\admin\stats\follow->execute()

#6 /admin/index.php(15): IPS\Dispatcher->run()

#7 {main}

Может это связано…

  • Author
comment_212797

Заменил это:

/* Get followers */
		$followers = iterator_to_array(
			$this->member->followers( ( Member::loggedIn()->isAdmin() OR Member::loggedIn()->member_id === $this->member->member_id ) ? \IPS\Content::FOLLOW_PUBLIC + \IPS\Content::FOLLOW_ANONYMOUS : \IPS\Content::FOLLOW_PUBLIC, array( 'immediate', 'daily', 'weekly', 'none' ), NULL, array( 0, 12 ) )
		);

На это:

/* Get followers */
		$followersResult = $this->member->followers(
			(Member::loggedIn()->isAdmin() OR Member::loggedIn()->member_id === $this->member->member_id)
			? \IPS\Content::FOLLOW_PUBLIC + \IPS\Content::FOLLOW_ANONYMOUS
			: \IPS\Content::FOLLOW_PUBLIC, 
			array('immediate', 'daily', 'weekly', 'none'), 
			NULL, 
			array(0, 12)
		);
		
		if (is_iterable($followersResult)) {
			$followers = iterator_to_array($followersResult);
		} else {
			$followers = [];
		}

Смог зайти в профили, на которые запрещено подписываться.

comment_212799
12 минут назад, ryancoolround said:

Смог зайти в профили, на которые запрещено подписываться.

MSQL :

UPDATE core_members SET temp_ban = NULL;

Он удалит всех забаненных пользователей

  • Author
comment_212800
1 минуту назад, Silence said:

MSQL :

Он удалит всех забаненных пользователей

Извини, я возможно не понял, а причем тут забаненные пользователи?

  • Author
comment_212802
2 минуты назад, Silence said:

Вот я и узнал.... какие пользователи создают проблему...?

ignore users?

Ошибка возникнет на страницах профилей пользователей, которые сделали так:

image.png

comment_212803

ACP > Пользователи > Выберите пользователя > Изменить предпочтения > Разрешить подписываться на профиль? > Включать … и все работает...

Это ошибка IC5... я попробовал на локальном сервере и, как и вы, та же проблема

  • Author
comment_212804
1 минуту назад, Silence said:

ACP > Пользователи > Выберите пользователя > Изменить предпочтения > Разрешить подписываться на профиль? > Включать … и все работает...

Об этом костыле я подумал сразу, в начале темы, но в том то и дело, этот костыль простите за выражение, шлет куда подальше пользователя, который запретил на себя подписываться.

comment_212805
4 минуты назад, ryancoolround said:

Об этом костыле я подумал сразу, в начале темы, но в том то и дело, этот костыль простите за выражение, шлет куда подальше пользователя, который запретил на себя подписываться.

попробую найти команду для этого

comment_212807

В \IPS\Member есть функция followersCount(), можно ее для проверки задействовать вместо создания переменной и проверкой на iterable. Не проверял.

comment_212808
2 часа назад, ryancoolround said:

Ошибка возникнет на страницах профилей пользователей, которые сделали так:

image.png

Удали из шаблона этот пункт) в сл версиях может пофиксят

comment_212809
6 минут назад, aLEX49566 said:

Удали из шаблона этот пункт) в сл версиях может пофиксят

Я только что обновился до бета-версии 3, но проблема все еще существует...

comment_212902
18 часов назад, ryancoolround said:

Об этом костыле я подумал сразу, в начале темы, но в том то и дело, этот костыль простите за выражение, шлет куда подальше пользователя, который запретил на себя подписываться.

У меня лично с телефона (айфона), не получается к тебе зайти, через браузер сафари именно

  • Author
comment_212917
2 часа назад, aLEX49566 said:

У меня лично с телефона (айфона), не получается к тебе зайти, через браузер сафари именно

За последнюю неделю ты второй, кто это говорит. Safari не пропускает на мой сайт, это было и до обновления. И я без понятия в чем дело.

comment_212918
Только что, ryancoolround said:

За последнюю неделю ты второй, кто это говорит. Safari не пропускает на мой сайт, это было и до обновления. И я без понятия в чем дело.

До обновления я заходил спокойно)

  • Author
comment_212919
5 минут назад, aLEX49566 said:

До обновления я заходил спокойно)

Я сейчас достал свой седьмой iPhone из шкафа, зашел, проблем никаких.

  1. Перейдите в раздел «Настройки» > «Приложения» > Safari > «Дополнительно».

  2. Включение JavaScript.

Это включено?

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.


Guest
Ответить в этой теме...

Последние посетители 0

  • No registered users viewing this page.