private function init()
 {
     $this->lang = LangLoader::get('common', 'bugtracker');
     $this->view = new FileTemplate('bugtracker/BugtrackerRoadmapListController.tpl');
     $this->view->add_lang($this->lang);
     $this->config = BugtrackerConfig::load();
 }
 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 check_page_exists()
 {
     if (!BugtrackerConfig::load()->are_stats_enabled()) {
         $error_controller = PHPBoostErrors::unexisting_page();
         DispatchManager::redirect($error_controller);
     }
 }
 public function synchronize()
 {
     $this->bugs_number = array('total' => 0);
     $db_querier = PersistenceContext::get_querier();
     $config = BugtrackerConfig::load();
     $versions = $config->get_versions();
     $result = $db_querier->select("SELECT status, COUNT(*) as bugs_number\r\n\t\tFROM " . BugtrackerSetup::$bugtracker_table . "\r\n\t\tGROUP BY status\r\n\t\tORDER BY status ASC");
     foreach ($result as $row) {
         $this->bugs_number[$row['status']] = $row['bugs_number'];
         $this->bugs_number['total'] += $row['bugs_number'];
     }
     $result->dispose();
     $result = $db_querier->select("SELECT @fixed_in:=fixed_in AS fixed_in, \r\n\t\tCOUNT(*) as bugs_number, \r\n\t\t(SELECT COUNT(*) FROM " . BugtrackerSetup::$bugtracker_table . " WHERE fixed_in = @fixed_in AND status = '" . Bug::FIXED . "') as fixed_bugs_number, \r\n\t\t(SELECT COUNT(*) FROM " . BugtrackerSetup::$bugtracker_table . " WHERE fixed_in = @fixed_in AND (status = '" . Bug::IN_PROGRESS . "' OR status = '" . Bug::REOPEN . "')) as in_progress_bugs_number\r\n\t\tFROM " . BugtrackerSetup::$bugtracker_table . "\r\n\t\tGROUP BY fixed_in\r\n\t\tORDER BY fixed_in ASC");
     foreach ($result as $row) {
         if (!empty($row['fixed_in']) && isset($versions[$row['fixed_in']])) {
             $this->bugs_number_per_version[$row['fixed_in']] = array('all' => $row['bugs_number'], Bug::FIXED => $row['fixed_bugs_number'], Bug::IN_PROGRESS => $row['in_progress_bugs_number']);
         }
     }
     $result->dispose();
     $result = $db_querier->select("SELECT member.*, COUNT(*) as bugs_number\r\n\t\tFROM " . BugtrackerSetup::$bugtracker_table . " bugtracker\r\n\t\tJOIN " . DB_TABLE_MEMBER . " member ON member.user_id = bugtracker.author_id\r\n\t\tWHERE status <> '" . Bug::REJECTED . "'\r\n\t\tGROUP BY author_id\r\n\t\tORDER BY bugs_number DESC\r\n\t\tLIMIT " . $config->get_stats_top_posters_number());
     $i = 1;
     foreach ($result as $row) {
         $author = new User();
         if (!empty($row['user_id'])) {
             $author->set_properties($row);
         } else {
             $author->init_visitor_user();
         }
         $this->top_posters[$i] = array('user' => $author, 'bugs_number' => $row['bugs_number']);
         $i++;
     }
     $result->dispose();
 }
 public function execute(HTTPRequestCustom $request)
 {
     AppContext::get_session()->csrf_get_protect();
     $config = BugtrackerConfig::load();
     $parameter = $request->get_string('parameter', '');
     if (in_array($parameter, array('type', 'category', 'severity', 'priority', 'version'))) {
         switch ($parameter) {
             case 'type':
                 $config->set_default_type(0);
                 break;
             case 'category':
                 $config->set_default_category(0);
                 break;
             case 'severity':
                 $config->set_default_severity(0);
                 break;
             case 'priority':
                 $config->set_default_priority(0);
                 break;
             case 'version':
                 $config->set_default_version(0);
                 break;
         }
         BugtrackerConfig::save();
         AppContext::get_response()->redirect(BugtrackerUrlBuilder::configuration());
     } else {
         $controller = new UserErrorController(LangLoader::get_message('error', 'status-messages-common'), LangLoader::get_message('error.e_unexist_parameter', 'common', 'bugtracker'));
         $controller->set_response_classname(UserErrorController::ADMIN_RESPONSE);
         DispatchManager::redirect($controller);
     }
 }
 public function get_feed_data_struct($idcat = 0, $name = '')
 {
     $querier = PersistenceContext::get_querier();
     $lang = LangLoader::get('common', 'bugtracker');
     //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();
     $site_name = GeneralConfig::load()->get_site_name();
     $feed_module_name = $idcat == 1 ? $lang['titles.solved'] : $lang['titles.unsolved'];
     $data = new FeedData();
     $data->set_title($feed_module_name . ' - ' . $site_name);
     $data->set_date(new Date());
     $data->set_link(SyndicationUrlBuilder::rss('bugtracker', $idcat));
     $data->set_host(HOST);
     $data->set_desc($feed_module_name . ' - ' . $site_name);
     $data->set_lang(LangLoader::get_message('xml_lang', 'main'));
     $data->set_auth_bit(BugtrackerAuthorizationsService::READ_AUTHORIZATIONS);
     $results = $querier->select("SELECT bugtracker.*, author.*\r\n\t\tFROM " . BugtrackerSetup::$bugtracker_table . " bugtracker\r\n\t\tLEFT JOIN " . DB_TABLE_MEMBER . " author ON author.user_id = bugtracker.author_id\r\n\t\tWHERE " . ($idcat == 1 ? "(status = '" . Bug::FIXED . "' OR status = '" . Bug::REJECTED . "')" : "status <> '" . Bug::FIXED . "' AND status <> '" . Bug::REJECTED . "'") . "\r\n\t\tORDER BY " . ($idcat == 1 ? "fix_date" : "submit_date") . " DESC");
     foreach ($results as $row) {
         $bug = new Bug();
         $bug->set_properties($row);
         $link = BugtrackerUrlBuilder::detail($bug->get_id() . '-' . $bug->get_rewrited_title());
         $description = FormatingHelper::second_parse($bug->get_contents());
         $description .= '<br /><br />' . $lang['labels.fields.reproductible'] . ' : ' . ($bug->is_reproductible() ? LangLoader::get_message('yes', 'common') : LangLoader::get_message('no', 'common'));
         if ($bug->is_reproductible()) {
             $description .= '<br />' . FormatingHelper::second_parse($bug->get_reproduction_method()) . '<br />';
         }
         if ($types) {
             $description .= '<br />' . $lang['labels.fields.type'] . ' : ' . (isset($types[$bug->get_type()]) ? stripslashes($types[$bug->get_type()]) : $lang['notice.none']);
         }
         if ($categories) {
             $description .= '<br />' . $lang['labels.fields.category'] . ' : ' . (isset($categories[$bug->get_category()]) ? stripslashes($categories[$bug->get_category()]) : $lang['notice.none_e']);
         }
         if ($severities) {
             $description .= '<br />' . $lang['labels.fields.severity'] . ' : ' . (isset($severities[$bug->get_severity()]) ? stripslashes($severities[$bug->get_severity()]['name']) : $lang['notice.none']);
         }
         if ($priorities) {
             $description .= '<br />' . $lang['labels.fields.priority'] . ' : ' . (isset($priorities[$bug->get_priority()]) ? stripslashes($priorities[$bug->get_priority()]) : $lang['notice.none_e']);
         }
         if ($versions) {
             $description .= '<br />' . $lang['labels.fields.version'] . ' : ' . (isset($versions[$bug->get_detected_in()]) ? stripslashes($versions[$bug->get_detected_in()]['name']) : $lang['notice.not_defined']);
         }
         $item = new FeedItem();
         $item->set_title($bug->get_title());
         $item->set_link($link);
         $item->set_guid($link);
         $item->set_desc($description);
         $item->set_date($bug->get_submit_date());
         $item->set_auth(BugtrackerAuthorizationsService::READ_AUTHORIZATIONS);
         $data->add_item($item);
     }
     $results->dispose();
     return $data;
 }
 private function init(HTTPRequestCustom $request)
 {
     $id = $request->get_int('id', 0);
     $this->lang = LangLoader::get('common', 'bugtracker');
     try {
         $this->bug = BugtrackerService::get_bug('WHERE id=:id', array('id' => $id));
     } catch (RowNotFoundException $e) {
         $error_controller = new UserErrorController(LangLoader::get_message('error', 'status-messages-common'), $this->lang['error.e_unexist_bug']);
         DispatchManager::redirect($error_controller);
     }
     $this->view = new StringTemplate('# INCLUDE FORM #');
     $this->view->add_lang($this->lang);
     $this->config = BugtrackerConfig::load();
 }
 /**
  * @desc Send a PM to a list of members.
  * @param string $pm_type Type of PM ('assigned', 'pending', 'in_progress', 'comment', 'delete', 'edit', 'fixed', 'rejected', 'reopen')
  * @param int $bug_id ID of the bug which is concerned
  * @param string $message (optional) Message to include in the PM
  * @param string[] $recipients_list (optional) Recipients to whom send the PM
  */
 public static function send_PM_to_updaters($pm_type, $bug_id, $message = '', $recipients_list = array())
 {
     //Load configuration
     $config = BugtrackerConfig::load();
     $pm_enabled = $config->are_pm_enabled();
     //Check is the sending of PM is enabled for the selected type
     $pm_type_enabled = '';
     switch ($pm_type) {
         case 'assigned':
             $pm_type_enabled = $config->are_pm_assign_enabled();
             break;
         case 'pending':
             $pm_type_enabled = $config->are_pm_pending_enabled();
             break;
         case 'in_progress':
             $pm_type_enabled = $config->are_pm_in_progress_enabled();
             break;
         case 'comment':
             $pm_type_enabled = $config->are_pm_comment_enabled();
             break;
         case 'delete':
             $pm_type_enabled = $config->are_pm_delete_enabled();
             break;
         case 'edit':
             $pm_type_enabled = $config->are_pm_edit_enabled();
             break;
         case 'fixed':
             $pm_type_enabled = $config->are_pm_fix_enabled();
             break;
         case 'rejected':
             $pm_type_enabled = $config->are_pm_reject_enabled();
             break;
         case 'reopen':
             $pm_type_enabled = $config->are_pm_reopen_enabled();
             break;
     }
     //Retrieve the list of members which updated the bug
     if (empty($recipients_list)) {
         $recipients_list = BugtrackerService::get_updaters_list($bug_id);
     }
     //Send the PM to each recipient
     foreach ($recipients_list as $recipient) {
         if ($pm_enabled && $pm_type_enabled) {
             self::send_PM($pm_type, $recipient, $bug_id, $message);
         }
     }
 }
 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());
 }
 public function execute_add_comment_event()
 {
     //Load module lang
     $lang = LangLoader::get('common', 'bugtracker');
     //Load module configuration
     $config = BugtrackerConfig::load();
     //Get the content of the comment
     $comment = stripslashes(FormatingHelper::strparse(AppContext::get_request()->get_poststring('comments_message', '')));
     //Retrieve the id of the bug
     $bug_id = $this->comments_topic->get_id_in_module();
     $now = new Date();
     //New line in the bug history
     BugtrackerService::add_history(array('bug_id' => $bug_id, 'updater_id' => AppContext::get_current_user()->get_id(), 'update_date' => $now->get_timestamp(), 'change_comment' => $lang['notice.new_comment']));
     //Send a PM to the list of members who updated the bug if the send of PM is enabled
     if ($config->are_pm_enabled() && $config->are_pm_comment_enabled()) {
         BugtrackerPMService::send_PM_to_updaters('comment', $bug_id, $comment);
     }
     return true;
 }
 private function init()
 {
     $this->lang = LangLoader::get('common', 'bugtracker');
     $this->current_user = AppContext::get_current_user();
     $this->config = BugtrackerConfig::load();
 }
 private function get_authorizations($bit)
 {
     return AppContext::get_current_user()->check_auth(BugtrackerConfig::load()->get_authorizations(), $bit);
 }
 private function save()
 {
     //Save the authorizations list
     BugtrackerConfig::load()->set_authorizations($this->form->get_value('authorizations')->build_auth_array());
     BugtrackerConfig::save();
 }
 private function save()
 {
     $request = AppContext::get_request();
     $types = $this->config->get_types();
     $categories = $this->config->get_categories();
     $severities = $this->config->get_severities();
     $priorities = $this->config->get_priorities();
     $versions = $this->config->get_versions();
     foreach ($types as $key => $type) {
         $new_type_name = $request->get_value('type' . $key, '');
         $types[$key] = !empty($new_type_name) && $new_type_name != $type ? $new_type_name : $type;
     }
     $nb_types = count($types);
     for ($i = 1; $i <= $this->max_input; $i++) {
         $type = 'type_' . $i;
         if ($request->has_postparameter($type) && $request->get_poststring($type)) {
             if (empty($nb_types)) {
                 $types[1] = addslashes($request->get_poststring($type));
             } else {
                 $types[] = addslashes($request->get_poststring($type));
             }
             $nb_types++;
         }
     }
     foreach ($categories as $key => $category) {
         $new_category_name = $request->get_value('category' . $key, '');
         $categories[$key] = !empty($new_category_name) && $new_category_name != $category ? $new_category_name : $category;
     }
     $nb_categories = count($categories);
     for ($i = 1; $i <= $this->max_input; $i++) {
         $category = 'category_' . $i;
         if ($request->has_postparameter($category) && $request->get_poststring($category)) {
             if (empty($nb_categories)) {
                 $categories[1] = addslashes($request->get_poststring($category));
             } else {
                 $categories[] = addslashes($request->get_poststring($category));
             }
             $nb_categories++;
         }
     }
     foreach ($severities as $key => $severity) {
         $new_severity_name = $request->get_value('severity' . $key, '');
         $new_severity_color = $request->get_value('color' . $key, '');
         $severities[$key]['name'] = !empty($new_severity_name) && $new_severity_name != $severity['name'] ? $new_severity_name : $severity['name'];
         $severities[$key]['color'] = $new_severity_color != $severity['color'] ? $new_severity_color : $severity['color'];
     }
     foreach ($priorities as $key => $priority) {
         $new_priority_name = $request->get_value('priority' . $key, '');
         $priorities[$key] = !empty($new_priority_name) && $new_priority_name != $priority ? $new_priority_name : $priority;
     }
     foreach ($versions as $key => $version) {
         $new_version_name = $request->get_value('version' . $key, '');
         $new_version_release_date = $request->get_value('release_date' . $key, '');
         $new_version_detected_in = (bool) $request->get_value('detected_in' . $key, '');
         $versions[$key]['name'] = !empty($new_version_name) && $new_version_name != $version['name'] ? $new_version_name : $version['name'];
         $release_date = $new_version_release_date ? new Date($new_version_release_date) : '';
         $versions[$key]['release_date'] = $release_date ? $release_date->get_timestamp() : '';
         $versions[$key]['detected_in'] = $new_version_detected_in != $version['detected_in'] ? $new_version_detected_in : $version['detected_in'];
     }
     $nb_versions = count($versions);
     for ($i = 1; $i <= $this->max_input; $i++) {
         $version = 'version_' . $i;
         if ($request->has_postparameter($version) && $request->get_poststring($version)) {
             $version_release_date = $request->get_value('release_date_' . $i, '');
             $release_date = $version_release_date ? new Date($version_release_date) : '';
             $release_date = $release_date ? $release_date->get_timestamp() : '';
             if (empty($nb_versions)) {
                 $versions[1] = array('name' => addslashes($request->get_poststring($version)), 'release_date' => $release_date, 'detected_in' => (bool) $request->get_value('detected_in' . $i, ''));
             } else {
                 $versions[] = array('name' => addslashes($request->get_poststring($version)), 'release_date' => $release_date, 'detected_in' => (bool) $request->get_value('detected_in' . $i, ''));
             }
             $nb_versions++;
         }
     }
     $this->config->set_items_per_page($this->form->get_value('items_per_page'));
     $this->config->set_rejected_bug_color($this->form->get_value('rejected_bug_color'));
     $this->config->set_fixed_bug_color($this->form->get_value('fixed_bug_color'));
     if ($this->form->get_value('roadmap_enabled')) {
         $this->config->enable_roadmap();
     } else {
         $this->config->disable_roadmap();
     }
     if ($this->form->get_value('progress_bar_displayed')) {
         $this->config->display_progress_bar();
         $status_list = array();
         foreach ($this->config->get_status_list() as $key => $value) {
             $status_list[$key] = $this->form->get_value($key);
         }
         $this->config->set_status_list($status_list);
     } else {
         $this->config->hide_progress_bar();
     }
     if ($this->form->get_value('admin_alerts_enabled')) {
         $this->config->enable_admin_alerts();
         $this->config->set_admin_alerts_fix_action($this->form->get_value('admin_alerts_fix_action')->get_raw_value());
         $admin_alerts_levels = array();
         foreach ($this->form->get_value('admin_alerts_levels') as $level => $value) {
             $admin_alerts_levels[] = (string) $value->get_id();
         }
         $this->config->set_admin_alerts_levels($admin_alerts_levels);
     } else {
         $this->config->disable_admin_alerts();
     }
     if ($this->form->get_value('stats_enabled')) {
         $this->config->enable_stats();
         if ($this->form->get_value('stats_top_posters_enabled')) {
             $this->config->enable_stats_top_posters();
             $this->config->set_stats_top_posters_number($this->form->get_value('stats_top_posters_number'));
         } else {
             $this->config->disable_stats_top_posters();
         }
     } else {
         $this->config->disable_stats();
     }
     if ($this->form->get_value('pm_enabled')) {
         $this->config->enable_pm();
         if ($this->form->get_value('pm_comment_enabled')) {
             $this->config->enable_pm_comment();
         } else {
             $this->config->disable_pm_comment();
         }
         if ($this->form->get_value('pm_in_progress_enabled')) {
             $this->config->enable_pm_in_progress();
         } else {
             $this->config->disable_pm_in_progress();
         }
         if ($this->form->get_value('pm_fix_enabled')) {
             $this->config->enable_pm_fix();
         } else {
             $this->config->disable_pm_fix();
         }
         if ($this->form->get_value('pm_pending_enabled')) {
             $this->config->enable_pm_pending();
         } else {
             $this->config->disable_pm_pending();
         }
         if ($this->form->get_value('pm_assign_enabled')) {
             $this->config->enable_pm_assign();
         } else {
             $this->config->disable_pm_assign();
         }
         if ($this->form->get_value('pm_edit_enabled')) {
             $this->config->enable_pm_edit();
         } else {
             $this->config->disable_pm_edit();
         }
         if ($this->form->get_value('pm_reject_enabled')) {
             $this->config->enable_pm_reject();
         } else {
             $this->config->disable_pm_reject();
         }
         if ($this->form->get_value('pm_reopen_enabled')) {
             $this->config->enable_pm_reopen();
         } else {
             $this->config->disable_pm_reopen();
         }
         if ($this->form->get_value('pm_delete_enabled')) {
             $this->config->enable_pm_delete();
         } else {
             $this->config->disable_pm_delete();
         }
     } else {
         $this->config->disable_pm();
     }
     $this->config->set_contents_value($this->form->get_value('contents_value'));
     if ($this->form->get_value('type_mandatory')) {
         $this->config->type_mandatory();
     } else {
         $this->config->type_not_mandatory();
     }
     if ($this->form->get_value('display_type_column')) {
         $this->config->display_type_column();
     } else {
         $this->config->hide_type_column();
     }
     $this->config->set_types($types);
     $this->config->set_default_type($request->get_value('default_type', 0));
     if ($this->form->get_value('category_mandatory')) {
         $this->config->category_mandatory();
     } else {
         $this->config->category_not_mandatory();
     }
     if ($this->form->get_value('display_category_column')) {
         $this->config->display_category_column();
     } else {
         $this->config->hide_category_column();
     }
     $this->config->set_categories($categories);
     $this->config->set_default_category($request->get_value('default_category', 0));
     if ($this->form->get_value('severity_mandatory')) {
         $this->config->severity_mandatory();
     } else {
         $this->config->severity_not_mandatory();
     }
     $this->config->set_severities($severities);
     $this->config->set_default_severity($request->get_value('default_severity', 0));
     if ($this->form->get_value('priority_mandatory')) {
         $this->config->priority_mandatory();
     } else {
         $this->config->priority_not_mandatory();
     }
     if ($this->form->get_value('display_priority_column')) {
         $this->config->display_priority_column();
     } else {
         $this->config->hide_priority_column();
     }
     $this->config->set_priorities($priorities);
     $this->config->set_default_priority($request->get_value('default_priority', 0));
     if ($this->form->get_value('detected_in_version_mandatory')) {
         $this->config->detected_in_version_mandatory();
     } else {
         $this->config->detected_in_version_not_mandatory();
     }
     if ($this->form->get_value('display_detected_in_column')) {
         $this->config->display_detected_in_column();
     } else {
         $this->config->hide_detected_in_column();
     }
     $this->config->set_versions($versions);
     $this->config->set_default_version($request->get_value('default_version', 0));
     BugtrackerConfig::save();
     BugtrackerStatsCache::invalidate();
 }
 private function get_pagination($history_lines_number, $page)
 {
     $pagination = new ModulePagination($page, $history_lines_number, (int) BugtrackerConfig::load()->get_items_per_page());
     $pagination->set_url(BugtrackerUrlBuilder::history($this->bug->get_id(), '%d'));
     if ($pagination->current_page_is_empty() && $page > 1) {
         $error_controller = PHPBoostErrors::unexisting_page();
         DispatchManager::redirect($error_controller);
     }
     return $pagination;
 }
 private function get_pagination($bugs_number, $page, $field, $sort, $filter, $filter_id)
 {
     $pagination = new ModulePagination($page, $bugs_number, (int) BugtrackerConfig::load()->get_items_per_page());
     $pagination->set_url(BugtrackerUrlBuilder::unsolved($field, $sort, '%d', $filter, $filter_id));
     if ($pagination->current_page_is_empty() && $page > 1) {
         $error_controller = PHPBoostErrors::unexisting_page();
         DispatchManager::redirect($error_controller);
     }
     return $pagination;
 }
