X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Fmodules%2Fmember%2Fwhat-transfer.php;h=cf59a6ec085b1d732f7878ac92bb44136dfd5e51;hp=838aa5d78d78e656984a23c8fef685fb7c7cf395;hb=e8ca54fe91872ab95a6ffdc4f1268bf18889021d;hpb=5deec33be1baf2135eefc2bbb0d1b63c6cbd2f9a diff --git a/inc/modules/member/what-transfer.php b/inc/modules/member/what-transfer.php index 838aa5d78d..cf59a6ec08 100644 --- a/inc/modules/member/what-transfer.php +++ b/inc/modules/member/what-transfer.php @@ -1,7 +1,7 @@ 0) { - // Check for code - $code = generateRandomCodde(getConfig('transfer_code'), REQUEST_POST('code_chk'), $GLOBALS['userid'], constant('__TRANSFER_MAX_VALUE')); - $valid_code = ($code == REQUEST_POST('code')); - } else { - // Zero length (= disabled) is always valid! - $valid_code = true; - } +if ((getUserData('opt_in') != 'Y') && ($mode == 'new')) { + $mode = ''; +} // END - if + +switch ($mode) { + case 'new': // Start new transfer + // Get total points and subtract the balance amount from it = maximum transferable points + $total = getTotalPoints(getMemberId()); + + // Remember maximum value for template + $content['max_transferable'] = round($total - getConfig('transfer_balance') - 0.5); + + if (isFormSent()) { + // Add new transfer + if (getConfig('transfer_code') > 0) { + // Check for code + $code = generateRandomCode(getConfig('transfer_code'), postRequestParameter('code_chk'), getMemberId(), $content['max_transferable']); + $valid_code = ($code == postRequestParameter('code')); + } else { + // Zero length (= disabled) is always valid! + $valid_code = true; + } - // Test password - $valid_pass = ($pass == generateHash(REQUEST_POST('password'), $pass)); + // Test password + $valid_pass = ($pass == generateHash(postRequestParameter('password'), $pass)); - // Test transfer amount - $valid_amount = ((REQUEST_ISSET_POST(('points'))) && (REQUEST_POST('points') <= constant('__TRANSFER_MAX_VALUE'))); + // Test transfer amount + $valid_amount = ((isPostRequestParameterSet('points')) && (postRequestParameter('points') <= $content['max_transferable'])); - // Test reason for transfer - $valid_reason = (REQUEST_ISSET_POST(('reason'))); + // Test reason for transfer + $valid_reason = (isPostRequestParameterSet('reason')); - // Test if a recipient is selected - $valid_recipient = (REQUEST_POST('to_uid') > 0); + // Test if a recipient is selected + $valid_recipient = isValidUserId(postRequestParameter('to_userid')); - // Check for nickname extension and set additional data - $nick = false; $ADD = ", userid"; - if (EXT_IS_ACTIVE("nickname")) { - $ADD = ", nickname"; - $nick = true; - } + // Check for nickname extension and set additional data + // @TODO Rewrite this to a filter + $add = ''; + if (isExtensionActive('nickname')) { + $add = ', `nickname`'; + } // END - if - // Re-check receivers and own personal data - $result = SQL_QUERY_ESC("SELECT userid, gender, surname, family, email".$ADD." FROM `{!_MYSQL_PREFIX!}_user_data` WHERE userid IN ('%s','%s') AND `status`='CONFIRMED' ORDER BY userid LIMIT 2", - array($GLOBALS['userid'], bigintval(REQUEST_POST('to_uid'))), __FILE__, __LINE__); - $valid_data = (SQL_NUMROWS($result) == 2); + // Re-check receivers and own personal data + $result = SQL_QUERY_ESC("SELECT `userid`, `gender`, `surname`, `family`, `email`".$add." FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `userid` IN ('%s','%s') AND `status`='CONFIRMED' LIMIT 2", + array( + getMemberId(), + bigintval(postRequestParameter('to_userid')) + ), __FILE__, __LINE__); - if ($valid_code && $valid_pass && $valid_amount && $valid_reason && $valid_recipient) { - // Let's start the transfer and load user data - list($uid1, $gender1, $sname1, $fname1, $email1, $nick1) = SQL_FETCHROW($result); - list($uid2, $gender2, $sname2, $fname2, $email2, $nick2) = SQL_FETCHROW($result); - SQL_FREERESULT($result); - if ($uid1 == $GLOBALS['userid']) { - // Data row 1 is sender's data - define('__SENDER_GENDER' , TRANSLATE_GENDER($gender1)); - define('__SENDER_NICK' , $nick1); - define('__SENDER_SNAME' , $sname1); - define('__SENDER_FNAME' , $fname1); - define('__SENDER_EMAIL' , $email1); - // Data row 2 is recpient's data - define('__RECIPIENT_GENDER' , TRANSLATE_GENDER($gender2)); - define('__RECIPIENT_NICK' , $nick2); - define('__RECIPIENT_SNAME', $sname2); - define('__RECIPIENT_FNAME', $fname2); - define('__RECIPIENT_EMAIL', $email2); + // Do we have two entries? + $valid_data = (SQL_NUMROWS($result) == 2); - // Prepare variables for testing - $TEST_NICK_SENDER = $nick1; - $TEST_NICK_REC = $nick2; - } else { - // Data row 2 is sender's data - define('__SENDER_GENDER' , TRANSLATE_GENDER($gender2)); - define('__SENDER_NICK' , $nick2); - define('__SENDER_SNAME' , $sname2); - define('__SENDER_FNAME' , $fname2); - define('__SENDER_EMAIL' , $email2); - // Data row 1 is recpient's data - define('__RECIPIENT_GENDER' , TRANSLATE_GENDER($gender1)); - define('__RECIPIENT_NICK' , $nick1); - define('__RECIPIENT_SNAME', $sname1); - define('__RECIPIENT_FNAME', $fname1); - define('__RECIPIENT_EMAIL', $email1); + // Final check if all is fine + if ($valid_code && $valid_data && $valid_pass && $valid_amount && $valid_reason && $valid_recipient) { + // Let's start the transfer and load user data + $content['sender'] = SQL_FETCHARRAY($result); + $content['recipient'] = SQL_FETCHARRAY($result); + + // Is the nickname extension not installed? + if (!isExtensionActive('nickname')) { + // Fix empty nicknames + $content['sender']['nickname'] = ''; + $content['recipient']['nickname'] = ''; + } // END - if // Prepare variables for testing - $TEST_NICK_SENDER = $nick2; - $TEST_NICK_REC = $nick1; + $TEST_NICK_SENDER = $content['sender']['nickname']; + $TEST_NICK_REC = $content['recipient']['nickname']; + + // Default is userids for subject line + $SENDER = getMemberId(); + $RECIPIENT = bigintval(postRequestParameter('to_userid')); + + // If nickname is installed we can set the nickname + // @TODO Rewrite this to a filter + if (isExtensionActive('nickname')) { + if (($TEST_NICK_SENDER != getMemberId()) && (!empty($TEST_NICK_SENDER))) { + $SENDER = $content['sender']['nickname']; + } // END - if + + if (($TEST_NICK_REC != postRequestParameter('to_userid')) && (!empty($TEST_NICK_REC))) { + $RECIPIENT = $content['recipient']['nickname']; + } // END - if + } // END - if + + // Remember transfer reason and fancy date/time in constants + $content['reason'] = secureString(postRequestParameter('reason')); + $content['expires'] = '{%config,createFancyTime=transfer_age%}'; + + // Generate tranafer id + $content['trans_id'] = bigintval(generateRandomCode('10', mt_rand(0, 99999), getMemberId(), postRequestParameter('reason'))); + + // Add entries to both tables + SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_user_transfers_in` (`userid`, `from_userid`, `points`, `reason`, `time_trans`, `trans_id`) VALUES (%s,%s,%s,'%s', UNIX_TIMESTAMP(),%s)", + array(bigintval(postRequestParameter('to_userid')), getMemberId(), bigintval(postRequestParameter('points')), postRequestParameter('reason'), $content['trans_id']), __FILE__, __LINE__); + SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_user_transfers_out` (`userid`, `to_userid`, `points`, `reason`, `time_trans`, `trans_id`) VALUES (%s,%s,%s,'%s', UNIX_TIMESTAMP(),%s)", + array(getMemberId(), bigintval(postRequestParameter('to_userid')), bigintval(postRequestParameter('points')), postRequestParameter('reason'), $content['trans_id']), __FILE__, __LINE__); + + // Add points to account *directly* ... + addPointsDirectly('transfer', bigintval(postRequestParameter('to_userid')), bigintval(postRequestParameter('points'))); + + // ... and add it to current user's used points + subtractPoints('transfer', getMemberId(), postRequestParameter('points')); + + // First send email to recipient + $message = loadEmailTemplate('member_transfer_recipient', $content, postRequestParameter('to_userid')); + sendEmail($content['recipient']['email'], '{--TRANSFER_MEMBER_RECIPIENT_SUBJECT--}' . ': ' . $SENDER, $message); + + // Second send email to sender + $message = loadEmailTemplate('member_transfer_sender', $content, getMemberId()); + sendEmail($content['sender']['email'], '{--TRANSFER_MEMBER_SENDER_SUBJECT--}' . ': ' . $RECIPIENT, $message); + + // At last send admin mail(s) + $adminSubject = sprintf("%s (%s->%s)", '{--TRANSFER_ADMIN_SUBJECT--}', $SENDER, $RECIPIENT); + sendAdminNotification($adminSubject, 'admin_transfer_points', $content); + + // Transfer is completed + loadTemplate('admin_settings_saved', false, '
{--TRANSFER_COMPLETED--}' . '
{--TRANSFER_CONTINUE_OVERVIEW--}
'); + } elseif ($valid_code === false) { + // Invalid Touring code! + loadTemplate('admin_settings_unsaved', false, '{--TRANSFER_INVALID_CODE--}'); + unsetPostRequestParameter('ok'); + } elseif ($valid_pass === false) { + // Wrong password entered + loadTemplate('admin_settings_unsaved', false, '{--TRANSFER_INVALID_PASSWORD--}'); + unsetPostRequestParameter('ok'); + } elseif ($valid_amount === false) { + // Too much points entered + loadTemplate('admin_settings_unsaved', false, '{--TRANSFER_INVALID_POINTS--}'); + unsetPostRequestParameter('ok'); + } elseif ($valid_reason === false) { + // No transfer reason entered + loadTemplate('admin_settings_unsaved', false, '{--TRANSFER_INVALID_REASON--}'); + unsetPostRequestParameter('ok'); + } elseif ($valid_recipient === false) { + // No recipient selected + loadTemplate('admin_settings_unsaved', false, '{--TRANSFER_INVALID_RECIPIENT--}'); + unsetPostRequestParameter('ok'); + } elseif ($valid_data === false) { + // No recipient/sender selected + loadTemplate('admin_settings_unsaved', false, '{--TRANSFER_INVALID_DATA--}'); + unsetPostRequestParameter('ok'); } - // Sender's UID is always currently stored in cookie userid... - define('__SENDER_UID' , $GLOBALS['userid']); - define('__RECIPIENT_UID' , REQUEST_POST('to_uid')); + // Free result + SQL_FREERESULT($result); + } // END - if + + if (!isFormSent()) { + // Load member list + if (isExtensionActive('nickname')) { + // Load userid and nickname + $result = SQL_QUERY_ESC("SELECT `userid`, `nickname` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `status`='CONFIRMED' AND `opt_in`='Y' AND `userid` != '%s' ORDER BY `userid` ASC", + array(getMemberId()), __FILE__, __LINE__); + } else { + // Load only userid + $result = SQL_QUERY_ESC("SELECT `userid`, `userid` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `status`='CONFIRMED' AND `opt_in`='Y' AND `userid` != '%s' ORDER BY `userid` ASC", + array(getMemberId()), __FILE__, __LINE__); + } - $SENDER = __SENDER_UID; - $RECIPIENT = __RECIPIENT_UID; - if ($nick) { - if (($TEST_NICK_SENDER != __SENDER_UID) && (!empty($TEST_NICK_SENDER))) { - $SENDER = __SENDER_NICK; + if (!SQL_HASZERONUMS($result)) { + // Load list + $OUT = ' - \n"; - while (list($uid, $nick) = SQL_FETCHROW($result)) { - $OUT .= "