require_api('authentication_api.php'); require_api('config_api.php'); require_api('constant_inc.php'); require_api('database_api.php'); require_api('form_api.php'); require_api('helper_api.php'); require_api('lang_api.php'); require_api('print_api.php'); require_api('user_api.php'); form_security_validate('manage_user_prune'); auth_reauthenticate(); access_ensure_global_level(config_get('manage_user_threshold')); # Delete the users who have never logged in and are older than 1 week $t_days_old = (int) 7 * SECONDS_PER_DAY; $t_query = 'SELECT id, access_level FROM {user} WHERE ( login_count = 0 ) AND ( date_created = last_visit ) AND ' . '( protected = 0 ) AND ' . db_helper_compare_time(db_param(), '>', 'date_created', $t_days_old); $t_result = db_query($t_query, array(db_now())); if (!$t_result) { trigger_error(ERROR_GENERIC, ERROR); } $t_count = db_num_rows($t_result); if ($t_count > 0) { helper_ensure_confirmed(lang_get('confirm_account_pruning'), lang_get('prune_accounts_button')); } for ($i = 0; $i < $t_count; $i++) { $t_row = db_fetch_array($t_result); # Don't prune accounts with a higher global access level than the current user if (access_has_global_level($t_row['access_level'])) { user_delete($t_row['id']); } }
/** * Gets a limited set of news rows to be viewed on one page based on the criteria * defined in the configuration file. * * @param integer $p_offset Offset. * @param integer $p_project_id A project identifier. * @return array */ function news_get_limited_rows($p_offset, $p_project_id = null) { if ($p_project_id === null) { $p_project_id = helper_get_current_project(); } $c_offset = (int) $p_offset; $t_projects = current_user_get_all_accessible_subprojects($p_project_id); $t_projects[] = (int) $p_project_id; if (ALL_PROJECTS != $p_project_id) { $t_projects[] = ALL_PROJECTS; } $t_news_view_limit = config_get('news_view_limit'); $t_news_view_limit_days = config_get('news_view_limit_days') * SECONDS_PER_DAY; switch (config_get('news_limit_method')) { case 0: db_param_push(); # BY_LIMIT - Select the news posts $t_query = 'SELECT * FROM {news}'; if (1 == count($t_projects)) { $c_project_id = $t_projects[0]; $t_query .= ' WHERE project_id=' . db_param(); $t_params = array($c_project_id); } else { $t_query .= ' WHERE project_id IN (' . join($t_projects, ',') . ')'; $t_params = null; } $t_query .= ' ORDER BY announcement DESC, id DESC'; $t_result = db_query($t_query, $t_params, $t_news_view_limit, $c_offset); break; case 1: db_param_push(); # BY_DATE - Select the news posts $t_query = 'SELECT * FROM {news} WHERE ( ' . db_helper_compare_time(db_param(), '<', 'date_posted', $t_news_view_limit_days) . ' OR announcement = ' . db_param() . ' ) '; $t_params = array(db_now(), 1); if (1 == count($t_projects)) { $c_project_id = $t_projects[0]; $t_query .= ' AND project_id=' . db_param(); $t_params[] = $c_project_id; } else { $t_query .= ' AND project_id IN (' . join($t_projects, ',') . ')'; } $t_query .= ' ORDER BY announcement DESC, id DESC'; $t_result = db_query($t_query, $t_params, $t_news_view_limit, $c_offset); break; } $t_rows = array(); while ($t_row = db_fetch_array($t_result)) { array_push($t_rows, $t_row); } return $t_rows; }
/** * returns the number of bugs resolved in the last X days (default is 1 day) for the current project * * @param integer $p_num_days Anumber of days. * @return integer */ function summary_resolved_bug_count_by_date($p_num_days = 1) { $t_resolved = config_get('bug_resolved_status_threshold'); $c_time_length = (int) $p_num_days * SECONDS_PER_DAY; $t_project_id = helper_get_current_project(); $t_specific_where = helper_project_specific_where($t_project_id); if (' 1<>1' == $t_specific_where) { return 0; } $t_query = 'SELECT COUNT(DISTINCT(b.id)) FROM {bug} b LEFT JOIN {bug_history} h ON b.id = h.bug_id AND h.type = ' . NORMAL_TYPE . ' AND h.field_name = \'status\' WHERE b.status >= ' . db_param() . ' AND h.old_value < ' . db_param() . ' AND h.new_value >= ' . db_param() . ' AND ' . db_helper_compare_time(db_param(), '<=', 'date_modified', $c_time_length) . ' AND ' . $t_specific_where; $t_result = db_query($t_query, array($t_resolved, $t_resolved, $t_resolved, db_now())); return db_result($t_result, 0); }
$t_where_params[] = $f_filter . '%'; $t_where = db_helper_like('UPPER(username)'); } } } $p_per_page = 50; $t_offset = ($f_page_number - 1) * $p_per_page; $t_total_user_count = 0; # Get the user data in $c_sort order $t_result = ''; if (ON != $c_show_disabled) { $t_where .= ' AND enabled = ' . db_param(); $t_where_params[] = true; } if (OFF != $c_hide_inactive) { $t_where .= ' AND ' . db_helper_compare_time(db_param(), '<', 'last_visit', $t_days_old); $t_where_params[] = db_now(); } $t_query = 'SELECT count(*) as user_count FROM {user} WHERE ' . $t_where; $t_result = db_query($t_query, $t_where_params); $t_row = db_fetch_array($t_result); $t_total_user_count = $t_row['user_count']; $t_page_count = ceil($t_total_user_count / $p_per_page); if ($t_page_count < 1) { $t_page_count = 1; } # Make sure $p_page_number isn't past the last page. if ($f_page_number > $t_page_count) { $f_page_number = $t_page_count; } # Make sure $p_page_number isn't before the first page