DerSpinner Опубликовано 17 Февраля 2008 Жалоба Поделиться Опубликовано 17 Февраля 2008 где бы покапать, чтобы вместо Дата регистрации 28/12/2007 было к примеру Стаж: 3 месяца и 5 дней. естессно в ланг файле изменить.а дальше? заранее спасибо. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
FatCat Опубликовано 17 Февраля 2008 Жалоба Поделиться Опубликовано 17 Февраля 2008 У меня есть счетчик трезвости от даты,введенной пользователем в профиле (форум алкоголиков).Саму считалку с морфологической обработкой числительных можно использовать. Но как встраивать ее в "двушку" не знаю.$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;} } } Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
DerSpinner Опубликовано 18 Февраля 2008 Автор Жалоба Поделиться Опубликовано 18 Февраля 2008 а варианты под 2,3,8 имеются?=)) Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Duka Опубликовано 19 Февраля 2008 Жалоба Поделиться Опубликовано 19 Февраля 2008 2.3.8? ого Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
DerSpinner Опубликовано 19 Февраля 2008 Автор Жалоба Поделиться Опубликовано 19 Февраля 2008 упс. 2,3,* (т.е. 2,3,4 конкретно) ошибся чуток=) Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
FatCat Опубликовано 19 Февраля 2008 Жалоба Поделиться Опубликовано 19 Февраля 2008 Глянул, где надо рыться.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' )Ее, собственно, и преобразовывать по тому алгоритму, что я привел.А само слово "регистрация" на "стаж" заминить в ленг-файле будет совсем не сложно. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
SynDiK Опубликовано 3 Марта 2008 Жалоба Поделиться Опубликовано 3 Марта 2008 помогите плиз приспособить под 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; } Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
-Cross- Опубликовано 31 Августа 2008 Жалоба Поделиться Опубликовано 31 Августа 2008 Хотелось бы развёрнутой инструкции по замене даты реги на стаж...К сожаленью выше представленные куски кода мне не помогут т.к. в php я ........ Хотелось бы что бы стаж отображался только в топике, а при просмотре профиля отображалась дата регистрации... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
FatCat Опубликовано 31 Августа 2008 Жалоба Поделиться Опубликовано 31 Августа 2008 Хотелось бы развёрнутой инструкции по замене даты реги на стаж...К сожаленью выше представленные куски кода мне не помогут т.к. в 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 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
DerSpinner Опубликовано 1 Сентября 2008 Автор Жалоба Поделиться Опубликовано 1 Сентября 2008 для линейки 2.3.5 идем в forum\sources\ , ищем файло ipsclass.php там гдето на 5943 строке есть строчка $member['member_joined'] = $this->compiled_templates[ $skin_file ]->member_joined( $this->get_date( $member['joined'], 'JOINED' ) ); (и её меняем на код, который ФатКат указал выше=))) Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
FatCat Опубликовано 1 Сентября 2008 Жалоба Поделиться Опубликовано 1 Сентября 2008 Исправил ошибку кода, когда у вновьзарегистрированного в первый день выводилось "-1 лет". В своем сообщении исправил. Если кто-то уже поставил себе этот, код, добавить предпоследней строчкой: $summ_count_str = str_replace("-1 лет,","первый день",$summ_count_str); Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
DerSpinner Опубликовано 2 Сентября 2008 Автор Жалоба Поделиться Опубликовано 2 Сентября 2008 кстати да.спасибо, поправимс Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.