Страница 2 из 6

Добавлено: 15.07.2005 16:20
quazi
вы ставите новый мод поверх этого. и меняете логику функции create_date, которая уже изменена этим модом

Добавлено: 15.07.2005 17:14
baldahin
quazi, не совсем понял. а как собственно поменять логику функции create_date, если она уже изменена сабжем?

Добавлено: 15.07.2005 17:29
quazi
create_date
функция которую я изменил в моде. она же (по-видимому) изменена вашим модом

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

Добавлено: 15.07.2005 18:32
[R: R@m$e$ :U]
baldahin
это совмещаемо... =) имхо, если посмотреть чуть внимательней... проблем не будет...

Добавлено: 16.07.2005 2:34
VVVas
quazi писал(а):##############################################################
## MOD Title: Today / Yesterday
## MOD Author: Rumata < http://forum.dklab.ru/users/Rumata >
## MOD Description: This MOD allows to see 'Today at' or 'Yesterday at' in the any location of the phpBB forum
## MOD Version: 1.0.0 Beta
Живет сия вещь замечательно.
Во-первых, чтоб не парить людей у которых стоит Keep Unread Flag (по крайней мере версия 2, потому что у меня 2) стоит написать

Код: Выделить всё

#----[ OPEN ]------- 
# 
includes/page_header.php 

# 
#----[ FIND ]------- 
# 
$s_last_visit = 

# 
#----[ IN-LINE, FIND ]------- 
# 
$board_config['board_timezone']

# 
#----[ IN-LINE, AFTER ADD ]------- 
# 
, true
И во-вторых,
quazi писал(а):$lang['datetime']['Hidden_time'] = 'Obscured by darkness';
Как это понять, перевести на русский, и для чего используеться?

Добавлено: 16.07.2005 2:47
quazi
1. не принципиально, хотя более аккуратно
2. Obscured by darkness == Покрыто мраком.
но лучше более нейтрально - Unknown.
VVVas писал(а):для чего используеться
на случай, если время, передаваемое в функцию - пустое. редкий, практически невозможный случай, но если подобное произойдет - на форуме будет показано некорректное время, что-то в районе 1 янв 1970 года. что не есть хорошо, поэтому - лучше показать некую фразу.

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

Добавлено: 16.07.2005 3:15
VVVas
Только вот не живет с BirthDayHack - теперь при просмотре темы в качестве возраста показывает год рождения со знаком минус и на главной не отображаються именинники. Прочел тему и сделал.
Поправить надо следующее.

Код: Выделить всё

