AntonLV 10 лет назад
Родитель
Сommit
84d35bcf3f
2 измененных файлов с 21 добавлено и 25 удалено
  1. 1 1
      inc/classes/BxDolAcl.php
  2. 20 24
      inc/classes/BxDolCronAcl.php

+ 1 - 1
inc/classes/BxDolAcl.php

@@ -620,7 +620,7 @@ class BxDolAcl extends BxDol implements iBxDolSingleton
         $aMembership = $aMembershipCurrent;
         while ($aMembership['id'] != MEMBERSHIP_ID_STANDARD) {
             $aMembershipLast = $aMembership;
-            if(!isset($aMembership['DateExpires']) || (int)$aMembership['DateExpires'] == 0)
+            if(!isset($aMembership['date_expires']) || (int)$aMembership['date_expires'] == 0)
                 break;
 
             $aMembership = $this->getMemberMembershipInfoCurrent($iProfileId, $aMembership['date_expires']);

+ 20 - 24
inc/classes/BxDolCronAcl.php

@@ -11,48 +11,44 @@ class BxDolCronAcl extends BxDolCron
 {
     public function processing()
     {
-    	/*
+    	$iExpireLetters = 0;
         $iExpireNotificationDays = (int)getParam("sys_acl_expire_notification_days");
         $bExpireNotifyOnce = getParam("sys_acl_expire_notify_once") == 'on';
 
-        $iExpireLetters = 0;
-
-        $oDb = BxDolDb::getInstance();
         $oAcl = BxDolAcl::getInstance();
 
-        $aRow = $oDb->getFirstRow( "SELECT `ID` FROM `Profiles`");
-        while(!empty($aRow)) {
-            $aCurrentMem = getMemberMembershipInfo( $aRow['ID'] );
+        $aIds = BxDolDb::getInstance()->getColumn("SELECT `id` FROM `sys_profiles` WHERE `type`<>'system'");
+        foreach($aIds as $iId) {
+            $aMemCur = $oAcl->getMemberMembershipInfo($iId);
+
             // If expire_notification_days is -1 then notify after expiration
-            if ( $aCurrentMem['ID'] == MEMBERSHIP_ID_STANDARD && $iExpireNotificationDays == -1 ) {
-                // Calculate last UNIX Timestamp
-                $iLastTimestamp = time() - 24 * 3600;
-                $aLastMem = getMemberMembershipInfo( $aRow['ID'], $iLastTimestamp );
-                if($aCurrentMem['ID'] != $aLastMem['ID']) {
-                    $bMailResult = $oAcl->getExpirationLetter($aRow['ID'], $aLastMem['Name'], -1);
+            if($aMemCur['id'] == MEMBERSHIP_ID_STANDARD && $iExpireNotificationDays == -1 ) {
+            	$iDatePrev = time() - 24 * 3600;
+                $aMemPrev = $oAcl->getMemberMembershipInfo($iId, $iDatePrev); // Get previous membership level
+                if($aMemCur['id'] != $aMemPrev['id']) {
+                    $bMailResult = $oAcl->getExpirationLetter($iId, $aMemPrev['name'], -1);
                     if($bMailResult)
                         $iExpireLetters++;
                 }
+
+                continue;
             }
+
             // If memberhip is not standard then check if it will change
-            else if($aCurrentMem['ID'] != MEMBERSHIP_ID_STANDARD) {
-                // Calculate further UNIX Timestamp
-                $iFurtherTimestamp = time() + $iExpireNotificationDays * 24 * 3600;
-                $aFurtherMem = getMemberMembershipInfo( $aRow['ID'], $iFurtherTimestamp );
-                if($aCurrentMem['ID'] != $aFurtherMem['ID'] && $aFurtherMem['ID'] == MEMBERSHIP_ID_STANDARD) {
-                    if(!$bExpireNotifyOnce || abs($iFurtherTimestamp - $aCurrentMem['DateExpires']) < 24 * 3600) {
-                        $bMailResult = $oAcl->getExpirationLetter( $aRow['ID'], $aCurrentMem['Name'], (int)(($aCurrentMem['DateExpires'] - time())/(24 * 3600)));
+            if($aMemCur['id'] != MEMBERSHIP_ID_STANDARD) {
+                $iDateNext = time() + $iExpireNotificationDays * 24 * 3600;
+                $aMemNext = $oAcl->getMemberMembershipInfo($iId, $iDateNext);
+                if($aMemCur['id'] != $aMemNext['id'] && $aMemNext['id'] == MEMBERSHIP_ID_STANDARD) {
+                    if(!$bExpireNotifyOnce || abs($iDateNext - $aMemCur['date_expires']) < 24 * 3600) {
+                        $bMailResult = $oAcl->getExpirationLetter($iId, $aMemCur['name'], (int)(($aMemCur['date_expires'] - time())/(24 * 3600)));
                         if($bMailResult)
                             $iExpireLetters++;
                     }
                 }
             }
 
-            $aRow = $oDb->getNextRow();
+            continue;
         }
-
-        echo "Send membership expire letters: $iExpireLetters letters\n";
-        */
     }
 }