8 require_once(CH_DIRECTORY_PATH_INC .
'db.inc.php');
9 require_once(CH_DIRECTORY_PATH_INC .
'admin.inc.php');
10 require_once(CH_DIRECTORY_PATH_INC .
'membership_levels.inc.php');
11 require_once(
'ChWsbCron.php');
22 if ($MODE !=
"_LIVE_") {
23 $output = ob_get_contents();
26 if ($MODE ==
"_MAIL_" && $output) {
27 sendMail(
$site[
'email'],
"{$site['title']}: Periodic Report", $output, 0, array(),
'text');
34 $db_clean_vkiss = (int)
getParam(
"db_clean_vkiss");
35 $db_clean_profiles = (int)
getParam(
"db_clean_profiles");
36 $db_clean_msg = (int)
getParam(
"db_clean_msg");
37 $db_clean_visits = (int)
getParam(
"db_clean_members_visits");
38 $db_clean_banners_info = (int)
getParam(
"db_clean_banners_info");
39 $db_clean_mem_levels = (int)
getParam(
"db_clean_mem_levels");
40 $db_clean_email_log = (int)
getParam(
"email_log_ttl_days");
43 if (
db_res(
"DELETE FROM `sys_acl_levels_members` WHERE `DateExpires` < NOW() - INTERVAL $db_clean_mem_levels DAY")) {
44 db_res(
"OPTIMIZE TABLE `sys_acl_levels_members`");
48 if (
db_res(
"DELETE FROM `sys_banners_shows` WHERE `Date` < UNIX_TIMESTAMP( NOW() - INTERVAL $db_clean_banners_info DAY )")) {
49 db_res(
"OPTIMIZE TABLE `sys_banners_shows`");
53 if (
db_res(
"DELETE FROM `sys_banners_clicks` WHERE `Date` < UNIX_TIMESTAMP( NOW() - INTERVAL $db_clean_banners_info DAY )")) {
54 db_res(
"OPTIMIZE TABLE `sys_banners_clicks`");
58 if (
db_res(
"DELETE FROM `sys_messages` WHERE FIND_IN_SET('sender', `Trash`) AND FIND_IN_SET('recipient', `Trash`)")) {
59 db_res(
"OPTIMIZE TABLE `sys_messages`");
63 if (
db_res(
"DELETE FROM `sys_ip_members_visits` WHERE `DateTime` < NOW() - INTERVAL $db_clean_visits DAY")) {
64 db_res(
"OPTIMIZE TABLE `sys_ip_members_visits`");
68 if (
db_res(
"DELETE FROM `sys_admin_ban_list` WHERE `DateTime` + INTERVAL `Time` SECOND < NOW()")) {
69 db_res(
"OPTIMIZE TABLE `sys_admin_ban_list`");
73 if ($db_clean_email_log > 0) {
74 if (
db_res(
"DELETE FROM `sys_email_log` WHERE `timestamp` < NOW() - INTERVAL $db_clean_email_log DAY")) {
75 db_res(
"OPTIMIZE TABLE `sys_email_log`");
80 if ($db_clean_profiles > 0) {
81 $res =
db_res(
"SELECT `ID` FROM `Profiles` WHERE ((`DateLastNav` <> '0000-00-00 00:00:00' AND `DateLastNav` < NOW() - INTERVAL $db_clean_profiles DAY) OR (`DateLastNav` = '0000-00-00 00:00:00' AND `DateReg` < NOW() - INTERVAL $db_clean_profiles DAY)) AND (`Couple` > `ID` OR `Couple` = 0)");
83 $db_clean_profiles_num = $res->rowCount();
84 while ($arr = $res->fetch()) {
87 db_res(
"OPTIMIZE TABLE `Profiles`");
91 if ($db_clean_vkiss > 0) {
92 $res =
db_res(
"DELETE FROM `sys_greetings` WHERE `When` < NOW() - INTERVAL $db_clean_vkiss DAY");
95 db_res(
"OPTIMIZE TABLE `sys_greetings`");
99 if ($db_clean_msg > 0) {
100 $res =
db_res(
"DELETE FROM `sys_messages` WHERE `Date` < NOW() - INTERVAL $db_clean_msg DAY");
103 db_res(
"OPTIMIZE TABLE `sys_messages`");
110 $iSessions = $oSession->oDb->deleteExpired();
120 $iDeletedViews = $oChViews->maintenance();
125 $iDeletedVotes = $oChVotes->maintenance();
130 $iDeletedCommentVotes = $oChCmts->maintenance();
132 echo
"\n- Database cleaning -\n";
133 echo
"Deleted profiles: $db_clean_profiles_num\n";
134 echo
"Deleted virtual kisses: $db_clean_vkiss_num\n";
135 echo
"Deleted messages: $db_clean_msg_num\n";
136 echo
"Deleted sessions: $iSessions\n";
137 echo
"Deleted records from ip block list: $iIps\n";
138 echo
"Deleted views: $iDeletedViews\n";
139 echo
"Deleted votes: $iDeletedVotes\n";
140 echo
"Deleted comment votes: $iDeletedCommentVotes\n";
151 $dirToClean = array();
152 $dirToClean[
$dir[
'tmp']] =
"/.*/";
153 $dirToClean[
$dir[
'cache']] =
"/.*/";
154 $dirToClean[CH_DIRECTORY_PATH_CACHE_PUBLIC] =
"/^export/";
156 foreach ($dirToClean
as $value => $sRegExp) {
157 if (!($lang_dir = opendir($value))) {
160 while ($lang_file = readdir($lang_dir)) {
161 if (!preg_match($sRegExp, $lang_file)) {
164 $diff =
time() - filectime($value . $lang_file);
165 if ($diff > $file_life &&
'.' != $lang_file &&
'..' != $lang_file &&
'.htaccess' !== $lang_file) {
166 @unlink($value . $lang_file);
175 echo
"\n- Temporary files check -\n";
177 echo
"Total temp files: $num_tmp\n";
178 echo
"Deleted temp files: $num_del\n";
187 foreach ($aStats
as $sName => $aStat) {
188 if (
empty($aStat[
'adm_query'])) {
192 $iNumber = (int)
$GLOBALS[
'MySQL']->getOne($aStat[
'adm_query']);
197 $sMessage .=
'<p>' . $iNumber .
' ' .
_t(
'_' . $aStat[
'capt'] .
'_adm_stats') .
',</p>';
200 $aAdmins =
$GLOBALS[
'MySQL']->getAll(
"SELECT * FROM `Profiles` WHERE `Role`&" .
CH_WSB_ROLE_ADMIN .
"<>0 AND `EmailNotify`='1'");
203 $aEmailParams = array(
205 'ViewLink' => CH_WSB_URL_ADMIN
208 foreach ($aAdmins
as $aAdmin) {
209 $aMail = $oEmailTemplate->parseTemplate(
't_AdminStats', $aEmailParams, $aAdmin[
'ID']);
210 if (
sendMail($aAdmin[
'Email'], $aMail[
'subject'], $aMail[
'body'], $aAdmin[
'ID'], array(),
'html',
false,
true)) {
228 define(
'NON_VISUAL_PROCESSING',
'YES');
231 set_time_limit(36000);
235 for ($i = 0; strlen($argv[$i]); $i++) {
237 case "--live": $MODE =
"_LIVE_";
break;
238 case "--mail": $MODE =
"_MAIL_";
break;
239 case "--force-day": $DAY =
"_FORCE_";
break;
240 case "--obey-day": $DAY =
"_OBEY_";
break;
244 if ($MODE !=
"_LIVE_") {
249 if (
getParam(
"cmdDay") == $day && $DAY ==
"_OBEY_") {
250 echo
"Already done today, bailing out\n";
260 echo
"Checking Cheetah License\n";
269 echo
"\n- Membership expiration letters -\n";
271 $iExpireNotificationDays = (int)
getParam(
"expire_notification_days");
272 $bExpireNotifyOnce =
getParam(
"expire_notify_once") ==
'on';
276 $aRow =
$GLOBALS[
'MySQL']->getFirstRow(
"SELECT `ID` FROM `Profiles`");
277 while (!
empty($aRow)) {
282 $iLastTimestamp =
time() - 24 * 3600;
284 if ($aCurrentMem[
'ID'] != $aLastMem[
'ID']) {
294 $iFurtherTimestamp =
time() + 24 * 3600;
301 $iFurtherTimestamp =
time() + $iExpireNotificationDays * 24 * 3600;
304 if (!$bExpireNotifyOnce || abs($iFurtherTimestamp - $aCurrentMem[
'DateExpires']) < 24 * 3600) {
305 $bMailResult =
mem_expiration_letter($aRow[
'ID'], $aCurrentMem[
'Name'], (
int)(($aCurrentMem[
'DateExpires'] -
time())/(24 * 3600)));
313 $aRow =
$GLOBALS[
'MySQL']->getNextRow();
316 echo
"Send membership expire letters: $iExpireLetters letters\n";