Exemple #17
0
 public function get_array_tpl_vars()
 {
     $config = BugtrackerConfig::load();
     $types = $config->get_types();
     $categories = $config->get_categories();
     $severities = $config->get_severities();
     $priorities = $config->get_priorities();
     $versions = $config->get_versions();
     $status_list = $config->get_status_list();
     $lang = LangLoader::get('common', 'bugtracker');
     $user = $this->get_author_user();
     $user_group_color = User::get_group_color($user->get_groups(), $user->get_level(), true);
     $number_comments = CommentsService::get_number_comments('bugtracker', $this->id);
     return array('C_PROGRESS' => $config->is_progress_bar_displayed(), 'C_FIX_DATE' => $this->fix_date != null, 'C_FIXED_IN' => $this->detected_in, 'C_FIXED' => $this->is_fixed(), 'C_PENDING' => $this->is_pending(), 'C_REPRODUCTIBLE' => $this->is_reproductible(), 'C_REPRODUCTION_METHOD' => $this->reproduction_method, 'C_AUTHOR_GROUP_COLOR' => !empty($user_group_color), 'C_AUTHOR_EXIST' => $user->get_id() !== User::VISITOR_LEVEL, 'C_MORE_THAN_ONE_COMMENT' => $number_comments > 1, 'ID' => $this->id, 'TITLE' => $this->title, 'CONTENTS' => FormatingHelper::second_parse($this->contents), 'SUBMIT_DATE_SHORT' => $this->submit_date->format(Date::FORMAT_DAY_MONTH_YEAR), 'SUBMIT_DATE' => $this->submit_date->format(Date::FORMAT_DAY_MONTH_YEAR_HOUR_MINUTE), 'FIX_DATE_SHORT' => $this->fix_date !== null ? $this->fix_date->format(Date::FORMAT_DAY_MONTH_YEAR) : '', 'FIX_DATE' => $this->fix_date !== null ? $this->fix_date->format(Date::FORMAT_DAY_MONTH_YEAR_HOUR_MINUTE) : '', 'TYPE' => isset($types[$this->type]) ? stripslashes($types[$this->type]) : $lang['notice.none'], 'CATEGORY' => isset($categories[$this->category]) ? stripslashes($categories[$this->category]) : $lang['notice.none_e'], 'SEVERITY' => isset($severities[$this->severity]) ? stripslashes($severities[$this->severity]['name']) : $lang['notice.none'], 'PRIORITY' => isset($priorities[$this->priority]) ? stripslashes($priorities[$this->priority]) : $lang['notice.none_e'], 'DETECTED_IN' => isset($versions[$this->detected_in]) ? stripslashes($versions[$this->detected_in]['name']) : $lang['notice.not_defined'], 'FIXED_IN' => isset($versions[$this->fixed_in]) ? stripslashes($versions[$this->fixed_in]['name']) : $lang['notice.not_defined'], 'PROGRESS' => $status_list[$this->status], 'STATUS' => LangLoader::get_message('status.' . $this->status, 'common', 'bugtracker'), 'REPRODUCTION_METHOD' => FormatingHelper::second_parse($this->reproduction_method), 'AUTHOR' => $user->get_display_name(), 'AUTHOR_LEVEL_CLASS' => UserService::get_level_class($user->get_level()), 'AUTHOR_GROUP_COLOR' => $user_group_color, 'NUMBER_COMMENTS' => $number_comments, 'U_AUTHOR_PROFILE' => UserUrlBuilder::profile($user->get_id())->rel(), 'U_LINK' => BugtrackerUrlBuilder::detail($this->id . '-' . $this->rewrited_title)->rel(), 'U_HISTORY' => BugtrackerUrlBuilder::history($this->id)->rel(), 'U_COMMENTS' => BugtrackerUrlBuilder::detail($this->id . '-' . $this->rewrited_title . '#comments-list')->rel());
 }
 private function delete_parameter_in_config()
 {
     $types = $this->config->get_types();
     $categories = $this->config->get_categories();
     $versions = $this->config->get_versions();
     switch ($this->parameter) {
         case 'type':
             //Delete the type in the list of types
             unset($types[$this->id]);
             $this->config->set_types($types);
             if ($this->config->get_default_type() == $this->id) {
                 $this->config->set_default_type(0);
             }
             break;
         case 'category':
             //Delete the category in the list of categories
             unset($categories[$this->id]);
             $this->config->set_categories($categories);
             if ($this->config->get_default_category() == $this->id) {
                 $this->config->set_default_category(0);
             }
             break;
         case 'version':
             //Delete the version in the list of versions
             unset($versions[$this->id]);
             $this->config->set_versions($versions);
             if ($this->config->get_default_version() == $this->id) {
                 $this->config->set_default_version(0);
             }
             break;
     }
     BugtrackerConfig::save();
 }
 private function build_select_versions($current_page)
 {
     $versions = $current_page == 'unsolved' ? BugtrackerConfig::load()->get_versions_detected() : BugtrackerConfig::load()->get_versions();
     $versions = array_reverse($versions, true);
     $array_versions = array();
     $array_versions[] = new FormFieldSelectChoiceOption(' ', '');
     foreach ($versions as $key => $version) {
         $array_versions[] = new FormFieldSelectChoiceOption(stripslashes($version['name']), $key);
     }
     return $array_versions;
 }