restrictAccess(Auth::isManager()) ->setPageTitle(WT_I18N::translate('Control panel') . ' — ' . /* I18N: A summary of the system status */ WT_I18N::translate('Dashboard')) ->pageHeader(); // Check for updates $latest_version_txt = fetch_latest_version(); if (preg_match('/^[0-9.]+\|[0-9.]+\|/', $latest_version_txt)) { list($latest_version, $earliest_version, $download_url) = explode('|', $latest_version_txt); } else { // Cannot determine the latest version $latest_version = ''; } $update_available = Auth::isAdmin() && $latest_version && version_compare(WT_VERSION, $latest_version) < 0; // Total number of users $total_users = User::count(); // Administrators $administrators = WT_DB::prepare( "SELECT SQL_CACHE user_id, real_name FROM `##user` JOIN `##user_setting` USING (user_id) WHERE setting_name='canadmin' AND setting_value=1" )->fetchAll(); // Managers $managers = WT_DB::prepare( "SELECT SQL_CACHE user_id, real_name FROM `##user` JOIN `##user_gedcom_setting` USING (user_id)" . " WHERE setting_name = 'canedit' AND setting_value='admin'" . " GROUP BY user_id, real_name" . " ORDER BY real_name" )->fetchAll(); // Moderators $moderators = WT_DB::prepare( "SELECT SQL_CACHE user_id, real_name FROM `##user` JOIN `##user_gedcom_setting` USING (user_id)" . " WHERE setting_name = 'canedit' AND setting_value='accept'" . " GROUP BY user_id, real_name" . " ORDER BY real_name" )->fetchAll(); // Number of users who have not verified their email address $unverified = WT_DB::prepare( "SELECT SQL_CACHE user_id, real_name FROM `##user` JOIN `##user_setting` USING (user_id)" . " WHERE setting_name = 'verified' AND setting_value = 0" . " ORDER BY real_name" )->fetchAll(); // Number of users whose accounts are not approved by an administrator $unapproved = WT_DB::prepare( "SELECT SQL_CACHE user_id, real_name FROM `##user` JOIN `##user_setting` USING (user_id)" . " WHERE setting_name = 'verified_by_admin' AND setting_value = 0" . " ORDER BY real_name" )->fetchAll(); // Users currently logged in $logged_in = WT_DB::prepare( "SELECT SQL_NO_CACHE DISTINCT user_id, real_name FROM `##user` JOIN `##session` USING (user_id)" . " ORDER BY real_name" )->fetchAll(); // Count of records $individuals = WT_DB::prepare( "SELECT SQL_CACHE gedcom_id, COUNT(i_id) AS count FROM `##gedcom` LEFT JOIN `##individuals` ON gedcom_id = i_file GROUP BY gedcom_id" )->fetchAssoc(); $families = WT_DB::prepare( "SELECT SQL_CACHE gedcom_id, COUNT(f_id) AS count FROM `##gedcom` LEFT JOIN `##families` ON gedcom_id = f_file GROUP BY gedcom_id" )->fetchAssoc(); $sources = WT_DB::prepare( "SELECT SQL_CACHE gedcom_id, COUNT(s_id) AS count FROM `##gedcom` LEFT JOIN `##sources` ON gedcom_id = s_file GROUP BY gedcom_id" )->fetchAssoc(); $media = WT_DB::prepare( "SELECT SQL_CACHE gedcom_id, COUNT(m_id) AS count FROM `##gedcom` LEFT JOIN `##media` ON gedcom_id = m_file GROUP BY gedcom_id" )->fetchAssoc(); $repositories = WT_DB::prepare( "SELECT SQL_CACHE gedcom_id, COUNT(o_id) AS count FROM `##gedcom` LEFT JOIN `##other` ON gedcom_id = o_file AND o_type = 'REPO' GROUP BY gedcom_id" )->fetchAssoc(); $changes = WT_DB::prepare( "SELECT SQL_CACHE g.gedcom_id, COUNT(change_id) AS count FROM `##gedcom` AS g LEFT JOIN `##change` AS c ON g.gedcom_id = c.gedcom_id AND status = 'pending' GROUP BY g.gedcom_id" )->fetchAssoc(); ?>

getPageTitle(); ?>

webtrees.net'); ?>

$user): ?> real_name); ?>
$user): ?> real_name); ?>
$user): ?> real_name); ?>
$user): ?> real_name); ?>
$user): ?> real_name); ?>
$user): ?> real_name); ?>