- Set up csv storage

- Sort CSV array by timestamp
- Build transaction table from CSV
This commit is contained in:
Keith Solomon
2022-12-17 15:45:30 -06:00
parent e8fe2957a5
commit 9fe9df26bd
3 changed files with 125 additions and 96 deletions
+111 -23
View File
@@ -1,30 +1,118 @@
<?php <?php
function searchForId($id, $array) setlocale(LC_MONETARY, "en_US");
{
foreach ($array as $key => $val) {
if ($val[1] == $id) {
return $key;
}
}
return null; // Open CSV file in read & append mode ('a+')
$fp = fopen('vault.csv', 'a+');
$csvVault = [];
$csv = [];
$lines = file('vault.csv', FILE_IGNORE_NEW_LINES);
foreach ($lines as $key => $value) {
$csv[$key] = str_getcsv($value);
} }
function formatMoney($number, $cents = 1) $zarTxn = getLog('zarathos', $csv);
{ // cents: 0=never, 1=if needed, 2=always $symTxn = getLog('symos', $csv);
if (is_numeric($number)) { // a number
if (!$number) { // zero
$money = ($cents == 2 ? '0.00' : '0'); // output zero
} else { // value
if (floor($number) == $number) { // whole number
$money = number_format($number, ($cents == 2 ? 2 : 0)); // format
} else { // cents
$money = number_format(round($number, 2), ($cents == 0 ? 0 : 2)); // format
} // integer or decimal
} // value
return '$' . $money;
} // numeric
} // formatMoney
$txnVault = array_merge($zarTxn, $symTxn);
foreach ($txnVault as $key => $value) {
$csvComp = searchForId($value['timestamp'], $csv);
if (!$csvComp) {
$csvVault[] = $value;
}
}
// Loop through file pointer and add a line
foreach ($csvVault as $fields) {
fputcsv($fp, $fields);
}
fclose($fp);
// searchForID(): Serach CSV array for timestamp ID
function searchForId($id, $array) {
foreach ($array as $key => $val) {
if ($val[1] == $id) {
return true;
}
}
return false;
}
// formatMoney(): Format raw transaction vaule to display as money
// cents: 0=never, 1=if needed, 2=always
function formatMoney($number, $cents = 1) {
if (is_numeric($number)) {
if (!$number) {
$money = ($cents == 2 ? '0.00' : '0');
} else {
if (floor($number) == $number) {
$money = number_format($number, ($cents == 2 ? 2 : 0));
} else {
$money = number_format(round($number, 2), ($cents == 0 ? 0 : 2));
}
}
return '$' . $money;
}
}
// getLog(): Get log entries for user. Uses CSV array for dupe checking. Returns array.
function getLog($user, $csv) {
$tornURL = 'https://api.torn.com/user/?selections=log&key=';
$i = 0;
if ($user == 'zarathos') {
$usrKey = 'LDtibInYMdgVnM9n';
$user = 'Zarathos';
} else {
$usrKey = 'lne9TZLuqvFXtK3V';
$user = 'Symos';
}
$usrURL = $tornURL . $usrKey;
$usrLog = json_decode(file_get_contents($usrURL));
$usrData = $usrLog->log;
$usrVault = [];
foreach ($usrData as $entry) {
if ($entry->log == 5851) {
$usrVault[$i]['user'] = $user;
$usrVault[$i]['timestamp'] = $entry->timestamp;
$usrVault[$i]['operation'] = $entry->title;
$usrVault[$i]['amount'] = $entry->data->withdrawn;
$csvComp = searchForId($entry->timestamp, $csv);
if ($csvComp) {
//echo 'Withdrawal (ID: ' . $entry->timestamp . ') already in vault';
}
// fputcsv($fp, $usrVault[i]);
} elseif ($entry->log == 5850) {
$usrVault[$i]['user'] = $user;
$usrVault[$i]['timestamp'] = $entry->timestamp;
$usrVault[$i]['operation'] = $entry->title;
$usrVault[$i]['amount'] = $entry->data->deposited;
$csvComp = searchForId($entry->timestamp, $csv);
if ($csvComp) {
//echo 'Deposit (ID: ' . $entry->timestamp . ') already in vault';
}
} else {
continue;
}
$i++;
}
return $usrVault;
}
?> ?>
+12 -77
View File
@@ -1,76 +1,5 @@
<?php <?php
setlocale(LC_MONETARY, "en_US");
include('functions.php'); include('functions.php');
// Open CSV file in read & append mode ('a+')
$fp = fopen('vault.csv', 'a+');
$csvVault = [];
$csv = array();
$lines = file('vault.csv', FILE_IGNORE_NEW_LINES);
foreach ($lines as $key => $value) {
$csv[$key] = str_getcsv($value);
}
function getLog($user) {
$tornURL = 'https://api.torn.com/user/?selections=log&key=';
$i = 0;
if ($user == 'zarathos') {
$usrKey = 'LDtibInYMdgVnM9n';
} else {
$usrKey = 'lne9TZLuqvFXtK3V';
}
$usrURL = $tornURL.$usrKey;
$usrLog = json_decode(file_get_contents($usrURL));
$usrData = $usrLog->log;
$usrVault = [];
foreach ($usrData as $entry) {
if ($entry->log == 5851) {
$usrVault[$i]['user'] = $user;
$usrVault[$i]['timestamp'] = $entry->timestamp;
$usrVault[$i]['operation'] = $entry->title;
$usrVault[$i]['amount'] = $entry->data->withdrawn;
$csvComp = searchForId($entry->timestamp, $csv);
if ($csvComp) {
echo 'Withdrawal (ID: ' . $entry->timestamp . ') already in vault';
}
// fputcsv($fp, $usrVault[i]);
} elseif ($entry->log == 5850) {
$usrVault[$i]['user'] = $user;
$usrVault[$i]['timestamp'] = $entry->timestamp;
$usrVault[$i]['operation'] = $entry->title;
$usrVault[$i]['amount'] = $entry->data->deposited;
$csvComp = searchForId($entry->timestamp, $csv);
if ($csvComp) {
echo 'Deposit (ID: ' . $entry->timestamp . ') already in vault';
}
} else {
continue;
}
$i++;
}
return $usrVault;
}
// Loop through file pointer and a line
// foreach ($zarVault as $fields) {
// fputcsv($fp, $fields);
// }
fclose($fp);
?> ?>
<!DOCTYPE html> <!DOCTYPE html>
@@ -97,21 +26,27 @@ fclose($fp);
</thead> </thead>
<?php <?php
setlocale(LC_MONETARY, "en_US"); // Sort the multidimensional array
usort($csv, "custom_sort");
foreach ($zarVault as $entry) { // Define the custom sort function
function custom_sort($a, $b) {
return $a[1] > $b[1];
}
foreach ($csv as $entry) {
echo '<tr>'; echo '<tr>';
echo '<td>'; echo '<td>';
echo $entry['user']; echo $entry[0];
echo '</td>'; echo '</td>';
echo '<td>'; echo '<td>';
echo date("d/m/Y", $entry['timestamp']); echo date("d/m/Y", $entry[1]);
echo '</td>'; echo '</td>';
echo '<td>'; echo '<td>';
echo $entry['operation']; echo $entry[2];
echo '</td>'; echo '</td>';
echo '<td>'; echo '<td>';
echo formatMoney($entry['amount']); echo formatMoney($entry[3]);
echo '</td>'; echo '</td>';
echo '</tr>'; echo '</tr>';
} }
+6
View File
@@ -2,3 +2,9 @@ Zarathos,1671111614,"Vault withdraw",5000000
Zarathos,1670871611,"Vault withdraw",4000000 Zarathos,1670871611,"Vault withdraw",4000000
Zarathos,1670698196,"Vault withdraw",1000000 Zarathos,1670698196,"Vault withdraw",1000000
Zarathos,1671108304,"Vault deposit",3203752 Zarathos,1671108304,"Vault deposit",3203752
Zarathos,1671306102,"Vault withdraw",6000000
Zarathos,1671306091,"Vault deposit",3915202
Symos,1671136332,"Vault withdraw",750000
Zarathos,1671313291,"Vault withdraw",8000000
Zarathos,1671313285,"Vault deposit",3000000
Zarathos,1671313280,"Vault deposit",3000000
1 Zarathos 1671111614 Vault withdraw 5000000
2 Zarathos 1670871611 Vault withdraw 4000000
3 Zarathos 1670698196 Vault withdraw 1000000
4 Zarathos 1671108304 Vault deposit 3203752
5 Zarathos 1671306102 Vault withdraw 6000000
6 Zarathos 1671306091 Vault deposit 3915202
7 Symos 1671136332 Vault withdraw 750000
8 Zarathos 1671313291 Vault withdraw 8000000
9 Zarathos 1671313285 Vault deposit 3000000
10 Zarathos 1671313280 Vault deposit 3000000