#----[ OPEN ]------- 
#
index.php
# 
#----[ FIND ]------- 
#
	if (!empty($result)) 
	{ 
		$time_now = time();
		$this_year = create_date('Y', $time_now, $board_config['board_timezone'], false);

# 
#----[ IN-LINE, FIND ]------- 
#
$board_config['board_timezone']

# 
#----[ IN-LINE, AFTER ADD ]------- 
#
, false

# 
#----[ FIND ]------- 
#
		$date_today = create_date('Ymd', $time_now, $board_config['board_timezone']);

# 
#----[ IN-LINE, FIND ]------- 
#
$board_config['board_timezone']

# 
#----[ IN-LINE, AFTER ADD ]------- 
#
, false

# 
#----[ FIND ]------- 
#
		$date_forward = create_date('Ymd', $time_now+($board_config['birthday_check_day']*86400), $board_config['board_timezone']);

# 
#----[ IN-LINE, FIND ]------- 
#
$board_config['board_timezone']

# 
#----[ IN-LINE, AFTER ADD ]------- 
#
, false

#----[ OPEN ]------- 
#
viewtopic.php

# 
#----[ FIND ]------- 
#
// Start add - Birthday MOD
$this_year = create_date('Y', time(), $board_config['board_timezone']);

# 
#----[ IN-LINE, FIND ]------- 
#
$board_config['board_timezone']

# 
#----[ IN-LINE, AFTER ADD ]------- 
#
, false

# 
#----[ FIND ]------- 
#
$this_date = create_date('md', time(), $board_config['board_timezone']);

# 
#----[ IN-LINE, FIND ]------- 
#
$board_config['board_timezone']

# 
#----[ IN-LINE, AFTER ADD ]------- 
#
, false
После этого у меня заработало отображение нормально. Но в файле

includes/functions.php
к этому моду относиться ещё вот эта строка

Код: Выделить всё

return create_date($date_syntax,$date*86400+1,0);
Нужно ли её правит и на что это влияет?

Если нужно можете оформить как аддон для Birthdayhack как с аддонами (birthday_add_on_zodiac_1.0.5em.zip, birthday_add_on_chinese_zodiac_1.0.1em.zip и birthday_add_on_chinese_viewtopic_1.0.0em.zip) так и без них, аддоны эти вещи не затрагивают.
Но предварительно скажите про строку в includes/functions.php

Добавлено: 16.07.2005 3:41
quazi
VVVas писал(а):Нужно ли её правит и на что это влияет?
а что на это говорит эксперимент? если честно, Birthday мод мне не интересен и я его видел один только раз. я тут уже просил показать сомнительные строки из мода, но желателен также контекст в котором эти строки вызывают сомнение

Добавлено: 16.07.2005 3:47
VVVas
quazi писал(а):а что на это говорит эксперимент?
Что не надо.
quazi писал(а):я тут уже просил показать сомнительные строки из мода, но желателен также контекст в котором эти строки вызывают сомнение
Вот та часть про которую я говорю

Код: Выделить всё

// Add function realdate for Birthday MOD
// the originate php "date()", does not work proberly on all OS, especially when going back in time
// before year 1970 (year 0), this function "realdate()", has a mutch larger valid date range,
// from 1901 - 2099. it returns a "like" UNIX date format (only date, related letters may be used, due to the fact that
// the given date value should already be divided by 86400 - leaving no time information left)
// a input like a UNIX timestamp divided by 86400 is expected, so
// calculation from the originate php date and mktime is easy.
// e.g. realdate ("m d Y", 3) returns the string "1 3 1970"

// UNIX users should replace this function with the below code, since this should be faster
//
//function realdate($date_syntax="Ymd",$date=0) 
//{ return create_date($date_syntax,$date*86400+1,0); }

function realdate($date_syntax="Ymd",$date=0)
{
	global $lang;
	$i=2;
	if ($date>=0)
	{
	 	return create_date($date_syntax,$date*86400+1,0);
	} else
	{
		$year= -(date%1461);
		$days = $date + $year*1461;
		while ($days<0)
		{
			$year--;
			$days+=365;
			if ($i++==3)
			{
				$i=0;
				$days++;
			}
		}
	}
	$leap_year = ($i==0) ? TRUE : FALSE;
	$months_array = ($i==0) ?
		array (0,31,60,91,121,152,182,213,244,274,305,335,366) :
		array (0,31,59,90,120,151,181,212,243,273,304,334,365);
	for ($month=1;$month<12;$month++)
	{
		if ($days<$months_array[$month]) break;
	}

	$day=$days-$months_array[$month-1]+1;
	//you may gain speed performance by remove som of the below entry's if they are not needed/used
	return strtr ($date_syntax, array(
		'a' => '',
		'A' => '',
		'\\d' => 'd',
		'd' => ($day>9) ? $day : '0'.$day,
		'\\D' => 'D',
		'D' => $lang['day_short'][($date-3)%7],
		'\\F' => 'F',
		'F' => $lang['month_long'][$month-1],
		'g' => '',
		'G' => '',
		'H' => '',
		'h' => '',
		'i' => '',
		'I' => '',
		'\\j' => 'j',
		'j' => $day,
		'\\l' => 'l',
		'l' => $lang['day_long'][($date-3)%7],
		'\\L' => 'L',
		'L' => $leap_year,
		'\\m' => 'm',
		'm' => ($month>9) ? $month : '0'.$month,
		'\\M' => 'M',
		'M' => $lang['month_short'][$month-1],
		'\\n' => 'n',
		'n' => $month,
		'O' => '',
		's' => '',
		'S' => '',
		'\\t' => 't',
		't' => $months_array[$month]-$months_array[$month-1],
		'w' => '',
		'\\y' => 'y',
		'y' => ($year>29) ? $year-30 : $year+70,
		'\\Y' => 'Y',
		'Y' => $year+1970,
		'\\z' => 'z',
		'z' => $days,
		'\\W' => '',
		'W' => '') );
}
// End add - Birthday MOD
Что можете сказать? Если скажете что не знаете, то пофиг - будем жить дальше, я пока багов не увидел.

Добавлено спустя 1 минуту 7 секунд:

А вообще спасибо за мод.

Добавлено: 16.07.2005 4:02
quazi
вообще это кривая функция realdate. она не решает проблему отрицательных дат (до 1 янв 1970) и переполнения (после 2000 какого-то). поэтому можно последовать совету автора (как на юникс так и виндоус машинах)

Код: Выделить всё

function realdate($date_syntax="Ymd",$date=0)
{
        return create_date($date_syntax,$date*86400+1,0);
}

Добавлено: 16.07.2005 4:08
VVVas
quazi
А можно про совет подробнее и желательно на русском, а то я совсем что-то не понял что написано, извините но учил я только французский.

Добавлено: 16.07.2005 4:13
quazi
UNIX users should replace this function with the below code, since this should be faster
не совсем точно, но корректно
пользователям UNIX желательно заменить эту функцию на следующий код, так как он гораздо быстрее

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

Добавлено: 16.07.2005 4:15
VVVas
quazi писал(а):по крайней мере закомментируйте монстра и раскомментируйте те две строчки
Понятно, спасибо.

Добавлено: 16.07.2005 11:03
baldahin
quazi писал(а):create_date
функция которую я изменил в моде. она же (по-видимому) изменена вашим модом

то есть при наложении изменений перестают работать или один или оба. аналогия из жизни на один стул вдвоем не садятся. дайте ссылку на мод. я посмотрю и что-нибудь скажу
http://www.golfexpert.net/link.php?from=01&to=6

Добавлено: 17.07.2005 1:06
VVVas
quazi
Вчера не обратил на это внимания. Есть маленькая-маленькая проблема проблема: мод определяет вчера/сегодня не делая поправку на заданное в конфигурации (для гостей) и в профиле (для зарегистрированных пользователей). Он каким то образом сам выбирает летнее сейчас время или нет для GMT+3 не обращая внимания на то что задано в профиле и в конфигурации. Сие не есть хорошо.

Добавлено спустя 1 минуту 19 секунд:

Из-за этого наверное и возникла проблема с Users of the day по поводу
Просто какое-то странное сегодня (хоть оно и пытаеться быть сегодня): у одного пользователя, мод Today / Yesterday by Rumata пишет "Вчера".
Добавлено спустя 9 минут 34 секунды:

Это основываеться на том что аналогичная проблема всплыла с датой поста и вот регнул пользователя - тоже самое, сразу после отправки пишет что пост отправлен вчера. То есть если б он писал на главной странице текущее время используя мод, то у него бы получилось "Текущее время Вчера 23:30". Сия бага выплывает только летом в случае если GMT не переведено на летнее время и бажет это только с 00 часов 00 минут до 01 часов 00 минут по Москве летнее (для форума без перевода на летнее по москве это с 23:00 до 00:00).