Jump to content

(SOS40)_Invite_System_2.0.0


Trekkie
 Share

Recommended Posts

(SOS40)_Invite_System_2.0.0


 

This application will allow your community to use an invitation system for new registrations. You can make it mandatory (or not, depending on your configuration). In this case, an invitantion code will be required in order to register a new account in your community.

Public side features:

  • Users can send invitation in 2 places: + Create menu and Invitations on Account Settings.
  • New icon on board top (beside Notifications and Messenger) to display the converted invitees and how many invites the user has. This icon also shows the remaining invitations for the member (just like how many users are online on Chat).
  • 2 widgets: Top Inviters (per week, month, year and general) and Latest Converted Invitees, which are invitations converted to membership.
  • Shows "Invited by" on user profile and on profile card (hover on user link).

Settings:

  • Enable Invite System
  • Require an Invitation to Register an Account
  • Restore deleted or expired invitation
  • Display the popup Invitations link on board top?
  • Display total of remaining invitations
  • Invitation Expires after X days
  • Earn one Invitation at every X new content posted

ACP Features:

  • Invitations Management: a place where you can see the status of each invitation. The status are: PENDING, CONVERTED and EXPIRED. You can invite people, delete or resend invitations. You can also create batch invitations, to be used on a campaign or to be posted elsewhere. It won't send any emails.
  • Bonus form: you can give invitations to a specific member or to a whole member group
  •  

Link to comment
Share on other sites

  • 2 months later...
  • 1 month later...
  • 3 months later...
  • 3 months later...

Новая версия приложения 2.0.11

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

(SOS41) Invite System 2.0.11.zip

Edited by rustav
Link to comment
Share on other sites

1 час назад, rustav сказал:

Новая версия приложения 2.0.11

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

(SOS41) Invite System 2.0.11.zip

Спасибо, под версию 4.1.13.2 наконец-то корректно пошло, а то пользователи (никакие) не могли отправить инвайт кроме как через админ-панель, был какой-то баг с тем, что кнопка "отправить инвайт" перенаправляла в детали аккаунта, которых при этом, ещё и не было в принципе.

Link to comment
Share on other sites

  • 6 months later...

Похоже, эта штука ломает дополнительные поля профиля при регистрации. Баг в хуке, перехватывающем контроллер регистрации. Исправление в файле (invite/hooks/is_registerScreen.php):

	public static function _createMember( $values, $profileFields )
	{
		if ( \IPS\Settings::i()->is_on )
		{
			$val = \IPS\Settings::i()->is_requireinvite ? 'invite_code_req' : 'invite_code_opt';

			if( $values[ $val ] )
			{
				$invite = \IPS\Db::i()->select( '*', 'invite_invites', array( 'invite_code=?', $values[ $val ] ) )->first();

				/* Force email address */
				if( \IPS\Settings::i()->is_emailfrominvite )
				{
					if( $values['email_address'] != $invite['invite_invited_email'] )
					{
						\IPS\Output::i()->error( 'is_error_notsameemails', '2S129/1', 403, '' );
					}
				}
			}
		}

		$member = parent::_createMember( $values, $profileFields );

		if ( \IPS\Settings::i()->is_on )
		{
			$val = \IPS\Settings::i()->is_requireinvite ? 'invite_code_req' : 'invite_code_opt';

			/* Update Member */
			if( $values[ $val ] )
			{
				$invite = \IPS\Db::i()->select( '*', 'invite_invites', array( 'invite_code=?', $values[ $val ] ) )->first();

				/* Force email address */
				if( \IPS\Settings::i()->is_emailfrominvite )
				{
					if( $values['email_address'] != $invite['invite_invited_email'] )
					{
						\IPS\Output::i()->error( 'is_error_notsameemails', '2S129/1', 403, '' );
						return $member;
					}
				}

				if( \IPS\Settings::i()->is_registrationgroup_toggle )
				{
					$member->member_group_id = \IPS\Settings::i()->is_registrationgroup;
				}

				$member->invited_by = $invite['invite_sender_id'];

				if( \IPS\Settings::i()->is_registration_earninvitations AND \IPS\Settings::i()->is_registration_earninvitations_nr > 0 )
				{
					$member->invites_remaining = \IPS\Settings::i()->is_registration_earninvitations_nr;
				}

				$member->save();

				/* Update Invite */
				\IPS\Db::i()->update( 'invite_invites', array( 'invite_status' => 1, 'invite_conv_member_id' => $member->member_id, 'invite_conv_date' => time(), 'invite_expiration_date' => 0 ), array( 'invite_id=?', $invite['invite_id'] ) );
			}
		}

		return $member;
	}

 

