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

замена "дата реги" на "стаж"


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

где бы покапать, чтобы вместо

 

Дата регистрации 28/12/2007 было к примеру Стаж: 3 месяца и 5 дней.

 

естессно в ланг файле изменить.а дальше?

 

заранее спасибо.

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

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

Саму считалку с морфологической обработкой числительных можно использовать. Но как встраивать ее в "двушку" не знаю.

$base_prefix	= $author[field_2];
$base_day		= $author[field_3];		// no leading "0"
$base_mon		= $author[field_4];		// no leading "0"
$base_yr		= $author[field_5];		// use 4 digit years!

if(IsSet($base_day) and IsSet($base_mon) and IsSet($base_yr))
{
$current_day		= date ("j");
$current_mon		= date ("n");
$current_yr		= date ("Y");
$base_mon_max		= date ("t",mktime (0,0,0,$base_mon,$base_day,$base_yr));
$base_day_diff 		= $base_mon_max - $base_day;
$base_mon_diff 		= 12 - $base_mon - 1;
$start_day		= 1;
$start_mon		= 1;
$start_yr		= $base_yr + 1;
$day_diff	= ($current_day - $start_day) + 1; 	// add today
$mon_diff	= ($current_mon - $start_mon) + 1;	// add current month
$yr_diff	= ($current_yr - $start_yr);
$day_diff	= $day_diff + $base_day_diff;
$mon_diff	= $mon_diff + $base_mon_diff;
if ($day_diff >= $base_mon_max)
{
$day_diff = $day_diff - $base_mon_max;
$mon_diff = $mon_diff + 1;
}
if ($mon_diff >= 12)
{
$mon_diff = $mon_diff - 12;
$yr_diff = $yr_diff + 1;
}
$years = "лет";
$month = "месяцев";
$days = "дней";
if ($yr_diff%10 == "1" and $yr_diff!="11") $years = "год";
if ($yr_diff%10 == "2" and $yr_diff!="12") $years = "года";
if ($yr_diff%10 == "3" and $yr_diff!="13") $years = "года";
if ($yr_diff%10 == "4" and $yr_diff!="14") $years = "года";

if ($mon_diff == "1") $month = "месяц";
if ($mon_diff == "2" or $mon_diff == "3" or$mon_diff == "4") $month = "месяца";

if ($day_diff == "1" or $day_diff == "21" or$day_diff == "31") $days = "день";
if ($day_diff == "2" or $day_diff == "3" or $day_diff == "4"
or $day_diff == "22" or $day_diff == "23" or $day_diff == "24"
or $day_diff == "31") $days = "дня";

if($yr_diff >= 0){
$trezvz = "<b>".$base_prefix.":</b><br>";
if($yr_diff>0){$trezvz .= $yr_diff." ".$years;}
if($yr_diff>0 and $mon_diff>0){$trezvz .= ", ";}
if($mon_diff>0){$trezvz .= $mon_diff." ".$month;}
if($day_diff>0 and $mon_diff>0){$trezvz .= ", ";}
if($day_diff>0 and $mon_diff==0 and $yr_diff>0){$trezvz .= ", ";}
if($day_diff>0){$trezvz .= $day_diff." ".$days;}
}
}

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

Глянул, где надо рыться.

sources/ipsclass.php

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

 

Здесь дата регистрации "зарыта" в

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

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

А само слово "регистрация" на "стаж" заминить в ленг-файле будет совсем не сложно.

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

  • 2 недели спустя...

помогите плиз приспособить под 2.1.7

 

вроде то что нужно, как модифицировать под IPB?

// now TimeStamp returns the curent datetime in mySQL timestamp format
function nowTS() {
$newdate = date("Y-m-d H:i:s");
return $newdate;	
}

// extrdate Extracts mySQL timestamp into any date() parameter given
function extrdate($date,$parameters) {
$strtotime = strtotime($date);
$newdate = date($parameters,$strtotime);	
return $newdate;
}

