]> git.mxchange.org Git - mailer.git/blobdiff - inc/modules/admin/what-send_coupon.php
if is NULL the webmaster's email address will be used instead, made ext-coupon worki...
[mailer.git] / inc / modules / admin / what-send_coupon.php
index 2e4d66a2fcd9ab44b721d01aeb34b033c1f02a7b..65995d8c68e80a95cec64ae15c9091f9446f46b0 100644 (file)
@@ -16,8 +16,8 @@
  * $Author::                                                          $ *
  * -------------------------------------------------------------------- *
  * Copyright (c) 2003 - 2009 by Roland Haeder                           *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team                   *
- * For more information visit: http://www.mxchange.org                  *
+ * Copyright (c) 2009 - 2012 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 *
@@ -46,21 +46,125 @@ addYouAreHereLink('admin', __FILE__);
 // Is the form sent?
 if (isFormSent()) {
        // Are all required fields set?
-       if (!isPostRequestParameterSet('points')) {
+       if (!isPostRequestElementSet('points')) {
                // Points not entered
                displayMessage('{--ADMIN_SEND_COUPON_POINTS_NOT_ENTERED--}');
-       } elseif (!isPostRequestParameterSet('description')) {
+       } elseif (!isPostRequestElementSet('coupon_description')) {
                // Description not entered
                displayMessage('{--ADMIN_SEND_COUPON_DESCRIPTION_NOT_ENTERED--}');
        } else {
                // All fields are set, so we can start looking for users who wants to receive coupons
+               $result = SQL_QUERY("SELECT
+       `userid`
+FROM
+       `{?_MYSQL_PREFIX?}_user_data`
+WHERE
+       `status`='CONFIRMED' AND
+       `receiving_coupons`='Y'
+       " . runFilterChain('user_exclusion_sql', ' ') . "
+ORDER BY
+       `userid` ASC",
+                       __FILE__, __LINE__);
+
+               // Are there entries left?
+               if (!SQL_HASZERONUMS($result)) {
+                       // Convert timestamp selections
+                       $expirationTime = time() + createEpocheTimeFromSelections('coupon_default_time', postRequestArray());
+
+                       // Insert coupon data
+                       SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_coupon_data` (`coupon_expired`, `total_created`, `points`, `coupon_description`) VALUES ('{%%pipe,SQL_EPOCHE_TO_TIMESTAMP=%s%%}', %s,%s,'%s')",
+                               array(
+                                       $expirationTime,
+                                       SQL_NUMROWS($result),
+                                       bigintval(postRequestElement('points')),
+                                       postRequestElement('coupon_description')
+                               ), __FILE__, __LINE__
+                       );
+
+                       // Get the insert id from the table
+                       $couponId = SQL_INSERTID();
+
+                       // Init userid array
+                       $adminUserids = array();
+
+                       // Load entry
+                       while (list($userid) = SQL_FETCHROW($result)) {
+                               // Debug message
+                               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'NUMS=' . SQL_NUMROWS($result) . ',userid=' . $userid);
+
+                               // By default no code is unique
+                               $isUnique = FALSE;
+                               $couponCode = '';
+
+                               // Look for a unique id
+                               while (!$isUnique) {
+                                       /*
+                                        * Add a coupon for this user, first we need to create a
+                                        * table-unique "id". The function generatePassword() can do
+                                        * this job for us but we want to exclude some characters.
+                                        */
+                                       $couponCode = generatePassword(30, array('-', '+', '_', '/', '.'));
+
+                                       // Is it really unique?
+                                       $isUnique = (countSumTotalData($couponCode, 'user_coupons', 'id', 'coupon_code', TRUE) == 0);
+                               } // END - while
+
+                               // The above loop should always set $couponCode, so we can now insert it
+                               SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_user_coupons` (`coupon_id`, `userid`, `coupon_code`) VALUES (%s,%s,'%s')",
+                                       array(
+                                               $couponId,
+                                               $userid,
+                                               $couponCode
+                                       ), __FILE__, __LINE__);
+
+                               // Fill array with all required data
+                               $content = array(
+                                       'coupon_id'      => $couponId,
+                                       'userid'         => $userid,
+                                       'points'         => bigintval(postRequestElement('points')),
+                                       'coupon_code'    => $couponCode,
+                                       'coupon_expired' => generateDateTime($expirationTime, '0')
+                               );
+
+                               // Load member email template
+                               $mailText = loadEmailTemplate('member_coupon_code', $content, $userid);
+
+                               // And deliver it
+                               sendEmail($userid, '{--MEMBER_COUPON_SUBJECT--}', $mailText);
+
+                               // Rember this user for the admin email
+                               array_push($adminUserids, $userid);
+                       } // END - while
+
+                       // Prepare content for template
+                       $content = array(
+                               'userids'            => implode(',', $adminUserids),
+                               'userid_count'       => count($adminUserids),
+                               'coupon_id'          => $couponId,
+                               'points'             => bigintval(postRequestElement('points')),
+                               'coupon_description' => postRequestElement('coupon_description'),
+                               'coupon_expired'     => generateDateTime($expirationTime, '0')
+                       );
+
+                       // Send admin notification
+                       sendAdminNotification('{--ADMIN_COUPON_SUBJECT--}', 'admin_coupon_code', $content);
+
+                       // Coupon has been sent
+                       displayMessage('{--ADMIN_SEND_COUPON_DONE--}');
+               } else {
+                       // No user was found
+                       displayMessage('{--ADMIN_SEND_COUPON_USER_404--}');
+               }
+
+               // Free result
+               SQL_FREERESULT($result);
        }
 } else {
        // Prepare some template data
        $content['coupon_default_time_selection'] = createConfigurationTimeSelections('coupon_default_time', 'WDh');
 
        // Load template
-       loadTemplate('admin_send_coupon', false, $content);
+       loadTemplate('admin_send_coupon', FALSE, $content);
 }
 
 // [EOF]