Skip to content

Commit

Permalink
CraftingStore: Use V4 API that uses safer (header based auth), and ha…
Browse files Browse the repository at this point in the history
…ndle category name changes correctly.
  • Loading branch information
Tim-NL committed Jun 22, 2018
1 parent aa4f66a commit 899196b
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 15 deletions.
7 changes: 4 additions & 3 deletions addons/Donate/integration/craftingstore.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,21 +10,22 @@
$API = $API[0]->value;

$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, array('token: ' . $API));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// Packages
curl_setopt($ch, CURLOPT_URL, 'https://api.craftingstore.net/v2/' . $API . '/packages');
curl_setopt($ch, CURLOPT_URL, 'https://api.craftingstore.net/v4/general/packages');
$cs_packages = curl_exec($ch);
$cs_packages = json_decode($cs_packages, true);

// Categories
curl_setopt($ch, CURLOPT_URL, 'https://api.craftingstore.net/v2/' . $API . '/categories');
curl_setopt($ch, CURLOPT_URL, 'https://api.craftingstore.net/v4/general/categories');
$cs_categories = curl_exec($ch);
$cs_categories = json_decode(str_replace(""", "\"", strip_tags($cs_categories)), true);

// Payments
curl_setopt($ch, CURLOPT_URL, 'https://api.craftingstore.net/v2/' . $API . '/payments');
curl_setopt($ch, CURLOPT_URL, 'https://api.craftingstore.net/v4/general/payments');
$cs_donors = curl_exec($ch);
$cs_donors = json_decode(str_replace(""", "\"", strip_tags($cs_donors)), true);

Expand Down
22 changes: 10 additions & 12 deletions addons/Donate/sync.php
Original file line number Diff line number Diff line change
Expand Up @@ -525,31 +525,30 @@

// Categories
foreach($cs_categories['result'] as $item){

$category_name = htmlspecialchars($item['name']);
$category = $queries->getWhere('donation_categories', array('name', '=', $category_name));
$category_order = $item['order'];
$category_id = $item['id'];

// Does it already exist in the database?
if(!count($category)){
// Non existing, creating.

$category_order = $item['order'];
$category_id = $item['id'];
$queries->create('donation_categories', array(
'name' => $category_name,
'cid' => $category_id,
'order' => ($category_order ? $category_order : 0)
));
}

$categories[] = $item['id'];
$categories[] = $category_name;
}

// Delete categories no longer on web store
$category_query = $queries->getWhere('donation_categories', array('cid', '<>', 0));
foreach($category_query as $item){
if(!in_array($item->cid, $categories)){
$queries->delete('donation_categories', array('cid', '=', $item->cid));
if(!in_array($item->name, $categories)){
$queries->delete('donation_categories', array('name', '=', $item->name));
}
}

Expand Down Expand Up @@ -612,22 +611,21 @@
/*
* Latest donors
*/

if(count($cs_donors['result'])){
// Get latest payment already stored in cache
$latest_payment = $queries->orderWhere('donation_cache', 'id <> 0', 'time', 'DESC');
if(count($latest_payment)) $latest_payment = $latest_payment[0]->time;
else $latest_payment = 0;

foreach($cs_donors['result'] as $item){
if($latest_payment < $item['timestamp']){
if($latest_payment < $item['createdAt']){
// Input into database
$queries->create('donation_cache', array(
'time' => $item['timestamp'],
'uuid' => 'None',
'ign' => htmlspecialchars($item['player_name']),
'time' => $item['createdAt'],
'uuid' => $item['minecraftUUID'],
'ign' => htmlspecialchars($item['minecraftName']),
'price' => $item['price'],
'package' => $item['package']
'package' => (isset($item['packages'][0]) ? $item['packages'][0]['packageId'] : 0) // TODO: support multiple packages
));
}
}
Expand Down

0 comments on commit 899196b

Please sign in to comment.