X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Fmodules%2Fmember%2Fwhat-order.php;h=f2822d0401d494caa5a735c4da1063fb6a3379ba;hp=0b187f963e98131437599cd73bccad56ac6daf9c;hb=49acdb7a7adbcf25a8e8683b5581bfcec72b23bd;hpb=155492a5b96cec674846973a8524238b0365a848 diff --git a/inc/modules/member/what-order.php b/inc/modules/member/what-order.php index 0b187f963e..f2822d0401 100644 --- a/inc/modules/member/what-order.php +++ b/inc/modules/member/what-order.php @@ -16,7 +16,7 @@ * $Author:: $ * * -------------------------------------------------------------------- * * Copyright (c) 2003 - 2009 by Roland Haeder * - * Copyright (c) 2009 - 2013 by Mailer Developer Team * + * Copyright (c) 2009 - 2015 by Mailer Developer Team * * For more information visit: http://mxchange.org * * * * This program is free software; you can redistribute it and/or modify * @@ -94,79 +94,31 @@ LIMIT 1", sqlFreeResult($result); if ($data['data_type'] == 'TEMP') { - /* - * No entry found, so we need to check out the stats table as well... - * :) We have to add that suff here, now we continue WITHOUT checking - * and check the text and subject against some filters - */ - $data['url'] = ''; - if (!isAllowUrlInTextEnabled()) { - // Test submitted text against some filters (length, URLs in text etc.) - if ((isInStringIgnoreCase('https://', postRequestElement('text'))) || (isInStringIgnoreCase('http://', postRequestElement('text'))) || (isInStringIgnoreCase('www', postRequestElement('text')))) { - // URL found - $data['url'] = 'modules.php?module=login&what=order&code=' . getCode('URL_FOUND'); - } // END - if - - // Remove new-line and carriage-return characters - $TEST = str_replace(array(PHP_EOL, chr(13)), array('', ''), postRequestElement('text')); - - // Text length within allowed length? - if (strlen($TEST) > getMaxTextLength()) { - // Text is too long! - $data['url'] = 'modules.php?module=login&what=order&code=' . getCode('OVERLENGTH'); - } // END - if - } // END - if - - // Shall I test the subject line against URLs? - if (!isAllowUrlInSubjectEnabled()) { - // Check the subject line for issues - setPostRequestElement('subject', str_replace(chr(92), '[nl]', substr(postRequestElement('subject'), 0, 200))); - if ((isInStringIgnoreCase('https://', postRequestElement('subject'))) || (isInStringIgnoreCase('http://', postRequestElement('subject'))) || (isInStringIgnoreCase('www', postRequestElement('subject')))) { - // URL in subject found - $data['url'] = 'modules.php?module=login&what=order&code=' . getCode('SUBJECT_URL'); - } // END - if - } // END - if - - // And shall I check that his URL is not in the black list? - if ((isExtensionActive('blacklist')) && (isUrlBlacklisted(postRequestElement('url')))) { - // Create redirect-URL - $data['url'] = 'modules.php?module=login&what=order&code=' . getCode('BLIST_URL') . '&blist=' . $GLOBALS['blacklist_data'][postRequestElement('url')]['timestamp']; - } // END - if - - // Enougth receivers entered? - if ((postRequestElement('receiver') < getOrderMin()) && (!isAdmin())) { - // Less than allowed receivers entered! - $data['url'] = 'modules.php?module=login&what=order&code=' . getCode('MORE_RECEIVERS3'); - } // END - if - - // Validate URL - if (!isUrlValid(postRequestElement('url'))) { - // URL is invalid! - $data['url'] = 'modules.php?module=login&what=order&code=' . getCode('INVALID_URL'); - } // END - if - - // Probe for HTML extension - if (isExtensionActive('html_mail')) { - // HTML or regular text mail? - if (postRequestElement('html') == 'Y') { - // Chek for valid HTML tags - $checked = checkHtmlTags(postRequestElement('text'))); - - // Maybe invalid tags found? - if (empty($checked)) { - // Invalid HTML tags found - $data['url'] = 'modules.php?module=login&what=order&code=' . getCode('INVALID_TAGS') . '&id=' . $data['id']; - } // END - if - } else { - // Remove any HTML code - setPostRequestElement('text', str_replace(array('<', '>'), array('{OPEN_HTML}', '{CLOSE_HTML}'), postRequestElement('text'))); - } - } // END - if - - // Is mail type set? - if ((!isPostRequestElementSet('mail_type')) || (postRequestElement('mail_type') < 1)) { - // Not correctly set - $data['url'] = 'modules.php?module=login&what=order&code=' . getCode('NO_MAIL_TYPE'); + // Prepare data for filter chain + $filterData = array( + 'url' => postRequestElement('url'), + 'text' => postRequestElement('text'), + 'subject' => postRequestElement('subject'), + 'receiver' => bigintval(postRequestElement('receiver')), + 'mail_type' => bigintval(postRequestElement('mail_type')), + 'html' => postRequestElement('html'), + 'id' => bigintval($data['id']), + 'redirect' => '', + ); + + // Run the filter chain + $filterData = runFilterChain('pre_mail_order', $filterData); + + // Copy field redirect->url + $data['url'] = $filterData['redirect']; + + // Is there an error? + if (empty($data['url'])) { + // Copy all filter data -> POST + foreach ($filterData as $key => $value) { + // Set it + setPostRequestElement($key, $value); + } // END - foreach } // END - if } elseif (!isAdmin()) { // He has already sent a mail within a specific time @@ -200,32 +152,15 @@ ORDER BY // Are there still receivers left? if (sqlNumRows($result) >= postRequestElement('receiver')) { // Load receivers from database - $TEST = array(); $count = '0'; + $receiverArray = array(); $count = '0'; while ($holidayContent = sqlFetchArray($result)) { - if (isExtensionInstalledAndNewer('holiday', '0.1.3')) { - // Check for his holiday status - $result_holiday = sqlQueryEscaped("SELECT - `id` -FROM - `{?_MYSQL_PREFIX?}_user_holidays` -WHERE - `userid`=%s AND - `holiday_start` < UNIX_TIMESTAMP() AND - `holiday_end` > UNIX_TIMESTAMP() -LIMIT 1", - array($holidayContent['userid']), __FILE__, __LINE__); - if (sqlNumRows($result_holiday) == 1) { - // Exclude user who are in holiday - $holidayContent['userid'] = '0'; - } // END - if - - // Free memory - sqlFreeResult($result_holiday); - } // END - if + // Run fetched data through pre filter chain + $holidayContent = runFilterChain('pre_mail_recipient_check', $holidayContent); + // Is still valid id? if (isValidId($holidayContent['userid'])) { - // Add receiver - array_push($TEST, $holidayContent['userid']); + // Add receiver then + array_push($receiverArray, $holidayContent['userid']); $count++; } // END - if } // END - while @@ -234,15 +169,15 @@ LIMIT 1", sqlFreeResult($result); // Implode array into string for the sending pool - $receiver = implode($TEST, ';'); + $receivers = implode($receiverArray, ';'); // Count array for maximum sent - $content['target_send'] = count($TEST); + $content['target_send'] = count($receiverArray); // Update receiver list sqlQueryEscaped("UPDATE `{?_MYSQL_PREFIX?}_user_data` SET `receive_mails`=`receive_mails`-1 WHERE `userid` IN (%s) LIMIT %s", array( - convertReceivers($receiver), + convertReceivers($receivers), bigintval($content['target_send']) ), __FILE__, __LINE__); @@ -268,7 +203,7 @@ LIMIT 1", 'sender' => getMemberId(), 'subject' => postRequestElement('subject'), 'text' => postRequestElement('text'), - 'receivers' => $receiver + 'receivers' => $receivers, 'payment_id' => bigintval(postRequestElement('mail_type')), 'data_type' => 'TEMP', 'timestamp' => 'UNIX_TIMESTAMP()', @@ -291,7 +226,7 @@ LIMIT 1", $data = array( 'subject' => postRequestElement('subject'), 'text' => postRequestElement('text'), - 'receivers' => $receiver + 'receivers' => $receivers, 'payment_id' => bigintval(postRequestElement('mail_type')), 'timestamp' => 'UNIX_TIMESTAMP()', 'url' => postRequestElement('url'), @@ -311,7 +246,7 @@ LIMIT 1", } // Make sure only valid id numbers can pass - assert(isValidId($data['id'])); + assert((isset($data['id'])) && (isValidId($data['id']))); // Id is received so we can redirect the user, used points will be added when he send's out the mail $data['url'] = 'modules.php?module=frametester&order=' . bigintval($data['id']); @@ -351,7 +286,7 @@ ORDER BY `sort` ASC', __FILE__, __LINE__); // Some categories found? - if (!ifSqlHasZeroNums($result_cats)) { + if (!ifSqlHasZeroNumRows($result_cats)) { // Enought points left? if ($totalPoints > 0) { // Initialize array... @@ -363,14 +298,10 @@ ORDER BY // Enable HTML checking // @TODO Rewrite this to a filter - $HTML = ''; $HOL_STRING = ''; + $HTML = ''; if ((isExtensionActive('html_mail')) && (postRequestElement('html') == 'Y')) { $HTML = " AND `html`='Y'"; } // END - if - if (isExtensionInstalledAndNewer('holiday', '0.1.3')) { - // Extension's version is fine - $HOL_STRING = " AND `holiday_active`='N'"; - } // END - if // ... and begin loading stuff while ($categoriesContent = sqlFetchArray($result_cats)) { @@ -383,43 +314,22 @@ ORDER BY $userid_cnt = '0'; while (list($userid) = sqlFetchRow($result_userids)) { - // Check for holiday system - $isHolidayActive = FALSE; - if (isExtensionInstalledAndNewer('holiday', '0.1.3')) { - // Check user's holiday status - $result_holiday = sqlQueryEscaped("SELECT - COUNT(`d`.`userid`) AS `cnt` -FROM - `{?_MYSQL_PREFIX?}_user_data` AS `d` -LEFT JOIN - `{?_MYSQL_PREFIX?}_user_holidays` AS `h` -ON - `d`.`userid`=`h`.`userid` -WHERE - `d`.`userid`=%s AND - `d`.`receive_mails` > 0 AND - `d`.`status`='CONFIRMED' AND - `d`.`holiday_active`='Y' AND - `h`.`holiday_start` < UNIX_TIMESTAMP() AND - `h`.`holiday_end` > UNIX_TIMESTAMP() -LIMIT 1", - array(bigintval($userid)), __FILE__, __LINE__); - - // Fetch entry - list($count) = sqlFetchRow($result_holiday); - - // Free memory - sqlFreeResult($result_holiday); + // Init filter data array + $filterData = array( + 'userid' => $userid, + 'pre_okay' => TRUE, + ); - // Is holiday is active? - $isHolidayActive = ($count == 1); - } // END - if + // Check for holiday system + $filterData = runFilterChain('pre_category_mail_order_check', $filterData); - if ($isHolidayActive === FALSE) { + // Still all fine? + if ($filterData['pre_okay'] === TRUE) { // Check if the user want's to receive mails? $result_ver = sqlQueryEscaped("SELECT `zip` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `userid`=%s" . $HTML . " AND `receive_mails` > 0 AND `status`='CONFIRMED' LIMIT 1", array(bigintval($userid)), __FILE__, __LINE__); + // Is an entry found? if ((sqlNumRows($result_ver) == 1) && (isPostRequestElementSet('zip')) && (isOrderMultiPageEnabled())) { // Get zip code list($zip) = sqlFetchRow($result_ver); @@ -449,7 +359,7 @@ LIMIT 1", $result = sqlQuery("SELECT `id`, `price`, `payment`, `mail_title` FROM `{?_MYSQL_PREFIX?}_payments` WHERE `price` > 0 AND `payment` > 0 ORDER BY `payment` ASC", __FILE__, __LINE__); $payments = array(); - if (!ifSqlHasZeroNums($result)) { + if (!ifSqlHasZeroNumRows($result)) { // Is the error code set? if (isGetRequestElementSet('code')) { // Display error message @@ -604,7 +514,7 @@ LIMIT 1", } } else { // No points left - displayMessage('{--MEMBER_ORDER_NO_POINTS--}'); + displayMessage('{--MEMBER_ORDER_NO_POINTS--}'); } } else { // No cateogries are defined yet