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']);
    }
}
Example #2
0
/**
 * 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;
}
Example #3
0
/**
 * 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);
}
Example #4
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