Hal9000 Posted October 4, 2016 Share Posted October 4, 2016 Hi there! Just upgraded to WHMCS v7, went through the release notes, adapted everything etc... looking good. One thing though, maybe I haven't figured it out: the new domain checker, which is now integrated in the cart (btw maybe you should specify in the docs that only the standard cart supports it), is pretty good. However, I am missing an essential feature, which is exploring the available TLDs we have on offer. I don't see a way to display a list, categorized like in the last WHMCS version. If it's not there anymore, I will have to implement it myself... 0 Quote Link to comment Share on other sites More sharing options...
sentq Posted October 4, 2016 Share Posted October 4, 2016 list of TLDs was displayed in domain checker page, this page is removed from v7 0 Quote Link to comment Share on other sites More sharing options...
Hal9000 Posted October 4, 2016 Author Share Posted October 4, 2016 Bummer... There are so many TLDs the customer will never know about because he has no way to see them now... But whatever, I will code my own pricelist page then. 0 Quote Link to comment Share on other sites More sharing options...
Surcouf Posted October 10, 2016 Share Posted October 10, 2016 Hello, I have just updated and I can't understand this demotion in the new version... Wich solutions are possible to have a full table to show my customer the full list of available TLD... Thank you very much for your help. Regards, E.D. 0 Quote Link to comment Share on other sites More sharing options...
Hal9000 Posted October 10, 2016 Author Share Posted October 10, 2016 I just coded my own pricelist, it is not 100% what it was before, because I also adapted it to my needs as I was at it, but it should work fine for most I guess... Â domainpricelist.php <?php use Illuminate\Database\Capsule\Manager as DB; define("CLIENTAREA", true); require("init.php"); $ca = new WHMCS_ClientArea(); $ca->setPageTitle($whmcs->get_lang('domainspricing')); $ca->addToBreadCrumb('index.php', $whmcs->get_lang('globalsystemname')); $ca->addToBreadCrumb('domainpricelist.php', $whmcs->get_lang('domainspricing')); $ca->initPage(); $currencyid = $whmcs->get_req_var('currency'); if (!$currencyid) { $currencyid = $whmcs->get_req_var('currencyid'); } if (!is_numeric($currencyid)) { $currency = array(); } else { $currency = getCurrency('', $currencyid); } if (!$currency || !is_array($currency) || !isset($currency['id'])) { $currency = getCurrency(); } $currencyid = $currency['id']; $categories = array(); $tldcategories = DB::table('tbltld_category_pivot as p') ->join('tbltld_categories as c', 'c.id', '=', 'p.category_id') ->join('tbltlds as t', 't.id', '=', 'p.tld_id') ->join('tbldomainpricing as d', DB::raw("binary d.extension"), '=', DB::raw("binary CONCAT('.', t.tld)")) ->orderBy('c.is_primary', 'desc') ->orderBy('c.display_order', 'asc') ->orderBy('t.tld', 'asc') ->select(['c.id', 'c.category', 't.tld']) ->get(); foreach ($tldcategories as $category) { if (!isset($categories[$category->id])) { $cat = new stdClass(); $cat->id = $category->id; $cat->category = $category->category; $cat->topLevelDomains = array(); $categories[$category->id] = $cat; } $categories[$category->id]->topLevelDomains[] = $category->tld; } $tldpricelist = DB::table('tbldomainpricing as d') ->join('tblpricing as p', 'p.relid', '=', 'd.id') ->where('p.currency', '=', $currencyid) ->whereIn('p.type', ['domainregister', 'domaintransfer', 'domainrenew']) ->orderBy('d.order') ->select(['d.extension as tld', 'd.group', DB::raw("SUM(IF(type='domainregister', msetupfee, NULL)) AS register"), DB::raw("SUM(IF(type='domaintransfer', msetupfee, NULL)) AS transfer"), DB::raw("SUM(IF(type='domainrenew', msetupfee, NULL)) AS renew")]) ->groupBy('d.extension') ->get(); $tldpricing = array(); foreach ($tldpricelist as $tld) { $tldpricing[substr($tld->tld, 1)] = $tld; } $ca->setTemplate('domainpricelist'); $ca->assign('tldcategories', $categories); $ca->assign('tldpricing', $tldpricing); $ca->assign('tldpricelist', $tldpricelist); $ca->assign('currency', $currency); $ca->output(); Â domainpricelist.tpl {if !$loggedin && $currencies} <div class="currencychooser pull-right clearfix margin-bottom"> <div class="btn-group" role="group"> {foreach from=$currencies item=curr} <a href="domainpricelist.php?currency={$curr.id}" class="btn btn-default{if $currency.id eq $curr.id} active{/if}"> <img src="{$BASE_PATH_IMG}/flags/{if $curr.code eq "AUD"}au{elseif $curr.code eq "CAD"}ca{elseif $curr.code eq "EUR"}eu{elseif $curr.code eq "GBP"}gb{elseif $curr.code eq "INR"}in{elseif $curr.code eq "JPY"}jp{elseif $curr.code eq "USD"}us{elseif $curr.code eq "ZAR"}za{elseif $curr.code eq "CHF"}ch{else}na{/if}.png" border="0" alt="" /> {$curr.code} </a> {/foreach} </div> </div> <div class="clearfix"></div> {/if} <div id="pricingTable"> <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> {foreach $tldcategories as $tldCategory} <div class="panel panel-default"> <div class="panel-heading" role="tab" id="heading{$tldCategory->id}"> <h4 class="panel-title"> <a data-toggle="collapse" data-parent="#accordion" href="#collapse{$tldCategory->id}" aria-expanded="{if $tldCategory@first}true{else}false{/if}" aria-controls="collapse{$tldCategory->id}" class="domain-tld-pricing-category"> {$tldCategory->category} {$LANG.tldpricing} </a> </h4> </div> <div id="collapse{$tldCategory->id}" class="panel-collapse collapse{if $tldCategory@first} in{/if}" role="tabpanel" aria-labelledby="heading{$tldCategory->id}"> <div class="panel-body"> <div class="row"> <div class="col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2 table-responsive domain-tld-pricing-table-responsive"> <table class="table table-striped table-framed"> <thead> <tr> <th class="text-center">{$LANG.domaintld}</th> {*<th class="text-center">{$LANG.domainminyears}</th>*} <th class="text-center">{$LANG.domainsregister}</th> <th class="text-center">{$LANG.domainstransfer}</th> <th class="text-center">{$LANG.domainsrenew}</th> </tr> </thead> <tbody> {foreach $tldCategory->topLevelDomains as $tld} <tr> <td>.{$tld}</td> {*<td class="text-center">{$tldpricing.{$tld->tld}.period}</td>*} <td class="text-center">{if $tldpricing[$tld]->register}{$currency.prefix} {$tldpricing[$tld]->register} {$currency.suffix}{else}{$LANG.domainregnotavailable}{/if}</td> <td class="text-center">{if $tldpricing[$tld]->transfer}{$currency.prefix} {$tldpricing[$tld]->transfer} {$currency.suffix}{else}{$LANG.domainregnotavailable}{/if}</td> <td class="text-center">{if $tldpricing[$tld]->renew}{$currency.prefix} {$tldpricing[$tld]->renew} {$currency.suffix}{else}{$LANG.domainregnotavailable}{/if}</td> </tr> {/foreach} </tbody> </table> </div> </div> </div> </div> </div> {/foreach} <div class="panel panel-default"> <div class="panel-heading" role="tab" id="heading{$tldCategory->id}"> <h4 class="panel-title"> <a data-toggle="collapse" data-parent="#accordion" href="#collapseAll" aria-expanded="false" aria-controls="collapseAll" class="domain-tld-pricing-category"> {$LANG.alltldpricing} </a> </h4> </div> <div id="collapseAll" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingAll"> <div class="panel-body"> <div class="row"> <div class="col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2 table-responsive domain-tld-pricing-table-responsive"> <table class="table table-striped table-framed"> <thead> <tr> <th class="text-center">{$LANG.domaintld}</th> {*<th class="text-center">{$LANG.domainminyears}</th>*} <th class="text-center">{$LANG.domainsregister}</th> <th class="text-center">{$LANG.domainstransfer}</th> <th class="text-center">{$LANG.domainsrenew}</th> </tr> </thead> <tbody> {foreach $tldpricelist as $tld} <tr> <td>{$tld->tld}</td> {*<td class="text-center">{$tld->period}</td>*} <td class="text-center">{if $tld->register}{$currency.prefix} {$tld->register} {$currency.suffix}{else}{$LANG.domainregnotavailable}{/if}</td> <td class="text-center">{if $tld->transfer}{$currency.prefix} {$tld->transfer} {$currency.suffix}{else}{$LANG.domainregnotavailable}{/if}</td> <td class="text-center">{if $tld->renew}{$currency.prefix} {$tld->renew} {$currency.suffix}{else}{$LANG.domainregnotavailable}{/if}</td> </tr> {/foreach} </tbody> </table> </div> </div> </div> </div> </div> </div> </div> {if !$loggedin && $currencies} <div class="currencychooser pull-right clearfix margin-bottom"> <div class="btn-group" role="group"> {foreach from=$currencies item=curr} <a href="domainpricelist.php?currency={$curr.id}" class="btn btn-default{if $currency.id eq $curr.id} active{/if}"> <img src="{$BASE_PATH_IMG}/flags/{if $curr.code eq "AUD"}au{elseif $curr.code eq "CAD"}ca{elseif $curr.code eq "EUR"}eu{elseif $curr.code eq "GBP"}gb{elseif $curr.code eq "INR"}in{elseif $curr.code eq "JPY"}jp{elseif $curr.code eq "USD"}us{elseif $curr.code eq "ZAR"}za{elseif $curr.code eq "CHF"}ch{else}na{/if}.png" border="0" alt="" /> {$curr.code} </a> {/foreach} </div> </div> <div class="clearfix"></div> {/if} <script src="templates/{$template}/js/domainchecker.js"></script> Â Then I modified domainregister.tpl in standard_cart to open the pricelist in a pop up <p>{$LANG.orderForm.findNewDomain}</p> <a class="btn btn-primary" onclick="popupWindow('domainpricelist.php', 'emailWin', '650', '650')"> {lang key='orderForm.showPricelist'} </a> 1 Quote Link to comment Share on other sites More sharing options...
webio Posted October 12, 2016 Share Posted October 12, 2016 This is also what I was looking for. Thanks for your solution 0 Quote Link to comment Share on other sites More sharing options...
Surcouf Posted October 12, 2016 Share Posted October 12, 2016 Whaoo !! Amazing solution, thank you very much !!! 0 Quote Link to comment Share on other sites More sharing options...
crescent Posted December 29, 2016 Share Posted December 29, 2016 (edited) Thanking you for your solution and code. But I have a problem presented to me when viewing the pricelist This is due to that .au domains are a min registration period of 2 years periods. The table only displays 1 year prices  All domains, that end in .au are showing a price of $-1.00AUD TLD Register Transfer Renew .com.au $ -1.00 AUD $ -1.00 AUD $ -1.00 AUD .net.au $ -1.00 AUD $ -1.00 AUD $ -1.00 AUD .org.au $ -1.00 AUD $ -1.00 AUD $ -1.00 AUD .id.au $ -1.00 AUD $ -1.00 AUD $ -1.00 AUD .asn.au $ -1.00 AUD $ -1.00 AUD $ -1.00 AUD  all other domains display pricing correctly. Can you assist in displaying the correct prices for .au domains Edited December 29, 2016 by crescent 0 Quote Link to comment Share on other sites More sharing options...
Hal9000 Posted December 30, 2016 Author Share Posted December 30, 2016 (edited) Yeah, I was just a bit lazy I guess... I have now improved the code to also handle 2 years. I could have done for more, but the SQL query would have become pretty ugly, and I am not aware of any domains requiring more than 2 years minimum, so... Anyhoo, here is the updated select statement for the pricelist query: ->select(['d.extension as tld', 'd.group', DB::raw("IF(p.msetupfee='-1', 2, 1) AS period"), DB::raw("SUM(IF(p.type='domainregister', IF(p.msetupfee='-1', p.qsetupfee, p.msetupfee), NULL)) AS register"), DB::raw("SUM(IF(p.type='domaintransfer', IF(p.msetupfee='-1', p.qsetupfee, p.msetupfee), NULL)) AS transfer"), DB::raw("SUM(IF(p.type='domainrenew', IF(p.msetupfee='-1', p.qsetupfee, p.msetupfee), NULL)) AS renew")]) Here is the updated template file {if !$loggedin && $currencies} <div class="currencychooser pull-right clearfix margin-bottom"> <div class="btn-group" role="group"> {foreach from=$currencies item=curr} <a href="domainpricelist.php?currency={$curr.id}" class="btn btn-default{if $currency.id eq $curr.id} active{/if}"> <img src="{$BASE_PATH_IMG}/flags/{if $curr.code eq "AUD"}au{elseif $curr.code eq "CAD"}ca{elseif $curr.code eq "EUR"}eu{elseif $curr.code eq "GBP"}gb{elseif $curr.code eq "INR"}in{elseif $curr.code eq "JPY"}jp{elseif $curr.code eq "USD"}us{elseif $curr.code eq "ZAR"}za{elseif $curr.code eq "CHF"}ch{else}na{/if}.png" border="0" alt="" /> {$curr.code} </a> {/foreach} </div> </div> <div class="clearfix"></div> {/if} <div id="pricingTable"> <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> {foreach $tldcategories as $tldCategory} <div class="panel panel-default"> <div class="panel-heading" role="tab" id="heading{$tldCategory->id}"> <h4 class="panel-title"> <a data-toggle="collapse" data-parent="#accordion" href="#collapse{$tldCategory->id}" aria-expanded="{if $tldCategory@first}true{else}false{/if}" aria-controls="collapse{$tldCategory->id}" class="domain-tld-pricing-category"> {$tldCategory->category} {$LANG.tldpricing} </a> </h4> </div> <div id="collapse{$tldCategory->id}" class="panel-collapse collapse{if $tldCategory@first} in{/if}" role="tabpanel" aria-labelledby="heading{$tldCategory->id}"> <div class="panel-body"> <div class="row"> <div class="col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2 table-responsive domain-tld-pricing-table-responsive"> <table class="table table-striped table-framed"> <thead> <tr> <th class="text-center">{$LANG.domaintld}</th> <th class="text-center">{$LANG.domainminyears}</th> <th class="text-center">{$LANG.domainsregister}</th> <th class="text-center">{$LANG.domainstransfer}</th> <th class="text-center">{$LANG.domainsrenew}</th> </tr> </thead> <tbody> {foreach $tldCategory->topLevelDomains as $tld} <tr> <td>.{$tld} {if $tldpricing[$tld]->group eq 'new'}<span class="label label-success">{$LANG.domainCheckerSalesGroup.new}</span> {elseif $tldpricing[$tld]->group eq 'sale'}<span class="label label-warning">{$LANG.domainCheckerSalesGroup.sale}</span> {elseif $tldpricing[$tld]->group eq 'hot'}<span class="label label-danger">{$LANG.domainCheckerSalesGroup.hot}</span>{/if} </td> <td class="text-center">{$tldpricing[$tld]->period}</td> <td class="text-center">{if $tldpricing[$tld]->register}{$currency.prefix} {$tldpricing[$tld]->register} {$currency.suffix}{else}{$LANG.domainregnotavailable}{/if}</td> <td class="text-center">{if $tldpricing[$tld]->transfer}{$currency.prefix} {$tldpricing[$tld]->transfer} {$currency.suffix}{else}{$LANG.domainregnotavailable}{/if}</td> <td class="text-center">{if $tldpricing[$tld]->renew}{$currency.prefix} {$tldpricing[$tld]->renew} {$currency.suffix}{else}{$LANG.domainregnotavailable}{/if}</td> </tr> {/foreach} </tbody> </table> </div> </div> </div> </div> </div> {/foreach} <div class="panel panel-default"> <div class="panel-heading" role="tab" id="heading{$tldCategory->id}"> <h4 class="panel-title"> <a data-toggle="collapse" data-parent="#accordion" href="#collapseAll" aria-expanded="false" aria-controls="collapseAll" class="domain-tld-pricing-category"> {$LANG.alltldpricing} </a> </h4> </div> <div id="collapseAll" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingAll"> <div class="panel-body"> <div class="row"> <div class="col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2 table-responsive domain-tld-pricing-table-responsive"> <table class="table table-striped table-framed"> <thead> <tr> <th class="text-center">{$LANG.domaintld}</th> <th class="text-center">{$LANG.domainminyears}</th> <th class="text-center">{$LANG.domainsregister}</th> <th class="text-center">{$LANG.domainstransfer}</th> <th class="text-center">{$LANG.domainsrenew}</th> </tr> </thead> <tbody> {foreach $tldpricelist as $tld} <tr> <td>{$tld->tld} {if $tld->group eq 'new'}<span class="label label-success">{$LANG.domainCheckerSalesGroup.new}</span> {elseif $tld->group eq 'sale'}<span class="label label-warning">{$LANG.domainCheckerSalesGroup.sale}</span> {elseif $tld->group eq 'hot'}<span class="label label-danger">{$LANG.domainCheckerSalesGroup.hot}</span>{/if} </td> <td class="text-center">{$tld->period}</td> <td class="text-center">{if $tld->register}{$currency.prefix} {$tld->register} {$currency.suffix}{else}{$LANG.domainregnotavailable}{/if}</td> <td class="text-center">{if $tld->transfer}{$currency.prefix} {$tld->transfer} {$currency.suffix}{else}{$LANG.domainregnotavailable}{/if}</td> <td class="text-center">{if $tld->renew}{$currency.prefix} {$tld->renew} {$currency.suffix}{else}{$LANG.domainregnotavailable}{/if}</td> </tr> {/foreach} </tbody> </table> </div> </div> </div> </div> </div> </div> </div> {if !$loggedin && $currencies} <div class="currencychooser pull-right clearfix margin-bottom"> <div class="btn-group" role="group"> {foreach from=$currencies item=curr} <a href="domainpricelist.php?currency={$curr.id}" class="btn btn-default{if $currency.id eq $curr.id} active{/if}"> <img src="{$BASE_PATH_IMG}/flags/{if $curr.code eq "AUD"}au{elseif $curr.code eq "CAD"}ca{elseif $curr.code eq "EUR"}eu{elseif $curr.code eq "GBP"}gb{elseif $curr.code eq "INR"}in{elseif $curr.code eq "JPY"}jp{elseif $curr.code eq "USD"}us{elseif $curr.code eq "ZAR"}za{elseif $curr.code eq "CHF"}ch{else}na{/if}.png" border="0" alt="" /> {$curr.code} </a> {/foreach} </div> </div> <div class="clearfix"></div> {/if} <script src="templates/{$template}/js/domainchecker.js"></script> Edited December 30, 2016 by Hal9000 0 Quote Link to comment Share on other sites More sharing options...
crescent Posted January 1, 2017 Share Posted January 1, 2017 So easy and so simple - Thank you very much!!! 0 Quote Link to comment Share on other sites More sharing options...
Maradona Posted January 20, 2017 Share Posted January 20, 2017 list of TLDs was displayed in domain checker page, this page is removed from v7 Â Hi, Â Is there a way to achieve this? See my attached files... Â Â Thanks in advance for any help. 0 Quote Link to comment Share on other sites More sharing options...
brian! Posted January 20, 2017 Share Posted January 20, 2017 not easily in v7... visually, you could do it, but it wouldn't be functional as the bulk domain search options were removed from v7. I suspect you'd have to use the API to do it... and even then, they'd be no guarantees. 0 Quote Link to comment Share on other sites More sharing options...
pietpomp Posted January 28, 2017 Share Posted January 28, 2017 Hi Hal9000, Thanks for the code, but can't det the results to show. Could you please clarify the file structure for your two files?  I can't get the results displayed on the tpl file. At the moment it's just showing the table and header with now actual data.  as in: root/domainpricelist.php or template/domainpricelist.php or orderforms/template/domainpricelist.php  for both files, Thanks! PS also noticed that v7'Six' no longer contains domainchecker.js called in the end of your tpl file. 0 Quote Link to comment Share on other sites More sharing options...
Hal9000 Posted January 28, 2017 Author Share Posted January 28, 2017 (edited) Hi pietpomop, the domainpricelist.php file should reside in your whmcs root, the domainpricelist.tpl in your template/<templatename>/ directory, and the other snippet should go into domainregister.tpl in the standard_cart, or whatever cart you are using. You are right about the domainchecker.js, you can remove that line as it's not needed. Weirdly though, the six template files domainchecker.tpl and bulkdomainchecker.tpl still contain references to this file. Edited January 28, 2017 by Hal9000 0 Quote Link to comment Share on other sites More sharing options...
brian! Posted January 28, 2017 Share Posted January 28, 2017 Weirdly though, the six template files domainchecker.tpl and bulkdomainchecker.tpl still contain references to this file. they will do - those two templates are v6 files probably left over from an upgrade to v7... v7+ releases doesn't include those two templates! 0 Quote Link to comment Share on other sites More sharing options...
Hal9000 Posted January 28, 2017 Author Share Posted January 28, 2017 My bad, I looked in the wrong folder 0 Quote Link to comment Share on other sites More sharing options...
pietpomp Posted January 30, 2017 Share Posted January 30, 2017 Thanks again Hal9000, that's working for me, now just to adjust display tpl as required. Cheers 0 Quote Link to comment Share on other sites More sharing options...
pietpomp Posted January 30, 2017 Share Posted January 30, 2017 Has anyone been able to pull this price table into another page, besides domainpricelist.php? Â Can't figure out what to add to, say template/header.tpl in order to get the pricelist. The table html is not the issue, it's trying to get the php logic going of domainpricelist.php within other template files. Â The button and pop-up id great for some cases, but I need to pricelist as part of several other tpl pages. 0 Quote Link to comment Share on other sites More sharing options...
brian! Posted January 30, 2017 Share Posted January 30, 2017 Has anyone been able to pull this price table into another page, besides domainpricelist.php? you can add a non-categorised version of the v6 table, to any page (including outside of WHMCS), using the data feed (+ template tweak) in the thread below... Â https://forum.whmcs.com/showthread.php?122790-After-upgrading-to-v7-domain-suggessions-have-gone&p=498618#post498618 Â Can't figure out what to add to, say template/header.tpl in order to get the pricelist. The table html is not the issue, it's trying to get the php logic going of domainpricelist.php within other template files. you couldn't really do it in the template (well technically you could, but you shouldn't!) - you'd need to write a hook to query the database to create the Smarty variables that the pricelist table uses. Â one weekend, i'll go back and write v2 of that data feed which will use TLD categories, or write a hook to make the variables available to the page - but i'm not a big fan of the TLD categories (at least how WHMCS did it), so we don't use them. 0 Quote Link to comment Share on other sites More sharing options...
Remitur Posted February 10, 2017 Share Posted February 10, 2017 Nice result with this domainpricelist.php, but there's an issue: if you use multiple price slabs for domains, the price exposed will be the sum of prices in various slabs. Â That's to say: - price in base slab: 10 - price in second slab: 8 - price exposed: 18 (I suppose that if you have three or more slabs, it will sum all of them). Â I suppose will bw needed to add a filter in the query, in order to select only the base slab (for public), or a more complex query for other slabs... 0 Quote Link to comment Share on other sites More sharing options...
Remitur Posted February 25, 2017 Share Posted February 25, 2017 I fixed the issue (at least for default slab) Â In domainpricelist.php it's necessary modify following code: Â $tldpricelist = DB::table('tbldomainpricing as d') ->join('tblpricing as p', 'p.relid', '=', 'd.id') ->where('p.currency', '=', $currencyid) ->whereIn('p.type', ['domainregister', 'domaintransfer', 'domainrenew'] ) ->orderBy('d.order') ->select(['d.extension as tld', 'd.group', DB::raw("SUM(IF(type='domainregister', msetupfee, NULL)) AS register"), DB::raw("SUM(IF(type='domaintransfer', msetupfee, NULL)) AS transfer"), DB::raw("SUM(IF(type='domainrenew', msetupfee, NULL)) AS renew")]) ->groupBy('d.extension') ->get(); Â Â as follows: Â $tldpricelist = DB::table('tbldomainpricing as d') ->join('tblpricing as p', 'p.relid', '=', 'd.id') ->where('p.currency', '=', $currencyid) ->where('p.tsetupfee', '=', 0 ) ->whereIn('p.type', ['domainregister', 'domaintransfer', 'domainrenew'] ) ->orderBy('d.order') ->select(['d.extension as tld', 'd.group', DB::raw("SUM(IF(type='domainregister', msetupfee, NULL)) AS register"), DB::raw("SUM(IF(type='domaintransfer', msetupfee, NULL)) AS transfer"), DB::raw("SUM(IF(type='domainrenew', msetupfee, NULL)) AS renew")]) ->groupBy('d.extension') ->get(); Â So this query select all prices for default slab (id = 0) Â I was looking for a way to select for a logged customer the pricelist of his slab (if different from default), but it's not trivial: it may happen that not all the domains have different price, and when it's so the record does not exist; so, you need to get: - all the TLDs which have a record defined for that slab - and, for all others TLDs which don't have a record defined for that slab, the record of the default slab... Â If anyone get any idea to do it... (Laravel is not my friend... ) 0 Quote Link to comment Share on other sites More sharing options...
isixhosting Posted February 25, 2017 Share Posted February 25, 2017 list of TLDs was displayed in domain checker page, this page is removed from v7  Why did they remove it??? 0 Quote Link to comment Share on other sites More sharing options...
brian! Posted February 25, 2017 Share Posted February 25, 2017 Why did they remove it??? who knows why WHMCS does anything? I gave up expecting joined-up thinking from them long ago. Â I suppose potentially it might have sped up the page by removing the table, but i'm assuming there were more reasons than that. 0 Quote Link to comment Share on other sites More sharing options...
yggdrasil Posted March 3, 2017 Share Posted March 3, 2017 I'm also surprised they removed this. Yes, you could make a manual page listing your domains for sell but that seems like a management nightmare with the amount of new domains that exist today, imagining having to change/remove or update TLD's or pricing. So the logic tells you that this information should be dynamic or pulled directly from WHMCS.  Why they removed the pricing page or at least a template where someone can see the available domains for sell is beyond me. This is like not letting someone check which products or plans you are selling. The user has no idea what domain he wants in the first place so he has to guess which extensions you are selling or not selling.  Personally while v7 has some nice changes, and the new domain search is better, in a global perspective its an downgrade if you are selling domains. Maybe they will add the code later on, but they should not release a new feature by removing tons of old features. That is not an upgrade but a downgrade. An upgrade is when you keep adding new features on top of the old ones and if the old ones are bad, you re-code from scratch again in order to give the same functionality or better to customers.  From v5 to v6 they removed things, from v6 to v7 they removed more. I completely understand they are removing old code, but they are making WHMCS inferior. I completely understand that most people have to use their own theme, code, and designs. I agree, but they should always ship at least 1 default theme and 1 default cart, and that one should have at least basic functionality a new customer would expect. If they want to change or add more advanced things, so be it, but relying on hacking code around to add things back is a bad business approach, in particular as WHMCS increased the pricing you would expect more, not less. Support is down the pipe as well. Usually you received a reply 2 - 6 hours. Now its 24 hours or more to receive one reply.  This is a positive critic, I like WHMCS but I hope they don't rush new releases the next time. I'm far more happy with smaller releases that add things and fix bugs, than having a major one which is a pain in the butt to upgrade as they move all files and code around and remove and adds more new bugs. Its like playing hide and seek all the time, when you finally have things working, a new version comes up and back to the same.  - - - Updated - - -  who knows why WHMCS does anything? I gave up expecting joined-up thinking from them long ago. I suppose potentially it might have sped up the page by removing the table, but i'm assuming there were more reasons than that.  I agree that should probably not be in the same page for performance reasons but why not add it to a separate template file then where users can link to it if they want, or use it in a modal windows, or what ever...  I also don't think they did that for performance reasons. If performance was a concern they would not move basic things to hooks like the sidebar or breadcrumb and other very basic things they removed from the template files and added as hook which means it has to be processed and re-generated on every single hit !!! That is not what I call performance wise. Hooks are to pull out things on a dynamic views by certain user actions, they should not be using that for basic HTML links and buttons or a basic navigation breadcrumb. They probably did this because they want to show different buttons or options depending on the user actions. Fine! But why is it encoded them? You can't modify the code, links or even icons, unless you create your own hooks, so a hook modifying a hook... 0 Quote Link to comment Share on other sites More sharing options...
brian! Posted March 3, 2017 Share Posted March 3, 2017 If performance was a concern they would not move basic things to hooks like the sidebar or breadcrumb and other very basic things they removed from the template files and added as hook which means it has to be processed and re-generated on every single hit !!! That is not what I call performance wise. Hooks are to pull out things on a dynamic views by certain user actions, they should not be using that for basic HTML links and buttons or a basic navigation breadcrumb. not to drag the thread off-topic, but the two big issues with the navbar/sidebar is the bizarre thinking that WHMCS believed their users should be capable of writing hooks just to change the navigation - they should either have delayed the launch until they'd developed a menu manager feature (now available as 3rd-party addons), or made the documentation absolutely idiot-proof... the fact they did neither is telling, though sadly, not surprising. Â the rest of your post, and the one in the TLDs thread, I largely agree with. 0 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.