Перейти к контенту

Использование модуля ipb_member_sync


Рекомендуемые сообщения

Недавно, в силу необходимости тыкать вновь зарегистрированных пользователей

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

Есть возможность описать эти особенности в правилах, выводимых при регистрации,

но 90% пользователей их не читают, а пролистывают и ставят галочку.

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

 

Скачал с mods.invisionize.com мод Welcome PM и ужаснулся, насколько все сложно, ведь есть же

замечательная возможность сделать все проще.

Ковыряя register.php в ходе создания защиты от ботов, заметил

  if ( USE_MODULES == 1 )
 {
  require ROOT_PATH."modules/ipb_member_sync.php";

  $this->modules = new ipb_member_sync();
  $this->modules->ipsclass =& $this->ipsclass;
 }

Вызывается это в самом начале.

Значение USE_MODULES определяется еще в файле init.php, по умолчанию 1, так что код происходит.

В register.php в функции create_account есть

  //-----------------------------------------
 // Use modules?
 //-----------------------------------------

 if ( USE_MODULES == 1 )
 {
  $this->modules->register_class($this);

  $member['password'] = trim($this->ipsclass->input['PassWord']);

  $this->modules->on_create_account($member);

  if ( $this->modules->error == 1 )
  {
   return;
  }

  $member['password'] = "";
 }

это значит, опят таки, если модули используются, вызывается функция on_create_account из ipb_member_sync.php

 

Рассмотрим наконец возможности использования этой функции

Ей передаются все данные о новом пользователе, даже НЕ закодированный пароль, что также можно использовать.

Используем следующим образом.

В файле modules/ipb_member_sync.php есть

 
function on_create_account($member)
{
 global $DB, $std, $ibforums;

 //---- START


 //---- END
}

ну или что-то похожее.. тем не менее она пустая, а это значит, что можно написать все, что угодно.

Напишем Welcome PM.

Для этого между //---- START и //---- END вставим следующий код, который будет отвечать за PM

  require_once( ROOT_PATH.'sources/lib/func_msg.php' );

 $this->lib = new func_msg();
 $this->lib->ipsclass =& $this->ipsclass;

 $this->lib->init();

 $this->lib->to_by_id	= $member['id'];//ид вновь зарегестрированного пользователя
 $this->lib->from_member['id'] = 1;//ид ОТ кого будет приходить сообщение
 $this->lib->msg_title   = "Добро пожаловать!";
 $this->lib->msg_post	= "Поздравляем! Вы успешно зарегестрировались!";
 $this->lib->force_pm	= 0;

 $this->lib->send_pm();

 if ( $this->lib->error )
 {
	  print $this->error;
	  exit();
 }

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

Все придумано до нас.

В переменной $this->lib->msg_title будет хранится название нового сообщения.

В переменной $this->lib->msg_post его текст. Можете придумать все, что угодно.

Вы также можете сообщить пользователю его пароль, который он вводил, следующим образом:

$this->lib->msg_post = "Поздравляем! Вы успешно зарегестрировались! Ваш пароль: ".$member['password'].". В целях безопасности запишите этот пароль и удалите это сообщение!";

Правда пароль будет хранится в базе в таблице личных сообщений в открытом виде, так что это не безопасно.

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

Ссылка на комментарий
Поделиться на других сайтах

Спасибо, полезная фича. Как раз думал над этим файлом на днях, зачем он, особенно смутило "global $DB, $std, $ibforums;", показалось что это из 2.0.х артефакт...
Ссылка на комментарий
Поделиться на других сайтах

да, но это никак не влияет на выполнение кода

вроде в index.php им присваивается что-то

if ( LEGACY_MODE )
{
$DB	   =& $ipsclass->DB;
$std	  =& $ipsclass;
$ibforums =& $ipsclass;
$forums   =& $ipsclass->forums;
$print	=& $ipsclass->print;
$sess	 =& $ipsclass->sess;

$ipsclass->load_template('skin_global');
$ipsclass->skin_global = $ipsclass->compiled_templates['skin_global'];
}

но это в случае LEGACY_MODE, а оно в init.php

define( 'LEGACY_MODE', 0 );

так что они пустые

Ссылка на комментарий
Поделиться на других сайтах

Ну вот я и засомневался на счет них, на форуме читал, что они из 2.0.х остались и их применять нельзя. подумал что файл вообще лишний в дистрибутиве, не удалили от пред. версии, хотел даже в баги писать, а тут эта тема :D
Ссылка на комментарий
Поделиться на других сайтах

  • 6 месяцев спустя...
А штука эта в 2.3.1 работать будет?

Будет.

Ссылка на комментарий
Поделиться на других сайтах

  • 4 месяца спустя...

Не работает в 2.3.4

 

В файле init.php нет этого куска

 

//-----------------------------------------
 // Use modules?
 //-----------------------------------------

 if ( USE_MODULES == 1 )
 {
  $this->modules->register_class($this);

  $member['password'] = trim($this->ipsclass->input['PassWord']);

  $this->modules->on_create_account($member);

  if ( $this->modules->error == 1 )
  {
   return;
  }

  $member['password'] = "";
 }

Ссылка на комментарий
Поделиться на других сайтах

В register.php в функции create_account есть

 

 

это во первых

а во вторых, это статья, а не мод

и говорится в ней о том, что такое модуль ipb_member_sync.php

Ссылка на комментарий
Поделиться на других сайтах

а во вторых, это статья, а не мод

и говорится в ней о том, что такое модуль ipb_member_sync.php

пускай и статья, но работает на 2.3.х на ура ;) спс :D

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

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

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.