<?php if (!defined("WHMCS")) die("This file cannot be accessed directly"); use WHMCS\Database\Capsule; use WHMCS\View\Menu\Item as MenuItem; function restrict_access_to_add_funds($vars) { if (filter_var($_GET['action'], FILTER_SANITIZE_STRING) == 'addfunds') { // Get PDO for the database queries $pdo = Capsule::connection()->getPdo(); if ($vars['clientsdetails']['customfields']) { $customfields = $vars['clientsdetails']['customfields']; foreach ($customfields as $key => $customfield) { ##### Start Database Query ##### try { $customfieldsquery = $pdo->query("SELECT fieldname FROM tblcustomfields WHERE id = " . $pdo->quote($customfield['id'])); while($row = $customfieldsquery->fetch(PDO::FETCH_ASSOC)) { if ($row['fieldname'] == 'Enable Add Funds') { $addfunds = $customfield['value']; } } } catch(PDOException $e) { echo 'ERROR: ' . $e->getMessage(); } } if ($addfunds !== 'on') { header("Location: clientarea.php"); exit(); } } } } function restrict_add_funds_link(MenuItem $primaryNavbar) { $client = Menu::context('client'); // Get PDO for the database queries $pdo = Capsule::connection()->getPdo(); try { $clientquery = $pdo->query("SELECT tblcustomfields.fieldname AS customfieldname, tblcustomfieldsvalues.value AS customfieldvalue FROM tblcustomfields INNER JOIN tblcustomfieldsvalues ON tblcustomfields.id = tblcustomfieldsvalues.fieldid WHERE tblcustomfieldsvalues.relid = " . $pdo->quote($client->id)); while($row = $clientquery->fetch(PDO::FETCH_ASSOC)) { if (trim($row['customfieldname']) == "Enable Add Funds") { $addfunds = $row['customfieldvalue']; } } } catch(PDOException $e) { echo 'ERROR: ' . $e->getMessage(); } if ($addfunds !== 'on') { if (!is_null($primaryNavbar->getChild('Billing'))) { $primaryNavbar->getChild('Billing')->removeChild('Add Funds'); } } } function add_funds_sidebar(MenuItem $primarySidebar) { $filename = APP::getCurrentFileName(); $client = Menu::context("client"); $clientid = intval( $client->id ); $action = $_GET['action']; $allowed = array('invoices', 'quotes', 'masspay', 'addfunds'); /* prevents balance display to unauth'd users */ if ($filename!=='clientarea' || $clientid===0 || strpos($_SERVER['REQUEST_URI'], 'verificationId') !== false || is_null($client)) { return; } // Get PDO for the database queries $pdo = Capsule::connection()->getPdo(); try { $clientquery = $pdo->query("SELECT tblcustomfields.fieldname AS customfieldname, tblcustomfieldsvalues.value AS customfieldvalue FROM tblcustomfields INNER JOIN tblcustomfieldsvalues ON tblcustomfields.id = tblcustomfieldsvalues.fieldid WHERE tblcustomfieldsvalues.relid = " . $pdo->quote($client->id)); while($row = $clientquery->fetch(PDO::FETCH_ASSOC)) { if (trim($row['customfieldname']) == "Enable Add Funds") { $addfunds = $row['customfieldvalue']; } } } catch(PDOException $e) { echo 'ERROR: ' . $e->getMessage(); } /* uncomment this to hide the sidebar if the client has no balance */ if ($client->credit <= 0.00 && $addfunds !== 'on' && filter_var($_GET['action'], FILTER_SANITIZE_STRING) !== 'addfunds') { return; } $primarySidebar->addChild('Client-Balance', array( 'label' => Lang::trans('availcreditbal'), 'uri' => '#', 'order' => '1', 'icon' => 'fa fa-credit-card' )); # Get Currency $getCurrency = getCurrency($clientid); $balanceDisplay = formatCurrency($client->credit, $getCurrency); # Retrieve the panel we just created. $balancePanel = $primarySidebar->getChild('Client-Balance'); // Move the panel to the end of the sorting order so it's always displayed // as the last panel in the sidebar. $balancePanel->moveToBack(); $balancePanel->setOrder(0); # Add Balance. if ($addfunds == 'on' && filter_var($_GET['action'], FILTER_SANITIZE_STRING) !== 'addfunds') { $balancePanel->addChild('balance-amount', array( 'uri' => 'clientarea.php?action=addfunds', 'label' => '<h4 style="text-align:center;">'.$balanceDisplay.'</h4>', 'order' => 1 )); $balancePanel->setFooterHtml( '<a href="clientarea.php?action=addfunds" class="btn btn-success btn-sm btn-block"> <i class="fa fa-plus"></i> Add Funds </a>' ); }else{ $balancePanel->addChild('balance-amount', array( 'label' => '<h4 style="text-align:center;">'.$balanceDisplay.'</h4>', 'order' => 1 )); } } add_hook("ClientAreaPageAddFunds", 0, "restrict_access_to_add_funds"); add_hook("ClientAreaPrimaryNavbar", 0, "restrict_add_funds_link"); add_hook("ClientAreaSecondarySidebar", 0, "add_funds_sidebar"); ?>