Главная » IPB » Статьи IPB » Порядковый id — твой номер «33»
Распечатать статью

Порядковый id — твой номер «33»

При регистрации на форуме нового пользователя, ему присваивается определенный id, под которым он будет числиться. Если же вы по каким-то причинам удалите пользователя, то его id больше никому не присваивается, а при регистрации новому пользователю будет присвоен следующий, порядковый id. Таков механизм регистрации в IP.Board. Со временем между id появляются большие пробелы, которые некрасиво выглядят.

Вы хотите избавиться от пустот между id? Чтобы заставить форум присваивать свободные id новым пользователям, заполняя при этом свободные пробелы между ними, если таковые будут найдены, нужно внести несколько небольших изменений в файлы. Для большинства этот хак покажется бесполезным, эстеты – оценят его. Хак полностью рабочий и проверен на нескольких форумах.

 

Установка на IP.Board v2.3.x

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

Открыть файл ./sources/action_public/register.php, найти:

$member = array(
'name'                   => $in_username,
'members_l_username'     => strtolower( $in_username ),
'members_display_name'   => $this->ipsclass->vars['auth_allow_dnames'] ? $members_display_name : $in_username,

Заменить на:

$this->ipsclass->DB->query("SELECT m.id+1 as new_id FROM ibf_members m LEFT JOIN ibf_members mm ON (mm.id=m.id+1) WHERE mm.id is null ORDER BY m.id LIMIT 1");
$r = $this->ipsclass->DB->fetch_row();
$member_id = $r['new_id'];
$member = array(
'id'                     => $member_id,
'members_l_username'     => strtolower( $in_username ),
'members_display_name'   => $this->ipsclass->vars['auth_allow_dnames'] ? $members_display_name : $in_username,

В этом же файле найти:

//-----------------------------------------
// Get converges auto_increment user_id
//-----------------------------------------

$member_id    = $this->ipsclass->DB->get_insert_id();
$member['id'] = $member_id;

Удалить или заменить на:

//-----------------------------------------
// Get converges auto_increment user_id
//-----------------------------------------

//$member_id    = $this->ipsclass->DB->get_insert_id();
//$member['id'] = $member_id;

Открыть файл ./sources/tasks/rebuildstats.php, найти:

$r = $this->ipsclass->DB->simple_exec_query( array( 'select' => 'id, name, members_display_name',
'from'   => 'members',
'where'  => "mgroup <> ".$this->ipsclass->vars['auth_group'],
'order'  => 'id DESC',
'limit'  => array(0,1)
)      );

Заменить на:

$r = $this->ipsclass->DB->simple_exec_query( array( 'select' => 'id, name, members_display_name',
'from'   => 'members',
'where'  => "mgroup <> ".$this->ipsclass->vars['auth_group'],
'order'  => 'joined DESC',
'limit'  => array(0,1)
)      );

Открыть файл ./sources/action_admin/rebuild.php, найти:

$this->ipsclass->DB->simple_construct( array( 'select' => 'id, name, members_display_name',
'from'   => 'members',
'where'  => "mgroup <> '".$this->ipsclass->vars['auth_group']."'",
'order'  => "id DESC",
'limit'  => array(0,1) ) );

Заменить на:

$this->ipsclass->DB->simple_construct( array( 'select' => 'id, name, members_display_name',
'from'   => 'members',
'where'  => "mgroup <> '".$this->ipsclass->vars['auth_group']."'",
'order'  => "joined DESC",
'limit'  => array(0,1) ) );

Открыть файл ./sources/action_admin/member.php, найти (встречается два раза):

$this->ipsclass->DB->simple_construct( array( 'select' => 'id, name, members_display_name',
'from'   => 'members',
'where'  => "mgroup <> '".$this->ipsclass->vars['auth_group']."'",
'order'  => "id DESC",
'limit'  => array(0,1) ) );
$this->ipsclass->DB->simple_exec();

Заменить на:

$this->ipsclass->DB->simple_construct( array( 'select' => 'id, name, members_display_name',
'from'   => 'members',
'where'  => "mgroup <> '".$this->ipsclass->vars['auth_group']."'",
'order'  => "joined DESC",
'limit'  => array(0,1) ) );
$this->ipsclass->DB->simple_exec();

Текущий хак для форумов IP.Board v1.x, 2.1.x и многие другие исправления, дополнения, баг-фиксы вы найдете здесь (требуется регистрация). За вышепредставленный код говорим спасибо Arhar и query.

Источник:  ipb-faq.ru

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

Оставить комментарий

Похожие статьи