// since Calculates how many time past since given time
function since($time) {
$nowtime = nowTS();

$nowyear = extrdate($nowtime,"Y");
$nowmonth = extrdate($nowtime,"m");
$nowday = extrdate($nowtime,"d");
$nowhour = extrdate($nowtime,"H");
$nowminut = extrdate($nowtime,"i");
$nowsecond = extrdate($nowtime,"s");

$timeyear = extrdate($time,"Y");
$timemonth = extrdate($time,"m");
$timeday = extrdate($time,"d");
$timehour = extrdate($time,"H");
$timeminut = extrdate($time,"i");
$timesecond = extrdate($time,"s");

$yearsince = $nowyear - $timeyear;
$monthsince = $nowmonth - $timemonth;
$daysince = $nowday - $timeday;
$hoursince = $nowhour - $timehour;
$minutsince = $nowminut - $timeminut;
$secondsince = $nowsecond - $timesecond;

/// Seconds Conf ///
if ($nowsecond < $timesecond) {
	$secondsince = 60 + $nowsecond - $timesecond;
	$minusminut = TRUE;
}
/// Minuts Conf ///
if ($minusminut == TRUE) {
	$nowminut = $nowminut - 1;

	if ($nowminut == $timeminut) {
		$minutsince =  $nowminut - $timeminut;
	}
}
if ($nowminut < $timeminut) {
	$minutsince =  60 + $nowminut - $timeminut;
	$minushour = TRUE;
}	
/// Hours Conf ///	
if ($minushour == TRUE) {
	$nowhour = $nowhour - 1;

	if ($nowhour == $timehour) {
		$hoursince =  $nowhour - $timehour;
	}
}
if ($nowhour < $timehour) {
	$hoursince =  24 + $nowhour - $timehour;
	$minusday = TRUE;
}	
/// Days Conf ///	
if ($minusday == TRUE) {
	$nowday = $nowday - 1;

	if ($nowday == $timeday) {
		$daysince =  $nowday - $timeday;
	}
}
if ($nowday < $timeday) {
	$daysince =  30 + $nowday - $timeday;
	$minusmonth = TRUE;
}	
/// Months Conf ///
if ($minusmonth == TRUE) {
	$nowmonth = $nowmonth - 1;

	if ($nowmonth == $timemonth) {
		$monthsince =  $nowmonth - $timemonth;
	}
}
if ($nowmonth < $timemonth) {
	$monthsince =  12 + $nowmonth - $timemonth;
	$minusyear = TRUE;
}	
/// Years Conf ///
if ($minusyear == TRUE) {
	$nowyear = $nowyear - 1;

	if ($nowyear == $timeyear) {
		$yearsince =  $nowyear - $timeyear;
	}
}
if ($nowyear < $timeyear) {
	$error = "The time you giving seems to be older then todays time";
}	
/////////////// end /////////////	
if (!$error){
	if (!empty($yearsince)) {
	$time = "$yearsince<i>y</i> $monthsince<i>m</i>";	
	}
	if (empty($yearsince)) {
	$time = "$monthsince<i>m</i> $daysince<i>d</i>";	
	}
	if (empty($yearsince) && empty($monthsince)) {
	$time = "$daysince<i>d</i> $hoursince<i>h</i>";	
	}
	if (empty($yearsince) && empty($monthsince) && empty($daysince)) {
	$time = "$hoursince<u>h</u> $minutsince<u>m</u>";	
	}
	if (empty($yearsince) && empty($monthsince) && empty($daysince) && empty($hoursince)) {
	$time = "$minutsince<i>m</i> $secondsince<i>s</i>";	
	}
return $time;
}
else echo $error;
}

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

  • 5 месяцев спустя...

Хотелось бы развёрнутой инструкции по замене даты реги на стаж...

К сожаленью выше представленные куски кода мне не помогут т.к. в php я ........

 

Хотелось бы что бы стаж отображался только в топике, а при просмотре профиля отображалась дата регистрации...

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

Хотелось бы развёрнутой инструкции по замене даты реги на стаж...

К сожаленью выше представленные куски кода мне не помогут т.к. в php я ........

 

Хотелось бы что бы стаж отображался только в топике, а при просмотре профиля отображалась дата регистрации...

