| <?php |
| |
| /******************************************************************************* |
| * Copyright (c) 2014 Eclipse Foundation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Edouard Poitras (Eclipse Foundation) - Further modifications |
| *******************************************************************************/ |
| |
| /* TShirt Table Schema |
| CREATE TABLE `tshirts` (`code` varchar(32) NOT NULL DEFAULT '', |
| `url` varchar(255) NOT NULL DEFAULT '', |
| `creation_date` DATE NOT NULL, |
| `sent_date` DATE, |
| `bugzilla_id` INT UNSIGNED, |
| `transaction_id` varchar(60), |
| PRIMARY KEY (`code`)) ENGINE=InnoDB DEFAULT CHARSET=utf8; |
| |
| ALTER TABLE `tshirts` ADD INDEX tshirts_bugzilla_id(bugzilla_id); |
| ALTER TABLE `tshirts` ADD INDEX tshirts_sent_date(sent_date); |
| */ |
| |
| /* Sample CSV |
| Code URL Created Date Sent Date Redemption Date Order Completed Date Order # Cost |
| SXZQYQBXWQ https://get.printfection.com/yourdomainhere/2048237065/sxzqyqbxwq 05/16/2014 |
| HKZNWZBNPQ https://get.printfection.com/yourdomainhere/2048237065/hkznwzbnpq 05/16/2014 |
| HSPSSYXWXJ https://get.printfection.com/yourdomainhere/2048237065/hspssyxwxj 05/16/2014 |
| KQGKFFBGBW https://get.printfection.com/yourdomainhere/2048237065/kqgkffbgbw 05/16/2014 |
| XJFWWBWXPJ https://get.printfection.com/yourdomainhere/2048237065/xjfwwbwxpj 05/16/2014 |
| |
| INSERT INTO tshirts VALUES ("SXZQYQBXWQ", "https://get.printfection.com/yourdomainhere/2048237065/sxzqyqbxwq", '2014-05-16', null, null, null); |
| */ |
| |
| require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php"); |
| |
| function get_tshirt_link($bugzilla_id, $transaction_id) { |
| if ($transaction_id && $bugzilla_id) { |
| // Check to see if this transaction has already been processed. |
| $check_contribution = new Contribution(); |
| $check_transaction = $check_contribution->selectContributionExists($transaction_id); |
| if ($check_transaction == FALSE) { |
| $code = get_new_code(); |
| // Set the bugzilla ID for that code |
| consume_code($code['code'], $bugzilla_id, $transaction_id); |
| } else { // Try getting the existing code |
| $code = get_existing_code($transaction_id); |
| if (!isset($code['url'])) { // Get new code |
| $code = get_new_code(); |
| consume_code($code['code'], $bugzilla_id, $transaction_id); |
| } |
| } |
| return $code['url']; |
| } |
| return "Invalid Transaction"; |
| } |
| |
| function get_new_code() { |
| $App = new App(); |
| $sql = "SELECT code, url FROM tshirts WHERE sent_date IS NULL LIMIT 1"; |
| $tmp = mysql_fetch_assoc($App->eclipse_sql($sql)); |
| return $tmp; |
| } |
| |
| function get_existing_code($transaction_id) { |
| $App = new App(); |
| $sql = "SELECT code, url FROM tshirts WHERE transaction_id = " . |
| $App->returnQuotedString($App->sqlSanitize($transaction_id)) . |
| " ORDER BY sent_date DESC LIMIT 1"; |
| $tmp = mysql_fetch_assoc($App->eclipse_sql($sql)); |
| return $tmp; |
| } |
| |
| function consume_code($code, $bugzilla_id, $transaction_id) { |
| $App = new App(); |
| $sql = "UPDATE tshirts SET sent_date = CURDATE(), bugzilla_id = " . |
| $App->returnQuotedString($App->sqlSanitize($bugzilla_id)) . ", transaction_id = " . |
| $App->returnQuotedString($App->sqlSanitize($transaction_id)) . " WHERE code = " . |
| $App->returnQuotedString($App->sqlSanitize($code)); |
| $App->eclipse_sql($sql); |
| } |