cron_cleanup_daily.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. <?php
  2. /**
  3. * [Discuz!] (C)2001-2099 Comsenz Inc.
  4. * This is NOT a freeware, use is subject to license terms
  5. *
  6. * $Id: cron_cleanup_daily.php 33675 2013-08-01 02:09:09Z nemohou $
  7. */
  8. if(!defined('IN_DISCUZ')) {
  9. exit('Access Denied');
  10. }
  11. require_once libfile('function/cache');
  12. updatecache('forumrecommend');
  13. C::t('common_task')->update_available();
  14. if(C::t('common_advertisement')->close_endtime()) {
  15. updatecache(array('setting', 'advs'));
  16. }
  17. C::t('forum_threaddisablepos')->truncate();
  18. C::t('common_searchindex')->truncate();
  19. C::t('forum_threadmod')->delete_by_dateline($_G['timestamp']-31536000);
  20. C::t('forum_forumrecommend')->delete_old();
  21. C::t('home_visitor')->delete_by_dateline($_G['timestamp']-7776000);
  22. C::t('forum_postcache')->delete_by_dateline(TIMESTAMP-86400);
  23. C::t('forum_newthread')->delete_by_dateline(TIMESTAMP-1296000);
  24. C::t('common_seccheck')->truncate();
  25. if($settingnew['heatthread']['type'] == 2 && $settingnew['heatthread']['period']) {
  26. $partakeperoid = 86400 * $settingnew['heatthread']['period'];
  27. C::t('forum_threadpartake')->delete($_G[timestamp]-$partakeperoid);
  28. }
  29. C::t('common_member_count')->clear_today_data();
  30. C::t('forum_trade')->update_closed($_G['timestamp']);
  31. C::t('forum_tradelog')->clear_failure(7);
  32. C::t('forum_tradelog')->expiration_payed(7);
  33. C::t('forum_tradelog')->expiration_finished(7);
  34. if($_G['setting']['cachethreadon']) {
  35. removedir($_G['setting']['cachethreaddir'], TRUE);
  36. }
  37. removedir($_G['setting']['attachdir'].'image', TRUE);
  38. @touch($_G['setting']['attachdir'].'image/index.htm');
  39. C::t('forum_attachment_unused')->clear();
  40. C::t('forum_polloption_image')->clear();
  41. $uids = $members = array();
  42. $members = C::t('common_member')->fetch_all_ban_by_groupexpiry(TIMESTAMP);
  43. if(($uids = array_keys($members))) {
  44. $setarr = array();
  45. foreach(C::t('common_member_field_forum')->fetch_all($uids) as $uid => $member) {
  46. $member['groupterms'] = dunserialize($member['groupterms']);
  47. $member['groupid'] = $members[$uid]['groupid'];
  48. $member['credits'] = $members[$uid]['credits'];
  49. if(!empty($member['groupterms']['main']['groupid'])) {
  50. $groupidnew = $member['groupterms']['main']['groupid'];
  51. $adminidnew = $member['groupterms']['main']['adminid'];
  52. unset($member['groupterms']['main']);
  53. unset($member['groupterms']['ext'][$member['groupid']]);
  54. $setarr['groupexpiry'] = groupexpiry($member['groupterms']);
  55. } else {
  56. $query = C::t('common_usergroup')->fetch_by_credits($member['credits'], 'member');
  57. $groupidnew = $query['groupid'];
  58. $adminidnew = 0;
  59. }
  60. $setarr['adminid'] = $adminidnew;
  61. $setarr['groupid'] = $groupidnew;
  62. C::t('common_member')->update($uid, $setarr);
  63. C::t('common_member_field_forum')->update($uid, array('groupterms' => ($member['groupterms'] ? serialize($member['groupterms']) : '')));
  64. }
  65. }
  66. if(!empty($_G['setting']['advexpiration']['allow'])) {
  67. $endtimenotice = mktime(0, 0, 0, date('m', TIMESTAMP), date('d', TIMESTAMP), date('Y', TIMESTAMP)) + $_G['setting']['advexpiration']['day'] * 86400;
  68. $advs = array();
  69. foreach(C::t('common_advertisement')->fetch_all_endtime($endtimenotice) as $adv) {
  70. $advs[] = '<a href="admin.php?action=adv&operation=edit&advid='.$adv['advid'].'" target="_blank">'.$adv['title'].'</a>';
  71. }
  72. if($advs) {
  73. $users = explode("\n", $_G['setting']['advexpiration']['users']);
  74. $users = array_map('trim', $users);
  75. if($users) {
  76. foreach(C::t('common_member')->fetch_all_by_username($users) as $member) {
  77. $noticelang = array('day' => $_G['setting']['advexpiration']['day'], 'advs' => implode("<br />", $advs), 'from_id' => 0, 'from_idtype' => 'advexpire');
  78. if(in_array('notice', $_G['setting']['advexpiration']['method'])) {
  79. notification_add($member['uid'], 'system', 'system_adv_expiration', $noticelang, 1);
  80. }
  81. if(in_array('mail', $_G['setting']['advexpiration']['method'])) {
  82. if(!sendmail("$member[username] <$member[email]>", lang('email', 'adv_expiration_subject', $noticelang), lang('email', 'adv_expiration_message', $noticelang))) {
  83. runlog('sendmail', "$member[email] sendmail failed.");
  84. }
  85. }
  86. }
  87. }
  88. }
  89. }
  90. $count = C::t('common_card')->count_by_where("status = '1' AND cleardateline <= '{$_G['timestamp']}'");
  91. if($count) {
  92. C::t('common_card')->update_to_overdue($_G['timestamp']);
  93. $card_info = serialize(array('num' => $count));
  94. $cardlog = array(
  95. 'info' => $card_info,
  96. 'dateline' => $_G['timestamp'],
  97. 'operation' => 9
  98. );
  99. C::t('common_card_log')->insert($cardlog);
  100. }
  101. C::t('common_member_action_log')->delete_by_dateline($_G['timestamp'] - 86400);
  102. C::t('forum_collectioninvite')->delete_by_dateline($_G['timestamp'] - 86400*7);
  103. loadcache('seccodedata', true);
  104. $_G['cache']['seccodedata']['register']['show'] = 0;
  105. savecache('seccodedata', $_G['cache']['seccodedata']);
  106. function removedir($dirname, $keepdir = FALSE) {
  107. $dirname = str_replace(array( "\n", "\r", '..'), array('', '', ''), $dirname);
  108. if(!is_dir($dirname)) {
  109. return FALSE;
  110. }
  111. $handle = opendir($dirname);
  112. while(($file = readdir($handle)) !== FALSE) {
  113. if($file != '.' && $file != '..') {
  114. $dir = $dirname . DIRECTORY_SEPARATOR . $file;
  115. is_dir($dir) ? removedir($dir) : unlink($dir);
  116. }
  117. }
  118. closedir($handle);
  119. return !$keepdir ? (@rmdir($dirname) ? TRUE : FALSE) : TRUE;
  120. }
  121. ?>