Example #1
0
require_api( 'user_api.php' );

form_security_validate( 'manage_user_prune' );

auth_reauthenticate();

access_ensure_global_level( config_get( 'manage_user_threshold' ) );

$t_user_table = db_get_table( 'user' );

# Delete the users who have never logged in and are older than 1 week
$days_old = (int)7 * SECONDS_PER_DAY;

$query = "SELECT id, access_level
		FROM $t_user_table
		WHERE ( login_count = 0 ) AND ( date_created = last_visit ) AND " . db_helper_compare_days( 0, "date_created", "> $days_old" );
$result = db_query_bound($query, Array( db_now() ) );

if ( !$result ) {
	trigger_error( ERROR_GENERIC, ERROR );
}

$count = db_num_rows( $result );

if ( $count > 0 ) {
	helper_ensure_confirmed( lang_get( 'confirm_account_pruning' ),
							 lang_get( 'prune_accounts_button' ) );
}

for ($i=0; $i < $count; $i++) {
	$row = db_fetch_array( $result );
Example #2
0
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 = db_prepare_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_table = db_get_table('mantis_news_table');
    $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:
            # BY_LIMIT - Select the news posts
            $query = "SELECT *\n\t\t\t\t\t\tFROM {$t_news_table}";
            if (1 == count($t_projects)) {
                $c_project_id = $t_projects[0];
                $query .= " WHERE project_id='{$c_project_id}'";
            } else {
                $query .= ' WHERE project_id IN (' . join($t_projects, ',') . ')';
            }
            $query .= ' ORDER BY announcement DESC, id DESC';
            $result = db_query($query, $t_news_view_limit, $c_offset);
            break;
        case 1:
            # BY_DATE - Select the news posts
            $query = "SELECT *\n\t\t\t\t\t\tFROM {$t_news_table} WHERE\n\t\t\t\t\t\t( " . db_helper_compare_days(0, 'date_posted', "< {$t_news_view_limit_days}") . "\n\t\t\t\t\t\t OR announcement = " . db_param() . " ) ";
            $t_params = array(db_now(), 1);
            if (1 == count($t_projects)) {
                $c_project_id = $t_projects[0];
                $query .= " AND project_id=" . db_param();
                $t_params[] = $c_project_id;
            } else {
                $query .= ' AND project_id IN (' . join($t_projects, ',') . ')';
            }
            $query .= " ORDER BY announcement DESC, id DESC";
            $result = db_query_bound($query, $t_params, $t_news_view_limit, $c_offset);
            break;
    }
    # end switch
    $t_row_count = db_num_rows($result);
    $t_rows = array();
    for ($i = 0; $i < $t_row_count; $i++) {
        $row = db_fetch_array($result);
        array_push($t_rows, $row);
    }
    return $t_rows;
}
 * @package MantisBT
 * @copyright Copyright (C) 2000 - 2002  Kenzaburo Ito - kenito@300baud.org
 * @copyright Copyright (C) 2002 - 2014  MantisBT Team - mantisbt-dev@lists.sourceforge.net
 * @link http://www.mantisbt.org
 */
/**
 * MantisBT Core API's
 */
require_once 'core.php';
form_security_validate('manage_user_prune');
auth_reauthenticate();
access_ensure_global_level(config_get('manage_user_threshold'));
$t_user_table = db_get_table('mantis_user_table');
# Delete the users who have never logged in and are older than 1 week
$days_old = (int) 7 * SECONDS_PER_DAY;
$query = "SELECT id, access_level\n\t\t\tFROM {$t_user_table}\n\t\t\tWHERE ( login_count = 0 ) AND ( date_created = last_visit ) AND " . db_helper_compare_days(0, "date_created", "> {$days_old}");
$result = db_query_bound($query, array(db_now()));
if (!$result) {
    trigger_error(ERROR_GENERIC, ERROR);
}
$count = db_num_rows($result);
if ($count > 0) {
    helper_ensure_confirmed(lang_get('confirm_account_pruning'), lang_get('prune_accounts_button'));
}
for ($i = 0; $i < $count; $i++) {
    $row = db_fetch_array($result);
    # Don't prune accounts with a higher global access level than the current user
    if (access_has_global_level($row['access_level'])) {
        user_delete($row['id']);
    }
}
    }
    $t_index_links .= '<td>' . $t_link . '</td>';
}
$t_index_links .= '</tr></table></center>';
echo $t_index_links;
if ($f_prefix === 'ALL') {
    $t_where = '(1 = 1)';
} else {
    $c_prefix = db_prepare_string($f_prefix);
    $t_where = "(username like '{$c_prefix}%')";
}
# Get the user data in $c_sort order
if (0 == $c_hide) {
    $query = "SELECT *\n\t\t\t\tFROM {$t_user_table}\n\t\t\t\tWHERE {$t_where}\n\t\t\t\tORDER BY {$c_sort} {$c_dir}";
} else {
    $query = "SELECT *\n\t\t\t\tFROM {$t_user_table}\n\t\t\t\tWHERE (" . db_helper_compare_days(db_now(), "last_visit", "< '{$days_old}'") . ") AND {$t_where}\n\t\t\t\tORDER BY {$c_sort} {$c_dir}";
}
$result = db_query($query);
$user_count = db_num_rows($result);
?>
<br />
<table class="width100" cellspacing="1">
<tr>
	<td class="form-title" colspan="5">
		<?php 
