Jump to content
View in the app

A better way to browse. Learn more.

IPBMafia.ru - поддержка Invision Community, релизы, темы, плагины и приложения

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Featured Replies

Posted

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

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
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 ) )
		);
  • Author
2 минуты назад, Silence said:

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

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

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

PHP 8.3

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

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

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

Нашел

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

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

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

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

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

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

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

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

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

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

  • Author

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

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

Заменил это:

/* 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 = [];
		}

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

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

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

ignore users?

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

image.png

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

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

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

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

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

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

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

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

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

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

image.png

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

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

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

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

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

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

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

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

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

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

  • Author
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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.