День рождения в DLE, просто и красиво



Стандартно в DLE нету вывода дня рождения, можно конечно использовать просто дополнительное поле для этого, но тогда пользователь сможет туда написать всё что угодно и сайт это выведет. Нас этот вариант не устраивает и мы простыми способами реализуем это на сайте.

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

После всех добавлений и изменений, мы получим в профиле пользователя это

Дата рождения 07.01.1991 (27 года)


Инструкция:

1. Заходим в "Настройка профилей пользователей" и нажимаем "Добавить поле"
  • Название поле: birthday
  • Описание поля: Дата рождения (пример: XX.XX.XXXX/ДЕНЬ.МЕСЯЦ.ГОД)
  • Тип поля: одна строка
  • Добавить на страницу регистрации?: Да
  • Поле может быть изменено пользователем?: Да
  • Сделать это поле личным?: Нет
2. Создадим birthday.php, обращайте внимание на кодировку, она должна быть такая же, как и дистрибутив который вы скачивали utf-8 или windows-1251

<?php
/*
=====================================================
 Web barmen
-----------------------------------------------------
 https://viproger.ru/
-----------------------------------------------------
 © 2018 Copyright by barmen
=====================================================
 Данный код защищен авторскими правами
=====================================================
 Файл: birthday.php
-----------------------------------------------------
 Версия: 1.0
-----------------------------------------------------
 Назначение: Вывод дня рождения пользователя
=====================================================
*/
if( ! defined( 'DATALIFEENGINE' ) ) {
    die( "Hacking attempt!" );
}
preg_match( "/([0-9]{1,2})\.([0-9]{1,2}).([0-9]{1,4})/", $birthday, $match ); // находим наши цифры
$timeYear = langdate( "Y", time (), true ); // определим нынешний год
$dateD = $match[1]; // день
$dateM = $match[2]; // месяц
$dateY = $match[3]; // год
if( $dateD <= 31 AND $dateM <= 12 AND $dateY < $timeYear AND $dateY >= $timeYear-140 ) { // проверяем адекватность заполнения дня рождения
    function getAge($y, $m, $d) {
        if($m > date('m') || $m == date('m') && $d > date('d'))
            return (date('Y') - $y - 1); // если ДР в этом году не было, то ещё -1
        else
            return (date('Y') - $y); // если ДР в этом году был, то отнимаем от этого года год рождения
    }
    $getAge = getAge($dateY, $dateM, $dateD); //получаем количество лет
    function number($n, $titles) {
        $cases = array(2, 0, 1, 1, 1, 2);
        return $titles[($n % 100 > 4 && $n % 100 < 20) ? 2 : $cases[min($n % 10, 5)]];// правильно склоняем сколько нам лет или годиков :)
    }
    $getNumber = number($getAge, array('год', 'года', 'лет')); // правильно склоняем
    
    echo $dateD.".".$dateM.".".$dateY." (".$getAge." ".$getNumber.")";
} else { // если заполнили не верно, то удаляем
    echo "Ошибка! День рождения должно быть формата XX.XX.XXXX/ДЕНЬ.МЕСЯЦ.ГОД";
    $row = $db->super_query( "SELECT xfields FROM ".PREFIX."_users WHERE email = '{$memberid}'" );
    $row['xfields'] = preg_replace("#birthday\|(.+?)\|\|#is",'',$row['xfields']);
    $row['xfields'] = preg_replace("#\|\|birthday([^\]]+)#is",'',$row['xfields']);
    $row['xfields'] = preg_replace("#birthday([^\]]+)#is",'',$row['xfields']);
    $db->query( "UPDATE ".PREFIX."_users SET xfields='".$row['xfields']."' WHERE user_id = email = '".$memberid."'" );
}
?>
или вы можете скачать для своей версии DLE

У вас нет доступа для скачивания файлов с нашего сервера, пожалуйста Войдите или Зарегистрируйтесь на сайте.

У вас нет доступа для скачивания файлов с нашего сервера, пожалуйста Войдите или Зарегистрируйтесь на сайте.

открываем папку /engine/modules/ и создаем в ней еще одну под названием mymod и туда загружаем наш birthday.php. 

Добавим в /templates/Default/userinfo.tpl вывод дополнительного поля и подключение модуля
[xfgiven_birthday]<li><div class="ui-c1 grey">День рождения</div> <div class="ui-c2">{include file="engine/modules/mymod/birthday.php?birthday=[xfvalue_birthday]&memberid={editmail}"}</div></li>[/xfgiven_birthday]


Гость, оставишь комментарий?
Имя:*
E-Mail:


Внимание!

Продать свой скрипт теперь Проще

ЗДЕСЬ
Мини-чат для ВебМастеров
sonsfvdote52
sonsfvdote52
Сегодня в 10:38:43

Подскажите как скачать чтобы не слетала кодировка? https://viproger.ru/php_script/hy
ip/221-skript-haypa-caec-ltd.html
admin
admin
10 февраля 2019

sonsfvdote52, Проверте свой баланс
sonsfvdote52
sonsfvdote52
10 февраля 2019

я два раза пополнил свой баланс и всё мимо, почему?
zevuun
zevuun
21 января 2019

dle 13.1
zevuun
zevuun
21 января 2019

iChat module Пожалуйста, будьте счастливы дать вам ссылку для скачивания
zevuun
zevuun
21 января 2019

pls ichat module donwload link Admin recourse
dimas3348
dimas3348
21 января 2019

admin,
половина на сайте скриптов не рабочих
admin
admin
21 января 2019

dimas3348, есть, пишите в ЛС
dimas3348
dimas3348
20 января 2019

Есть рабочие скрипты паера удвоителя?
homatruf
homatruf
16 января 2019

хороший сайт

Только зарегистрированные посетители могут писать в чате.
Счётчики
Яндекс.Метрика Рейтинг@Mail.ru Megakassa