echo lang_get('manage_accounts_title');
?>
 [<?php 
echo $user_count;
?>
]
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Mantis.  If not, see <http://www.gnu.org/licenses/>.
# --------------------------------------------------------
# $Id: manage_user_prune.php,v 1.11.2.1 2007-10-13 22:33:57 giallu Exp $
# --------------------------------------------------------
require_once 'core.php';
# helper_ensure_post();
auth_reauthenticate();
access_ensure_global_level(config_get('manage_user_threshold'));
$t_user_table = config_get('mantis_user_table');
# Delete the users who have never logged in and are older than 1 week
$days_old = 7;
$days_old = (int) $days_old;
$date_calc = db_helper_compare_days(db_now(), "date_created", "> {$days_old}");
$query = "SELECT id\n\t\t\tFROM {$t_user_table}\n\t\t\tWHERE ( login_count = 0 ) AND ( date_created = last_visit ) AND {$date_calc}";
$result = db_query($query);
if (!$result) {
    trigger_error(ERROR_GENERIC, ERROR);
}
$count = db_num_rows($result);
if ($count > 0) {
    helper_ensure_confirmed(lang_get('confirm_account_pruning'), lang_get('prune_accounts_button'));
}
for ($i = 0; $i < $count; $i++) {
    $row = db_fetch_array($result);
    user_delete($row['id']);
}
$t_redirect_url = 'manage_user_page.php';
print_header_redirect($t_redirect_url);
Example #6
0
function summary_resolved_bug_count_by_date($p_time_length = 1)
{
    $t_bug_table = db_get_table('mantis_bug_table');
    $t_bug_history_table = db_get_table('mantis_bug_history_table');
    $t_resolved = config_get('bug_resolved_status_threshold');
    $c_time_length = (int) $p_time_length * SECONDS_PER_DAY;
    $t_project_id = helper_get_current_project();
    $t_user_id = auth_get_current_user_id();
    $specific_where = helper_project_specific_where($t_project_id);
    if (' 1<>1' == $specific_where) {
        return;
    }
    $query = "SELECT COUNT(DISTINCT(b.id))\n\t\t\t\tFROM {$t_bug_table} b\n\t\t\t\tLEFT JOIN {$t_bug_history_table} h\n\t\t\t\tON b.id = h.bug_id\n\t\t\t\tAND h.type = " . NORMAL_TYPE . "\n\t\t\t\tAND h.field_name = 'status'\n\t\t\t\tWHERE b.status >= " . db_param() . "\n\t\t\t\tAND h.old_value < " . db_param() . "\n\t\t\t\tAND h.new_value >= " . db_param() . "\n\t\t\t\tAND " . db_helper_compare_days("" . db_now() . "", "date_modified", "<= {$c_time_length}") . "\n\t\t\t\tAND {$specific_where}";
    $result = db_query_bound($query, array($t_resolved, $t_resolved, $t_resolved));
    return db_result($result, 0);
}
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
if ($f_page_number < 1) {
    $f_page_number = 1;
}
if (0 == $c_hide_inactive) {
    $query = "SELECT *\n\t\t\t\tFROM {$t_user_table}\n\t\t\t\tWHERE {$t_where}\n\t\t\t\t{$t_show_disabled_cond}\n\t\t\t\tORDER BY {$c_sort} {$c_dir}";
    $result = db_query_bound($query, $t_where_params, $p_per_page, $t_offset);
} else {
    $query = "SELECT *\n\t\t\t\tFROM {$t_user_table}\n\t\t\t\tWHERE {$t_where} AND " . db_helper_compare_days("" . db_now() . "", "last_visit", "< {$days_old}") . "\n\t\t\t\t{$t_show_disabled_cond}\n\t\t\t\tORDER BY {$c_sort} {$c_dir}";
    $result = db_query_bound($query, $t_where_params, $p_per_page, $t_offset);
}
$user_count = db_num_rows($result);
?>
<br />
<table class="width100" cellspacing="1">
<tr>
	<td class="form-title" colspan="5">
		<?php 
