]> git.mxchange.org Git - mailer.git/blobdiff - inc/modules/member/what-order.php
Renamed ifSqlHasZeroNums() to ifSqlHasZeroNumRows() and improved some queries.
[mailer.git] / inc / modules / member / what-order.php
index 0b187f963e98131437599cd73bccad56ac6daf9c..f2822d0401d494caa5a735c4da1063fb6a3379ba 100644 (file)
@@ -16,7 +16,7 @@
  * $Author::                                                          $ *
  * -------------------------------------------------------------------- *
  * Copyright (c) 2003 - 2009 by Roland Haeder                           *
  * $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 *
  * 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') {
        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&amp;what=order&amp;code=' . getCode('MORE_RECEIVERS3');
-               } // END - if
-
-               // Validate URL
-               if (!isUrlValid(postRequestElement('url'))) {
-                       // URL is invalid!
-                       $data['url'] = 'modules.php?module=login&amp;what=order&amp;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&amp;what=order&amp;code=' . getCode('INVALID_TAGS') . '&amp;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&amp;what=order&amp;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
                } // 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
                // 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)) {
                        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'])) {
                                if (isValidId($holidayContent['userid'])) {
-                                       // Add receiver
-                                       array_push($TEST, $holidayContent['userid']);
+                                       // Add receiver then
+                                       array_push($receiverArray, $holidayContent['userid']);
                                        $count++;
                                } // END - if
                        } // END - while
                                        $count++;
                                } // END - if
                        } // END - while
@@ -234,15 +169,15 @@ LIMIT 1",
                        sqlFreeResult($result);
 
                        // Implode array into string for the sending pool
                        sqlFreeResult($result);
 
                        // Implode array into string for the sending pool
-                       $receiver = implode($TEST, ';');
+                       $receivers = implode($receiverArray, ';');
 
                        // Count array for maximum sent
 
                        // 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(
 
                        // 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__);
 
                                        bigintval($content['target_send'])
                                ), __FILE__, __LINE__);
 
@@ -268,7 +203,7 @@ LIMIT 1",
                                                'sender'      => getMemberId(),
                                                'subject'     => postRequestElement('subject'),
                                                'text'        => postRequestElement('text'),
                                                'sender'      => getMemberId(),
                                                'subject'     => postRequestElement('subject'),
                                                'text'        => postRequestElement('text'),
-                                               'receivers'   => $receiver
+                                               'receivers'   => $receivers,
                                                'payment_id'  => bigintval(postRequestElement('mail_type')),
                                                'data_type'   => 'TEMP',
                                                'timestamp'   => 'UNIX_TIMESTAMP()',
                                                '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'),
                                        $data = array(
                                                'subject'     => postRequestElement('subject'),
                                                'text'        => postRequestElement('text'),
-                                               'receivers'   => $receiver
+                                               'receivers'   => $receivers,
                                                'payment_id'  => bigintval(postRequestElement('mail_type')),
                                                'timestamp'   => 'UNIX_TIMESTAMP()',
                                                'url'         => postRequestElement('url'),
                                                '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
                                }
 
                                // 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&amp;order=' . bigintval($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&amp;order=' . bigintval($data['id']);
@@ -351,7 +286,7 @@ ORDER BY
        `sort` ASC', __FILE__, __LINE__);
 
        // Some categories found?
        `sort` ASC', __FILE__, __LINE__);
 
        // Some categories found?
-       if (!ifSqlHasZeroNums($result_cats)) {
+       if (!ifSqlHasZeroNumRows($result_cats)) {
                // Enought points left?
                if ($totalPoints > 0) {
                        // Initialize array...
                // Enought points left?
                if ($totalPoints > 0) {
                        // Initialize array...
@@ -363,14 +298,10 @@ ORDER BY
 
                        // Enable HTML checking
                        // @TODO Rewrite this to a filter
 
                        // 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 ((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)) {
 
                        // ... and begin loading stuff
                        while ($categoriesContent = sqlFetchArray($result_cats)) {
@@ -383,43 +314,22 @@ ORDER BY
 
                                $userid_cnt = '0';
                                while (list($userid) = sqlFetchRow($result_userids)) {
 
                                $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__);
 
                                                // 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);
                                                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();
                        $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
                                // Is the error code set?
                                if (isGetRequestElementSet('code')) {
                                        // Display error message
@@ -604,7 +514,7 @@ LIMIT 1",
                        }
                } else {
                        // No points left
                        }
                } 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
                }
        } else {
                // No cateogries are defined yet