Merhabalar,
Bir arkadaşım için az önce yaptığım, ürünün kalan gün sayısını gösteren kodu paylaşıyorum sizler ile.
Kodu, templates/temaklasorunuz/clientareaproducts.tpl içindeki kod ile değişmelisiniz. (Temadan temaya çeşitli düzenlemeler olabileceğinden ötürü, yedek alınması ve verdiğim kodun muadili kod ile değişmesi gerekiyor.)
Kod:
{include file="$template/includes/tablelist.tpl" tableName="ServicesList" filterColumn="4" noSortColumns="0"}
<script type="text/javascript">
jQuery(document).ready( function ()
{
var table = jQuery('#tableServicesList').removeClass('hidden').DataTable();
{if $orderby == 'product'}
table.order([1, '{$sort}'], [4, 'asc']);
{elseif $orderby == 'amount' || $orderby == 'billingcycle'}
table.order(2, '{$sort}');
{elseif $orderby == 'nextduedate'}
table.order(3, '{$sort}');
{elseif $orderby == 'domainstatus'}
table.order(4, '{$sort}');
{/if}
table.draw();
jQuery('#tableLoading').addClass('hidden');
});
</script>
<div class="table-container clearfix">
<table id="tableServicesList" class="table table-list hidden">
<thead>
<tr>
<th></th>
<th>{$LANG.orderproduct}</th>
<th>{$LANG.clientareaaddonpricing}</th>
<th>{$LANG.clientareahostingnextduedate}</th>
<th>Kalan Gün</th>
<th>{$LANG.clientareastatus}</th>
<th class="responsive-edit-button" style="display: none;"></th>
</tr>
</thead>
<tbody>
{foreach key=num item=service from=$services}
{assign var="tarih3" value= $smarty.now|date_format:"%D"}
{assign var="tarih1" value= $tarih3|strtotime}
{assign var="tarih2" value= $service.normalisedNextDueDate|strtotime}
{assign var="tarih4" value= $service.regdate|strtotime}
{assign var="toplamsure" value=$tarih2 - $tarih4}
{assign var="kalantarih" value=$tarih2 - $tarih1}
{assign var="kalantarih_normal" value=$kalantarih/(60*60*24)}
{assign var="toplamsure_normal" value=$toplamsure/(60*60*24)}
{math assign="percentage" equation="(x / y) * 100" x=$kalantarih_normal y=$toplamsure_normal format="%.2f"}
<tr onclick="clickableSafeRedirect(event, 'clientarea.php?action=productdetails&id={$service.id}', false)">
<td class="text-center{if $service.sslStatus} ssl-info{/if}" data-element-id="{$service.id}" data-type="service"{if $service.domain} data-domain="{$service.domain}"{/if}>
{if $service.sslStatus}
<img src="{$service.sslStatus->getImagePath()}" data-toggle="tooltip" title="{$service.sslStatus->getTooltipContent()}" class="{$service.sslStatus->getClass()}"/>
{elseif !$service.isActive}
<img src="{$BASE_PATH_IMG}/ssl/ssl-inactive-domain.png" data-toggle="tooltip" title="{lang key='sslState.sslInactiveService'}">
{/if}
</td>
<td><strong>{$service.product}</strong>{if $service.domain}<br /><a rel="nofollow" href="http://{$service.domain}" target="_blank">{$service.domain}</a>{/if}</td>
<td class="text-center" data-order="{$service.amountnum}">{$service.amount}<br />{$service.billingcycle}</td>
<td class="text-center"><span class="hidden">{$service.normalisedNextDueDate}</span>{$service.nextduedate}</td>
<td class="text-center">
{if $service.billingcycle eq $LANG.orderpaymenttermonetime}
{$LANG.orderpaymenttermonetime}
{else}
<div style="margin-bottom:0px !important;" class="progress">
<div class="progress-bar" role="progressbar" style="width: {$percentage}%" aria-valuenow="{$percentage}" aria-valuemin="0" aria-valuemax="100">{$kalantarih/(60*60*24)} gün</div>
</div>
{/if}
</td>
<td class="text-center"><span class="label status status-{$service.status|strtolower}">{$service.statustext}</span></td>
<td class="responsive-edit-button" style="display: none;">
<a rel="nofollow" href="clientarea.php?action=productdetails&id={$service.id}" class="btn btn-block btn-info">
{$LANG.manageproduct}
</a>
</td>
</tr>
{/foreach}
</tbody>
</table>
<div class="text-center" id="tableLoading">
<p><i class="fas fa-spinner fa-spin"></i> {$LANG.loading}</p>
</div>
</div>
v>Not: WHMCS 8.1 ve 7.10.2 de denenmiştir.
Yeni eklediğim barda toplam süre üzerinden yüzde aldığım için ürünün oluşturulma tarihine gerek duyuluyor. Bunu da veri tabanından çekmek için aşağıdaki kodu bir php dosyasının içine kaydedip o dosyayı /includes/hooks/ içine atmalısınız.
<?php
use WHMCS\Database\Capsule;
function clients_services_add_regdate_hook($vars) {
$client = Menu::context('client');
$services = $vars['services'];
foreach($services as $key => $service) {
$regdate = Capsule::table('tblhosting')->where('userid',$client->id)->where('id',$service['id'])->value('regdate');
if ($regdate) {
$services[$key]['regdate'] = $regdate;
}
}
return array("services" => $services);
}
add_hook("ClientAreaPageProductsServices", 1, "clients_services_add_regdate_hook");
?>Saygılarımla,
Uğur Burak ARITAŞ.