Welcome to Geeklog, Anonymous Sunday, October 13 2024 @ 01:30 pm EDT
Geeklog Forums
pruning
FreakWorld
Anonymous
I know this was talked about in the past.
But did anyone ever make some kind of hack.plug that can prune members that have not logged in for a long time or at all?
I hate going through a 1000+ members every month to drop people that has not logged in for a long time.
But did anyone ever make some kind of hack.plug that can prune members that have not logged in for a long time or at all?
I hate going through a 1000+ members every month to drop people that has not logged in for a long time.
10
6
Quote
Status: offline
Dirk
Site Admin
Admin
Registered: 01/12/02
Posts: 13073
Location:Stuttgart, Germany
Quote by zipstart: You can do it easily enough with phpMyAdmin.
I have to advise against that.
Even if the user hasn't posted anything (and worse if s/he did), that would leave orphaned records in the group_assignment table and possibly in plugins.
Since Geeklog 1.3.9, there's a handy USER_deleteAccount function that takes care of everything. It shouldn't be too hard to write a script (doesn't have to be a plugin) that deletes users based on certain criteria.
bye, Dirk
10
10
Quote
FreakWorld
Anonymous
Ya I read in a past post were you said that Dirk.
But I am PHP stupid and fear the damage I well do to my site by playing with it.
But I am PHP stupid and fear the damage I well do to my site by playing with it.
10
10
Quote
tokyoahead
Anonymous
I wrote a static page for that. it links to the members page where you can delete it.
Put this into a "execute PHP" type static page:
$iaup_action=$_POST['iaup_action'];
if ($iaup_action=="delete")
{iaup_delete();}
else {iaup_index();}
function iaup_index()
{
global $_TABLES;
global $_CONF;
$sql="SELECT username, {$_TABLES['users']}.regdate, {$_TABLES['users']}.uid FROM {$_TABLES['users']} ";
$sql.="LEFT JOIN {$_TABLES['userinfo']} ON {$_TABLES['users']}.uid={$_TABLES['userinfo']}.uid ";
$sql.="WHERE ({$_TABLES['userinfo']}.lastlogin=0 OR {$_TABLES['userinfo']}.lastlogin IS NULL) AND {$_TABLES['users']}.uid>1 ";
$sql.="ORDER BY {$_TABLES['users']}.regdate";
$result = DB_query($sql);
$nrows = DB_numRows($result);
$display.=COM_startBlock("Users that never logged in: ($nrows Users found)");
$display.="<Table>";
$display.="<TR><TD><B>No</B></TD><TD><B>Name</B></TD><TD><B>Reg. Date</B></TD></TR>";
for ($i=0;$i<$nrows;$i++)
{
$j=$i+1;
$user = DB_fetchArray($result);
$display.="<TR><TD>$j:</TD><TD><A HREF=\"";
$display.=$_CONF['site_admin_url']."/user.php?mode=edit&uid={$user['uid']}\">";
$display.=$user['username']."</A></TD>";
$display.="<TD>".$user['regdate']."</TD></TR>";
}
$display.="</Table>";
$display.=COM_endBlock();
$sql="SELECT username, {$_TABLES['userinfo']}.lastlogin, {$_TABLES['users']}.uid FROM {$_TABLES['users']} ";
$sql.="LEFT JOIN {$_TABLES['userinfo']} ON {$_TABLES['users']}.uid={$_TABLES['userinfo']}.uid ";
$sql.="WHERE {$_TABLES['users']}.uid>1 AND {$_TABLES['userinfo']}.lastlogin>0 ";
$sql.="ORDER BY {$_TABLES['userinfo']}.lastlogin LIMIT 20";
$result = DB_query($sql);
$nrows = DB_numRows($result);
$display.=COM_startBlock("Users that did not login for a long time: (Top 20)");
$display.="<Table>";
$display.="<TR><TD><B>No</B></TD><TD><B>Name</B></TD><TD><B>Last Login</B></TD></TR>";
for ($i=0;$i<$nrows;$i++)
{
$j=$i+1;
$user = DB_fetchArray($result);
$display.="<TR><TD>$j:</TD><TD><A HREF=\"";
$display.=$_CONF['site_admin_url']."/user.php?mode=edit&uid={$user['uid']}\">";
$display.=$user['username']."</A></TD>";
$lastlogin=date("Y.m.d H:i:s",$user['lastlogin']);
$display.="<TD>$lastlogin</TD></TR>";
}
$display.="</Table>";
$display.=COM_endBlock();
echo $display;
}
Put this into a "execute PHP" type static page:
Text Formatted Code
$iaup_action=$_POST['iaup_action'];
if ($iaup_action=="delete")
{iaup_delete();}
else {iaup_index();}
function iaup_index()
{
global $_TABLES;
global $_CONF;
$sql="SELECT username, {$_TABLES['users']}.regdate, {$_TABLES['users']}.uid FROM {$_TABLES['users']} ";
$sql.="LEFT JOIN {$_TABLES['userinfo']} ON {$_TABLES['users']}.uid={$_TABLES['userinfo']}.uid ";
$sql.="WHERE ({$_TABLES['userinfo']}.lastlogin=0 OR {$_TABLES['userinfo']}.lastlogin IS NULL) AND {$_TABLES['users']}.uid>1 ";
$sql.="ORDER BY {$_TABLES['users']}.regdate";
$result = DB_query($sql);
$nrows = DB_numRows($result);
$display.=COM_startBlock("Users that never logged in: ($nrows Users found)");
$display.="<Table>";
$display.="<TR><TD><B>No</B></TD><TD><B>Name</B></TD><TD><B>Reg. Date</B></TD></TR>";
for ($i=0;$i<$nrows;$i++)
{
$j=$i+1;
$user = DB_fetchArray($result);
$display.="<TR><TD>$j:</TD><TD><A HREF=\"";
$display.=$_CONF['site_admin_url']."/user.php?mode=edit&uid={$user['uid']}\">";
$display.=$user['username']."</A></TD>";
$display.="<TD>".$user['regdate']."</TD></TR>";
}
$display.="</Table>";
$display.=COM_endBlock();
$sql="SELECT username, {$_TABLES['userinfo']}.lastlogin, {$_TABLES['users']}.uid FROM {$_TABLES['users']} ";
$sql.="LEFT JOIN {$_TABLES['userinfo']} ON {$_TABLES['users']}.uid={$_TABLES['userinfo']}.uid ";
$sql.="WHERE {$_TABLES['users']}.uid>1 AND {$_TABLES['userinfo']}.lastlogin>0 ";
$sql.="ORDER BY {$_TABLES['userinfo']}.lastlogin LIMIT 20";
$result = DB_query($sql);
$nrows = DB_numRows($result);
$display.=COM_startBlock("Users that did not login for a long time: (Top 20)");
$display.="<Table>";
$display.="<TR><TD><B>No</B></TD><TD><B>Name</B></TD><TD><B>Last Login</B></TD></TR>";
for ($i=0;$i<$nrows;$i++)
{
$j=$i+1;
$user = DB_fetchArray($result);
$display.="<TR><TD>$j:</TD><TD><A HREF=\"";
$display.=$_CONF['site_admin_url']."/user.php?mode=edit&uid={$user['uid']}\">";
$display.=$user['username']."</A></TD>";
$lastlogin=date("Y.m.d H:i:s",$user['lastlogin']);
$display.="<TD>$lastlogin</TD></TR>";
}
$display.="</Table>";
$display.=COM_endBlock();
echo $display;
}
11
13
Quote
Status: offline
zipstart
Forum User
Chatty
Registered: 09/13/04
Posts: 60
Quote by Dirk:
Quote by zipstart: You can do it easily enough with phpMyAdmin.
Even if the user hasn't posted anything (and worse if s/he did), that would leave orphaned records in the group_assignment table and possibly in plugins.Excellent point!
9
10
Quote
FreakWorld
Anonymous
Thanks tokyoahead!
That made life a lot easier
That made life a lot easier
10
13
Quote
All times are EDT. The time is now 01:30 pm.
- Normal Topic
- Sticky Topic
- Locked Topic
- New Post
- Sticky Topic W/ New Post
- Locked Topic W/ New Post
- View Anonymous Posts
- Able to post
- Filtered HTML Allowed
- Censored Content