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_response(View $view)
 {
     $request = AppContext::get_request();
     $field = $request->get_value('field', 'date');
     $sort = $request->get_value('sort', 'desc');
     $page = $request->get_int('page', 1);
     $filter = $request->get_value('filter', '');
     $filter_id = $request->get_value('filter_id', '');
     $body_view = BugtrackerViews::build_body_view($view, 'solved');
     $response = new SiteDisplayResponse($body_view);
     $graphical_environment = $response->get_graphical_environment();
     $graphical_environment->set_page_title($this->lang['titles.solved'], $this->lang['module_title']);
     $graphical_environment->get_seo_meta_data()->set_canonical_url(BugtrackerUrlBuilder::solved($field, $sort, $page, $filter, $filter_id));
     $breadcrumb = $graphical_environment->get_breadcrumb();
     $breadcrumb->add($this->lang['module_title'], BugtrackerUrlBuilder::home());
     $breadcrumb->add($this->lang['titles.solved'], BugtrackerUrlBuilder::solved($field, $sort, $page, $filter, $filter_id));
     return $response;
 }
    private function build_versions_form($current_page, $requested_version, $filters, $filters_ids)
    {
        $search_field = $current_page == 'unsolved' ? 'detected_in' : 'fixed_in';
        if (in_array($search_field, $filters)) {
            $key = array_search($search_field, $filters);
            unset($filters[$key]);
            unset($filters_ids[$key]);
        }
        $filter = implode('-', $filters);
        $filter_id = implode('-', $filters_ids);
        $form = new HTMLForm('version-form', '', false);
        $fieldset = new FormFieldsetHorizontal('filter-version');
        $form->add_fieldset($fieldset);
        $fieldset->add_field(new FormFieldSimpleSelectChoice('filter_version', '', $requested_version, $this->build_select_versions($current_page), array('events' => array('change' => 'if (HTMLForms.getField("filter_version").getValue() > 0) {
				document.location = "' . ($current_page == 'unsolved' ? BugtrackerUrlBuilder::unsolved('name', 'desc', 1, (!empty($filter) ? $filter . '-' : '') . 'fixed_in', !empty($filter_id) ? $filter_id . '-' : '')->rel() : BugtrackerUrlBuilder::solved('name', 'desc', 1, (!empty($filter) ? $filter . '-' : '') . 'fixed_in', !empty($filter_id) ? $filter_id . '-' : '')->rel()) . '" + HTMLForms.getField("filter_version").getValue();
			} else {
				document.location = "' . ($current_page == 'unsolved' ? BugtrackerUrlBuilder::unsolved('name', 'desc', 1, $filter, $filter_id)->rel() : BugtrackerUrlBuilder::solved('name', 'desc', 1, $filter, $filter_id)->rel()) . '";
			}'))));
        return $form;
    }