maintenance() public method

it is called on cron every day or similar period to clean old votes
public maintenance ( )
Exemplo n.º 1
0
 function clean_database()
 {
     $db_clean_vkiss = (int) getParam("db_clean_vkiss");
     $db_clean_profiles = (int) getParam("db_clean_profiles");
     $db_clean_msg = (int) getParam("db_clean_msg");
     $db_clean_visits = (int) getParam("db_clean_members_visits");
     $db_clean_banners_info = (int) getParam("db_clean_banners_info");
     //clear from `sys_banners_shows`
     if (db_res("DELETE FROM `sys_banners_shows` WHERE `Date` < UNIX_TIMESTAMP( NOW() - INTERVAL {$db_clean_banners_info} DAY )")) {
         db_res("OPTIMIZE TABLE `sys_banners_shows`");
     }
     //clear from `sys_banners_clicks`
     if (db_res("DELETE FROM `sys_banners_clicks` WHERE `Date` < UNIX_TIMESTAMP( NOW() - INTERVAL {$db_clean_banners_info} DAY )")) {
         db_res("OPTIMIZE TABLE `sys_banners_clicks`");
     }
     // clear from `sys_messages`
     if (db_res("DELETE FROM `sys_messages` WHERE FIND_IN_SET('sender', `Trash`) AND FIND_IN_SET('recipient', `Trash`)")) {
         db_res("OPTIMIZE TABLE `sys_messages`");
     }
     //clear from `sys_ip_members_visits`
     if (db_res("DELETE FROM `sys_ip_members_visits` WHERE `DateTime` < NOW() - INTERVAL {$db_clean_visits} DAY")) {
         db_res("OPTIMIZE TABLE `sys_ip_members_visits`");
     }
     // clear ban table
     if (db_res("DELETE FROM `sys_admin_ban_list` WHERE `DateTime` + INTERVAL `Time` SECOND < NOW()")) {
         db_res("OPTIMIZE TABLE `sys_admin_ban_list`");
     }
     // profile_delete
     if ($db_clean_profiles > 0) {
         $res = db_res("SELECT `ID` FROM `Profiles` WHERE (`DateLastNav` < NOW() - INTERVAL {$db_clean_profiles} DAY) AND (`Couple` > `ID` OR `Couple` = 0)");
         if ($res) {
             $db_clean_profiles_num = mysql_num_rows($res);
             while ($arr = mysql_fetch_array($res)) {
                 profile_delete($arr['ID']);
             }
             db_res("OPTIMIZE TABLE `Profiles`");
         }
     }
     if ($db_clean_vkiss > 0) {
         $res = db_res("DELETE FROM `sys_greetings` WHERE `When` < NOW() - INTERVAL {$db_clean_vkiss} DAY");
         if ($res) {
             $db_clean_vkiss_num = db_affected_rows();
             db_res("OPTIMIZE TABLE `sys_greetings`");
         }
     }
     if ($db_clean_msg > 0) {
         $res = db_res("DELETE FROM `sys_messages` WHERE `Date` < NOW() - INTERVAL {$db_clean_msg} DAY");
         if ($res) {
             $db_clean_msg_num = db_affected_rows();
             db_res("OPTIMIZE TABLE `sys_messages`");
         }
     }
     //--- Clean sessions ---//
     bx_import('BxDolSession');
     $oSession = BxDolSession::getInstance();
     $iSessions = $oSession->oDb->deleteExpired();
     // clean expired ip bans
     bx_import('BxDolAdminIpBlockList');
     $oBxDolAdminIpBlockList = new BxDolAdminIpBlockList();
     $iIps = $oBxDolAdminIpBlockList->deleteExpired();
     // clean old views
     bx_import('BxDolViews');
     $oBxViews = new BxDolViews('', 0);
     $iDeletedViews = $oBxViews->maintenance();
     // clean old votes
     bx_import('BxDolVoting');
     $oBxVotes = new BxDolVoting('', 0);
     $iDeletedVotes = $oBxVotes->maintenance();
     echo "\n- Database cleaning -\n";
     echo "Deleted profiles: {$db_clean_profiles_num}\n";
     echo "Deleted virtual kisses: {$db_clean_vkiss_num}\n";
     echo "Deleted messages: {$db_clean_msg_num}\n";
     echo "Deleted sessions: {$iSessions}\n";
     echo "Deleted records from ip block list: {$iIps}\n";
     echo "Deleted views: {$iDeletedViews}\n";
     echo "Deleted votes: {$iDeletedVotes}\n";
 }