Link to comment
Share on other sites

5 минут назад, Alexander_M сказал:

Похоже, эта штука ломает дополнительные поля профиля при регистрации. Баг в хуке, перехватывающем контроллер регистрации.

Уверены, что проблема в приложении? У меня стоит и есть проблема с доп полями при регистрации, но я знаю форум, где нет этого приложения, но проблема с полями есть

IPS 4.1.18.2

Link to comment
Share on other sites

6 минут назад, Redneck сказал:

Уверены, что проблема в приложении?

да, мы только что отловили эту ошибку! Если на том форуме где есть проблема не стоит система инвайтов не записываются дополнительные поля при регистрации, значит что то еще у него установлено что мешает это делать. У нас проблема была именно в этом приложении! Сейчас все заработало, мы проверили!

Link to comment
Share on other sites

Ну, я просто посмотрел на код и там было такое:

$member = parent::_createMember( $values );

Думаю, Вы понимаете, что это косяк: этому методу должен передаваться второй параметр - массив с дополнительными полями профиля (см. реализацию applications/core/modules/front/system/register.php).

Я исправил. У нас проблема исчезла.

Теперь по поводу Вашего товарища с такой же проблемой: тут проблема может быть в каких-то других хуках, или в ошибке совершенно такого же рода в подобном же хуке метода _createMember.

Link to comment
Share on other sites

Только что, gudman1 сказал:

да, мы только что отловили эту ошибку! Если на том форуме где есть проблема не стоит система инвайтов не записываются дополнительные поля при регистрации, значит что то еще у него установлено что мешает это делать. У нас проблема была именно в этом приложении! Сейчас все заработало, мы проверили!

я отключил приложение и зарегистрировал аккаунт - проблема осталась. И появилась она начиная с 18 версии, до этого проблемы не было

Link to comment
Share on other sites

А вообще, этот движок по определению полон сюрпризов - потому что он написан косорукими обезъянами. Даже удивительно, что за него просят денег и он так нравится людям, я как адепт phpBB ещё со времен второй версии, помня, какое качества кода там, поражаюсь тому, какое оно в этом движке.

Just now, Redneck said:

я отключил приложение и зарегистрировал аккаунт - проблема осталась. И появилась она начиная с 18 версии, до этого проблемы не было

Вы кеш почистили естественно? Хуки компиллируются и могли закешироваться.

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

Если проблема у Вас не устраняется даже после отключения плагина и чистки кеша - нужно смотреть какие ещё плагины из установленных у Вас могут перегружать контроллер регистрации. И грешить надо на них.

Link to comment
Share on other sites

5 минут назад, Redneck сказал:

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

очевидно не в нем! Какие еще плагины стоят на форуме. Что то может перегружать контроллер регистрации. Какой то из плагинов не дает отправить информацию в базу данных.

Link to comment
Share on other sites

8 minutes ago, Redneck said:

@gudman1 @Alexander_M я удалил приложение, почистил кеш - проблема осталась. Думаю, что дело не в нем. :) 

Ну я Вам выше всё сказал и объяснил, что у Вас могут быть ещё источники проблем.

Моё дело маленькое - указать на явный баг (я Вам привел строчку) и предложить исправление.

Успехов!

Link to comment
Share on other sites

