/** * Generate a menu for each of the different charts. * * @param Individual $individual * * @return Menu|null */ protected function menuChart(Individual $individual) { $submenus = array(); foreach (Module::getActiveCharts($this->tree) as $chart) { $menu = $chart->getChartMenu($individual); if ($menu) { $submenus[] = $menu; } } if ($submenus) { usort($submenus, function (Menu $x, Menu $y) { return I18N::strcasecmp($x->getLabel(), $y->getLabel()); }); return new Menu(I18N::translate('Charts'), '#', 'menu-chart', array('rel' => 'nofollow'), $submenus); } else { return null; } }