private function build_view($request) { //Configuration load $config = BugtrackerConfig::load(); $types = $config->get_types(); $categories = $config->get_categories(); $severities = $config->get_severities(); $priorities = $config->get_priorities(); $versions = $config->get_versions_detected(); $user_assigned = $this->bug->get_assigned_to_id() && UserService::user_exists("WHERE user_id=:user_id", array('user_id' => $this->bug->get_assigned_to_id())) ? UserService::get_user($this->bug->get_assigned_to_id()) : ''; $user_assigned_group_color = $user_assigned ? User::get_group_color($user_assigned->get_groups(), $user_assigned->get_level(), true) : ''; $this->view->put_all($this->bug->get_array_tpl_vars()); $this->view->put_all(array('C_TYPES' => $types, 'C_CATEGORIES' => $categories, 'C_SEVERITIES' => $severities, 'C_PRIORITIES' => $priorities, 'C_VERSIONS' => $versions, 'C_EDIT_BUG' => BugtrackerAuthorizationsService::check_authorizations()->moderation() || $this->current_user->get_id() == $this->bug->get_assigned_to_id() || $this->current_user->get_id() == $this->bug->get_author_user()->get_id() && $this->bug->get_author_user()->get_id() != User::VISITOR_LEVEL, 'C_DELETE_BUG' => BugtrackerAuthorizationsService::check_authorizations()->moderation(), 'C_CHANGE_STATUS' => BugtrackerAuthorizationsService::check_authorizations()->moderation() || $this->current_user->get_id() == $this->bug->get_assigned_to_id(), 'C_USER_ASSIGNED_GROUP_COLOR' => !empty($user_assigned_group_color), 'C_USER_ASSIGNED' => $user_assigned, 'USER_ASSIGNED' => $user_assigned ? $user_assigned->get_display_name() : '', 'USER_ASSIGNED_LEVEL_CLASS' => $user_assigned ? UserService::get_level_class($user_assigned->get_level()) : '', 'USER_ASSIGNED_GROUP_COLOR' => $user_assigned_group_color, 'U_CHANGE_STATUS' => BugtrackerUrlBuilder::change_status($this->bug->get_id())->rel(), 'U_EDIT' => BugtrackerUrlBuilder::edit($this->bug->get_id(), 'detail')->rel(), 'U_DELETE' => BugtrackerUrlBuilder::delete($this->bug->get_id(), 'unsolved')->rel())); $comments_topic = new BugtrackerCommentsTopic(); $comments_topic->set_id_in_module($this->bug->get_id()); $comments_topic->set_url(BugtrackerUrlBuilder::detail_comments($this->bug->get_id() . '-' . $this->bug->get_rewrited_title())); $this->view->put('COMMENTS', $comments_topic->display()); }
private function generate_response(View $tpl) { $bug = $this->get_bug(); if ($bug->get_id() === null) { $body_view = BugtrackerViews::build_body_view($tpl, 'add'); $response = new SiteDisplayResponse($body_view); $graphical_environment = $response->get_graphical_environment(); $graphical_environment->set_page_title($this->lang['titles.add'], $this->lang['module_title']); $graphical_environment->get_seo_meta_data()->set_canonical_url(BugtrackerUrlBuilder::add()); $breadcrumb = $graphical_environment->get_breadcrumb(); $breadcrumb->add($this->lang['module_title'], BugtrackerUrlBuilder::home()); $breadcrumb->add($this->lang['titles.add'], BugtrackerUrlBuilder::add()); } else { $body_view = BugtrackerViews::build_body_view($tpl, 'edit', $bug->get_id()); $response = new SiteDisplayResponse($body_view); $graphical_environment = $response->get_graphical_environment(); $graphical_environment->set_page_title($this->lang['titles.edit'] . ' #' . $bug->get_id(), $this->lang['module_title']); $graphical_environment->get_seo_meta_data()->set_canonical_url(BugtrackerUrlBuilder::edit($bug->get_id())); $breadcrumb = $graphical_environment->get_breadcrumb(); $breadcrumb->add($this->lang['module_title'], BugtrackerUrlBuilder::home()); $breadcrumb->add($this->lang['titles.edit'] . ' #' . $bug->get_id(), BugtrackerUrlBuilder::edit($bug->get_id())); } return $response; }
private function build_view($request) { //Configuration load $config = BugtrackerConfig::load(); $severities = $config->get_severities(); $field = $request->get_value('field', 'date'); $sort = $request->get_value('sort', 'desc'); $current_page = $request->get_getint('page', 1); $filter = $request->get_value('filter', ''); $filter_id = $request->get_value('filter_id', ''); if (!empty($filter) && empty($filter_id)) { $filter = $filter_id = ''; } $filters = !empty($filter) ? explode('-', $filter) : array(); $nb_filters = count($filters); $filters_ids = !empty($filter_id) ? explode('-', $filter_id) : array(); $nb_filters_ids = count($filters_ids); if ($nb_filters != $nb_filters_ids) { for ($i = $nb_filters_ids; $i < $nb_filters; $i++) { $filters_ids[] = 0; } } $mode = $sort == 'top' ? 'ASC' : 'DESC'; switch ($field) { case 'id': $field_bdd = 'id'; break; case 'title': $field_bdd = 'title'; break; case 'status': $field_bdd = 'status'; break; default: $field_bdd = 'submit_date'; break; } $select_filters = ''; foreach ($filters as $key => $f) { $select_filters .= in_array($f, array('type', 'category', 'severity', 'status', 'detected_in')) && $filters_ids[$key] ? "AND " . $f . " = '" . $filters_ids[$key] . "'" : ''; } $stats_cache = BugtrackerStatsCache::load(); $bugs_number = BugtrackerService::count("WHERE status <> '" . Bug::FIXED . "' AND status <> '" . Bug::REJECTED . "'" . $select_filters); $pagination = $this->get_pagination($bugs_number, $current_page, $field, $sort, $filter, $filter_id); $result = PersistenceContext::get_querier()->select("SELECT b.*, member.*\n\t\tFROM " . BugtrackerSetup::$bugtracker_table . " b\n\t\tLEFT JOIN " . DB_TABLE_MEMBER . " member ON member.user_id = b.author_id\n\t\tWHERE status <> '" . Bug::FIXED . "' AND status <> '" . Bug::REJECTED . "'" . $select_filters . "\n\t\tORDER BY " . $field_bdd . " " . $mode . "\n\t\tLIMIT :number_items_per_page OFFSET :display_from", array('number_items_per_page' => $pagination->get_number_items_per_page(), 'display_from' => $pagination->get_display_from())); $displayed_severities = array(); while ($row = $result->fetch()) { $bug = new Bug(); $bug->set_properties($row); if (!in_array($bug->get_severity(), $displayed_severities)) { $displayed_severities[] = $bug->get_severity(); } $this->view->assign_block_vars('bug', array_merge($bug->get_array_tpl_vars(), array('C_LINE_COLOR' => $bug->get_severity() && isset($severities[$bug->get_severity()]), 'LINE_COLOR' => stripslashes($severities[$bug->get_severity()]['color']), 'U_CHANGE_STATUS' => BugtrackerUrlBuilder::change_status($bug->get_id())->rel(), 'U_EDIT' => BugtrackerUrlBuilder::edit($bug->get_id(), 'unsolved', $current_page, $filter, $filter_id)->rel(), 'U_DELETE' => BugtrackerUrlBuilder::delete($bug->get_id(), 'unsolved', $current_page, $filter, $filter_id)->rel()))); } $result->dispose(); $bugs_colspan = BugtrackerAuthorizationsService::check_authorizations()->moderation() ? 5 : 4; if ($config->is_type_column_displayed()) { $bugs_colspan++; } if ($config->is_category_column_displayed()) { $bugs_colspan++; } if ($config->is_priority_column_displayed()) { $bugs_colspan++; } if ($config->is_detected_in_column_displayed()) { $bugs_colspan++; } $this->view->put_all(array('C_IS_ADMIN' => BugtrackerAuthorizationsService::check_authorizations()->moderation(), 'C_UNSOLVED' => true, 'C_BUGS' => $result->get_rows_count() > 0, 'C_DISPLAY_AUTHOR' => true, 'C_DISPLAY_TYPE_COLUMN' => $config->is_type_column_displayed(), 'C_DISPLAY_CATEGORY_COLUMN' => $config->is_category_column_displayed(), 'C_DISPLAY_PRIORITY_COLUMN' => $config->is_priority_column_displayed(), 'C_DISPLAY_DETECTED_IN_COLUMN' => $config->is_detected_in_column_displayed(), 'C_PAGINATION' => $pagination->has_several_pages(), 'PAGINATION' => $pagination->display(), 'BUGS_COLSPAN' => $bugs_colspan, 'L_NO_BUG' => empty($filters) ? $this->lang['notice.no_bug'] : (count($filters) > 1 ? $this->lang['notice.no_bug_matching_filters'] : $this->lang['notice.no_bug_matching_filter']), 'FILTER_LIST' => BugtrackerViews::build_filters('unsolved', $bugs_number), 'LEGEND' => BugtrackerViews::build_legend($displayed_severities, 'unsolved'), 'LINK_BUG_ID_TOP' => BugtrackerUrlBuilder::unsolved('id', 'top', $current_page, $filter, $filter_id)->rel(), 'LINK_BUG_ID_BOTTOM' => BugtrackerUrlBuilder::unsolved('id', 'bottom', $current_page, $filter, $filter_id)->rel(), 'LINK_BUG_TITLE_TOP' => BugtrackerUrlBuilder::unsolved('title', 'top', $current_page, $filter, $filter_id)->rel(), 'LINK_BUG_TITLE_BOTTOM' => BugtrackerUrlBuilder::unsolved('title', 'bottom', $current_page, $filter, $filter_id)->rel(), 'LINK_BUG_STATUS_TOP' => BugtrackerUrlBuilder::unsolved('status', 'top', $current_page, $filter, $filter_id)->rel(), 'LINK_BUG_STATUS_BOTTOM' => BugtrackerUrlBuilder::unsolved('status', 'bottom', $current_page, $filter, $filter_id)->rel(), 'LINK_BUG_DATE_TOP' => BugtrackerUrlBuilder::unsolved('date', 'top', $current_page, $filter, $filter_id)->rel(), 'LINK_BUG_DATE_BOTTOM' => BugtrackerUrlBuilder::unsolved('date', 'bottom', $current_page, $filter, $filter_id)->rel())); return $this->view; }