Ну, собственно, разобрались. Мои слова про косоруких обезъян подтверждены.

Разработчики поменяли интерфейс функции _createMember в версии 4.1.18.

Вот результаты сравнения:

diff -r ./17 ./18 > 17_to_18.txt
< 	 * @param	array	$values	Values from form
---
> 	 * @param	array	$values				Values from form
> 	 * @param	array	$profileFields		Profile field values from registration
369c368
< 	public static function _createMember( $values )
---
> 	public static function _createMember( $values, $profileFields )

Таким образом все плагины, перегружающие этот метод будут работать некорректно, начиная с версии 4.1.18, если их не поправить аналогичным тому, как это сделали мы, образом.

В Release Notes ни слова... я в шоке.

Link to comment
Share on other sites

2 часа назад, Alexander_M сказал:

А вообще, этот движок по определению полон сюрпризов - потому что он написан косорукими обезъянами. Даже удивительно, что за него просят денег и он так нравится людям, я как адепт phpBB ещё со времен второй версии, помня, какое качества кода там, поражаюсь тому, какое оно в этом движке.

Вы кеш почистили естественно? Хуки компиллируются и могли закешироваться.

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

Если проблема у Вас не устраняется даже после отключения плагина и чистки кеша - нужно смотреть какие ещё плагины из установленных у Вас могут перегружать контроллер регистрации. И грешить надо на них.

Ну так сидите на phpBB, или напишите свой движек (ты ведь не обезьяна), смысл его использовать, но при этом поносить движек и его разработчиков?

Link to comment
Share on other sites

3 часа назад, Alexander_M сказал:

Таким образом все плагины, перегружающие этот метод будут работать некорректно, начиная с версии 4.1.18, если их не поправить аналогичным тому, как это сделали мы, образом.

Я весь мозг чуть не сломал :) Нашел еще 3 приложения с такой проблемой :) Только после того как все исправил - поля при регистрации стали сохраняться :) 

@gudman1 @Alexander_M спасибо за наводку!!!

Link to comment
Share on other sites

3 часа назад, Alexander_M сказал:

Ну, собственно, разобрались. Мои слова про косоруких обезъян подтверждены.

Разработчики поменяли интерфейс функции _createMember в версии 4.1.18.

...

В Release Notes ни слова... я в шоке.

Не знаю, что такое "интерфейс функции", даже про функции в ООП слышал только от тех самых "криворуких обезъян". :)

Вижу, что добавили аргумент, в метод " _createMember " класса Members. На мой взгляд, это говорит о том что, в отличии от PHPBB, движок все ещё, развивается.

Что до несовершенства документации... охшит, а покажите мне доки хоть одного командного проекта, где нет и не было подобных ляпов. И уж точно не "поклоннику PHBB" об этом не знать.

Link to comment
Share on other sites

2 hours ago, Dmitriy427 said:

Не знаю, что такое "интерфейс функции", даже про функции в ООП слышал только от тех самых "криворуких обезъян". :)

Вижу, что добавили аргумент, в метод " _createMember " класса Members. На мой взгляд, это говорит о том что, в отличии от PHPBB, движок все ещё, развивается.

Что до несовершенства документации... охшит, а покажите мне доки хоть одного командного проекта, где нет и не было подобных ляпов. И уж точно не "поклоннику PHBB" об этом не знать.

Добавление аргумента метода означает развитие? ;-)

Ну вот кстати как раз в phpBB-то никогда посреди минорного апгрейда не менялся программный интерфейс. Там с этим строго.

 

3 hours ago, ZeRik said:

Ну так сидите на phpBB, или напишите свой движек (ты ведь не обезьяна), смысл его использовать, но при этом поносить движек и его разработчиков?

Ну многоуважаемый, уж простите, что я Вас так сильно задел - выложил тут решение проблемы, описал механизм возникновения. Я просто ужасен. ;-)

Link to comment
Share on other sites

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
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Ваша ссылка была автоматически строена.   Отображать как обычную ссылку

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...