X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Fpool%2Fpool-bonus.php;h=eb263b9905241feda5c5aa0995d6539756be13b6;hp=1bc67ec2aa436caad11d90dc837e6f54ca88cfdd;hb=49acdb7a7adbcf25a8e8683b5581bfcec72b23bd;hpb=b8aa17b98b99c27eafbdca0fa090bae63527da9a diff --git a/inc/pool/pool-bonus.php b/inc/pool/pool-bonus.php index 1bc67ec2aa..eb263b9905 100644 --- a/inc/pool/pool-bonus.php +++ b/inc/pool/pool-bonus.php @@ -1,7 +1,7 @@ 0) { - // Send these mails away... - $cnt2 = ''; - while ($DATA = SQL_FETCHARRAY($result_bonus)) { - // Compile URL - $DATA['url'] = COMPILE_CODE($DATA['url']); +if ($GLOBALS['pool_cnt'] < getMaxSend()) { + // Default is ext-html_mail is gone + $add = ''; + + // Send out bonus mails? + if (isExtensionActive('html_mail')) { + // With HTML support + $add = ', `html_msg`'; + } // END - if + + // Run query + $result_main = sqlQuery("SELECT + `id`, + `subject`, + `text`, + `receivers`, + `points`, + `time`, + `data_type`, + `timestamp`, + `url`, + `cat_id`, + `target_send` + " . $add . " +FROM + `{?_MYSQL_PREFIX?}_bonus` +WHERE + `data_type`='NEW' +ORDER BY + `timestamp` DESC", __FILE__, __LINE__); + + // Some mails left? + if (!ifSqlHasZeroNumRows($result_main)) { + // Init SQLs here + initSqls(); + // Send these mails away... + $count2 = ''; + while ($mailData = sqlFetchArray($result_main)) { // Message is active in queue - SQL_QUERY_ESC("UPDATE `{!_MYSQL_PREFIX!}_bonus` SET `data_type`='QUEUE' WHERE `id`=%s LIMIT 1", - array(bigintval($DATA['id'])), __FILE__, __LINE__); + sqlQueryEscaped("UPDATE `{?_MYSQL_PREFIX?}_bonus` SET `data_type`='QUEUE' WHERE `id`=%s LIMIT 1", + array(bigintval($mailData['id'])), __FILE__, __LINE__); + + // Default is no users left + $receivers = array(); // "Explode" all receivers into an array - if (ereg(';', $DATA['receivers'])) { + if (isInString(';', $mailData['receivers'])) { // There's more than one receiver in the list... - $RECEIVERS = explode(';', $DATA['receivers']); - } elseif (!empty($DATA['points'])) { + $receivers = explode(';', $mailData['receivers']); + } elseif (!empty($mailData['points'])) { // Only one user left - $RECEIVERS = array($DATA['receivers']); - } else { - // No users left - $RECEIVERS = array('0'); + $receivers = array($mailData['receivers']); } - $dummy = $RECEIVERS; + $temporaryReceivers = $receivers; - // Now, if we are good little boys and girls Santa left us some user-ids. - // We can now send mails to them... - foreach ($RECEIVERS as $key => $uid) { + /* + * Now, if we are good little boys and girls Santa Claus left us + * some user-ids and send out mails to them. + */ + foreach ($receivers as $key => $userid) { // Load personal data - //* DEBUG: */ echo "*L:".__LINE__.'/'.$uid."*
"; - $result_user = SQL_QUERY_ESC("SELECT `surname`, `family`, `email` FROM `{!_MYSQL_PREFIX!}_user_data` WHERE `userid`=%s LIMIT 1", - array(bigintval($uid)), __FILE__, __LINE__); - - // Is his data available? - if (SQL_NUMROWS($result_user) == 1) { + if (fetchUserData($userid)) { // The final receiver does exists so we can continue... - list($sname, $fname, $email) = SQL_FETCHROW($result_user); - //* DEBUG: */ echo "OK!/L:".__LINE__."
"; - - // Mark this user as "spammed" ;-) And place a line for him... - if (removeReceiver($dummy, $key, $uid, $DATA['id'], $DATA['id'], true) == 'done') { - // Replace text variables - foreach ($GLOBALS['replacer'] as $key => $value) { - if (isset($DATA[$key])) $DATA['text'] = str_replace($value, $DATA[$key], $DATA['text']); - } // END - foreach - - // Prepare content - $content = array( - 'id' => $DATA['id'], - 'url' => $DATA['url'], - 'time' => createFancyTime($DATA['time']), - 'points' => translateComma($DATA['points']), - 'category' => getCategory($DATA['cat_id']), - 'text' => $DATA['text'] - ); - - // Prepare the mail - $mailText = LOAD_EMAIL_TEMPLATE('bonus-mail', $content, $uid); - - // Send mail away - if (isset($DATA['html_msg'])) { - // Send HTML? - sendEmail($email, $DATA['subject'], $mailText, $DATA['html_msg']); - } else { - // No HTML mail! - sendEmail($email, $DATA['subject'], $mailText); - } - - // Count one up and remove entry from dummy array - $GLOBALS['pool_cnt']++; unset($dummy[$key]); - - if (GET_EXT_VERSION('user') >= '0.1.4') { - // Update mails received for receiver - SQL_QUERY_ESC("UPDATE `{!_MYSQL_PREFIX!}_user_data` SET emails_received=emails_received+1 WHERE userid=%s LIMIT 1", - array(bigintval($uid)), __FILE__, __LINE__); - } // END - if - - // Do we have send maximum mails? - if (($GLOBALS['pool_cnt'] >= getConfig('max_send')) || (countSelection($dummy) == 0)) { - // Yes, we have - //* DEBUG: */ echo "*EXIT/L:".__LINE__."
"; + //* DEBUG: */ debugOutput('OK!/L:'.__LINE__); + + // Remove receiver from list + $status = removeReceiver($temporaryReceivers, $key, $userid, $mailData['id'], $mailData['id'], TRUE); + + // Did it work? + switch ($status) { + case 'done': // Done! + // Prepare the mail + $mailText = loadEmailTemplate('member_bonus_pool_normal', $mailData, $userid); + + // Send mail away + if (isset($mailData['html_msg'])) { + // Send HTML? + sendEmail(getUserData('userid'), $mailData['subject'], $mailText, $mailData['html_msg']); + } else { + // No HTML mail! + sendEmail(getUserData('userid'), $mailData['subject'], $mailText); + } + + // Count one up and remove entry from dummy array + $GLOBALS['pool_cnt']++; unset($temporaryReceivers[$key]); + + // Is ext-user installed? + if (isExtensionInstalledAndNewer('user', '0.1.4')) { + // Debug message + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',mailData[id]=' . $mailData['id']); + // Update mails received for receiver + addSql(sprintf("UPDATE `{?_MYSQL_PREFIX?}_user_data` SET `emails_received`=`emails_received`+1 WHERE `userid`=%s LIMIT 1", bigintval($userid))); + } // END - if + + // Is the size of pool reached or nothing to sent left? + if (($GLOBALS['pool_cnt'] >= getMaxSend()) || (countSelection($temporaryReceivers) == 0)) { + // Yes, it is. So abort here + break; + } // END - if break; - } // END - if - } // END - if + + default: // Unknown return type + logDebugMessage(__FILE__, __LINE__, 'Unknown status ' . $status . ' detected. pool_id=' . $mailData['id'] . ',userid=' . $mailData['userid'] . ',stats_id=' . $stats_id); + break; + } // END - switch } // END - if + } // END - foreach - // Free some memory - SQL_FREERESULT($result_user); - } + // Run all SQLs + runFilterChain('run_sqls'); // Update mediadata if version is 0.0.4 or higher - if (GET_EXT_VERSION('mediadata') >= '0.0.4') { + if (isExtensionInstalledAndNewer('mediadata', '0.0.4')) { // Update entry (or add missing $P = $GLOBALS['pool_cnt']; - if (!empty($cnt2) && empty($GLOBALS['pool_cnt'])) $P = $cnt2; - //* DEBUG: */ echo "+MEDIA/L:".__LINE__.'/'.$P."+
"; - MEDIA_UPDATE_ENTRY(array("total_send", "bonus_send"), 'add', $P); + if (!empty($count2) && empty($GLOBALS['pool_cnt'])) $P = $count2; + //* DEBUG: */ debugOutput('+MEDIA/L:'.__LINE__.'/'.$P.'+'); + updateMediadataEntry(array('total_send', 'bonus_send'), 'add', $P); } // END - if // Close sending system - //* DEBUG: */ echo "-L:".__LINE__.'/'.countSelection($dummy)."-
"; - if (countSelection($dummy) == 0) { + //* DEBUG: */ debugOutput('-L:'.__LINE__.'/'.countSelection($temporaryReceivers).'-'); + if (countSelection($temporaryReceivers) == 0) { // Queue reached! - SQL_QUERY_ESC("UPDATE `{!_MYSQL_PREFIX!}_bonus` SET `data_type`='SEND', `target_send`=0, `receivers`='' WHERE `id`=%s LIMIT 1", - array(bigintval($DATA['id'])), __FILE__, __LINE__); - //* DEBUG: */ echo "*L:".__LINE__."*
"; + sqlQueryEscaped("UPDATE + `{?_MYSQL_PREFIX?}_bonus` +SET + `data_type`='SEND', + `target_send`=0, + `receivers`='' +WHERE + `id`=%s +LIMIT 1", + array(bigintval($mailData['id'])), __FILE__, __LINE__); + //* DEBUG: */ debugOutput('*L:'.__LINE__.'*'); // Update mediadata if version is 0.0.4 or higher - if (GET_EXT_VERSION('mediadata') >= '0.0.4') { + if (isExtensionInstalledAndNewer('mediadata', '0.0.4')) { // Update entry (or add missing) - //* DEBUG: */ echo "*MEDIA/L:".__LINE__."*
"; - MEDIA_UPDATE_ENTRY(array("total_orders", "bonus_orders"), 'add', 1); + //* DEBUG: */ debugOutput('*MEDIA/L:'.__LINE__.'*'); + updateMediadataEntry(array('total_orders', 'bonus_orders'), 'add', 1); } // END - if - } elseif ($GLOBALS['pool_cnt'] >= getConfig('max_send')) { + } elseif ($GLOBALS['pool_cnt'] >= getMaxSend()) { // Update bonus pool - SQL_QUERY_ESC("UPDATE `{!_MYSQL_PREFIX!}_bonus` SET `data_type`='NEW', `target_send`=%s, `receivers`='%s' WHERE `id`=%s LIMIT 1", - array(countSelection($dummy), implode(';', $dummy), bigintval($DATA['id'])), __FILE__, __LINE__); - //* DEBUG: */ echo "*L:".__LINE__."
";
-				//* DEBUG: */ print_r($dummy);
-				//* DEBUG: */ echo "
\n!!!
"; + sqlQueryEscaped("UPDATE + `{?_MYSQL_PREFIX?}_bonus` +SET + `data_type`='NEW', + `target_send`=%s, + `receivers`='%s' +WHERE + `id`=%s +LIMIT 1", + array( + countSelection($temporaryReceivers), + implode(';', $temporaryReceivers), + bigintval($mailData['id']) + ), __FILE__, __LINE__); + //* DEBUG: */ debugOutput('*L:'.__LINE__.'
'.print_r($temporaryReceivers, TRUE).'
!!!'); + + // Run any SQLs + runFilterChain('run_sqls'); break; } - } - } + } // END - while + } // END - if // Free memory - SQL_FREERESULT($result_bonus); + sqlFreeResult($result_main); // Remove variable unset($mailText); -} +} // END - if -// +// [EOF] ?>