<?php
/************************************************************************
- * MXChange v0.2.1 Start: 10/19/2003 *
- * =============== Last change: 08/26/2004 *
+ * Mailer v0.2.1-FINAL Start: 10/19/2003 *
+ * =================== Last change: 08/26/2004 *
* *
* -------------------------------------------------------------------- *
* File : what-order.php *
* -------------------------------------------------------------------- *
* Kurzbeschreibung : Hier koennen Ihre Mitglieder Mails buchen *
* -------------------------------------------------------------------- *
- * *
+ * $Revision:: $ *
+ * $Date:: $ *
+ * $Tag:: 0.2.1-FINAL $ *
+ * $Author:: $ *
* -------------------------------------------------------------------- *
- * Copyright (c) 2003 - 2008 by Roland Haeder *
- * For more information visit: http://www.mxchange.org *
+ * Copyright (c) 2003 - 2009 by Roland Haeder *
+ * Copyright (c) 2009 - 2016 by Mailer Developer Team *
+ * For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
************************************************************************/
// Some security stuff...
-if (ereg(basename(__FILE__), $_SERVER['PHP_SELF']))
-{
- $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4) . "/security.php";
- require($INC);
-}
- elseif (!IS_LOGGED_IN())
-{
- LOAD_URL(URL."/modules.php?module=index");
-}
- elseif ((!EXT_IS_ACTIVE("order")) && (!IS_ADMIN()))
-{
- ADD_FATAL(EXTENSION_PROBLEM_EXT_INACTIVE, "order");
- return;
+if (!defined('__SECURITY')) {
+ exit();
+} elseif (!isMember()) {
+ redirectToIndexMemberOnlyModule();
}
// Add description as navigation point
-ADD_DESCR("member", basename(__FILE__));
-
-$URL = ""; $id = 0;
-$WHERE = " WHERE visible='Y'";
-
-// Set undefined array elements
-if (empty($_GET['msg'])) $_GET['msg'] = "";
-if (empty($_POST['zip'])) $_POST['zip'] = "";
-if (empty($_POST['html'])) $_POST['html'] = "";
-if (empty($_POST['receiver'])) $_POST['receiver'] = "";
-if (is_admin()) $WHERE = "";
-
-// Add slashes to every value
-foreach($_POST as $key=>$value)
-{
- // Skip submit buttons
- if (($key != "data") && ($key != "frametester")) $_POST[$key] = addslashes($value);
-}
+addYouAreHereLink('member', __FILE__);
-// Minimum mails / order
-define('__MIN_VALUE', $CONFIG['order_min']);
-
-// Count unconfirmed mails
-$result_links = SQL_QUERY_ESC("SELECT id FROM "._MYSQL_PREFIX."_user_links WHERE userid=%d",
- array($GLOBALS['userid']), __FILE__, __LINE__);
-$links = SQL_NUMROWS($result_links);
-SQL_FREERESULT($result_links);
-
-// Does the user has more than 0 mails per day set?
-$HOLIDAY="userid";
-if (GET_EXT_VERSION("holiday") >= "0.1.3")
-{
- // Fetch also holiday activation data
- $HOLIDAY = "holiday_active";
-}
-
-$result_mmails = SQL_QUERY_ESC("SELECT userid, receive_mails, mail_orders, ".$HOLIDAY."
-FROM "._MYSQL_PREFIX."_user_data
-WHERE userid=%d AND max_mails > 0 LIMIT 1",
- array($GLOBALS['userid']), __FILE__, __LINE__);
-
-$mmails = SQL_NUMROWS($result_mmails);
-list($DMY, $MAXI, $ORDERS, $HOLIDAY) = SQL_FETCHROW($result_mmails);
-SQL_FREERESULT($result_mmails);
-if ($HOLIDAY == $DMY) $HOLIDAY='N';
+if ((!isExtensionActive('order')) && (!isAdmin())) {
+ displayMessage('{%pipe,generateExtensionInactiveNotInstalledMessage=order%}');
+ return;
+} // END - if
-$ALLOWED = $MAXI - $ORDERS;
-if ($CONFIG['order_max'] == "MAX") $ALLOWED = $MAXI;
+// Init data
+$data = array(
+ 'id' => '0',
+ 'data_type' => 'TEMP',
+ 'url' => '',
+);
-// Check HTML extension
-$HTML_EXT = EXT_IS_ACTIVE("html_mail");
+$ALLOWED = getUserData('receive_mails') - getUserData('mail_orders');
+if (getOrderMaxFull() == 'MAX') $ALLOWED = getUserData('receive_mails');
// Now check his points amount
-$result_p = SQL_QUERY_ESC("SELECT SUM(points) FROM "._MYSQL_PREFIX."_user_points WHERE userid=%d",
- array($GLOBALS['userid']), __FILE__, __LINE__);
-
-$TOTAL = "0";
-if (SQL_NUMROWS($result_p) > 0)
-{
- // Load points
- list($TOTAL) = SQL_FETCHROW($result_p);
- SQL_FREERESULT($result_p);
-
- // And subtract his used points...
- $result_p = SQL_QUERY_ESC("SELECT used_points FROM "._MYSQL_PREFIX."_user_data WHERE userid=%d LIMIT 1",
- array($GLOBALS['userid']), __FILE__, __LINE__);
-
- list($p) = SQL_FETCHROW($result_p);
- SQL_FREERESULT($result_p);
- $TOTAL -= $p;
-
- // Add (maybe) missing three zeros
- if (!ereg(".", $TOTAL)) $TOTAL .= ".00000";
-}
+$totalPoints = getTotalPoints(getMemberId());
-if (($HOLIDAY == 'Y') && (GET_EXT_VERSION("holiday") >= "0.1.3"))
-{
+// Admin can always book
+if ((isExtensionInstalledAndNewer('holiday', '0.1.3')) && (isUserDataEnabled('holiday_active')) && (!isAdmin())) {
// Holiday is active!
- SQL_FREERESULT($result_p);
- LOAD_TEMPLATE("admin_settings_saved", false, HOLIDAY_ORDER_NOT_POSSIBLE);
-}
- elseif ((!empty($_POST['frametester'])) && ($ALLOWED > 0) && ($_POST['receiver'] > 0))
-{
+ displayMessage('{--MEMBER_HOLIDAY_ORDER_NOT_POSSIBLE--}');
+} elseif ((isPostRequestElementSet('frametester')) && ($ALLOWED > 0) && (postRequestElement('receiver') > 0)) {
// Continue with the frametester, we first need to store the data temporary in the pool
//
// First we would like to store the data and get it's pool position back...
- $result = SQL_QUERY_ESC("SELECT id, data_type FROM "._MYSQL_PREFIX."_pool WHERE sender=%d AND url='%s' AND timestamp > %d LIMIT 1",
- array($GLOBALS['userid'], $_POST['url'], bigintval(time() - $CONFIG['url_tlock'])), __FILE__, __LINE__);
-
- $type = "TEMP"; $id = "0";
- if (SQL_NUMROWS($result) == 1)
- {
- list($id, $type) = SQL_FETCHROW($result);
- SQL_FREERESULT($result);
- }
- if ($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
- $URL = "";
- if ($CONFIG['test_text'] == 'Y')
- {
- // Test submitted text against some filters (length, URLs in text etc.)
- if ((strpos(strtolower($_POST['text']), "https://") > -1) || (strpos(strtolower($_POST['text']), "http://") > -1) || (strpos(strtolower($_POST['text']), "www") > -1))
- {
- // URL found!
- $URL = URL."/modules.php?module=login&what=order&msg=".CODE_URL_FOUND;
- }
- $TEST = str_replace("\n", "", str_replace("\r", "", addslashes($_POST['text'])));
- if (strlen($TEST) > $CONFIG['max_tlength'])
- {
- // Text is too long!
- $URL = URL."/modules.php?module=login&what=order&msg=".CODE_OVERLENGTH;
- }
- }
- // Shall I test the subject line against URLs?
- if ($CONFIG['test_subj'] == 'Y')
- {
- // Check the subject line for issues
- $_POST['subject'] = str_replace("\\", "[nl]", substr($_POST['subject'], 0, 200));
- if ((strpos(strtolower($_POST['subject']), "http://") > -1) || (strpos(strtolower($_POST['subject']), "www") > -1))
- {
- // URL in subject found
- $URL = URL."/modules.php?module=login&what=order&msg=".CODE_SUBJ_URL;
- }
- }
- // And shall I check that his URL is not in the black list?
- if ($CONFIG['url_blacklist'] == 'Y')
- {
- // Ok, I do that for you know...
- $result = SQL_QUERY_ESC("SELECT timestamp FROM "._MYSQL_PREFIX."_url_blist WHERE url='%s' LIMIT 1",
- array($_POST['url']), __FILE__, __LINE__);
-
- if (SQL_NUMROWS($result) == 1)
- {
- // Jupp, we got one listed
- list($blist) = SQL_FETCHROW($result);
- SQL_FREERESULT($result);
- $URL = URL."/modules.php?module=login&what=order&msg=".CODE_BLIST_URL."&blist=".$blist;
- }
- }
- if (($_POST['receiver'] < $CONFIG['order_min']) && (!IS_ADMIN()))
- {
- // Less than allowed receivers entered!
- $URL = URL."/modules.php?module=login&what=order&msg=".CODE_MORE_RECEIVERS3;
- }
-
- // Validate URL
- if (!VALIDATE_URL($_POST['url']))
- {
- // URL is invalid!
- $URL = URL."/modules.php?module=login&what=order&msg=".CODE_INVALID_URL;
- }
-
- // Probe for HTML extension
- if ($HTML_EXT)
- {
- if ($_POST['html'] == 'Y')
- {
- // Chek for valid HTML tags
- $_POST['text'] = HTML_CHECK_TAGS($_POST['text']);
-
- // Maybe invalid tags found?
- if (empty($_POST['text'])) $URL = URL."/modules.php?module=login&what=order&msg=".CODE_INVALID_TAGS."&id=".$id;
- }
- else
- {
- // Remove any HTML code
- $_POST['text'] = str_replace("<", "{OPEN_HTML}", str_replace(">", "{CLOSE_HTML}", $_POST['text']));
- }
- }
- }
- elseif (!IS_ADMIN())
- {
+ // @TODO Try to move out url_tlock to a filter for extra SQL statements
+ $result = sqlQueryEscaped("SELECT
+ `id`,
+ `data_type`
+FROM
+ `{?_MYSQL_PREFIX?}_pool`
+WHERE
+ `sender`=%s AND
+ `url`='%s' AND
+ (UNIX_TIMESTAMP() - `timestamp`) >= {?url_tlock?}
+LIMIT 1",
+ array(
+ getMemberId(),
+ postRequestElement('url')
+ ), __FILE__, __LINE__);
+
+ if (sqlNumRows($result) == 1) {
+ // Load id and mail type
+ $data = sqlFetchArray($result);
+ } // END - if
+
+ // Free result
+ sqlFreeResult($result);
+
+ if ($data['data_type'] == 'TEMP') {
+ // 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
- $URL = URL."/modules.php?module=login&what=order&msg=".CODE_URL_TLOCK."&id=".$id;
+ $data['url'] = 'modules.php?module=login&what=order&code=' . getCode('URL_TIME_LOCK') . '&id=' . $data['id'];
}
- if (empty($URL))
- {
- // Check if category and number of receivers is okay
- $ADD = "";
- if (($CONFIG['order_multi_page'] == 'Y') && (!empty($_POST['zip']))) $ADD = "AND d.zip LIKE '".bigintval($_POST['zip'])."{PER}'";
+ // Still no error?
+ if (empty($data['url'])) {
// Check for userids
- $result = SQL_QUERY_ESC("SELECT DISTINCT c.userid FROM "._MYSQL_PREFIX."_user_cats AS c
-LEFT JOIN "._MYSQL_PREFIX."_user_data AS d
-ON c.userid=d.userid
-WHERE c.cat_id=%d AND c.userid != '%s' AND d.status='CONFIRMED' AND d.receive_mails > 0
-".$ADD."
-ORDER BY d.%s %s",
- array(
- bigintval($_POST['cat']),
- $GLOBALS['userid'],
- $CONFIG['order_select'],
- $CONFIG['order_mode'],
- ), __FILE__, __LINE__);
-
- // Do we enougth receivers left?
- if (SQL_NUMROWS($result) >= $_POST['receiver'])
- {
- // Check for holiday extensions
- $HOLIDAY = false;
- if (GET_EXT_VERSION("holiday") >= "0.1.3")
- {
- // Include checking for users in holiday
- $HOLIDAY = true;
- }
-
+ $result = sqlQueryEscaped("SELECT
+ `c`.`userid`
+FROM
+ `{?_MYSQL_PREFIX?}_user_cats` AS `c`
+INNER JOIN
+ `{?_MYSQL_PREFIX?}_user_data` AS `d`
+ON
+ `c`.`userid`=`d`.`userid`
+WHERE
+ `c`.`cat_id`=%s AND
+ `c`.`userid` != %s AND
+ `d`.`status`='CONFIRMED'
+ " . runFilterChain('user_exclusion_sql', ' ') . " AND
+ `d`.`receive_mails` > 0
+ORDER BY
+ `d`.`{?order_select?}` {?order_mode?}",
+ array(
+ bigintval(postRequestElement('cat')),
+ getMemberId()
+ ), __FILE__, __LINE__);
+
+ // Are there still receivers left?
+ if (sqlNumRows($result) >= postRequestElement('receiver')) {
// Load receivers from database
- $TEST = array(); $cnt = 0;
- while (list($REC) = SQL_FETCHROW($result))
- {
- if ($HOLIDAY)
- {
- // Check for his holiday status
- $result_holiday = SQL_QUERY_ESC("SELECT id FROM "._MYSQL_PREFIX."_user_holidays
-WHERE userid=%d AND holiday_start < ".time()." AND holiday_end > ".time()." LIMIT 1",
- array(bigintval($REC)), __FILE__, __LINE__);
- if (SQL_NUMROWS($result_holiday) == 1) $REC = 0; // Exclude user who are in holiday
-
- // Free memory
- SQL_FREERESULT($result_holiday);
- }
-
- if ($REC > 0)
- {
- // Add receiver
- $TEST[] = $REC;
- $cnt++;
- }
- }
+ $receiverArray = array(); $count = '0';
+ while ($holidayContent = sqlFetchArray($result)) {
+ // Run fetched data through pre filter chain
+ $holidayContent = runFilterChain('pre_mail_recipient_check', $holidayContent);
+
+ // Is still valid id?
+ if (isValidId($holidayContent['userid'])) {
+ // Add receiver then
+ array_push($receiverArray, $holidayContent['userid']);
+ $count++;
+ } // END - if
+ } // END - while
// Free memory
- SQL_FREERESULT($result);
+ sqlFreeResult($result);
// Implode array into string for the sending pool
- $RECEIVER = implode($TEST, ";");
+ $receivers = implode($receiverArray, ';');
// Count array for maximum sent
- $MAX_SEND = count($TEST);
+ $content['target_send'] = count($receiverArray);
// Update receiver list
- $result = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_user_data SET receive_mails=receive_mails-1 WHERE userid IN (%s) LIMIT %s",
- array(str_replace(";", ", ", $RECEIVER), $MAX_SEND), __FILE__, __LINE__);
+ sqlQueryEscaped("UPDATE `{?_MYSQL_PREFIX?}_user_data` SET `receive_mails`=`receive_mails`-1 WHERE `userid` IN (%s) LIMIT %s",
+ array(
+ convertReceivers($receivers),
+ bigintval($content['target_send'])
+ ), __FILE__, __LINE__);
// Is calculated max receivers larger than wanted receivers then reset it
- if ($MAX_SEND > $_POST['receiver']) $MAX_SEND = $_POST['receiver'];
+ if ($content['target_send'] > postRequestElement('receiver')) {
+ $content['target_send'] = bigintval(postRequestElement('receiver'));
+ } // END - if
// Calculate used points
- $USED = $MAX_SEND * GET_PAY_POINTS(bigintval($_POST['type']));
+ $usedPoints = $content['target_send'] * getPaymentPrice(bigintval(postRequestElement('mail_type')));
+
+ // Fix empty zip code
+ if (!isPostRequestElementSet('zip')) {
+ setPostRequestElement('zip', 0);
+ } // END - if
// Check if he has enougth points for this order and selected more than 0 receivers
- if (($USED > 0) && ($USED <= $TOTAL) && ($MAX_SEND > 0))
- {
- // Gettings points is okay, so we can add $USED later from
- $TIME = time();
- if (($id == "0") || ($type != "TEMP"))
- {
- // New order
- $id = 0;
- if ($HTML_EXT)
- {
+ if (($usedPoints > 0) && ($usedPoints <= $totalPoints) && ($content['target_send'] > 0)) {
+ // Gettings points is okay, so we can add $usedPoints later from
+ if ((!isValidId($data['id'])) || ($data['data_type'] != 'TEMP')) {
+ // New order, init data array elements
+ $data = array(
+ 'sender' => getMemberId(),
+ 'subject' => postRequestElement('subject'),
+ 'text' => postRequestElement('text'),
+ 'receivers' => $receivers,
+ 'payment_id' => bigintval(postRequestElement('mail_type')),
+ 'data_type' => 'TEMP',
+ 'timestamp' => 'UNIX_TIMESTAMP()',
+ 'url' => postRequestElement('url'),
+ 'cat_id' => bigintval(postRequestElement('cat')),
+ 'target_send' => bigintval($content['target_send']),
+ 'zip' => bigintval(postRequestElement('zip'), TRUE, FALSE),
+ );
+
+ // Is ext-html_mail active?
+ if (isExtensionActive('html_mail')) {
// HTML extension is active
- $result = SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_pool (sender, subject, text, receivers, payment_id, data_type, timestamp, url, cat_id, target_send, zip, html_msg)
- VALUES ('%s', '%s', '%s', '%s', '%s', 'TEMP', '%s', '%s', '%s', '%s', '%s', '%s')",
-array(
- $GLOBALS['userid'],
- addslashes($_POST['subject']),
- addslashes($_POST['text']),
- $RECEIVER,
- bigintval($_POST['type']),
- $TIME,
- $_POST['url'],
- bigintval($_POST['cat']),
- $MAX_SEND,
- bigintval($_POST['zip']),
- $_POST['html']
-), __FILE__, __LINE__);
- }
- else
- {
- // No HTML extension is active
- $result = SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_pool (sender, subject, text, receivers, payment_id, data_type, timestamp, url, cat_id, target_send, zip)
- VALUES ('%s', '%s', '%s', '%s', '%s', 'TEMP', '%s', '%s', '%s', '%s', '%s')",
-array(
- $GLOBALS['userid'],
- addslashes($_POST['subject']),
- addslashes($_POST['text']),
- $RECEIVER,
- bigintval($_POST['type']),
- $TIME,
- $_POST['url'],
- bigintval($_POST['cat']),
- $MAX_SEND,
- bigintval($_POST['zip']),
-), __FILE__, __LINE__);
- }
- }
- else
- {
- // Change current order
- if ($HTML_EXT)
- {
+ $data['html_msg'] = postRequestElement('html');
+ } // END - if
+
+ // Get insert id
+ $data['id'] = insertDataIntoPool($data);
+ } else {
+ // Update this data
+ $data = array(
+ 'subject' => postRequestElement('subject'),
+ 'text' => postRequestElement('text'),
+ 'receivers' => $receivers,
+ 'payment_id' => bigintval(postRequestElement('mail_type')),
+ 'timestamp' => 'UNIX_TIMESTAMP()',
+ 'url' => postRequestElement('url'),
+ 'cat_id' => bigintval(postRequestElement('cat')),
+ 'target_send' => bigintval($content['target_send']),
+ 'zip' => bigintval(postRequestElement('zip'), TRUE, FALSE),
+ );
+
+ // Is ext-html_mail active?
+ if (isExtensionActive('html_mail')) {
// HTML extension is active
- $result = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_pool SET
-subject='%s',
-text='%s',
-receivers='%s',
-payment_id=%d,
-timestamp=UNIX_TIMESTAMP(),
-url='%s',
-cat_id=%d,
-target_send=%d,
-zip=%d,
-html_msg='%s'
-WHERE id=%d LIMIT 1",
-array(
- $_POST['subject'],
- $_POST['text'],
- $RECEIVER,
- bigintval($_POST['type']),
- $_POST['url'],
- bigintval($_POST['cat']),
- $MAX_SEND,
- bigintval($_POST['zip']),
- $_POST['html'],
- bigintval($id)
-), __FILE__, __LINE__);
- }
- else
- {
- // No HTML extension is active
- $result = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_pool SET
-subject='%s',
-text='%s',
-receivers='%s',
-payment_id=%d,
-timestamp=UNIX_TIMESTAMP(),
-url='%s',
-cat_id=%d,
-target_send=%d,
-zip=%d
-WHERE id=%d LIMIT 1",
-array(
- $_POST['subject'],
- $_POST['text'],
- $RECEIVER,
- bigintval($_POST['type']),
- $_POST['url'],
- bigintval($_POST['cat']),
- $MAX_SEND,
- bigintval($_POST['zip']),
- bigintval($id)
-), __FILE__, __LINE__);
- }
- }
+ $data['html_msg'] = postRequestElement('html');
+ } // END - if
- // Do we need to get the ID number?
- if ($id == 0) {
- // Order is placed as temporary. We need to get it's id for the frametester
- $result = SQL_QUERY_ESC("SELECT id FROM "._MYSQL_PREFIX."_pool WHERE sender=%d AND subject='%s' AND payment_id=%d AND data_type='TEMP' AND timestamp=%d LIMIT 1",
- array(
- $GLOBALS['userid'],
- $_POST['subject'],
- bigintval($_POST['type']),
- $TIME
- ), __FILE__, __LINE__);
-
- list($id) = SQL_FETCHROW($result);
- SQL_FREERESULT($result);
+ // Update pool data
+ updatePoolDataById($data['id'], NULL, $data);
}
- // ID is received so we can redirect the user, used points will be added when he send's out the mail
- $URL = URL."/modules.php?module=frametester&order=".$id."";
- }
- elseif ($MAX_SEND == 0)
- {
+ // Make sure only valid id numbers can pass
+ 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']);
+ } elseif ($content['target_send'] == '0') {
// Not enougth receivers found which can receive mails
- $URL = URL."/modules.php?module=login&what=order&msg=".CODE_MORE_RECEIVERS2;
- }
- else
- {
+ $data['url'] = 'modules.php?module=login&what=order&code=' . getCode('MORE_RECEIVERS2');
+ } else {
// No enougth points left!
- $URL = URL."/modules.php?module=login&what=order&msg=".CODE_MORE_POINTS;
+ $data['url'] = 'modules.php?module=login&what=order&code=' . getCode('MORE_POINTS');
}
- }
- else
- {
+ } else {
// Ordered more mails than he can send in this category
- $URL = URL."/modules.php?module=login&what=order&msg=".CODE_NO_RECS_LEFT;
+ $data['url'] = 'modules.php?module=login&what=order&code=' . getCode('NO_RECS_LEFT');
}
- }
-}
- elseif ($_POST['receiver'] == "0")
-{
+ } // END - if
+} elseif (postRequestElement('receiver') == '0') {
// Not enougth receivers selected
- $URL = URL."/modules.php?module=login&what=order&msg=".CODE_MORE_RECEIVERS1;
-}
- elseif (($ALLOWED == 0) && ($CONFIG['order_max'] == "ORDER"))
-{
+ $data['url'] = 'modules.php?module=login&what=order&code=' . getCode('MORE_RECEIVERS1');
+} elseif (($ALLOWED == '0') && (getOrderMaxFull() == 'ORDER')) {
// No more mail orders allowed
- LOAD_TEMPLATE("admin_settings_saved", false, MEMBER_ORDER_ALLOWED_EXHAUSTED);
-}
- elseif (($links < $CONFIG['unconfirmed']) && ($mmails == "1"))
-{
+ displayMessage('{--MEMBER_ORDER_ALLOWED_EXHAUSTED--}');
+} elseif (getTotalUnconfirmedMails(getMemberId()) < getConfig('max_unconfirmed')) {
+ // Show only enabled categories to the user ...
+ $whereStatement = " WHERE `visible`='Y'";
+
+ // ... but all to the admin
+ if (isAdmin()) $whereStatement = '';
+
// Display order form
- $result_cats = SQL_QUERY("SELECT id, cat FROM "._MYSQL_PREFIX."_cats".$WHERE." ORDER BY sort", __FILE__, __LINE__);
- if (SQL_NUMROWS($result_cats) > 0)
- {
- if ($TOTAL > 0)
- {
+ $result_cats = sqlQuery('SELECT
+ `id`,
+ `cat`
+FROM
+ `{?_MYSQL_PREFIX?}_cats`
+' . $whereStatement . '
+ORDER BY
+ `sort` ASC', __FILE__, __LINE__);
+
+ // Some categories found?
+ if (!ifSqlHasZeroNumRows($result_cats)) {
+ // Enought points left?
+ if ($totalPoints > 0) {
// Initialize array...
- $CATS = array(
- 'id' => array(),
- 'name' => array(),
- 'uids' => array()
+ $categories = array(
+ 'id' => array(),
+ 'name' => array(),
+ 'userids' => array()
);
// Enable HTML checking
- $HTML = ""; $HOLIDAY = false; $HOL_STRING = "";
- if (($HTML_EXT) && ($_POST['html'] == 'Y')) $HTML = " AND html='Y'";
- if (GET_EXT_VERSION("holiday") >= "0.1.3")
- {
- // Extension's version is fine
- $HOLIDAY = true; $HOL_STRING = " AND holiday_active='N'";
- }
+ // @TODO Rewrite this to a filter
+ $HTML = '';
+ if ((isExtensionActive('html_mail')) && (postRequestElement('html') == 'Y')) {
+ $HTML = " AND `html`='Y'";
+ } // END - if
// ... and begin loading stuff
- while (list($id, $cat) = SQL_FETCHROW($result_cats))
- {
- $CATS['id'][] = bigintval($id);
- $CATS['name'][] = $cat;
+ while ($categoriesContent = sqlFetchArray($result_cats)) {
+ $categories['id'][] = bigintval($categoriesContent['id']);
+ array_push($categories['name'], $categoriesContent['cat']);
// Select users in current category
- $result_uids = SQL_QUERY_ESC("SELECT userid FROM "._MYSQL_PREFIX."_user_cats WHERE cat_id=%d AND userid != '%s' ORDER BY userid",
- array(bigintval($id), $GLOBALS['userid']), __FILE__, __LINE__);
+ $result_userids = sqlQueryEscaped('SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_cats` WHERE `cat_id`=%s AND `userid` != %s ORDER BY `userid` ASC',
+ array(bigintval($categoriesContent['id']), getMemberId()), __FILE__, __LINE__);
- $uid_cnt = "0";
- while (list($ucat) = SQL_FETCHROW($result_uids))
- {
- // Check for holiday system
- $HOL_ACTIVE = false;
- if ($HOLIDAY)
- {
- // Check user's holiday status
- $result_holiday = SQL_QUERY_ESC("SELECT DISTINCT d.userid FROM "._MYSQL_PREFIX."_user_data AS d
-LEFT JOIN "._MYSQL_PREFIX."_user_holidays AS h
-ON d.userid=h.userid
-WHERE d.userid=%d AND d.receive_mails > 0 AND d.status='CONFIRMED' AND d.holiday_active='Y'
-AND h.holiday_start < ".time()." AND h.holiday_end > ".time()."
-LIMIT 1", array(bigintval($ucat)), __FILE__, __LINE__);
- if (SQL_NUMROWS($result_holiday) == 1)
- {
- // Holiday is active!
- $HOL_ACTIVE = true;
- }
+ $userid_cnt = '0';
+ while (list($userid) = sqlFetchRow($result_userids)) {
+ // Init filter data array
+ $filterData = array(
+ 'userid' => $userid,
+ 'pre_okay' => TRUE,
+ );
- // Free memory
- SQL_FREERESULT($result_holiday);
- }
+ // Check for holiday system
+ $filterData = runFilterChain('pre_category_mail_order_check', $filterData);
- if (!$HOL_ACTIVE)
- {
+ // Still all fine?
+ if ($filterData['pre_okay'] === TRUE) {
// Check if the user want's to receive mails?
- $result_ver = SQL_QUERY_ESC("SELECT zip FROM "._MYSQL_PREFIX."_user_data WHERE userid=%d".$HTML." AND receive_mails > 0 AND status='CONFIRMED' LIMIT 1",
- array(bigintval($ucat)), __FILE__, __LINE__);
-
- if ((SQL_NUMROWS($result_ver) == 1) && (!empty($_POST['zip'])) && ($CONFIG['order_multi_page'] == 'Y'))
- {
- list($zip) = SQL_FETCHROW($result_ver);
- SQL_FREERESULT($result_ver);
- if (substr($zip, 0, strlen($_POST['zip'])) == $_POST['zip'])
- {
- // Ok, ZIP part is found
- $uid_cnt++;
- }
- }
- else
- {
+ $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 (substr($zip, 0, strlen(postRequestElement('zip'))) == postRequestElement('zip')) {
+ // Ok, ZIP code part is found
+ $userid_cnt++;
+ } // END - if
+ } else {
// Count numbers up!
- $uid_cnt += SQL_NUMROWS($result_ver);
+ $userid_cnt += sqlNumRows($result_ver);
}
- }
- }
+
+ // Free result
+ sqlFreeResult($result_ver);
+ } // END - if
+ } // END - while
// Free memory
- SQL_FREERESULT($result_uids);
- $CATS['uids'][] = $uid_cnt;
- }
+ sqlFreeResult($result_userids);
+ array_push($categories['userids'], $userid_cnt);
+ } // END - while
// Free memory
- SQL_FREERESULT($result_cats);
+ sqlFreeResult($result_cats);
// Now we need to load the mail types...
- $result = SQL_QUERY("SELECT id, price, payment, mail_title FROM "._MYSQL_PREFIX."_payments ORDER BY payment", __FILE__, __LINE__);
-
- $typeS = array();
- if (SQL_NUMROWS($result) > 0)
- {
- // Check for message ID in URL
- $MSG = "";
- switch ($_GET['msg'])
- {
- case CODE_URL_TLOCK:
- $result = SQL_QUERY_ESC("SELECT timestamp FROM "._MYSQL_PREFIX."_pool WHERE id=%d LIMIT 1",
- array(bigintval($_GET['id'])), __FILE__, __LINE__);
-
- // Load timestamp from last order
- list($LORDER) = SQL_FETCHROW($result);
- $LORDER = MAKE_DATETIME($LORDER, "1");
-
- // Free memory
- SQL_FREERESULT($result);
-
- // Calculate hours...
- $STD = round($CONFIG['url_tlock'] / 60 / 60);
-
- // Minutes...
- $MIN = round(($CONFIG['url_tlock'] - $STD * 60 * 60) / 60);
-
- // And seconds
- $SEC = $CONFIG['url_tlock'] - $STD * 60 * 60 - $MIN * 60;
-
- // Finally contruct the message
- $MSG = MEMBER_URL_TIME_LOCK."<BR>".CONFIG_URL_TLOCK." ".$STD." ".
- HOURS.", ".$MIN." ".MINS." "._AND." ".$SEC." ".SECS."<BR>".
- MEMBER_LAST_TLOCK.": ".$LORDER;
- break;
-
- case CODE_OVERLENGTH:
- $MSG = MEMBER_TEXT_OVERLENGTH;
- break;
-
- case CODE_URL_FOUND:
- $MSG = MEMBER_TEXT_CONTAINS_URL;
- break;
-
- case CODE_SUBJ_URL:
- $MSG = MEMBER_SUBJ_CONTAINS_URL;
- break;
-
- case CODE_BLIST_URL:
- $MSG = MEMBER_URL_BLACK_LISTED."<BR>
-".MEMBER_BLIST_TIME.": ".MAKE_DATETIME($_GET['blist'], "0");
- break;
-
- case CODE_NO_RECS_LEFT:
- $MSG = MEMBER_SELECTED_MORE_RECS;
- break;
-
- case CODE_INVALID_TAGS:
- $MSG = MEMBER_HTML_INVALID_TAGS;
- break;
-
- case CODE_MORE_POINTS:
- $MSG = MEMBER_MORE_POINTS_NEEDED;
- break;
-
- case CODE_MORE_RECEIVERS1:
- $MSG = MEMBER_ENTER_MORE_RECEIVERS;
- break;
-
- case CODE_MORE_RECEIVERS2:
- $MSG = MEMBER_NO_MORE_RECEIVERS_FOUND;
- break;
-
- case CODE_MORE_RECEIVERS3:
- $MSG = MEMBER_ENTER_MORE_MIN_RECEIVERS_1.$CONFIG['order_min'].MEMBER_ENTER_MORE_MIN_RECEIVERS_2;
- break;
-
- case CODE_INVALID_URL:
- $MSG = MEMBER_ENTER_INVALID_URL;
- break;
-
- case "": // When no error code is included in the URL we do not need to output an error message as well...
- break;
-
- default:
- $MSG = UNKNOWN_CODE_1.$_GET['msg'].UNKNOWN_CODE_2;
- break;
- }
- if (!empty($MSG))
- {
- // We got system message so we drop it out to the user
- LOAD_TEMPLATE("admin_settings_saved", false, $MSG);
- }
+ $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 (!ifSqlHasZeroNumRows($result)) {
+ // Is the error code set?
+ if (isGetRequestElementSet('code')) {
+ // Display error message
+ displayMessage(getMessageFromErrorCode(getRequestElement('code')));
+ } // END - if
// Load all email types...
- while ($typeS[] = SQL_FETCHROW($result))
- {
- // Nothing to do here... ;-)
- }
+ while ($payment = sqlFetchArray($result)) {
+ array_push($payments, $payment);
+ } // END - while
// Free memory
- SQL_FREERESULT($result);
+ sqlFreeResult($result);
// Output user's points
- $TOTAL = TRANSLATE_COMMA($TOTAL);
+ $content['total_points'] = $totalPoints;
// Check how many mail orders he has placed today and how many he's allowed to send
- switch ($CONFIG['order_max'])
- {
- case "MAX": // He is allowed to send as much as possible
- define('ORDER_MAX_VALUE', ORDER_ALLOED_MAX);
- break;
-
- case "ORDER": // He is allowed to send as much as he setup the receiving value
- define('ORDER_MAX_VALUE', ORDER_ALLOWED_RECEIVE_1.$ALLOWED.ORDER_ALLOWED_RECEIVE_2.$MAXI.ORDER_ALLOWED_RECEIVE_3);
- break;
- }
+ switch (getOrderMaxFull()) {
+ case 'MAX': // He is allowed to send as much as possible
+ $content['order_max_full'] = '{--MEMBER_ORDER_ALLOWED_MAX--}';
+ break;
+
+ case 'ORDER': // He is allowed to send as much as he setup the receiving value
+ $content['order_max_full'] = sprintf(getMessage('MEMBER_ORDER_ALLOWED_RECEIVE'), $ALLOWED, getUserData('receive_mails'));
+ break;
+
+ default: // Unknown/invalid
+ logDebugMessage(__FILE__, __LINE__, sprintf("Unknown order_mas_full config detected.", getOrderMaxFull()));
+ $content['order_max_full'] = '{--MEMBER_ORDER_ALLOWED_UNKNOWN--}';
+ break;
+ } // END - switch
// Load final template
- LOAD_TEMPLATE("member_order_points", false, $TOTAL);
+ loadTemplate('member_order_points', FALSE, $content);
// Reset variables
- $OLD_ORDER = false; $subject = ""; $text = ""; $target = "";
+ $OLD_ORDER = FALSE;
+ $subject = '';
+ $text = '';
+ $target = '';
// Check if we already have an order placed and make it editable
- $result = SQL_QUERY_ESC("SELECT subject, text, payment_id, timestamp, url, target_send, cat_id, zip FROM "._MYSQL_PREFIX."_pool WHERE sender=%d AND data_type='TEMP' LIMIT 1",
- array($GLOBALS['userid']), __FILE__, __LINE__);
-
- if (SQL_NUMROWS($result) == 1)
- {
+ $result = sqlQueryEscaped("SELECT
+ `subject`,
+ `text`,
+ `payment_id`,
+ `timestamp`,
+ `url`,
+ `target_send`,
+ `cat_id`,
+ `zip`
+FROM
+ `{?_MYSQL_PREFIX?}_pool`
+WHERE
+ `sender`=%s AND
+ `data_type`='TEMP'
+LIMIT 1",
+ array(getMemberId()), __FILE__, __LINE__);
+
+ if (sqlNumRows($result) == 1) {
// Old order found
- list($subject, $text, $payment, $tstamp, $url, $target, $cat, $zip) = SQL_FETCHROW($result);
- SQL_FREERESULT($result);
+ $content = merge_array($content, sqlFetchArray($result));
// Fix max receivers when it is too much
- if ($target > $CATS['uids'][$cat]) $target = $CATS['uids'][$cat];
+ if ((isset($categories['userids'][$content['cat_id']])) && ($content['target_send'] > $categories['userids'][$content['cat_id']])) {
+ // Fix it
+ $content['target_send'] = $categories['userids'][$content['cat_id']];
+ } // END - if
// Old order is grabbed
- $OLD_ORDER = true;
- }
- else
- {
+ $OLD_ORDER = TRUE;
+ } else {
// Default output for that your members don't forget it...
- $url = "http://";
+ $content['url'] = 'http://';
+ $content['target_send'] = '{?order_min?}';
+ $content['subject'] = '';
+ $content['text'] = '';
}
- // 01 2 21 12 2 23 443 3 3210
- if ((!empty($_POST['data'])) || (($CONFIG['order_multi_page'] == 'N') && ((!IS_ADMIN()) && (!$HTML_EXT))))
- {
+ // Free result
+ sqlFreeResult($result);
+
+ if ((isPostRequestElementSet('data')) || ((getOrderMultiPage() != 'Y') && ((!isAdmin()) && (!isExtensionActive('html_mail'))))) {
// Pre-output categories
- $CAT = "";
- foreach ($CATS['id'] as $key=>$value)
- {
- $CAT .= " <OPTION value=\"".$value."\"";
- if (($OLD_ORDER) && ($cat == $value)) $CAT .= " selected=\"selected\"";
- $CAT .= ">".$CATS['name'][$key]." (".$CATS['uids'][$key]." ".USER_IN_CAT.")</OPTION>\n";
- }
+ $content['category_selection'] = generateCategoryOptionsList(((isExtensionActive('html_mail')) && (isPostRequestElementSet('html'))) ? postRequestElement('html') : 'N', getMemberId());
+
// Mail type
- $type = "";
- foreach ($typeS as $key=>$value)
- {
- $P = TRANSLATE_COMMA($typeS[$key][1]);
- if (is_array($value))
- {
+ $content['payment_selection'] = '';
+ foreach ($payments as $key => $value) {
+ if (is_array($value)) {
// Output option line
- $type .= " <OPTION value=\"".$typeS[$key][0]."\"";
- if (($OLD_ORDER) && ($payment == $typeS[$key][0])) $type .= " selected=\"selected\"";
- $type .= ">".$P." ".PER_MAIL." - ".$typeS[$key][3]." - ".round($typeS[$key][2])." ".PAYMENT."</OPTION>\n";
- }
- }
-
- // Put all in constants for the template
- define('CATEGORY_SELECTION', $CAT);
- define('TYPE_SELECTION', $type);
- define('TARGET', $target);
- define('SUBJECT', $subject);
- define('TEXT', COMPILE_CODE($text));
- define('T_URL', $url);
-
- if (!empty($_POST['zip']))
- {
+ $content['payment_selection'] .= ' <option value="' . $payments[$key]['id'] . '"';
+ if (($OLD_ORDER) && ($content['payment_id'] == $payments[$key]['id'])) $content['payment_selection'] .= ' selected="selected"';
+ $content['payment_selection'] .= '>{%pipe,translateComma=' . $payments[$key]['price'] . '%} {--PER_MAIL--} - ' . $payments[$key]['mail_title'] . ' - ' . round($payments[$key]['payment']) . ' {--PAYMENT--}</option>';
+ } // END - if
+ } // END - foreach
+
+ // No content is default
+ $content['zip_content'] = '';
+
+ if (isPostRequestElementSet('zip')) {
// Output entered ZIP code
- define('ZIP_OUTPUT', LOAD_TEMPLATE("member_order-zip2", true, $_POST['zip']));
- }
- else
- {
- define('ZIP_OUTPUT', "<TR><TD colspan=\"5\" height=\"5\" class=\"seperator\"> </TD></TR>");
- }
+ $content['zip_content'] = loadTemplate('member_order_zip2', TRUE, postRequestElement('zip'));
+ } // END - if
+
+ // No HTML extension installed by default
+ $content['html_extension'] = '<input type="hidden" name="html" value="N" />';
+
// HTML extension
- if (($HTML_EXT) && ($_POST['html'] == 'Y'))
- {
+ if ((isExtensionActive('html_mail')) && (postRequestElement('html') == 'Y')) {
// Extension is active so output valid HTML tags
- define('MEMBER_HTML_EXTENSION', LOAD_TEMPLATE("member_order-html_ext", true, HTML_ADD_VALID_TAGS()));
- }
- else
- {
- // Extension not active and/or class not uploaded
- define('MEMBER_HTML_EXTENSION', "<TR><TD colspan=\"5\"><INPUT type=\"hidden\" name=\"html\" value=\"N\"></TD></TR>");
- }
+ $content['html_extension'] = loadTemplate('member_order_html_ext', TRUE);
+ } // END - if
// Output form for page 2
- LOAD_TEMPLATE("member_order_page2");
- }
- else
- {
+ loadTemplate('member_order_page2', FALSE, $content);
+ } else {
+ // No HTML extension installed by default
+ $content['html_extension'] = '<input type="hidden" name="html" value="N" />';
+
// Remember maybe entered ZIP code in constant
- $ADD = "";
- if ($HTML_EXT)
- {
+ if (isExtensionActive('html_mail')) {
// Add some content when html extension is active
- if (($CONFIG['order_multi_page'] == 'Y') || (IS_ADMIN())) $ADD = "<TR><TD colspan=\"2\" class=\"seperator bottom2\" height=\"5\"> </TD></TR>\n";
- define('MEMBER_HTML_EXTENSION', LOAD_TEMPLATE("member_order-html_intro", true));
- }
- else
- {
- // No HTML extension installed
- define('MEMBER_HTML_EXTENSION', "<TR><TD colspan=\"2\"><INPUT type=\"hidden\" name=\"html\" value=\"N\"></TD></TR>");
- }
- // Do we want ZIP code or not?
- if (($CONFIG['order_multi_page'] == 'Y') || (IS_ADMIN()))
- {
+ $content['html_extension'] = loadTemplate('member_order_html_intro', TRUE);
+ } // END - if
+
+ // Default is no ZIP code
+ $content['zip_content'] = '';
+
+ // Is sending to ZIP code enabled? (logged-in admin can always send to it)
+ if ((isOrderMultiPageEnabled()) || (isAdmin())) {
// Yes
- $content = array(
- 'zip' => $_POST['zip'],
- 'add' => $ADD
- );
- define('MEMBER_ZIP_CONTENT', LOAD_TEMPLATE("member_order-zip1", true, $content));
- }
- else
- {
- // No
- define('MEMBER_ZIP_CONTENT', "");
- }
+ if (postRequestElement('zip') > 0) {
+ $data = array(
+ 'zip' => bigintval(postRequestElement('zip'))
+ );
+ } else {
+ $data = array(
+ 'zip' => ''
+ );
+ }
+ $content['zip_content'] = loadTemplate('member_order_zip1', TRUE, $data);
+ } // END - if
// Output form for page 1 (ZIP code or HTML)
- LOAD_TEMPLATE("member_order_page1");
+ loadTemplate('member_order_page1', FALSE, $content);
}
- }
- else
- {
+ } else {
// No mail types defined
- OUTPUT_HTML ("<STRONG><SPAN class=\"member_failed\">".MEMBER_NO_PAYMENTS."</SPAN></STRONG>");
+ displayMessage('<span class="bad">{--MEMBER_ORDER_NO_PAYMENTS--}</span>');
}
+ } else {
+ // No points left
+ displayMessage('<span class="notice">{--MEMBER_ORDER_NO_POINTS--}</span>');
}
- else
- {
- // No points left!
- OUTPUT_HTML ("<STRONG><SPAN class=\"member_failed\">".MEMBER_NO_POINTS."</SPAN></STRONG>");
- }
- }
- else
- {
+ } else {
// No cateogries are defined yet
- OUTPUT_HTML ("<STRONG><SPAN class=\"member_failed\">".MEMBER_NO_CATS."</SPAN></STRONG>");
+ displayMessage('<span class="bad">{--MEMBER_NO_CATEGORIES--}</span>');
}
-}
- elseif ($mmails == "0")
-{
- // Please set more than 0 mails per day!
- LOAD_TEMPLATE("admin_settings_saved", false, MEMBER_HAS_ZERO_MMAILS);
-}
- else
-{
- // Please confirm some mails first!
- LOAD_TEMPLATE("admin_settings_saved", false, MEMBER_LINKS_LEFT_1.$links.MEMBER_LINKS_LEFT_2.$CONFIG['unconfirmed'].MEMBER_LINKS_LEFT_3);
+} else {
+ // Please confirm some mails first
+ displayMessage('<span class="notice">{%message,MEMBER_ORDER_LINKS_LEFT=' . getTotalUnconfirmedMails(getMemberId()) . '%}</span>');
}
-if (!empty($URL))
-{
+if (!empty($data['url'])) {
// Redirect to requested URL
- LOAD_URL($URL);
-}
+ redirectToUrl($data['url']);
+} // END - if
-//
+// [EOF]
?>