* $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 *
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
// 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
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__);
'sender' => getMemberId(),
'subject' => postRequestElement('subject'),
'text' => postRequestElement('text'),
- 'receivers' => $receiver
+ 'receivers' => $receivers,
'payment_id' => bigintval(postRequestElement('mail_type')),
'data_type' => 'TEMP',
'timestamp' => 'UNIX_TIMESTAMP()',
$data = array(
'subject' => postRequestElement('subject'),
'text' => postRequestElement('text'),
- 'receivers' => $receiver
+ 'receivers' => $receivers,
'payment_id' => bigintval(postRequestElement('mail_type')),
'timestamp' => 'UNIX_TIMESTAMP()',
'url' => postRequestElement('url'),
}
// 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']);
`sort` ASC', __FILE__, __LINE__);
// Some categories found?
- if (!ifSqlHasZeroNums($result_cats)) {
+ if (!ifSqlHasZeroNumRows($result_cats)) {
// Enought points left?
if ($totalPoints > 0) {
// Initialize array...
// 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)) {
$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);
$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
}
} else {
// No points left
- displayMessage('<span class="bad">{--MEMBER_ORDER_NO_POINTS--}</span>');
+ displayMessage('<span class="notice">{--MEMBER_ORDER_NO_POINTS--}</span>');
}
} else {
// No cateogries are defined yet