Определение возраста пользователя по дате рождения

1789
Решил поделиться небольшим улучшением, делал для себя, может кому-то пригодиться!

Определяем возраст пользователя по его дате рождения

""


для этого необходимо в файле components/users/frontend.php найти:
Код PHP:
  1. $usr['birthdate'] = $inCore->dateFormat($usr['birthdate']);
и добавить перед:
Код PHP:
  1. $date = $usr['birthdate'];
  2. list ($year, $month, $day) = split ('-', $date);
  3.  
  4. $fix = 1;
  5. if (date('m') > $month)
  6. $fix = 0;
  7. elseif (date('m') == $month)
  8. {
  9. if (date('d') > $day)
  10. $fix = 0;
  11. }
  12. $age = date('Y') - $year - $fix;
  13.  
  14. function plural_type($n) {
  15. return ($n%10==1 && $n%100!=11 ? 0 : ($n%10>=2 && $n%10<=4 && ($n%100<10 || $n%100>=20) ? 1 : 2));
  16. }
  17. $_plural_years = array('год', 'года', 'лет');
  18. $usr['birthdatelet'] = $age.' '.$_plural_years[plural_type($age)];
теперь в templates/_default_/components/com_users_profile.tpl находим:
Код PHP:
  1. {if $usr.showbirth && $usr.birthdate}
  2. <div class="field">
  3. <div class="title">{$LANG.BIRTH}:</div>
  4. <div class="value">{$usr.birthdate}</div>
  5. </div>
  6. {/if}
и заменяем на:
Код PHP:
  1. {if $usr.showbirth && $usr.birthdate}
  2. <div class="field">
  3. <div class="title">{$LANG.BIRTH}:</div>
  4. <div class="value">{$usr.birthdate} ({$usr.birthdatelet})</div>
  5. </div>
  6. {/if}
Благодарность

Всегда с Вами, Умные Интернет Разработки

Объединяем в профиле пользователя Статус и Последний визит | Новое поле: семейное положение (исходя от пола) для 1.10
Комментарии (18)
CyberMan 11 октября 2012 в 23:46 +1
Такой уже есть. Но плюс поставлю
Умные Интернет Разработки 11 октября 2012 в 23:49 +1
Где именно? Искал, но не нашел..
Fuze 11 октября 2012 в 23:51 +9
Код PHP:
  1. $year = floor((time() - strtotime($usr['birthdate']))/31472300);
eoleg 12 октября 2012 в 00:38 0
вот оказывается как просто все! )
eoleg 12 октября 2012 в 00:41 +1
кстати когда ставил плюс заметил что стало +7 а Голосов: 6
тоесть не обновилось количество Голосов, непорядок! ))
Amurland 12 октября 2012 в 04:46 0
да оно всегда так было ;)
Dorimen 12 октября 2012 в 17:00 0
С этим что делать исходя из предложенного автором? :)
Fuze 12 октября 2012 в 19:52 +6
С этим что делать исходя из предложенного автором? :)

--------------------------------------------------------------------
для этого необходимо в файле components/users/frontend.php найти:

Код PHP:
  1. $usr['birthdate'] = $inCore->dateFormat($usr['birthdate']);
и добавить перед:
Код PHP:
  1. $usr['age'] = floor((time() - strtotime($usr['birthdate']))/31472300);
теперь в /templates/ваш_шаблон/components/com_users_profile.tpl находим:
Код HTML:
  1. <div class="value">{$usr.birthdate}</div>
и заменяем на:
Код HTML:
  1. <div class="value">{$usr.birthdate} ({$usr.age|spellcount:'год':'года':'лет'})</div>
Dorimen 12 октября 2012 в 21:56 0
Большое спасибо.
Haronych 20 октября 2012 в 00:59 0
По данному алгоритму говорит что:

Дата рождения: 4 сентября 1978 (42)

Уж больно круто он меня состарил... Я в глубокой печали :(
Haronych 20 октября 2012 в 01:03 0
А, все... Нужно было перед строкой $usr['birthdate'] = $inCore->dateFormat($usr['birthdate']);
добавлять, а я после поставил... Уже почти расстроиться успел ) А если бы на сайте где много девушек так ошибся страшно представить что бы со мной сделали )))))))
eoleg 13 октября 2012 в 00:07 +1
Специфический хак, нужно использоваь с осторожностью так как очень многим, особенно женщинам не понравится! )
Умные Интернет Разработки 13 октября 2012 в 00:17 0
Да, можно сделать чтобы только администраторы могли просматривать возраст.
Dorimen 13 октября 2012 в 00:51 +1
если дату рождения указывают, то какая уж разница
Haronych 20 октября 2012 в 01:34 0
А как сделать чтобы возраст показывался не только в своем профиле но и в чужих тоже?
Александр 23 декабря 2012 в 09:40 +2
К сожалению на 1.10 не прокатывает...:(
MegaRostov 12 января 2013 в 13:35 0
У меня только у администратора и видно! А у пользователей нет! Почему!?
kssemenov 22 марта 2017 в 15:19 0
Подскажите, пожалуйста, а как убрать год и часы рождения (их, кстати, непонятно как настраивать), а оставить только дату и месяц? Система 1.10.7