|
|
@@ -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";
|
|
|
- */
|
|
|
}
|
|
|
}
|
|
|
|