private function get_module_map($auth_mode) { $lang = LangLoader::get('common', 'bugtracker'); $config = BugtrackerConfig::load(); $current_user = AppContext::get_current_user(); $link = new SitemapLink($lang['module_title'], BugtrackerUrlBuilder::home(), Sitemap::FREQ_DEFAULT, Sitemap::PRIORITY_MAX); $module_map = new ModuleMap($link, 'bugtracker'); if ($auth_mode == Sitemap::AUTH_PUBLIC) { $this_auth = Authorizations::check_auth(RANK_TYPE, User::VISITOR_LEVEL, $config->get_authorizations(), BugtrackerAuthorizationsService::READ_AUTHORIZATIONS); } else { if ($auth_mode == Sitemap::AUTH_USER) { if ($current_user->get_level() == User::ADMIN_LEVEL) { $this_auth = true; } else { $this_auth = Authorizations::check_auth(RANK_TYPE, $current_user->get_level(), $config->get_authorizations(), BugtrackerAuthorizationsService::READ_AUTHORIZATIONS); } } } if ($this_auth) { $module_map->add(new SitemapLink($lang['titles.unsolved'], BugtrackerUrlBuilder::unsolved())); $module_map->add(new SitemapLink($lang['titles.solved'], BugtrackerUrlBuilder::solved())); if ($config->is_roadmap_enabled() && $config->get_versions()) { $module_map->add(new SitemapLink($lang['titles.roadmap'], BugtrackerUrlBuilder::roadmap())); } $module_map->add(new SitemapLink($lang['titles.stats'], BugtrackerUrlBuilder::stats())); } return $module_map; }
private function build_view($request) { $config = BugtrackerConfig::load(); $versions = $config->get_versions(); $display_versions = count($versions); $stats_cache = BugtrackerStatsCache::load(); $bugs_number_per_version = $stats_cache->get_bugs_number_per_version_list(); $top_posters = $stats_cache->get_top_posters_list(); $this->view->put_all(array('C_BUGS' => $stats_cache->get_bugs_number('total'), 'C_FIXED_BUGS' => !empty($bugs_number_per_version), 'C_POSTERS' => !empty($top_posters), 'C_DISPLAY_VERSIONS' => $display_versions, 'C_DISPLAY_TOP_POSTERS' => $config->are_stats_top_posters_enabled(), 'C_ROADMAP_ENABLED' => $config->is_roadmap_enabled())); foreach ($stats_cache->get_bugs_number_list() as $status => $bugs_number) { if ($status != 'total') { $this->view->assign_block_vars('status', array('NAME' => $this->lang['status.' . $status], 'NUMBER' => $bugs_number)); } } foreach ($bugs_number_per_version as $version_id => $bugs_number) { $release_date = !empty($versions[$version_id]['release_date']) && is_numeric($versions[$version_id]['release_date']) ? new Date($versions[$version_id]['release_date'], Timezone::SERVER_TIMEZONE) : null; $this->view->assign_block_vars('fixed_version', array('NAME' => stripslashes($versions[$version_id]['name']), 'RELEASE_DATE' => !empty($release_date) ? $release_date->format(Date::FORMAT_DAY_MONTH_YEAR) : $this->lang['notice.not_defined_e_date'], 'LINK_VERSION_ROADMAP' => BugtrackerUrlBuilder::roadmap($version_id, Url::encode_rewrite($versions[$version_id]['name']))->rel(), 'NUMBER' => $bugs_number['all'])); } foreach ($top_posters as $id => $poster) { if (isset($poster['user'])) { $author_group_color = User::get_group_color($poster['user']->get_groups(), $poster['user']->get_level(), true); $this->view->assign_block_vars('top_poster', array('C_AUTHOR_GROUP_COLOR' => !empty($author_group_color), 'ID' => $id, 'AUTHOR' => $poster['user']->get_display_name(), 'AUTHOR_LEVEL_CLASS' => UserService::get_level_class($poster['user']->get_level()), 'AUTHOR_GROUP_COLOR' => $author_group_color, 'LINK_AUTHOR_PROFILE' => UserUrlBuilder::profile($poster['user']->get_id())->rel(), 'USER_BUGS' => $poster['bugs_number'])); } } return $this->view; }
private function build_response(View $view) { $versions = array_reverse($this->config->get_versions(), true); $request = AppContext::get_request(); $roadmap_id_version = $request->get_value('id_version', key($versions)); $roadmap_version = $request->get_value('version', Url::encode_rewrite($versions[key($versions)]['name'])); $roadmap_status = $request->get_value('status', 'all'); $field = $request->get_value('field', 'date'); $sort = $request->get_value('sort', 'desc'); $page = $request->get_int('page', 1); $body_view = BugtrackerViews::build_body_view($view, 'roadmap'); $response = new SiteDisplayResponse($body_view); $graphical_environment = $response->get_graphical_environment(); $graphical_environment->set_page_title($this->lang['titles.roadmap'], $this->lang['module_title']); $graphical_environment->get_seo_meta_data()->set_canonical_url(BugtrackerUrlBuilder::roadmap($roadmap_id_version, $roadmap_version, $roadmap_status, $field, $sort, $page)); $breadcrumb = $graphical_environment->get_breadcrumb(); $breadcrumb->add($this->lang['module_title'], BugtrackerUrlBuilder::home()); $breadcrumb->add($this->lang['titles.roadmap'], BugtrackerUrlBuilder::roadmap($roadmap_id_version, $roadmap_version, $roadmap_status, $field, $sort, $page)); return $response; }