echo lang_get('manage_accounts_title');
?>
 [<?php 
echo $total_user_count;
?>
]
Example #8
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_days('' . db_now() . '', 'date_modified', '<= ' . $c_time_length) . '
				AND ' . $t_specific_where;
    $t_result = db_query($t_query, array($t_resolved, $t_resolved, $t_resolved));
    return db_result($t_result, 0);
}
Example #9
0
function summary_bug_count_by_date($p_time_length = 1)
{
    $t_mantis_bug_table = config_get('mantis_bug_table');
    $c_time_length = (int) $p_time_length;
    $t_project_id = helper_get_current_project();
    $t_user_id = auth_get_current_user_id();
    $specific_where = helper_project_specific_where($t_project_id);
    if (' 1<>1' == $specific_where) {
        return;
    }
    $query = "SELECT COUNT(*)\n\t\t\t\tFROM {$t_mantis_bug_table}\n\t\t\t\tWHERE " . db_helper_compare_days(db_now(), "date_submitted", "<= '{$c_time_length}'") . " AND {$specific_where}";
    $result = db_query($query);
    return db_result($result, 0);
}
Example #10
0
if( $f_page_number > $t_page_count ) {
	$f_page_number = $t_page_count;
}

# Make sure $p_page_number isn't before the first page
if( $f_page_number < 1 ) {
	$f_page_number = 1;
}


if( 0 == $c_hide_inactive ) {
	$t_query = 'SELECT * FROM {user} WHERE ' . $t_where . ' ' . $t_show_disabled_cond . ' ORDER BY ' . $c_sort . ' ' . $c_dir;
	$t_result = db_query( $t_query, $t_where_params, $p_per_page, $t_offset );
} else {
	$t_query = 'SELECT * FROM {user}
			WHERE ' . $t_where . ' AND ' . db_helper_compare_days( '' . db_now() . '', 'last_visit', '< ' . $t_days_old ) . '
			' . $t_show_disabled_cond . ' ORDER BY ' . $c_sort . ' ' . $c_dir;
	$t_result = db_query( $t_query, $t_where_params, $p_per_page, $t_offset );
}

$t_users = array();
while( $t_row = db_fetch_array( $t_result ) ) {
	$t_users[] = $t_row;
}

$t_user_count = count( $t_users );
?>
<div id="manage-user-div" class="form-container">
	<h2><?php echo lang_get( 'manage_accounts_title' ) ?></h2> [<?php echo $t_total_user_count ?>]
	<?php
		print_button( 'manage_user_create_page.php', lang_get( 'create_new_account_link' ) );
Example #11
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:
            # 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:
            # BY_DATE - Select the news posts
            $t_query = 'SELECT * FROM {news} WHERE
						( ' . db_helper_compare_days(0, '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 #12
0
if ( $f_page_number < 1 ) {
	$f_page_number = 1;
}


if ( 0 == $c_hide ) {
	$query = "SELECT *
			FROM $t_user_table
			WHERE $t_where
			ORDER BY $c_sort $c_dir";
	$result = db_query_bound($query, $t_where_params, $p_per_page, $t_offset);
} else {

	$query = "SELECT *
			FROM $t_user_table
			WHERE $t_where AND " . db_helper_compare_days( "" . db_now() . "", "last_visit", "< $days_old" ) . "
			ORDER BY $c_sort $c_dir";
	$result = db_query_bound($query, $t_where_params, $p_per_page, $t_offset );
}
$user_count = db_num_rows( $result );
?>
<div id="manage-user-div" class="form-container">
	<h2><?php echo lang_get( 'manage_accounts_title' ) ?></h2> [<?php echo $total_user_count ?>]
	<?php print_button( 'manage_user_create_page.php', lang_get( 'create_new_account_link' ) ) ?>
	<?php if ( $f_filter === 'UNUSED' ) echo print_button( 'manage_user_prune.php', lang_get( 'prune_accounts' ) ); ?>
	<form id="manage-user-filter" method="post" action="manage_user_page.php">
		<fieldset>
			<?php # CSRF protection not required here - form does not result in modifications ?>
			<input type="hidden" name="sort" value="<?php echo $c_sort ?>" />
			<input type="hidden" name="dir" value="<?php echo $c_dir ?>" />
			<input type="hidden" name="save" value="1" />
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 ' . db_helper_compare_days(0, '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 #14
0
function token_purge_expired($p_token_type = NULL)
{
    $t_tokens_table = config_get('mantis_tokens_table');
    # Remove
    $query = "DELETE FROM {$t_tokens_table} WHERE ";
    if (!is_null($p_token_type)) {
        $c_token_type = db_prepare_int($p_token_type);
        $query .= " type='{$c_token_type}' AND ";
    }
    $query .= db_helper_compare_days(db_now(), 'timestamp', ">= '1'");
    db_query($query);
    return true;
}