Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation since 02/24/2019 in all areas

  1. 5 points
    Some people want to show their client's credit balance when they login to client area, as the option not implemented by default in Six Template here is how to do it: 1) Upload the PHP file from Attachements to -> /WHMCS-Path/includes/hooks/ directory. WHMCS_SixTemplateCreditBalance.zip
  2. 3 points
    Not everyone is happy with the general way v7 is going, (v6 and v5 where better) and since it seems v8 is coming next year or is planned at least. What are your main wish lists for that new version looking it from a developer or business view. What do you like WHMCS to change, improve or even remove in the future? Here is my list: More opt-in Make things more opt-in. Some things in v7 are not useful for more advanced users, like auto update, or the market store. I would like to have that stuff removed. Now I have more files and more bloat on my installation which I don't use and never will. This things should come as a separated module and if they are disabled or not installed, the code should not even be live in your server for security reasons, performance and just general simplicity. Less is more sometimes and many of those features I don't require as they are targeted to click one night operations, and not more longer power users that want to tweak and adapt WHMCS to their own operations. Bug Tracking A better bug tracker. Asking with a ticket if a bug is fixed or having to hunt down the change long on each release is painful and time consuming. Sometimes I think WHMCS as a company is very inefficient with some operations. Hiring people costs them money, so why do they want to babysit things like this. Having to answer tickets costs them time and this could be avoided with a proper bug tracker. This can't scale. Better feedback from users Feature requests. This is completely broken. Why use a different system when you have a nice community here? Build the feature requests and vote system here. If you don't want to build a bug tracker, you can even do the same here on the community for bugs and only customers with a valid license can access assuming WHMCS does not want to make this public. Slow down with features Longer releases. This could be a bit controversial but I would rather prefer WHMCS to slow down a bit. Every new release introduces more bugs than features. The Beta testing should be longer and I would be ok with maybe only 2 major releases per year. Just keep releasing patches for bugs. They are adding so many new things which are related to external services and I don't think they are aware the minefield they are creating. WHMCS should not be heavily coded to work with remote stuff. Try to build more things that work locally in your server instead of just releasing new features that require third party services. Longer Releases Longer LTS releases. They are not long releases if they only last a year. Look how Microsoft does it, 10-15 years. Or even Red Hat. The people using LTS are companies or enterprises and I'm not saying WHMCS should support them 10 years, but seriously 1 year or just a bit longer? Most developers even support their normal releases for at least 3 years. The LTS should be a minimum 3 years unless the PHP or code they rely on is not supported anymore, which is a different story. Can you imagine if everyone else did the same to WHMCS developers? Imagine if PHP was only supported 1 year, or Smarty, or anything. It would be a nightmare for them. So if they are aware that they rely on such much external code now, they should give the same considerations towards their customers. Not everyone has the time to update and make all their integrations the day they are released. This is a billing and cloud/hosting automation software. Not a blog like WordPress!!! And with that I mean security patches. Not even bug fixes. They don't have to even fix bugs or release new features on those versions. But please, at least still support them with security patches for 3 years after launch. It's the responsible thing to do. Better Mobile Mobile app is not updated for years. Show more love or open it up so we can add things. I have to rely on external services for ticket notifications and other things when this makes no sense if you have a mobile app. Instead of building things for something like Slack I'm seriously disappointed that WHMCS developers give more attention to external services then their own products. I can receive mobile notifications on third party services but not push notifications on my WHMCS mobile app. Shocking their own products are left to die. Finally, open up. You are benefiting from open source developers work but do the opposite to your own customers that are developers. Open up your code. Please just open up your code or at least the most important chunks to particular partners or companies. Make them sign what ever non disclosure agreement you want or even charge them. Your competition has none of your problems because the community can see and fix things. What is WHMCS so keen to protect here? Business users are not going to stop paying support and updates and they surely are not going to pirate the software. It's a bit childish, in particular because WHMCS would not exist today without open source work from others. WHMCS relies heavily on external third party open source code yet they even encode that. This is an insult to developers. They are taking all the code that is free and releases from other developers, and then pass Ioncube over it. One thing is protecting your code and licensing, the other thing is trying to protect code that is not even yours. WHMCS is encoding so much garbage that I'm sure this is the root of most of their bugs and problem because we cannot fix or see what they do. This is the biggest downside of using WHMCS. I don't think any serious provider will consider WHMCS for this reason. It's a blackbox. And I'm not talking here about the core, or billing stuff, or API stuff. No, WHMCS even encode things that affect your public website and cannot be easily modified or changed unless you make hacks around them software. You constantly have to intercept what WHMCS does and then transform the output because you have no idea what it does and how. It's a game I'm not willing to play in the future. Their competition advertises that they are 99% open code and only encode a few files related to the license. I don't expect WHMCS to do this but PLEASE if someone from the company is reading this, this is going to be your doom as a company in the next years. The minute competition comes up and is more open than WHMCS, those people are not coming back. Everyone is opening up in the software and technology industry. Even WHMCS would not exist as a company if it was not for other services developing API's which WHMCS is relies on for most of their connection. This is not the proper way to behave towards your developer customers. What exactly are they are trying to protect is beyond me. Even third party developers like Modules Garden and many others at least have an open version of their encoded modules. Everyone does at this point because they understand business users will not run things on their server they cannot fix, see what it does or just maintain. It's a trust thing. You would sell far more licenses and to people that actually have the money to pay. Do they distrust their own code so much? Well, the community would be able to constantly improve it with suggestions and fixes. Less work for their developers and the product would move forwards on its own. I just love how your competition works. The whole code is open, their whole bug tracker is open. This is causing frustration to those using the software and worse, forcing them to move out to custom solutions or more open platforms. WHMCS is never going to be flexible this way. And I would not complain about this if it was not for the fact that WHMCS is putting more and more code that was open in the past behind their ioncube wall. v6 and v5 had less encoded code/features, not more. I'm shocked on much WHMCS hates developers or people building their own sites around WHMCS because every new release is worse with more features behind the black box. This is now seriously affecting my business with things I cannot fix anymore or integrate. Everyone in the technology world understand proprietary standards are bad. And this is what WHMCS is doing, they are forcing people to even make simple changes using their own way of doing things. Why would I do this? Why should a PHP developer, or a HTML coder, or a JavaScript person learn how to do things the WHMCS way which is inefficient, buggy and even performs bad on a server? Those people want to use the standard coding procedures WHMCS developers use. Not the stupid hooks and API to even change something like a link. And I say stupid because this is exactly how I feel about WHMCS v7 at this point. You have to make a special PHP hook code (the WHMCS way) to change the sidebar text, colors or links. In the past I could just open the .tpl file and change it. Why? Because WHMCS is removing code from templates and putting it behind the IonCube wall. One day, the templates will be worthless and most WHMCS websites that are customized are going to be horrible slow because users have to create 240 hooks to change colors, links, or even text. Personally, I have access to all the database. And if I see v8 is not being more open but more closed. I'm moving out. I cannot trust my business operations to a company that wants to keep their customers under ransom. And this is how I feel when I cannot even fix the most simple bugs because the files are encoded. So my biggest wish list for v8 is for WHMCS to start being more open and trying to move towards that trend. They profit from open source but seem to hate open source which is a rather a strange business approach. One day, some of those developers may change their licenses and forbid their codes from being used in obfuscated software. If that day comes, WHMCS will have to remove that code from their software or change the way they work in terms of developing.
  3. 3 points
    Today we announced that WHMCS is joining the WebPros family. Following in the footsteps of Plesk and cPanel, WHMCS becomes the latest company to join WebPros exciting and growing group of companies that power the web hosting industry. Established in 2005 by CEO Matt Pugh, WHMCS is the leading web hosting billing and automation platform. WHMCS was started with the idea that selling web hosting could be made better for consumers and more efficient through automation. By combining customer management, billing and support tools into a single package, coupled with easy extensibility, today we help over 40,000 businesses scale and succeed in today’s competitive web hosting market. In 2012, WHMCS partnered with cPanel to enable us to work more closely and deliver a better experience to our many mutual customers. Today's announcement and news means we'll be able to work even more closely with cPanel, as well as our good friends at Plesk and SolusVM, giving us the opportunity to enhance the integration between all our products to create a more seamless and integrated experience for everyone. "I am looking forward to working with the teams at WebPros to deliver better software and user experiences to both our direct customers and the customers of our customers" said Matt Pugh, CEO of WHMCS. "I also want to take this opportunity to thank each and every one of our customers for putting your trust in us over the last 15 years and bringing us to where we are today." "For us, it’s business as usual.", said Matt. "The same team remains in place, and we will continue to deliver the same high-quality product and experience you've come to expect. We have always strived to provide the most powerful, feature rich and reliable platform for you to operate your business from, and this commitment remains as strong as ever." Based in the UK and with offices in Houston TX, WHMCS employs a team of 28 people and powers over 40,000 businesses with a combined end user base of over 75 million customers in more than 140 countries. I've created this thread for user discussion of the announcement. We will be be monitoring and answering any questions we can.
  4. 3 points
    Let's stop trying, every solution is a bad hack that tampers with parameters. It gives at best a false sense of security that makes you more prone to errors when it fails. If it's not removed in the next version I will seriously consider moving away from the platform.
  5. 3 points
    Very sad day for hosting companies.. We trusted cPanel for years and now they didnt even think about us.. just a massive increase and survive if you could.
  6. 3 points
    Hello Good People, Main site was built with WordPress, using a premium theme, with a heavy modification in design. WHMCS part was done using SIX as base, with mostly css modification, some html modification (mostly header and footer). Front end: https://dctit.host/ WHMCS: https://dctit.host/shop/ View Cart page: https://dctit.host/shop/cart.php?a=view Will appreciate your feedback. Kindly let me know your thoughts. Thanks.
  7. 3 points
    it looks like the SQL queries needed tweaking - i'll attach the updated file rather than posting the entire code, but basically i've just changed the three references of... tblpaymentgateways.* to... tblpaymentgateways.value .. and it's still on my list of things to do to update this widget properly for v7.7+ πŸ“… admin.php
  8. 3 points
    @WHMCS John your reply illustrates the biggest problem of WHMCS. You can't communicate. Not to your customers and not to each other. There hasn't been a single request on requests.whmcs.com asking for this feature, yet it is implemented. This has obviously been fuelled by your MarketPlace partners, not by your customers. And to be fair I wouldn't mind if a feature is useful and works, but you have to be open about it. You're not. And if it breaks, step up and get it fixed. Stop hiding behind arguments that you're not a system administrator. This is a developer at fault, 100%. You're only telling part of the story. You're not helping, at all. I can understand why your customers are getting more and more frustrated. It checks for a 51 error; It tries to get the SSL details for which it needs CURLINFO_CERTINFO. Even if cURL is working on the CLI, your PHP implementation can still fail. But that's not all. If you have a version of cURL on your server that supports CURLINFO_CERTINFO the cron doesn't necessarily work, simply because WHMCS needs a different database collation; which isn't part of a database migration nor of your release notes or documented requirements. WHMCS has been informed about the CURLINFO_CERTINFO problem AND have been given a workaround by at least two of your customers. It has already been reported as a bug. The fact that you keep saying that the 51 error code is what WHMCS is looking for shows that you're not communicating with each other. If you would, the troubleshooting page would have been updated with both the CURLINFO_CERTINFO information and the changed collation requirements would have been communicated, too. Neither is the case. On to solving the actual problem for those who read this too. Copy the following into a PHP file on your server. <?php $domain = 'www.whmcs.com'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://' . $domain); curl_setopt($ch, CURLOPT_CERTINFO, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_NOBODY, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($ch, CURLOPT_TIMEOUT, 10); curl_setopt($ch, CURLOPT_VERBOSE, true); if(curl_exec($ch) === false){ echo 'Curl error: ' . curl_error($ch); } $certInfo = curl_getinfo($ch, CURLINFO_CERTINFO); print_r($certInfo); ?> If you open it in your browser. The first line should start with: Array ( [0] => Array ( [Subject] => CN = *.whmcs.com [Issuer] => C = US, O = DigiCert Inc, OU = www.digicert.com If it doesn't your version of cURL doesn't come with CURLINFO_CERTINFO. You either need to update cURL or speak to WHMCS to implement an alternative (and keep your fingers crossed). If you need to update cURL tread carefully. Don't use third party repositories, either speak to a sysadmin or to support of the control panel you're using. If it does, try to run the cron manually: php -q crons/cron.php do --SslSync -vvv Are you seeing errors? They will probably be something like: SQLSTATE[42000]: Syntax error or access violation: 1253 COLLATION 'utf8_unicode_ci' is not valid for CHARACTER SET 'latin1' (SQL: select `userid`, `domain` from `tblhosting` left join `tblsslstatus` on concat("" COLLATE utf8_unicode_ci, tblhosting.domain) = `tblsslstatus`.`domain_name` where `domain` != and `tblsslstatus`.`id` is null limit 100) This is because WHMCS made a breaking change. The solution is to add the following to your configuration.php: $mysql_charset = 'utf8'; Be careful as this may break your currency character(s). Head over to Setup >> Payments >> Currencies and save each and every currency you use. Double check if everything works by looking at transactions, invoices. Don't forget the PDFs. Was this so hard to document, WHMCS? Stop hiding. Start listening.
  9. 3 points
    I believe (as software engineer I am). WHCMS should make this new SSL monitoring feature fully optional and allowing easy enable/disable settings in the configuration panel or in the configuration.php file in the simplest case. And that is because adding invasive new features must be done with quirurgical precision and always having in mind: maybe some customers does not want what we think they want. No mentioning that evidently the feature was not fully tested before released as stable. Recommending customer to edit files in your theme is not a smart move, since the new SSL monitoring bug is not only estetical problem, there are some backend processes involved... and also because mostly of your customers are not coders and expect a "working product". Next time guys you think in adding a new invasive feature, please consider giving us (your customers) the power to enable/disable as will any idea that maybe WHMCS think is good, but ends being a bad idea. I've been with WHMCS since almost 8 years ago.
  10. 3 points
    I ran into an issue with this hook today - it works fine on a product linked to cPanel, but with other products it shows a blank page. with the assistance of sentq, I was able to tweak it to work correctly. <?php use WHMCS\View\Menu\Item as MenuItem; add_hook('ClientAreaPrimarySidebar', 1, function(MenuItem $primarySidebar) { $service = Menu::context('service'); $domain = $service->domain; $servertype = $service->product->servertype; # Not cPanel, no links added if ($servertype!="cpanel"){ return; } if (!is_null($primarySidebar->getChild('Service Details Actions'))) { $primarySidebar->getChild('Service Details Actions') ->getChild('Login to cPanel') ->setUri('http://'.$domain.'/cpanel'); $primarySidebar->getChild('Service Details Actions') ->getChild('Login to Webmail') ->setUri('http://'.$domain.'/webmail'); } });
  11. 2 points
    Don't know if this is the right category to post this in, but I thought I wanted to share this. It's a very small hook that cancels an invoice once the product gets terminated. //<?php use WHMCS\Database\Capsule; add_hook('PreModuleTerminate', 1, function($vars) { $invoiceid = Capsule::table('tblinvoiceitems') ->where('relid', '=', $vars['params']['serviceid']) ->orderBy('duedate', 'desc') ->first(); Capsule::table('tblinvoices') ->where('id', '=', $invoiceid->invoiceid) ->update(['Status' => 'Cancelled']); }); Any feedback is much appreciated.
  12. 2 points
    Hello Brian Finally my problem was that I had a hidden character before "<?Php" that was not seen, I could only see it from the cpanel editor. Thank you very much for your interest! A greeting.
  13. 2 points
    Utilities > Logs > Activity Log. Can you confirm that you have the following entry for 30th of previous month?
  14. 2 points
    The quick and dirty way: a simple query in phpmyadmin ...
  15. 2 points
    If the developers and WHMCS would use Dynamic Key protection for their code, e.g. license queries could be secured so that they are not decrypted without the correct key. There is no 100% protection, but this option would make it more difficult for crackers. Pure ioncube encryption only provides moderate protection. The Dynamic Key is not complicated, but unfortunately only few use it. The decryption of WHMCS and/or modules is not only stupid for the developers, users of such programs gain a competitive advantage because they save costs and can offer their products accordingly cheaper.
  16. 2 points
    Elegantly? I'd say horribly since it screw ups invoices! Say that an automatic payment of 10 euro for blabla.com domain arrives and the proforma doesn't exist yet for a number of reasons (eg. cancelled services, postponed next due date...). Here is what happens. WHMCS looks for the most recent invoice of blabla.com and finds Invoice #2018-500 of previous year. Obviously I have already registered this invoice in 2018 and paid my income tax but WHMCS has other plans! It adds the transaction to #2018-500 updating its amount. Illegal ❌ The balance of #2018-500 is now 20 euro but what about taxes? What if tax rate has changed in 2019? You can't assume that every year is the same. Illegal ❌ The date of our #2018-500 invoice moves from 14-05-2018 to 14-05-2019. This is crazy! I've seen invoices going from 2012 to 2013, 2014, 2015, 2016, 2017, 2018, 2019! Can you explain me how am I supposed to register them? The funny thing is that in Italy we have electronic invoicing and if fail to spot any of these invoices "elegantly" handled by WHMCS, Revenue Agency not only expects 22% VAT based on a payment of 80 euro but even thinks that I earned 80 euro while I just got 10! ❌❌❌ I'm not the kind of person who blames WHMCS for everything. When I find an issue I always code my own solution but there are exactly two things in WHMCS that I can't overcome. I'm talking about this "elegant" solution and invoice items that disappear from invoices (you know why). Could you please give me an hook to suppress these two elegant solutions? I'd pay 2000$ to see them burning in hell 😍
  17. 2 points
    Your hosting provider or the company that sold you the SSL should be the one giving you support in that regard. That is a server administration task so the person that manages your server is the one that should be installing the correct key for your certificate.
  18. 2 points
    if you are already logged in as an admin, and you try to login into the client area using a client's email address but a WRONG password, then it is perfectly normal for WHMCS to allow that login to work... this is true whether you use the "Login as Client" link in the client's profile, or you manually enter their email address in the client area login page. however, if you are NOT logged in as an admin, and this is still occurring, then that would be wrong and would need investigating.
  19. 2 points
    there are two answers to this... firstly, there is a little known separate domain pricing page that was introduced in an earlier v7 release... it only received a passing mention by one of the WHMCS guys during a beta period, and AFAIK, it isn't officially documented... but if you go to /domain/pricing you should be able to find the page on your site - actual URL might be different depending on your Friendly URLs settings though... but that shows grace/redemption periods and fees by default. secondly, the other way would be to modify the domainregister.tpl template to show grace/redemption periods & fees - all the information is already in the array, so it's just a case of editing the template to show whatever you want to show. on a practical level, you may not be able to show grace periods as, unlike the separate pricing page, the cart will show sidebars by default and that limits the amount of space available for additional columns in the table... if it helps, i've attached a modified version of the v7.7.1 standard_cart domainregister.tpl template that shows the above output as a starting point for any changes you want to make. one other thing, again rarely mentioned in the documentation, but you can add the pricing table to the transfer page, if you want to show the user how much transfers will be per TLD.... you just need to copy the table code from domainregister.tpl to domaintransfer.tpl - probably little point in showing the featured TLDs or the categories (they wouldn't work by default as the JS is missing from the template) - but i've added the table & JS to the template and attached if others want to use it. domainregister.tpl domaintransfer.tpl
  20. 2 points
    Hey all, I've noted this thread in the internal case log and have asked internally if we can look at the priority on this one πŸ™‚
  21. 2 points
    perhaps by reading the PHP manual. http://php.net/manual/en/function.checkdnsrr.php
  22. 2 points
    In the latest release, you may have noticed that the Request Cancellation link in the left sidebar has been removed for free and one time products and services. This change was made in response to a bug report relating to one time products not being automatically cancelled. There was some concern that allowing cancellation requests for free and one time items, which have no next due date, and therefore terminate immediately on the following cron run could lead to irrevocable data loss. It is important to note that this is only a visual change that removes the link to submit a cancellation request. Submitting a cancellation request for a free service is still possible. If you wish to restore the option to cancel free products, you can do so using a hook. I've prepared some sample code that uses the ClientAreaPrimarySidebar hook point to achieve this. Here is the code below: <?php /** * This hook restores the Request Cancellation sidebar option on free services * * @author WHMCS Josh * @see https://developers.whmcs.com/hooks-reference/client-area-interface/#clientareaprimarysidebar * @see https://developers.whmcs.com/advanced/db-interaction/ */ use WHMCS\Database\Capsule; use WHMCS\View\Menu\Item; add_hook('ClientAreaPrimarySidebar', 1, function($primarySidebar) { // Get the handle for the Service Details Overview sidebar $serviceDetailsOverview = $primarySidebar->getChild('Service Details Overview'); // Make sure the handle is not null if (!is_null($serviceDetailsOverview)) { // Make sure the ID is available if (!empty($_REQUEST['id'])) { $serviceId = (int) $_REQUEST['id']; // Check if this is a free service $billingCycle = Capsule::table('tblhosting') ->where('id', $serviceId) ->value('billingcycle'); if ($billingCycle === 'Free Account') { // Add the cancellation request menu item for the service to the sidebar $serviceDetailsOverview->addChild( 'freeServiceCancellationRequest', [ 'name' => 'CancellationRequest', 'label' => 'Request Cancellation', 'uri' => '/clientarea.php?action=cancel&id=' . $serviceId, 'order' => 90, ] ); } } } }); To install this, you can simply add the code to a file in your /includes/hooks directory such as /includes/hooks/free_product_cancellation_request.php. For convenience, I've attached the completed hook file to this post here: free_product_cancellation_requests.php Below is also a screenshot of how this looked on my test installation of WHMCS 7.7.0. Please note that this is being provided only as an example and is not guaranteed to work with future versions of WHMCS. Feel free to modify it to suit your needs and I hope it helps!
  23. 2 points
    i'm still inclined to think so. there are none - but a lot of WHMCS is probably still how it was 10 years ago, and this may be one of those occasions. but if the database doesn't store the updated date (or any date), then you're into the realms of having to store the date yourself when you update/create an article in the admin area... but I don't think that there are any specific hook points triggered when editing an article, so no simple way to do this. you can't extract what hasn't been saved. πŸ™‚ no - just what has been programmed to be returned to be available to the template. not necessarily - as you saw with the useful/votes hook that I wrote that just amended the array with new content and returned it to the template... if the dates were naturally in the table, you could use that hook for this, but there are no dates stored. i'm not saying that it couldn't ultimately be done, just that there isn't a quick "here's a hook" solution... it's likely going to need an addon module for this, probably with custom database tables too.
  24. 2 points
    <?php # Remove Terminated Products From Services Array Hook # Written by brian! function clients_services_remove_terminated_hook($vars) { $services = $vars['services']; foreach($services as $key => $service) { if ($service['status'] == "Terminated") { unset($services[$key]); } } return array("services" => $services); } add_hook("ClientAreaPageProductsServices", 1, "clients_services_remove_terminated_hook"); ?> you might need another hook to remove the Terminated link from the sidebar if you're showing that sidebar on your site... or even simpler, you should be able to hide it using custom.css
  25. 2 points
    //Updated to only target products of Hosting-type. <?php use WHMCS\Database\Capsule; add_hook('PreModuleTerminate', 1, function($vars) { $invoiceid = Capsule::table('tblinvoiceitems') ->where('relid', '=', $vars['params']['serviceid']) ->where('type','Hosting') ->orderBy('duedate', 'desc') ->first(); Capsule::table('tblinvoices') ->where('id', '=', $invoiceid->invoiceid) ->update(['Status' => 'Cancelled']); });
×

Important Information

By using this site, you agree to our Terms of Use & Guidelines and understand your posts will initially be pre-moderated