Forums
The great place to discuss topics with other users
Today and Upcoming Birthdays
'
Join the Conversation
Post Reply
class-user.php
public function get_todays_birthdays() { global $db; $today_md = date('m-d'); $query = sprintf( "SELECT user_id, user_name, user_picture, user_birthdate FROM users WHERE DATE_FORMAT(user_birthdate, '%%m-%%d') = '%s'", $db->real_escape_string($today_md) ); $result = $db->query($query) or _error(__LINE__, __FILE__); $birthdays = []; $today = new DateTime(); while ($user = $result->fetch_assoc()) { // Calculate age $birthDate = new DateTime($user['user_birthdate']); $user['age'] = $birthDate->diff($today)->y; // Optionally mark milestone here if you want (but better to do in Smarty) // e.g. $user['milestone'] = in_array($user['age'], [18, 21, 30, 40, 50, 60]); $birthdays[] = $user; } return $birthdays; } /* Zi de nastere 7 zile */ public function get_upcoming_birthdays_grouped() { global $db; $today = new DateTime(); $dates_map = []; // Build upcoming dates map for ($i = 1; $i <= 7; $i++) { $next_day = clone $today; $next_day->modify("+$i day"); $md = $next_day->format('m-d'); $dates_map[$md] = $next_day->format('Y-m-d'); // key = md, value = actual date } $md_list_sql = "'" . implode("','", array_keys($dates_map)) . "'"; $query = sprintf( "SELECT user_id, user_firstname, user_lastname, user_name, user_picture, user_birthdate, DATE_FORMAT(user_birthdate, '%%m-%%d') AS bday_md FROM users WHERE DATE_FORMAT(user_birthdate, '%%m-%%d') IN (%s)", $md_list_sql ); $result = $db->query($query) or _error(__LINE__, __FILE__); $birthdays_by_date = []; while ($user = $result->fetch_assoc()) { $md = $user['bday_md']; $upcoming_date = $dates_map[$md]; // Calculate age $birthDate = new DateTime($user['user_birthdate']); $user['age'] = $birthDate->diff($today)->y; $user['upcoming_date'] = $upcoming_date; // Add user to their upcoming date group $birthdays_by_date[$upcoming_date][] = $user; } // Sort the grouped array by date ksort($birthdays_by_date); return $birthdays_by_date; }birthday.php
// Today's and Upcoming Birthdays $todays_birthdays = $user->get_todays_birthdays(); $smarty->assign('todays_birthdays', $todays_birthdays); $upcoming_birthdays_grouped = $user->get_upcoming_birthdays_grouped(); $smarty->assign('upcoming_birthdays_grouped', $upcoming_birthdays_grouped);birthday.tpl
<div class="card mb10 mt-5"> <div class="card-header">🎉 {__("Today's Birthdays")}</div> <ul class="list-group list-group-flush"> {if $todays_birthdays|@count > 0} {foreach $todays_birthdays as $user} <li class="list-group-item"> {if $user['user_picture'] == NULL} <img src="{$system['system_url']}/content/themes/aizen/images/blank_profile_male.png" class="rounded-circle mr10" width="32" height="32"> {else} <img src="{$system['system_url']}/content/uploads/{$user.user_picture}" class="rounded-circle mr10" width="32" height="32"> {/if} <a href="{$system.system_url}/{$user.user_name}"> {$user.user_name} </a> <span class="float-right text-danger"> ({$user.age} {__("years")}) </span> </li> {/foreach} {else} <li class="list-group-item text-center text-muted"> {__("No birthdays today")} 🎈 </li> {/if} </ul> </div> {if $upcoming_birthdays_grouped|@count > 0} <div class="card mb-3 mt-3"> <ul class="list-group list-group-flush"> {foreach $upcoming_birthdays_grouped as $date => $users} <li class="list-group-item bg-light font-weight-bold"> {$date|date_format:"%e %B"} </li> {foreach $users as $user} <li class="list-group-item"> {if $user['user_picture'] == NULL} <img src="{$system['system_url']}/content/themes/aizen/images/blank_profile_male.png" class="rounded-circle mr10" width="32" height="32">{else} <img src="{$system['system_url']}/content/uploads/{$user.user_picture}" class="rounded-circle mr10" width="32" height="32">{/if} <a href="{$system['system_url']}/{$user.user_name}"> {$user.user_name} </a> <span class="float-right text-danger"> ({$user.age} {__("years")}) </span> </li> {/foreach} {/foreach} </ul> </div> {else} <div class="card mb-3 mt-3"> <div class="card-body text-center text-muted"> {__("No upcoming birthdays")} 🎂 </div> </div> {/if}class-user.php
public function get_todays_birthdays() { global $db; $today_md = date('m-d'); $query = sprintf( "SELECT user_id, user_name, user_picture, user_birthdate FROM users WHERE DATE_FORMAT(user_birthdate, '%%m-%%d') = '%s'", $db->real_escape_string($today_md) ); $result = $db->query($query) or _error(__LINE__, __FILE__); $birthdays = []; $today = new DateTime(); while ($user = $result->fetch_assoc()) { // Calculate age $birthDate = new DateTime($user['user_birthdate']); $user['age'] = $birthDate->diff($today)->y; // Optionally mark milestone here if you want (but better to do in Smarty) // e.g. $user['milestone'] = in_array($user['age'], [18, 21, 30, 40, 50, 60]); $birthdays[] = $user; } return $birthdays; } /* Zi de nastere 7 zile */ public function get_upcoming_birthdays_grouped() { global $db; $today = new DateTime(); $dates_map = []; // Build upcoming dates map for ($i = 1; $i <= 7; $i++) { $next_day = clone $today; $next_day->modify("+$i day"); $md = $next_day->format('m-d'); $dates_map[$md] = $next_day->format('Y-m-d'); // key = md, value = actual date } $md_list_sql = "'" . implode("','", array_keys($dates_map)) . "'"; $query = sprintf( "SELECT user_id, user_firstname, user_lastname, user_name, user_picture, user_birthdate, DATE_FORMAT(user_birthdate, '%%m-%%d') AS bday_md FROM users WHERE DATE_FORMAT(user_birthdate, '%%m-%%d') IN (%s)", $md_list_sql ); $result = $db->query($query) or _error(__LINE__, __FILE__); $birthdays_by_date = []; while ($user = $result->fetch_assoc()) { $md = $user['bday_md']; $upcoming_date = $dates_map[$md]; // Calculate age $birthDate = new DateTime($user['user_birthdate']); $user['age'] = $birthDate->diff($today)->y; $user['upcoming_date'] = $upcoming_date; // Add user to their upcoming date group $birthdays_by_date[$upcoming_date][] = $user; } // Sort the grouped array by date ksort($birthdays_by_date); return $birthdays_by_date; }birthday.php
// Today's and Upcoming Birthdays $todays_birthdays = $user->get_todays_birthdays(); $smarty->assign('todays_birthdays', $todays_birthdays); $upcoming_birthdays_grouped = $user->get_upcoming_birthdays_grouped(); $smarty->assign('upcoming_birthdays_grouped', $upcoming_birthdays_grouped);birthday.tpl
<div class="card mb10 mt-5"> <div class="card-header">🎉 {__("Today's Birthdays")}</div> <ul class="list-group list-group-flush"> {if $todays_birthdays|@count > 0} {foreach $todays_birthdays as $user} <li class="list-group-item"> {if $user['user_picture'] == NULL} <img src="{$system['system_url']}/content/themes/aizen/images/blank_profile_male.png" class="rounded-circle mr10" width="32" height="32"> {else} <img src="{$system['system_url']}/content/uploads/{$user.user_picture}" class="rounded-circle mr10" width="32" height="32"> {/if} <a href="{$system.system_url}/{$user.user_name}"> {$user.user_name} </a> <span class="float-right text-danger"> ({$user.age} {__("years")}) </span> </li> {/foreach} {else} <li class="list-group-item text-center text-muted"> {__("No birthdays today")} 🎈 </li> {/if} </ul> </div> {if $upcoming_birthdays_grouped|@count > 0} <div class="card mb-3 mt-3"> <ul class="list-group list-group-flush"> {foreach $upcoming_birthdays_grouped as $date => $users} <li class="list-group-item bg-light font-weight-bold"> {$date|date_format:"%e %B"} </li> {foreach $users as $user} <li class="list-group-item"> {if $user['user_picture'] == NULL} <img src="{$system['system_url']}/content/themes/aizen/images/blank_profile_male.png" class="rounded-circle mr10" width="32" height="32">{else} <img src="{$system['system_url']}/content/uploads/{$user.user_picture}" class="rounded-circle mr10" width="32" height="32">{/if} <a href="{$system['system_url']}/{$user.user_name}"> {$user.user_name} </a> <span class="float-right text-danger"> ({$user.age} {__("years")}) </span> </li> {/foreach} {/foreach} </ul> </div> {else} <div class="card mb-3 mt-3"> <div class="card-body text-center text-muted"> {__("No upcoming birthdays")} 🎂 </div> </div> {/if}class-user.php
public function get_todays_birthdays() { global $db; $today_md = date('m-d'); $query = sprintf( "SELECT user_id, user_name, user_picture, user_birthdate FROM users WHERE DATE_FORMAT(user_birthdate, '%%m-%%d') = '%s'", $db->real_escape_string($today_md) ); $result = $db->query($query) or _error(__LINE__, __FILE__); $birthdays = []; $today = new DateTime(); while ($user = $result->fetch_assoc()) { // Calculate age $birthDate = new DateTime($user['user_birthdate']); $user['age'] = $birthDate->diff($today)->y; // Optionally mark milestone here if you want (but better to do in Smarty) // e.g. $user['milestone'] = in_array($user['age'], [18, 21, 30, 40, 50, 60]); $birthdays[] = $user; } return $birthdays; } /* Zi de nastere 7 zile */ public function get_upcoming_birthdays_grouped() { global $db; $today = new DateTime(); $dates_map = []; // Build upcoming dates map for ($i = 1; $i <= 7; $i++) { $next_day = clone $today; $next_day->modify("+$i day"); $md = $next_day->format('m-d'); $dates_map[$md] = $next_day->format('Y-m-d'); // key = md, value = actual date } $md_list_sql = "'" . implode("','", array_keys($dates_map)) . "'"; $query = sprintf( "SELECT user_id, user_firstname, user_lastname, user_name, user_picture, user_birthdate, DATE_FORMAT(user_birthdate, '%%m-%%d') AS bday_md FROM users WHERE DATE_FORMAT(user_birthdate, '%%m-%%d') IN (%s)", $md_list_sql ); $result = $db->query($query) or _error(__LINE__, __FILE__); $birthdays_by_date = []; while ($user = $result->fetch_assoc()) { $md = $user['bday_md']; $upcoming_date = $dates_map[$md]; // Calculate age $birthDate = new DateTime($user['user_birthdate']); $user['age'] = $birthDate->diff($today)->y; $user['upcoming_date'] = $upcoming_date; // Add user to their upcoming date group $birthdays_by_date[$upcoming_date][] = $user; } // Sort the grouped array by date ksort($birthdays_by_date); return $birthdays_by_date; }birthday.php
// Today's and Upcoming Birthdays $todays_birthdays = $user->get_todays_birthdays(); $smarty->assign('todays_birthdays', $todays_birthdays); $upcoming_birthdays_grouped = $user->get_upcoming_birthdays_grouped(); $smarty->assign('upcoming_birthdays_grouped', $upcoming_birthdays_grouped);birthday.tpl
<div class="card mb10 mt-5"> <div class="card-header">🎉 {__("Today's Birthdays")}</div> <ul class="list-group list-group-flush"> {if $todays_birthdays|@count > 0} {foreach $todays_birthdays as $user} <li class="list-group-item"> {if $user['user_picture'] == NULL} <img src="{$system['system_url']}/content/themes/aizen/images/blank_profile_male.png" class="rounded-circle mr10" width="32" height="32"> {else} <img src="{$system['system_url']}/content/uploads/{$user.user_picture}" class="rounded-circle mr10" width="32" height="32"> {/if} <a href="{$system.system_url}/{$user.user_name}"> {$user.user_name} </a> <span class="float-right text-danger"> ({$user.age} {__("years")}) </span> </li> {/foreach} {else} <li class="list-group-item text-center text-muted"> {__("No birthdays today")} 🎈 </li> {/if} </ul> </div> {if $upcoming_birthdays_grouped|@count > 0} <div class="card mb-3 mt-3"> <ul class="list-group list-group-flush"> {foreach $upcoming_birthdays_grouped as $date => $users} <li class="list-group-item bg-light font-weight-bold"> {$date|date_format:"%e %B"} </li> {foreach $users as $user} <li class="list-group-item"> {if $user['user_picture'] == NULL} <img src="{$system['system_url']}/content/themes/aizen/images/blank_profile_male.png" class="rounded-circle mr10" width="32" height="32">{else} <img src="{$system['system_url']}/content/uploads/{$user.user_picture}" class="rounded-circle mr10" width="32" height="32">{/if} <a href="{$system['system_url']}/{$user.user_name}"> {$user.user_name} </a> <span class="float-right text-danger"> ({$user.age} {__("years")}) </span> </li> {/foreach} {/foreach} </ul> </div> {else} <div class="card mb-3 mt-3"> <div class="card-body text-center text-muted"> {__("No upcoming birthdays")} 🎂 </div> </div> {/if}class-user.php
public function get_todays_birthdays() { global $db; $today_md = date('m-d'); $query = sprintf( "SELECT user_id, user_name, user_picture, user_birthdate FROM users WHERE DATE_FORMAT(user_birthdate, '%%m-%%d') = '%s'", $db->real_escape_string($today_md) ); $result = $db->query($query) or _error(__LINE__, __FILE__); $birthdays = []; $today = new DateTime(); while ($user = $result->fetch_assoc()) { // Calculate age $birthDate = new DateTime($user['user_birthdate']); $user['age'] = $birthDate->diff($today)->y; // Optionally mark milestone here if you want (but better to do in Smarty) // e.g. $user['milestone'] = in_array($user['age'], [18, 21, 30, 40, 50, 60]); $birthdays[] = $user; } return $birthdays; } /* Zi de nastere 7 zile */ public function get_upcoming_birthdays_grouped() { global $db; $today = new DateTime(); $dates_map = []; // Build upcoming dates map for ($i = 1; $i <= 7; $i++) { $next_day = clone $today; $next_day->modify("+$i day"); $md = $next_day->format('m-d'); $dates_map[$md] = $next_day->format('Y-m-d'); // key = md, value = actual date } $md_list_sql = "'" . implode("','", array_keys($dates_map)) . "'"; $query = sprintf( "SELECT user_id, user_firstname, user_lastname, user_name, user_picture, user_birthdate, DATE_FORMAT(user_birthdate, '%%m-%%d') AS bday_md FROM users WHERE DATE_FORMAT(user_birthdate, '%%m-%%d') IN (%s)", $md_list_sql ); $result = $db->query($query) or _error(__LINE__, __FILE__); $birthdays_by_date = []; while ($user = $result->fetch_assoc()) { $md = $user['bday_md']; $upcoming_date = $dates_map[$md]; // Calculate age $birthDate = new DateTime($user['user_birthdate']); $user['age'] = $birthDate->diff($today)->y; $user['upcoming_date'] = $upcoming_date; // Add user to their upcoming date group $birthdays_by_date[$upcoming_date][] = $user; } // Sort the grouped array by date ksort($birthdays_by_date); return $birthdays_by_date; }birthday.php
// Today's and Upcoming Birthdays $todays_birthdays = $user->get_todays_birthdays(); $smarty->assign('todays_birthdays', $todays_birthdays); $upcoming_birthdays_grouped = $user->get_upcoming_birthdays_grouped(); $smarty->assign('upcoming_birthdays_grouped', $upcoming_birthdays_grouped);birthday.tpl
<div class="card mb10 mt-5"> <div class="card-header">🎉 {__("Today's Birthdays")}</div> <ul class="list-group list-group-flush"> {if $todays_birthdays|@count > 0} {foreach $todays_birthdays as $user} <li class="list-group-item"> {if $user['user_picture'] == NULL} <img src="{$system['system_url']}/content/themes/aizen/images/blank_profile_male.png" class="rounded-circle mr10" width="32" height="32"> {else} <img src="{$system['system_url']}/content/uploads/{$user.user_picture}" class="rounded-circle mr10" width="32" height="32"> {/if} <a href="{$system.system_url}/{$user.user_name}"> {$user.user_name} </a> <span class="float-right text-danger"> ({$user.age} {__("years")}) </span> </li> {/foreach} {else} <li class="list-group-item text-center text-muted"> {__("No birthdays today")} 🎈 </li> {/if} </ul> </div> {if $upcoming_birthdays_grouped|@count > 0} <div class="card mb-3 mt-3"> <ul class="list-group list-group-flush"> {foreach $upcoming_birthdays_grouped as $date => $users} <li class="list-group-item bg-light font-weight-bold"> {$date|date_format:"%e %B"} </li> {foreach $users as $user} <li class="list-group-item"> {if $user['user_picture'] == NULL} <img src="{$system['system_url']}/content/themes/aizen/images/blank_profile_male.png" class="rounded-circle mr10" width="32" height="32">{else} <img src="{$system['system_url']}/content/uploads/{$user.user_picture}" class="rounded-circle mr10" width="32" height="32">{/if} <a href="{$system['system_url']}/{$user.user_name}"> {$user.user_name} </a> <span class="float-right text-danger"> ({$user.age} {__("years")}) </span> </li> {/foreach} {/foreach} </ul> </div> {else} <div class="card mb-3 mt-3"> <div class="card-body text-center text-muted"> {__("No upcoming birthdays")} 🎂 </div> </div> {/if}class-user.php
public function get_todays_birthdays() { global $db; $today_md = date('m-d'); $query = sprintf( "SELECT user_id, user_name, user_picture, user_birthdate FROM users WHERE DATE_FORMAT(user_birthdate, '%%m-%%d') = '%s'", $db->real_escape_string($today_md) ); $result = $db->query($query) or _error(__LINE__, __FILE__); $birthdays = []; $today = new DateTime(); while ($user = $result->fetch_assoc()) { // Calculate age $birthDate = new DateTime($user['user_birthdate']); $user['age'] = $birthDate->diff($today)->y; // Optionally mark milestone here if you want (but better to do in Smarty) // e.g. $user['milestone'] = in_array($user['age'], [18, 21, 30, 40, 50, 60]); $birthdays[] = $user; } return $birthdays; } /* Zi de nastere 7 zile */ public function get_upcoming_birthdays_grouped() { global $db; $today = new DateTime(); $dates_map = []; // Build upcoming dates map for ($i = 1; $i <= 7; $i++) { $next_day = clone $today; $next_day->modify("+$i day"); $md = $next_day->format('m-d'); $dates_map[$md] = $next_day->format('Y-m-d'); // key = md, value = actual date } $md_list_sql = "'" . implode("','", array_keys($dates_map)) . "'"; $query = sprintf( "SELECT user_id, user_firstname, user_lastname, user_name, user_picture, user_birthdate, DATE_FORMAT(user_birthdate, '%%m-%%d') AS bday_md FROM users WHERE DATE_FORMAT(user_birthdate, '%%m-%%d') IN (%s)", $md_list_sql ); $result = $db->query($query) or _error(__LINE__, __FILE__); $birthdays_by_date = []; while ($user = $result->fetch_assoc()) { $md = $user['bday_md']; $upcoming_date = $dates_map[$md]; // Calculate age $birthDate = new DateTime($user['user_birthdate']); $user['age'] = $birthDate->diff($today)->y; $user['upcoming_date'] = $upcoming_date; // Add user to their upcoming date group $birthdays_by_date[$upcoming_date][] = $user; } // Sort the grouped array by date ksort($birthdays_by_date); return $birthdays_by_date; }birthday.php
// Today's and Upcoming Birthdays $todays_birthdays = $user->get_todays_birthdays(); $smarty->assign('todays_birthdays', $todays_birthdays); $upcoming_birthdays_grouped = $user->get_upcoming_birthdays_grouped(); $smarty->assign('upcoming_birthdays_grouped', $upcoming_birthdays_grouped);birthday.tpl
<div class="card mb10 mt-5"> <div class="card-header">🎉 {__("Today's Birthdays")}</div> <ul class="list-group list-group-flush"> {if $todays_birthdays|@count > 0} {foreach $todays_birthdays as $user} <li class="list-group-item"> {if $user['user_picture'] == NULL} <img src="{$system['system_url']}/content/themes/aizen/images/blank_profile_male.png" class="rounded-circle mr10" width="32" height="32"> {else} <img src="{$system['system_url']}/content/uploads/{$user.user_picture}" class="rounded-circle mr10" width="32" height="32"> {/if} <a href="{$system.system_url}/{$user.user_name}"> {$user.user_name} </a> <span class="float-right text-danger"> ({$user.age} {__("years")}) </span> </li> {/foreach} {else} <li class="list-group-item text-center text-muted"> {__("No birthdays today")} 🎈 </li> {/if} </ul> </div> {if $upcoming_birthdays_grouped|@count > 0} <div class="card mb-3 mt-3"> <ul class="list-group list-group-flush"> {foreach $upcoming_birthdays_grouped as $date => $users} <li class="list-group-item bg-light font-weight-bold"> {$date|date_format:"%e %B"} </li> {foreach $users as $user} <li class="list-group-item"> {if $user['user_picture'] == NULL} <img src="{$system['system_url']}/content/themes/aizen/images/blank_profile_male.png" class="rounded-circle mr10" width="32" height="32">{else} <img src="{$system['system_url']}/content/uploads/{$user.user_picture}" class="rounded-circle mr10" width="32" height="32">{/if} <a href="{$system['system_url']}/{$user.user_name}"> {$user.user_name} </a> <span class="float-right text-danger"> ({$user.age} {__("years")}) </span> </li> {/foreach} {/foreach} </ul> </div> {else} <div class="card mb-3 mt-3"> <div class="card-body text-center text-muted"> {__("No upcoming birthdays")} 🎂 </div> </div> {/if}