/upload/includes/cron/jobs/prune_inactive_users.php

http://torrentpier2.googlecode.com/ · PHP · 66 lines · 55 code · 11 blank · 0 comment · 6 complexity · 149363f76cb6349011804dc0e80c804c MD5 · raw file

  1. <?php
  2. if (!defined('BB_ROOT')) die(basename(__FILE__));
  3. $users_per_cycle = 1000;
  4. require_once(INC_DIR .'functions_admin.php');
  5. $excluded_users = join(',', array(
  6. GUEST_UID,
  7. BOT_UID,
  8. ));
  9. while (true)
  10. {
  11. @set_time_limit(600);
  12. $prune_users = $not_activated_users = $not_active_users = array();
  13. if ($not_activated_days = intval($bb_cfg['user_not_activated_days_keep']))
  14. {
  15. $sql = "
  16. SELECT user_id
  17. FROM ". BB_USERS ."
  18. WHERE user_active = 0
  19. AND user_lastvisit = 0
  20. AND user_regdate < ". (TIMENOW - 86400*$not_activated_days) ."
  21. AND user_id NOT IN($excluded_users)
  22. LIMIT $users_per_cycle
  23. ";
  24. foreach (DB()->fetch_rowset($sql) as $row)
  25. {
  26. $not_activated_users[] = $row['user_id'];
  27. }
  28. }
  29. if ($not_active_days = intval($bb_cfg['user_not_active_days_keep']))
  30. {
  31. $sql = "
  32. SELECT user_id
  33. FROM ". BB_USERS ."
  34. WHERE user_active = 1
  35. AND user_posts = 0
  36. AND user_lastvisit < ". (TIMENOW - 86400*$not_active_days) ."
  37. AND user_id NOT IN($excluded_users)
  38. LIMIT $users_per_cycle
  39. ";
  40. foreach (DB()->fetch_rowset($sql) as $row)
  41. {
  42. $not_active_users[] = $row['user_id'];
  43. }
  44. }
  45. if ($prune_users = $not_activated_users + $not_active_users)
  46. {
  47. user_delete($prune_users);
  48. }
  49. if (count($prune_users) < $users_per_cycle)
  50. {
  51. break;
  52. }
  53. sleep(3);
  54. }
  55. unset($prune_users, $not_activated_users, $not_active_users);