Leaderboard
Popular Content
Showing content with the highest reputation since 12/07/24 in all areas
-
Hi WHMCS ecosystem developers! I am excited to share an early heads-up about the upcoming WHMCS 9.0 release by the end of 2025 - a major update that brings important changes to the platform’s technical requirements. As part of this release, several core dependencies will be updated, and minimum system requirements will be increased. These changes are designed to improve performance, security, and compatibility with modern PHP standards. Key Updates in WHMCS 9.0: Minimum PHP version: 8.2 Recommended PHP version: 8.3 Minimum ionCube Loader version: 13.0.2 or higher Recommended ionCube Loader version: 14.4.0 or higher Updated dependencies: A number of underlying libraries and components have been upgraded. Some notable changes include: Smarty v3.1.48 —> v4.3.4 Legacy Smarty Tags are being deprecated and will no longer function in 9.0. Smarty Template Objects (including their use in plugins) will no longer be supported. guzzlehttp v7.4 —> v7.4.5 illuminate v7.x —> v9.0 I have attached a provisional list of dependency changes to this post. Please also use this thread to provide your feedback and ask questions of the Development Team regarding these requirement and dependency changes. These changes will require action from module developers to ensure continued compatibility. We recommend reviewing your module code and preparing for updates ahead of the release. We’ll be sharing more details, including a release window, definitive changelog and developer guidance, between now and the end of 2025 to help you get ready. Thank you for being a valued part of the WHMCS ecosystem. We appreciate your continued support and look forward to working together to make WHMCS 9.0 a successful release. whmcsv90_composerlock_provisional.txt2 points
-
@stormy, I'm glad to hear the e-invoicing feature will be a real value add for you. We are working with expert solution-providers in this space, so we're confident about delivering an easy to use and compliant solution with the broadest coverage. @andp97, Yes, by the end of the year in a pre-release version of WHMCS you will have access to this new feature. This bullet point actually describes two significant features which we're very excited about: 1. A RESTful API which provides access to the product catalogue and shopping cart logic. This will provide a suite of new endpoints to get product catalogue information, add, manipulate and get information about items in the cart (including price breakdowns and totals) and much more, all without touching the cart.php file or PHP session data. This means that power users could create their own highly-bespoke frontends whilst WHMCS handles the maths in the background, before seamlessly passing visitors to the checkout page to complete payment. 2. A brand new thin client powered by the aforementioned new API capabilities, providing a thoroughly modern purchase experience based on Vue.js. I've attached a sneak peak below. The new BuyFlow is a compiled Single-page application, meaning the layout isn't manipulated through templates, but you will be able to customise the colours to match your theme through a custom.css overrides file. The shopping cart as it exists today (cart.php and order form templates) isn't going away and will still be available if you'd like to stay with the familiar experience. Stay tuned to our blog and socials over the coming weeks for more information!2 points
-
Hi @venkat.j, The current latest version is 8.13. This behaviour suggests the dates were set to 00/00/0000, either by an admin (in which case there should be an entry in the client's Log tab) or by a rogue after-market module (in which case there probably wouldn't). You can edit the date fields to set the actual dates and click Save Changes. The correct dates will be stored.2 points
-
Hi all, In 8.13 a small improvement was made to the accounting of refunded mass-pay invoices. Prior to this the totals of mass-pay invoices were included in the overall income statistics, but now they are excluded as it's already accounted for by the original invoices.2 points
-
But you did ask them, and not by just posting here? EDIT: This is a bit old now, but a fast search on this board found:2 points
-
Hello @ThemeMetro This is a known issue, and we have published a HotFix. For more details, please review the following. Apologies for any inconvenience. Kind regards, Stephen.2 points
-
Thanks to @Mytihost, I found an elegant solution for this issue. The following hook: add_hook('ClientAreaPage', 1, function($vars) { if (!empty($vars['clientsdetails']['customfields'])) { $customfieldsAssoc = []; foreach ($vars['clientsdetails']['customfields'] as $field) { $customfieldsAssoc[$field['id']] = $field['value']; } return ['customfieldsAssoc' => $customfieldsAssoc]; } }); makes available the value of any client custom field in a template, using i.e. the form {$customfieldsAssoc.17} (where "17" is the id field in the tbl customfields)2 points
-
Hi @Jade D, I have responded to your ticket, but just wanted to follow up here so there's an answer if anybody else comes across this. The underlying issue here is that your web server was advertising a domain other than that registered for your license. This causes the license cache in your install to be invalid, and so your install needs to check in with our licensing infrastructure to validate your license. Since the details we held about your license were different to those being advertised by your web server, your install kept making a request to our licensing API. We rate limit all requests made to our licensing infrastructure to ensure stability thereof for all our customers. If your server sends too many requests, it will be temporarily blacklisted as part of this rate limit. To resolve this, make sure that your web server is only advertising the server_name that we have listed in your Valid Domains. Wait for 30 minutes or so and the rate limit will be removed, then your install will get a response back from the licensing servers that your license is valid and access will be restored. If anybody is unable to get to the bottom of this, please reach out to our support team and we can help!2 points
-
You aren't authenticated in your hooks. The hooks aren't running as you - they're running as the system. WHMCS doesn't offer a native way of logging in as an admin in a hook. If you just want to download the invoice, you can include /includes/invoicefunctions.php and run the pdfInvoice($invoiceId) function.2 points
-
I take it you weren't here when WHMCS yanked owned license update "support addons" and we all lost any updating of those convenient owned and now worthless licenses many of us bought? I had two.2 points
-
Next week we'll test our module. It works like this: You define the old and new registrar modules New registrar should be configured as the default for new domain registrations for a specific TLD When WHMCS attempts to renew a domain, it will check if the current registrar module is defined as the old registrar in the module settings and if the new registrar has been configured as the default for the TLD Use the new registrars _GetTldPricing() function to see if EPP code is required and get the transfer price for the TLD If EPP code is required, fetch it from the old registrar using their _GetEPPCode() function If transfer price is set to 0, we assume domain is not renewed - renewal will need to happen after successful transfer (this part is still WIP) Run the the new registrar's _TransferDomain() function If anything goes wrong, send an email to admins If the transfer is successful, the client receives an email with relevant information and the domain's registrar module is updated. I plan on adding support for registrars that doesn't have a _GetTldPricing() method, but this would require feeding the module with information about EPP requirement and whether domains are renewed during transfer.2 points
-
I have started work on an addon module that can hopefully work with any registrar in WHMCS. You have to define the source and destination registrar module, and the addon module takes care of the rest.2 points
-
For anyone wanting to hide SiteJet from WHMCS here is the code I use, its a combination of a code earlier here provided by a user and addition to hide it inside the package <?php use WHMCS\View\Menu\Item as MenuItem; // Hide in Client Area Sidebar add_hook('ClientAreaPage', 1, function($vars) { $primarySidebar = Menu::primarySidebar(); if ($primarySidebar) { $serviceActions = $primarySidebar->getChild('Service Details Actions'); if ($serviceActions) { $serviceActions->removeChild('sitejet'); } } }); // Hide from Client area add_hook('ClientAreaFooterOutput', 1, function($vars) { return <<<STYLE <style> #sitejetPromoPanel{ display: none !important; } button[data-identifier="sitejet"], li[data-identifier="sitejet"]{ display:none !important; } button[data-identifier="sitejet"] + .btn-group > .btn[data-toggle="dropdown"]{ border-top-left-radius: 3.2px; border-bottom-left-radius: 3.2px; } button[data-identifier=“sitejet”] + .btn-group > .btn[data-toggle=“dropdown”], .btn-group:has(> button[data-identifier=“sitejet”]) > .btn[data-toggle=“dropdown”] { display: none !important; } </style> STYLE; }); // Adjust the Client Area display for Sitejet panel add_hook('ClientAreaFooterOutput', 1, function($vars) { return <<<SCRIPT <script> jQuery(document).ready(function($) { // Change the title text inside h3 $('#cPanelPackagePanel h3.panel-title.card-title').text("Package/Domain"); // Change col-sm-6 to col-md-3 for the image column $('#cPanelPackagePanel .col-sm-6').first().removeClass('col-sm-6').addClass('col-md-3'); // Remove the image with class card-img-top $('#cPanelPackagePanel img.card-img-top').remove(); }); </script> SCRIPT; }); This hook will do as stated earlier where the Promosplash on the frontpage of the SIX theme is showing the SiteJet, then the last code is inside the client area, it adjusts the "Package/Domain" which was always there and they changed to "SiteJet Panel" by adjusting that text back, then removing the half page, into a full 3 row page, and remove the image display so it looks like this See, I pay for the license, I don't see why there isn't a toggle switch to turn off your promotional advertisement but since that is not possible this HOOK legitimately does that, thanks to whomever wrote the first part for the splash on the main client page, but this one also edits the in client product page removing the webpros advertisement and makes it look like it did before. You can always edit that code to remove the image and or replace with yours but this will be enough for me, it keeps it clean. (The image above, Ive redacted any sensitive information but obviously it says the domain name above the Manage Domain). Thank you.2 points
-
2 points
-
Hello, Not at all and it's highly recommended, to change the admin path.2 points
-
I am happy to say that the development cycle of vBLink 2.0 is now complete. The release was delayed for a complete ground-up rewrite after WHMCS 4 was announced. It is not ready for download just yet; I have not taken the time to create an installer or documentation because of two major issues that may become a factor in the long term success of vBLink. The first issue is vBulletin 4 support is not included. This is in part because of the fact that I do not agree with decision by vBulletin to change the licensing structure essentially us to purchase new licenses. I own three licenses, two for production sites, one for a development site. The cost to upgrade is going to be huge, especially if I choose the publishing suite. So at this point I have no access to vB4 code. The second issue is that from a business standpoint vBLink has not been a success, or at least the free/paid model that it has been distributed with. In the past year there have been over 400 downloads of vBLink but less than 2% were paid licenses making vB4 support hardly justifiable. So the question now is what to do next, and that is the reason that I am posting this message. Obviously, vBLink without vB4 support is only going to be useful for a short time until v4 goes gold. But without a solid community and financial backing behind it, I have no reason to continue development. But one promise I will make is that if I do walk away from vBLink, I will release all source code into the public domain; I do not believe in holding code hostage. If I do in fact release vBLink 2.0, I'm thinking of a 3-tier release structure... vBLink Basic (Free, Fully Encoded with only account bridging and no extras) vBLink Pro (Mid-range cost, a few admin module source files encoded, fully functional) vBLink Pro Dev (Highest cost, fully functional with full source) All feedback is welcome and will help determine the future of this vBulletin integration.2 points
-
In the v9.0 release cycle we have focused efforts on updating our dependencies - which was quite a significant undertaking - ensuring that we carefully managed the Smarty update (as that is potentially an area of high user-impact). I anticipate this work will enable the testing and validation of future PHP versions to move much faster, and we expect to deliver PHP 8.4 support in v9.1. Please see the finalised list above. TCPDF will be updated to 6.10.1 point
-
Another year another price increase for all WHMCS licenses. The question is has there been any updates to the software that justify the rising costs? The only change I've seen this year that was actually welcome was ironically a feature that existed but was removed. That being the ability to directly change client passwords. I can't think of anything else from memory. Anyone else?1 point
-
Hello, I have a dedicated Hetzner server, WHMCS cannot connect to the server, it gives this message, but these ports are open on the host, and Hetzner also says that we did not close the port and it is open, but it still does not connect. FAILED: Could not connect to Virtualizor. Please make sure that all Ports from 4081 to 4085 are open on your WHMCS Server or please check the server details entered are as displayed on Admin Panel >> Configuration >> Server Info.1 point
-
We have identified some bugs in the WHMCS (Current version 8.12) client and Admin areas for various users in differnt time periods. The following are some of the examples. 1) A product is active but its expiry date is wrong. Wrong: Expiry date - 1969 Actual: Expiry date - 2026 2) A product is active but its due date is wrong. Wrong: Due date 11/30/-0001 Actual: Due date 11/30/2025 3) A customer is Unpaid but his account status displaying as Active. Wrong: Status-Active Actual: Status-inactive1 point
-
John didn't say that 😉 He said the feature list is under wrap (eg not yet announced).1 point
-
We won't go cloud. Kayako burned us with that and SupportPal is brilliant. Where's the announcement?1 point
-
1 point
-
Thanks 🙂 Now displaying well. Shame multicurrency isn't working properly but beggars can't be choosers it's nice to have this feature back.1 point
-
Hi @rcartists, You must first set product pricing in your default currency. Then you can have the system calculate the pricing in additional currencies: https://docs.whmcs.com/payments/currencies/#update-product-prices The system can also be configured to update the pricing of additional currencies automatically once per day: https://docs.whmcs.com/payments/currency-tutorials/automatically-update-prices/1 point
-
There are few issues in the hook logic for applying credit and cancelling invoices: Incorrect array index usage in the loop You had: foreach ($invoiceData['invoices']['invoice'][0] as $invoice) This loops only over the first invoice. Use: foreach ($invoiceData['invoices']['invoice'] as $invoice) Incorrect object access You used: $invoiceId = $invoice->'id'; $creditamt = $invoice->'credit'; But $invoice is an associative array, not an object. Use: $invoiceId = $invoice['id']; $creditamt = $invoice['credit']; Incorrect variable name You had: if ($canceInvoice['result'] == 'success') Correct to: if ($cancelInvoice['result'] == 'success') Syntax error in else You had: else } Correct to: else {1 point
-
Hi @Lairdswalker, The Tagline and Short Descriptions are displayed in the Cross-Selling messages later in the shopping cart flow. It isn't part of the product selection page. Here's the documentation for this feature: https://docs.whmcs.com/8-13/products/configuration-options/cross-selling-recommendations/1 point
-
Hi @zomex, Following on from this. We now have this article available about the issue mentioned. https://help.whmcs.com/m/v813/l/1943753-captcha-tpl-template-error-when-clicking-login-as-owner1 point
-
Its great news. Thanks for sharing it.1 point
-
Yes. The module supports automatic billing using stored cards for recurring invoices. Thanks!1 point
-
Hi @ghmercado, The domain sync batches are limited to 50, so the notices will never exceed that. We're currently tracking a few different ideas for changes to this notification. Check them out and add your vote to your preferred option: https://requests.whmcs.com/idea/ability-to-disable-domain-sync-emails https://requests.whmcs.com/idea/provide-an-option-to-email-on-domain-sync-only-if-a-problem-is-encountered https://requests.whmcs.com/idea/make-domain-sync-cron-work-in-smaller-then-1-hour-increments-or-allow-syncing-more-than-50-domains https://requests.whmcs.com/idea/add-expired-domains-to-the-automation-status-screen1 point
-
No. HEXONET Status (HTTPS API is usually used by 3rd-party Software Integrations)1 point
-
1 point
-
You can post at https://whmcs.community/community/137-service-offers-requests/ and one of the developers can do this work for you.1 point
-
I actually used to help with the billing of this online site and figured that was what was up. Thanks for the info!1 point
-
Thanks, while I have to admit that the module is far behind the features of HEXONET and CentralNic Reseller. One reason why that technical merger makes sense - it gives us resources to focus on other topics. There's no domain checker addon (nor any other additional addon) available for internet.bs, yet - no plans for that step even in our backlog. Regarding any Pricing Question, please reach out to the internet.bs team that's out of my scope. I am just aware of that there's no monthly account fee.1 point
-
They are probably not that wrong with Moniker, but that information is not complete. The Moniker Brand got migrated to the internet.bs Backend System recently and Internet.bs itself will be rebranded to Moniker in near term. Please check the internet.bs Website (WHMCS, AWBS, ClientExec registrar domain registration API integration) for their WHMCS Plugin. This plugin is also maintained by my team (as we do for the hexonet plugin). Hope this helps + let me forward my pardon for that kind of bad communication. Kind Regards1 point
-
1 point
-
Using configurable options, you can separate the value for the module vs the value displayed with a "|" like this: module_value|display_value In your case: one|1024 two|20481 point
-
Why not simply put in a redirect? lang/russian.php > lang/english.php When the languages are updated, the redirect will remain unchanged.1 point
-
https://github.com/springmusk026/Spaceship-WHMCS-Registrar-Module This is module from us , its not complete yet as spaceship hasn't released their api completely also if you want to make any module for you contact us , all contact information are on github profile1 point
-
WHMCS happy to increase the price yet again yet refuse to refund for after overcharging me for years 😄 It's becoming laughable at this point. As you stated which updates have we seen that users actually wanted? I am starting to route heavily for all "Web Pros" competitors: - Blesta - DirectAdmin Would love to see both take over the industry.1 point
-
See here: https://github.com/hybula 😃1 point
-
Have you tried MarketConnect? You can fully automate the reselling of hosted email, so the hosting part gets managed for you leaving the VPS hosting part untouched. The services on MarketConnect can be promoted automatically upon the purchase of other products on your website and/or within the client area. All seamleassy integrated within the WHMCS front-end: https://marketplace.whmcs.com/connect https://marketplace.whmcs.com/help/connect/kb/ox_app_suite1 point
-
1 point
-
And what exactly is the issue? I am guessing it is doing the infinite login loop without saying if the login was good or not. If so, that is indeed sessions or cookie issues . If the server's sessions are working, then check that your session cookies are actually being saved.1 point
-
8.2.1, and this is the final version for me, if I upgrade I have to pay WHMCS for new license, and it aint gonna happen.1 point
-
Apologies for bringing an old thread back from the dead but this issue has reared its ugly head again in version 8.13. We had an issue with a smarty variable in a custom template file triggering a security policy error so WHMCS Support suggested adding this security policy to our config file: // Smarty enable special variables policy: $smarty_security_policy = array( 'system' => array( 'enabled_special_smarty_vars' => array( 'session', 'foreach', 'section', 'block', 'capture', 'now', 'get', 'post', 'server', 'request', 'template', 'const', 'strstr', ), ), ); This fixed the issue with the template not working but now we are getting a "'strstr' not allowed by security setting" error when trying to send any email that contains this: {if strstr($client_credit, "GBP")}Blah blah blah{/if} The original security policy we had in place to allow "strstr" is still there but doesn't work if we also have the new "'system'" security policy in place, it works fine if we remove this leaving just the original security policy but ideally we need both the custom template and the code in the email to work! FYI our full security policy is listed here: // Smarty custom email based template policy: $smarty_security_policy = array( 'mail' => array( 'php_functions' => array( 'strstr', ), ), ); // Smarty enable special variables policy: $smarty_security_policy = array( 'system' => array( 'enabled_special_smarty_vars' => array( 'session', 'foreach', 'section', 'block', 'capture', 'now', 'get', 'post', 'server', 'request', 'template', 'const', 'strstr', ), ), ); Any ideas how to fix or if not, is there another workaround we could use to display conditional data depending on the currency used by the client?1 point
-
Brian. Thanks a lot. It really appears to be the same. I've re-opened my support case with Resellerclub.1 point
-
@WGS It seems you moved from copying contents to paying money trying to hurt our website with negative SEO. Nicely done 👍 I've got two words for you: Stop wasting money. It doesn't work as I know how to deal with negative SEO Do you want me to post details? 😛1 point
