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;
     }
 }
Example #3
0
 /**
  * @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();
 }