private function build_table() { $number_admins = UserService::count_admin_members(); $table_model = new SQLHTMLTableModel(DB_TABLE_MEMBER, 'table', array(new HTMLTableColumn($this->lang['display_name'], 'display_name'), new HTMLTableColumn($this->lang['level'], 'level'), new HTMLTableColumn($this->lang['email']), new HTMLTableColumn($this->lang['registration_date'], 'registration_date'), new HTMLTableColumn($this->lang['last_connection'], 'last_connection_date'), new HTMLTableColumn($this->lang['approbation'], 'approved'), new HTMLTableColumn('')), new HTMLTableSortingRule('display_name', HTMLTableSortingRule::ASC)); $table = new HTMLTable($table_model); $table_model->set_caption(LangLoader::get_message('members.members-management', 'admin-user-common')); $results = array(); $result = $table_model->get_sql_results('m LEFT JOIN ' . DB_TABLE_INTERNAL_AUTHENTICATION . ' ia ON ia.user_id = m.user_id'); foreach ($result as $row) { $user = new User(); $user->set_properties($row); $edit_link = new LinkHTMLElement(UserUrlBuilder::edit_profile($user->get_id()), '', array('title' => LangLoader::get_message('edit', 'common')), 'fa fa-edit'); if ($user->get_level() != User::ADMIN_LEVEL || $user->get_level() == User::ADMIN_LEVEL && $number_admins > 1) { $delete_link = new LinkHTMLElement(AdminMembersUrlBuilder::delete($user->get_id()), '', array('title' => LangLoader::get_message('delete', 'common'), 'data-confirmation' => 'delete-element'), 'fa fa-delete'); } else { $delete_link = new LinkHTMLElement('', '', array('title' => LangLoader::get_message('delete', 'common'), 'onclick' => 'return false;'), 'fa fa-delete icon-disabled'); } $user_group_color = User::get_group_color($user->get_groups(), $user->get_level(), true); $results[] = new HTMLTableRow(array(new HTMLTableRowCell(new LinkHTMLElement(UserUrlBuilder::profile($user->get_id()), $user->get_display_name(), !empty($user_group_color) ? array('style' => 'color: ' . $user_group_color) : array(), UserService::get_level_class($user->get_level()))), new HTMLTableRowCell(UserService::get_level_lang($user->get_level())), new HTMLTableRowCell(new LinkHTMLElement('mailto:' . $user->get_email(), $this->lang['email'], array(), 'basic-button smaller')), new HTMLTableRowCell(Date::to_format($row['registration_date'], Date::FORMAT_DAY_MONTH_YEAR)), new HTMLTableRowCell(!empty($row['last_connection_date']) ? Date::to_format($row['last_connection_date'], Date::FORMAT_DAY_MONTH_YEAR) : LangLoader::get_message('never', 'main')), new HTMLTableRowCell($row['approved'] ? LangLoader::get_message('yes', 'common') : LangLoader::get_message('no', 'common')), new HTMLTableRowCell($edit_link->display() . $delete_link->display()))); } $table->set_rows($table_model->get_number_of_matching_rows(), $results); $this->view->put_all(array('FORM' => $this->build_form()->display(), 'table' => $table->display())); }
private function incremente_level(User $user) { $this->incremente_user(); switch ($user->get_level()) { case User::VISITOR_LEVEL: $this->incremente_visitor(); break; case User::MEMBER_LEVEL: $this->incremente_member(); break; case User::MODERATOR_LEVEL: $this->incremente_moderator(); break; case User::ADMIN_LEVEL: $this->incremente_administrator(); break; } }
/** * @desc Update user * @param User $user * @param string $condition the SQL condition update user * @param array $parameters */ public static function update(User $user, $extended_fields = null) { $condition = 'WHERE user_id=:user_id'; $parameters = array('user_id' => $user->get_id()); self::$querier->update(DB_TABLE_MEMBER, array('display_name' => TextHelper::htmlspecialchars($user->get_display_name()), 'level' => $user->get_level(), 'groups' => implode('|', $user->get_groups()), 'email' => $user->get_email(), 'show_email' => (int) $user->get_show_email(), 'locale' => $user->get_locale(), 'timezone' => $user->get_timezone(), 'theme' => $user->get_theme(), 'editor' => $user->get_editor()), $condition, $parameters); if ($extended_fields !== null) { if ($extended_fields instanceof MemberExtendedFieldsService) { $fields_data = $extended_fields->get_data($user->get_id()); } elseif (is_array($extended_fields)) { $fields_data = $extended_fields; } else { $fields_data = array(); } self::$querier->update(DB_TABLE_MEMBER_EXTENDED_FIELDS, $fields_data, $condition, $parameters); } SessionData::recheck_cached_data_from_user_id($user->get_id()); self::regenerate_cache(); }
private function build_view($request) { $current_page = $request->get_getint('page', 1); //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(); $history_lines_number = BugtrackerService::count_history($this->bug->get_id()); $pagination = $this->get_pagination($history_lines_number, $current_page); $common_lang = LangLoader::get('common'); $this->view->put_all(array('C_PAGINATION' => $pagination->has_several_pages(), 'C_HISTORY' => $history_lines_number, 'PAGINATION' => $pagination->display())); $result = PersistenceContext::get_querier()->select("SELECT *\n\t\tFROM " . BugtrackerSetup::$bugtracker_table . " b\n\t\tJOIN " . BugtrackerSetup::$bugtracker_history_table . " bh ON (bh.bug_id = b.id)\n\t\tLEFT JOIN " . DB_TABLE_MEMBER . " member ON (member.user_id = bh.updater_id)\n\t\tWHERE b.id = '" . $this->bug->get_id() . "'\n\t\tORDER BY update_date DESC\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())); while ($row = $result->fetch()) { switch ($row['updated_field']) { case 'type': $old_value = !empty($row['old_value']) && isset($types[$row['old_value']]) ? stripslashes($types[$row['old_value']]) : $this->lang['notice.none']; $new_value = !empty($row['new_value']) && isset($types[$row['new_value']]) ? stripslashes($types[$row['new_value']]) : $this->lang['notice.none']; break; case 'category': $old_value = !empty($row['old_value']) && isset($categories[$row['old_value']]) ? stripslashes($categories[$row['old_value']]) : $this->lang['notice.none_e']; $new_value = !empty($row['new_value']) && isset($categories[$row['new_value']]) ? stripslashes($categories[$row['new_value']]) : $this->lang['notice.none_e']; break; case 'severity': $old_value = !empty($row['old_value']) ? stripslashes($severities[$row['old_value']]['name']) : $this->lang['notice.none']; $new_value = !empty($row['new_value']) ? stripslashes($severities[$row['new_value']]['name']) : $this->lang['notice.none']; break; case 'priority': $old_value = !empty($row['old_value']) ? stripslashes($priorities[$row['old_value']]) : $this->lang['notice.none_e']; $new_value = !empty($row['new_value']) ? stripslashes($priorities[$row['new_value']]) : $this->lang['notice.none_e']; break; case 'detected_in': case 'fixed_in': $old_value = !empty($row['old_value']) && isset($versions[$row['old_value']]) ? stripslashes($versions[$row['old_value']]['name']) : $this->lang['notice.none_e']; $new_value = !empty($row['new_value']) && isset($versions[$row['new_value']]) ? stripslashes($versions[$row['new_value']]['name']) : $this->lang['notice.none_e']; break; case 'status': $old_value = $this->lang['status.' . $row['old_value']]; $new_value = $this->lang['status.' . $row['new_value']]; break; case 'reproductible': $old_value = $row['old_value'] ? $common_lang['yes'] : $common_lang['no']; $new_value = $row['new_value'] ? $common_lang['yes'] : $common_lang['no']; break; default: $old_value = $row['old_value']; $new_value = $row['new_value']; } $update_date = new Date($row['update_date'], Timezone::SERVER_TIMEZONE); $user = new User(); if (!empty($row['user_id'])) { $user->set_properties($row); } else { $user->init_visitor_user(); } $user_group_color = User::get_group_color($user->get_groups(), $user->get_level(), true); $this->view->assign_block_vars('history', array('C_UPDATER_GROUP_COLOR' => !empty($user_group_color), 'C_UPDATER_EXIST' => $user->get_id() !== User::VISITOR_LEVEL, 'UPDATED_FIELD' => !empty($row['updated_field']) ? $this->lang['labels.fields.' . $row['updated_field']] : $this->lang['notice.none'], 'OLD_VALUE' => stripslashes($old_value), 'NEW_VALUE' => stripslashes($new_value), 'COMMENT' => $row['change_comment'], 'UPDATE_DATE_SHORT' => $update_date->format(Date::FORMAT_DAY_MONTH_YEAR), 'UPDATE_DATE' => $update_date->format(Date::FORMAT_DAY_MONTH_YEAR_HOUR_MINUTE), 'UPDATER' => $user->get_display_name(), 'UPDATER_LEVEL_CLASS' => UserService::get_level_class($user->get_level()), 'UPDATER_GROUP_COLOR' => $user_group_color, 'LINK_UPDATER_PROFILE' => UserUrlBuilder::profile($user->get_id())->rel())); } $result->dispose(); }