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

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


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

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

 

Дата регистрации 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);

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

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

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

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

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

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

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

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

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

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

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

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