akaunting/app/Utilities/Modules.php
cuneytsenturk 6e7b9d6964 refs #78
2017-11-18 15:23:20 +03:00

68 lines
1.5 KiB
PHP

<?php
namespace App\Utilities;
use Cache;
use Date;
use Module;
use App\Events\PaymentGatewayListing;
class Modules
{
public static function getPaymentMethods()
{
$payment_methods = Cache::get('payment_methods.admin');
$customer = auth()->user()->customer;
if ($customer) {
$payment_methods = Cache::get('payment_methods.customer');
}
if (!empty($payment_methods)) {
return $payment_methods;
}
$gateways = [];
$methods = [];
// Fire the event to extend the menu
$results = event(new PaymentGatewayListing($gateways));
foreach ($results as $gateways) {
foreach ($gateways as $gateway) {
if ($customer && empty($gateway['customer'])) {
continue;
}
$methods[] = $gateway;
}
}
$sort_order = [];
if ($methods) {
foreach ($methods as $key => $value) {
$sort_order[$key] = $value['order'];
}
array_multisort($sort_order, SORT_ASC, $methods);
foreach ($methods as $method) {
$payment_methods[$method['code']] = $method['name'];
}
}
if ($customer) {
Cache::put('payment_methods.customer', $payment_methods, Date::now()->addHour(6));
} else {
Cache::put('payment_methods.admin', $payment_methods, Date::now()->addHour(6));
}
return $payment_methods;
}
}