コード例 #1
0
 function onAfterInitialise()
 {
     if (class_exists('RSMembershipHelper')) {
         $this->loadLanguage('plg_system_rsmembership');
         $db = JFactory::getDBO();
         $date = JFactory::getDate();
         $date = $date->toUnix();
         if (RSMembershipHelper::getConfig('last_check') + RSMembershipHelper::getConfig('interval') * 60 > $date) {
             return;
         }
         $db->setQuery("UPDATE #__rsmembership_configuration SET value='" . $date . "' WHERE name='last_check' LIMIT 1");
         $db->query();
         $offset = RSMembershipHelper::getConfig('delete_pending_after');
         if ($offset < 1) {
             $offset = 1;
         }
         $offset = $offset * 3600;
         $db->setQuery("DELETE FROM #__rsmembership_transactions WHERE `status`='pending' AND `date` < '" . ($date - $offset) . "'");
         $db->query();
         // Limit 10 so we don't overload the server
         $db->setQuery("SELECT mu.id, m.gid_enable, m.gid_expire, m.disable_expired_account, mu.user_id FROM #__rsmembership_membership_users mu LEFT JOIN #__rsmembership_memberships m ON (mu.membership_id=m.id) WHERE  mu.`status`='0' AND mu.`membership_end` > 0 AND mu.`membership_end` < '" . $date . "' LIMIT 10");
         $updates = $db->loadObjectList();
         $to_update = array();
         foreach ($updates as $update) {
             $to_update[] = $update->id;
             if ($update->gid_enable) {
                 RSMembership::updateGid($update->user_id, $update->gid_expire);
             }
             if ($update->disable_expired_account) {
                 RSMembership::disableUser($update->user_id);
             }
         }
         if (!empty($to_update)) {
             $db->setQuery("UPDATE #__rsmembership_membership_users SET `status`='2' WHERE `id` IN (" . implode(',', $to_update) . ")");
             $db->query();
         }
         RSMembershipHelper::checkShared();
         RSMembershipHelper::sendExpirationEmails();
     }
 }