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

Календарь и дни рождения


Xacku

Вопрос

IPB 2.3.6

 

Админцентр > Настройки > Календарь и дни рождения

 

Повторяющиеся события или длительные события не отображаются.

 

Очень хотелось-бы, чтобы выводились дни рождения пользователей на несколько (3-5 дней) вперед.

 

Тоесть приветствуется:

 

Именинники в ближайшие 3 дня: ххх, ууу, ааа, ббб...

 

В основных настройках, насколько я понял, этого не сделать - может есть мод или вариант изменений?

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

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

  • 0

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

Или же создавть бота или таск для занесения информации о юбилярах в таблицу календаря - что тоже не очень рационально.

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

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

  • 0

ХитрО...

Готовое решение под IPB нигде не встречалось?

Просто ранее базировались на пхпББ - там сия фича реализована... Правда не помню как...

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

  • 0

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

Чтобы на главной внизу отображались именинники например на 3-5 дней вперёд

Есть ли какое-то решение?

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

  • 0

Я нашел решение!

Модифицировал встроенный таск обновления кэша дней рождения ('birthdays')

 

1. В файле sources/action_admin/calendars.php найти комментарий:

		//-----------------------------------------
	// Grab birthdays
	//-----------------------------------------

и закомментировать /* */ блок из пары десятков строк, вплоть до комментария:

		//--------------------------------------------
	// Update calendar array
	//--------------------------------------------

Вместо закомментированных строк вставить:

		$query = "SELECT m.id, m.members_display_name, m.mgroup, m.bday_year, m.bday_month, m.bday_day, 
			YEAR(NOW())-m.bday_year AS age, g.prefix, g.suffix
		  FROM ibf_members m
		  LEFT JOIN ibf_groups g ON (m.mgroup=g.g_id)
		  WHERE 1=2 ";

	for ($i=1;$i<$this->ipsclass->vars['calendar_limit'];$i++)
		$query .= " OR DATE_FORMAT(DATE_ADD(CURDATE(),INTERVAL {$i} DAY), '%m%d')=CONCAT(LPAD(bday_month,2,'0'),LPAD(bday_day,2,'0'))";

	$query .= " ORDER BY CONCAT(LPAD(bday_month,2,'0'),LPAD(bday_day,2,'0'))";

	$row = $this->ipsclass->DB->query( $query );
	while ( $r = $this->ipsclass->DB->fetch_row() )
	{
		$birthdays[ $r['id'] ] = $r;
	}

 

2. В файле sources/lib/func_boardstats.php найти комментарий:

			//-----------------------------------------
		// Print...
		//-----------------------------------------

 

и сразу после него добавить три строчки:

	if ( is_array($this->ipsclass->cache['birthdays']) AND count( $this->ipsclass->cache['birthdays'] ) )
	foreach( $this->ipsclass->cache['birthdays'] as $u )
		$show_events[] = "<a href='{$this->ipsclass->base_url}showuser={$u['id']}' title='{$u['age']}'><b>{$u['prefix']}{$u['members_display_name']}{$u['suffix']}</b></a> <i>({$u['bday_day']}.{$u['bday_month']})</i>";

 

3. После этого нужно зайти в админку (Настройки -> Список задач) и принудительно запустить задачу "Кеширование дней рождения и событий". Либо ждать 12 часов до автоматического запуска задачи :D

 

=============

Принимаются замечание о багах и фичах ;)

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

  • 0
Я нашел решение!

=============

Принимаются замечание о багах и фичах :D

 

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

 

Пропали текущие дни рождения ;)

Будущие показывает, а именинников в этот день - нет.

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

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

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

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

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

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

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

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

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

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

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

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