Вообще-то, полезная штука.

Сделаю себе на 1.3.

Если найдется потом желающий переделать под старшие версии, кодом поделюсь.

 

Собственно, сделал для 1.3, в действии можно посмотреть в топиках vesvalo.net

 

 

Topics.php

Нашел

$member['member_joined'] = $ibforums->lang['m_joined'].' '.$std->get_date( $member['joined'], 'JOINED' );

и заменил на

// +FatCat Заменяю дату регистрации стажем на форуме
$summ_trezz = time() - $member['joined'];
$summary_days = ceil($summ_trezz/86400)-1; //дни
$summary_yaers =  ceil($summary_days/365)-1; //годы

$years = "лет";
if ($summary_yaers%10 == "1" and $summary_yaers!="11") $years = "год";
if ($summary_yaers%10 == "2" and $summary_yaers!="12") $years = "года";
if ($summary_yaers%10 == "3" and $summary_yaers!="13") $years = "года";
if ($summary_yaers%10 == "4" and $summary_yaers!="14") $years = "года";

$summ_count_str .= $summary_yaers." ".$years.", ";

$summary_days2 = $summary_days - ($summary_yaers*365); // дней меньше года
$summary_months = "11 месяцев, ";
$summary_days3 = $summary_days2 - 334;
if($summary_days2 < 335){$summary_months = "10 месяцев, "; $summary_days3 = $summary_days2 - 304;}
if($summary_days2 < 305){$summary_months = "9 месяцев, "; $summary_days3 = $summary_days2 - 273;}
if($summary_days2 < 274){$summary_months = "8 месяцев, "; $summary_days3 = $summary_days2 - 243;}
if($summary_days2 < 244){$summary_months = "7 месяцев, "; $summary_days3 = $summary_days2 - 212;}
if($summary_days2 < 213){$summary_months = "6 месяцев, "; $summary_days3 = $summary_days2 - 181;}
if($summary_days2 < 182){$summary_months = "5 месяцев, "; $summary_days3 = $summary_days2 - 151;}
if($summary_days2 < 152){$summary_months = "4 месяца, "; $summary_days3 = $summary_days2 - 120;}
if($summary_days2 < 121){$summary_months = "3 месяца, "; $summary_days3 = $summary_days2 - 90;}
if($summary_days2 < 91){$summary_months = "2 месяца, "; $summary_days3 = $summary_days2 - 59;}
if($summary_days2 < 60){$summary_months = "1 месяц, "; $summary_days3 = $summary_days2 - 31;}
if($summary_days2 < 32){$summary_months = ""; $summary_days3 = $summary_days2;}

$summ_count_str .= "<nobr>".$summary_months."</nobr>";

$days = "дней";
if ($summary_days3 == "1" or $summary_days3 == "21" or $summary_days3 == "31") $days = "день";
if ($summary_days3 == "2" or $summary_days3 == "3" or  $summary_days3 == "4"
or $summary_days3 == "22" or $summary_days3 == "23" or $summary_days3 == "24") $days = "дня";

$summ_count_str .= "<nobr>".$summary_days3." ".$days."</nobr>";

$summ_count_str = str_replace("0 лет, ","",$summ_count_str);
$summ_count_str = str_replace(", 0 дней","",$summ_count_str);
$summ_count_str = str_replace("-1 лет,","первый день",$summ_count_str);
$member['member_joined'] = "На форуме: ".$summ_count_str;
// - FatCat

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

для линейки 2.3.5

 

идем в forum\sources\ , ищем файло ipsclass.php

 

там гдето на 5943 строке есть строчка

 

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

 

 

(и её меняем на код, который ФатКат указал выше=)))

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

Исправил ошибку кода, когда у вновьзарегистрированного в первый день выводилось "-1 лет".

 

В своем сообщении исправил.

 

Если кто-то уже поставил себе этот, код, добавить предпоследней строчкой:

$summ_count_str = str_replace("-1 лет,","первый день",$summ_count_str);

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

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

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

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

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

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

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

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

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

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

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

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