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

Дополнительные группы


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

хотелось бы в мемберлисте сделать так, чтобы при сортировке по группам (показать только пользователей группы, допустим, новички), показывались пользователи, у которых эта группа присутствует в поле mgroup_others

 

как правильно построить запрос?

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

  • 1 год спустя...

писалось давно, возможно улучшение, но то что есть:

2.1.х

./sources/action_public/memberlist.php

весь получившийся код, начиная где-то с 251 линии

 

		//-----------------------------------------
	// Member Groups...
	//-----------------------------------------

	if ($this->filter != 'ALL')
	{
		if ( ! preg_match( "/(^|,)".$this->filter."(,|$)/", $group_string ) )
		{
			$query[] = "m.mgroup IN($group_string)";
		}
		else
		{
			$query[] = "m.mgroup='".$this->filter."' ";

	if  ( $this->ipsclass->member['g_access_cp'] )//видят только админы. можно сделать любую логику
	{				
	$this->output = $this->ipsclass->compiled_templates['skin_mlist']->mlist_start();

	$this->output .= $this->ipsclass->compiled_templates['skin_mlist']->mlist_page_header_other();  //шаблон новый, фактически копированный mlist_page_header, но без лишних элементов типа страниц

	$this->ipsclass->DB->simple_construct( array( 'select'   => '*',
												  'from'	 => 'members',
												)
										 );
	$this->ipsclass->DB->simple_exec();

	while( $r = $this->ipsclass->DB->fetch_row() )
	{
		if ( strstr( $r['mgroup_others'] , "," ) )
		{
			foreach( explode( ",", $r['mgroup_others'] ) as $group )
			{

				if ($this->filter == $group)
				{
					$member = $r;

					$member = $this->topic->parse_member( $member );

					$photo_vars = $this->ipsclass->cache['group_cache'][$member['mgroup']]['g_photo_max_vars'];
					$photo_dims = array( 'pwidth' => 180, 'pheight' => 180 );

					if( strpos( $photo_vars, ":" ) )
					{
						$tmp = array();
						$tmp = explode( ":", $photo_vars );
						$photo_dims['pwidth'] = $tmp[1]+30;
						$photo_dims['pheight'] = $tmp[2]+30;
						unset( $tmp, $photo_vars );
					}

					$member['joined'] = $this->ipsclass->get_date( $member['joined'], 'JOINED' );

					$member['group']  = $this->mem_groups[ $member['mgroup'] ]['TITLE'];

					if ($member['photo_type'] and $member['photo_location'])
					{
						$member['camera'] = "<a href=\"java script:PopUp('{$this->ipsclass->base_url}act=Profile&CODE=showphoto&MID={$member['id']}','Photo','{$photo_dims['pwidth']}','{$photo_dims['pheight']}','0','1','1','1')\"><{CAMERA}></a>";
					}

					$member['posts'] = $this->ipsclass->do_number_format($member['posts']);

					//-----------------------------------------
					// Bug fix... name-- breaks formatting
					// xhmlt invalid..
					//-----------------------------------------

					$member['members_display_name'] = str_replace( '--', '& #45;& #45;', $member['members_display_name'] );//& # - пробел убрать

					$this->output .= $this->ipsclass->compiled_templates['skin_mlist']->mlist_show_row($member);


				}  
			}
		}
	}


	$this->output .= $this->ipsclass->compiled_templates['skin_mlist']->mlist_page_end_other();//аналогично
	}

		}
	}

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

ну например так:

 

SELECT m.id, m.name 
FROM ibf_members m 
where m.mgroup = xx
union
SELECT mm.id, mm.name 
FROM ibf_members m, ibf_members mm
WHERE m.mgroup=xx and m.mgroup_others LIKE CONCAT('%,',mm.mgroup,',%')

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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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

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

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