Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation since 04/21/2018 in all areas

  1. 6 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.
  2. 6 points
    The WHMCS.Community is intended to provide a place for users of WHMCS to discuss, share and interact with each other as well as WHMCS Staff. To ensure we maintain a friendly environment, we ask users to respect the following rules and guidelines. Please let us know via the WHMCS.Community Assitance category should you have any questions or comments, posts in this category are visible between yourself and the WHMCS.Community Team. WHMCS reserves the right to alter these rules from time to time. 1.User Accounts Each person may have (one) 1 forum login regardless of the number of companies you may be part of. Duplicate accounts will be removed from WHMCS.Community Please do not share your user account with others - each person should retain their own username and password Usernames must not be created that contain any of the items listed below: An email address A website address The following words WHMCS cPanel Staff Moderator Admin Any word determined to cause offence or be deemed inappropriate. Usernames or Users that do not comply with these rules may be removed from WHMCS.Community 2. Behaviour on the Community We expect all users to be friendly and polite. While we understand that users will disagree and have different points of view at times, this can be communicated in a civil manner Please do not post rude, insulting or inflammatory posts. Personal attacks, name-calling and insults will not be tolerated on WHMCS.Community. Profanity and inappropriate images (including porn or gross violence) may not be posted anywhere on the WHMCS.Community. WHMCS.Community Staff & Moderators use their sole discretion as to what is deemed unacceptable behaviour in the community and may remove content at any time. Your posts assist other users, please do not delete content if you find an answer, please share this solution to help other users. 3. Advertising on WHMCS.Community Advertising, offers or self-promotion are to be posted only in the Third Party Add-ons section of the community. Community users seeking to hire a developer may post within the Service Offers & Requests section. Advertising is limited to one advertisement per seven (7) day period on a rolling 7-day basis. Additional or excessive advertising will be removed by the moderation team and your ability to post in advertising boards removed. Soliciting and/or self-promotion via the private messaging (PM) system is strictly prohibited. The sale or reselling of WHMCS Licenses is strictly prohibited on the community. Affiliate and referral links may not be used, these links are those that link to a site and contain information crediting the person with that referral 4. Posting and Moderation on WHMCS.Community The WHMCS.Community is moderated by WHMCS.Community Moderators and Staff. When a post is deemed to be in breach of the rules it will be removed and the user advised via a warning. Please do not cross-post across the community. If your topic is better suited to another section one of the WHMCS.Community team will move it to the best category for you. You may report your post if you wish to have it moved by a moderator. For privacy reasons please do not post any personally identifiable information including Usernames, Passwords, Contact Numbers, Email Addresses and/or Credit Card Numbers As WHMCS.Community is a moderated community we have implemented a Warning System. When a post is removed for breaching the community rules we’ll be sure to let you know. We allocate points to a warning and once you have a set number of points you may be suspended from posting on the community. Users that do not comply with the rules for WHMCS.Community may be banned temporarily. Ongoing temporary bans may result in a permanent ban from WHMCS.Community. The public discussion of moderation decisions is not permitted, these will be removed without notice and may result in a community ban. 5. Signature and Profile Rules Your signature may include links, however, please ensure these are reasonable (no more than 4) and they must not include Referral/Affiliate links. This includes pricing and plan details Signatures may not contain more than 4 lines at a 1024x768 resolution Please do not sell or rent your signature space, your signature is yours alone. Where your signature does not comply with these rules you may be asked to alter or remove it 6. WHMCS.Community Ranks Official WHMCS Staff & Moderators are identified by one of the following ranks located below their profile image, in addition, their posts are highlighted blue WHMCS CEO WHMCS Community Manager WHMCS Customer Service WHMCS Developer WHMCS Marketing WHMCS Staff WHMCS Support Manager WHMCS Technical Analyst WHMCS.Community runs a ranking system, new community members start with the rank of Newbie and can progress based on the number of posts, reputation points and length of time active on the community Some users have a special “Super Users” rank. These members are a select group of elite community members that are long-standing mentors in the community, courteous to other members, always providing technical insight and advice, and generally helping to make our community a better place to learn, troubleshoot and advance. The WHMCS.Community ranking formula is changed from time to time and without notice. The algorithm used is not published or discussed with users to prevent gaming the system 7. Contacting the WHMCS.Community Team You may contact a member of the WHMCS.Community via the WHMCS.Community Assitance board If you would prefer to email you may open a ticket by emailing forums@whmcs.com Thank you for helping to keep WHMCS.Community a great place
  3. 5 points
    Hello there, After a lot of thinking, here you have a template for the Upcoming Domain Renewal Notice that will cover all scenarios. Subject: Domain {$domain_name} is due to expire in {$domain_days_until_expiry} days Dear {$client_name}, Domain {$domain_name} is due to expire in {$domain_days_until_expiry} days - {if $domain_do_not_renew eq "0"}Auto Renew On{else}Auto Renew Off{/if}. {if $domain_days_until_expiry eq "60"}{if $domain_do_not_renew eq "0"}As you have Auto Renew On, you will receive the renewal invoice 30 days before the expiration date.{else}If you would like to have the domain renewed, please access client area and turn On the Auto Renew option.{/if}{else}{if $domain_do_not_renew eq "0"}As you have Auto Renew On, you should have already received the renewal invoice. If you still didn't received the invoice, please contact our sales department. If you have already received the renewal invoice, please pay it as soon as possible to avoid the risk of domain expiration.{else}To renew the domain, please click on the following url {$domain_renewal_url}.{/if}{/if} {if $domain_days_until_expiry eq "7"}If domain {$domain_name} expires, the website and emails using this domain will no longer work.{/if} {if $domain_days_until_expiry eq "3"}If domain {$domain.name} expires, the website and emails using this domain will no longer work, and the domain may be available to be registered by someone else. WARNING: To renew an expired domain, when possible, you may have to pay a fee of up to $250.{/if} Explanation If you have configured the First Renewal Notice to be sent 60 days prior to the expiration date, and the customer has Auto Renew On, here you have the content he will receive on that Notice: Dear Customer Name, Domain example.com is due to expire in 60 days - Auto Renew On. As you have Auto Renew On, you will receive the renewal invoice 30 days before the expiration date. If you have configured the First Renewal Notice to be sent 60 days prior to the expiration date, and the customer has Auto Renew Off, here you have the content he will receive on that Notice: Dear Customer Name, Domain example.com is due to expire in 60 days - Auto Renew Off. If you would like to have the domain renewed, please access client area and turn On the Auto Renew option. If you have configured the Second Renewal Notice to be sent 30 days prior to the expiration date, and the customer has Auto Renew On, here you have the content he will receive on that Notice: Dear Customer Name, Domain example.com is due to expire in 30 days - Auto Renew On. As you have Auto Renew On, you should have already received the renewal invoice. If you still didn't received the invoice, please contact our sales department. If you have already received the renewal invoice, please pay it as soon as possible to avoid the risk of domain expiration. If you have configured the Second Renewal Notice to be sent 30 days prior to the expiration date, and the customer has Auto Renew Off, here you have the content he will receive on that Notice: Dear Customer Name, Domain example.com is due to expire in 30 days - Auto Renew Off. To renew the domain, please click on the following url {$domain_renewal_url}. If you have configured the Third Renewal Notice to be sent 7 days prior to the expiration date, and the customer has Auto Renew On, here you have the content he will receive on that Notice: Dear Customer Name, Domain example.com is due to expire in 7 days - Auto Renew On. As you have Auto Renew On, you should have already received the renewal invoice. If you still didn't received the invoice, please contact our sales department. If you have already received the renewal invoice, please pay it as soon as possible to avoid the risk of domain expiration. If domain example.com expires, the website and emails using this domain will no longer work. If you have configured the Third Renewal Notice to be sent 7 days prior to the expiration date, and the customer has Auto Renew Off, here you have the content he will receive on that Notice: Dear Customer Name, Domain example.com is due to expire in 7 days - Auto Renew Off. To renew the domain, please click on the following url {$domain_renewal_url}. If domain example.com expires, the website and emails using this domain will no longer work. If you have configured the Fourth Renewal Notice to be sent 3 days prior to the expiration date, and the customer has Auto Renew On, here you have the content he will receive on that Notice: Dear Customer Name, Domain example.com is due to expire in 3 days - Auto Renew On. As you have Auto Renew On, you should have already received the renewal invoice. If you still didn't received the invoice, please contact our sales department. If you have already received the renewal invoice, please pay it as soon as possible to avoid the risk of domain expiration. If domain example.com expires, the website and emails using this domain will no longer work, and the domain may be available to be registered by someone else. WARNING: To renew an expired domain, when possible, you may have to pay a fee of up to $250. If you have configured the Fourth Renewal Notice to be sent 3 days prior to the expiration date, and the customer has Auto Renew Off, here you have the content he will receive on that Notice: Dear Customer Name, Domain example.com is due to expire in 3 days - Auto Renew Off. To renew the domain, please click on the following url {$domain_renewal_url}. If domain example.com expires, the website and emails using this domain will no longer work, and the domain may be available to be registered by someone else. WARNING: To renew an expired domain, when possible, you may have to pay a fee of up to $250. I hope that this will be useful for someone. Best regards, David Duarte
  4. 5 points
    the idea for this widget was started in the feedback thread below, but rather than hijack that thread with this project, it was easier to start a new thread in Third Party Addons. this "Enhanced ToDo List" admin widget, expands on the default widget by showing client names (or Company Name), service details (name/domain) and domain names as mouseover tooltips (I could put them in the body, but then space might become an issue)... for those that want to use this widget, i've attached it to this post - simply upload to /modules/widgets and the next time you go to the admin homepage, it should be there (assuming your admin role allows viewing of the ToDo List). i've called the file "EnhancedToDo.php", so you'll end up with two ToDo widgets on your homepage, just disable the default one using the Show/Hide widgets option top right... I could have called it ToDo.php, but then the WHMCS auto-updater would have overwritten it during the next update - so it's easier to keep it separate until WHMCS improve how they handle ToDo's. it's written for WHMCS v7.6, but will work on v7.5.x too... it might work on earlier v7 versions, but I haven't tested it on them - there is a WHMCS version check inside the widget that chooses FontAwesome 5 icons if using v7.6 or later, or FA4 if using an earlier WHMCS version. if you spot any ToDo's that don't behave correctly (e.g a third-party addon might add a ToDo that doesn't follow the WHMCS convention), then feel free to reply about it (or PM me) - it shouldn't break the output, it will likely just not show the icon(s) for that ToDo. EnhancedToDo.php
  5. 4 points
    @bullten picks up gun and shoots himself in the foot with his own argument - if they understand it so much.... why are there long outstanding bugs in the core software that never get fixed ? why does every major release need a maintenance release to within a fortnight to fix the newly introduced bugs ? why does it take them three weeks to write a one-line change of URL in a hotfix for pre-v7.6 releases ? why do feature requests take upto five years to get implemented ? why do some new features get introduced with no beta testing, no pre-announcement and seemingly no public requests for it through the usual channels ? why during beta testing is there no documentation on new features ? they publicly release into general availability and LATER release the documentation - by which time the bugs are already in place and they've moved on to the next feature. I could go on, but I fear that i'd just be wasting my time explaining it to you. 🙄 you seem to assume that we're all saying WHMCS is great, their business is great, we agree with how they do things - many of us believe the opposite... except we're wise enough to grudgingly accept that WHMCS is what it is and it sadly isn't going to change. plus the idea of relying of WHMCS for basic security is the equivalent of you picking up the gun and shooting yourself in the other foot. 👣 the only person who annoyingly keeps on throwing the word "impossible" around is you - WHMCS isn't a democracy, you (or I) don't have any say on what's going to be implemented... they're not going to be swayed by a post here; they're not going to make a rod for their own back by doing what you suggest. how sad - some of us are paid to DO things with what we've learnt - others seemingly just want to talk to hear their own voice... so i'll plonk you on the ignore list and walk away from the thread - it's now becoming pointless.
  6. 4 points

    Version 1.0.0

    462 downloads

    An issue has been identified in the 7.6.1 release - published on 28th August, 2018 - that causes the domain synchronization task not to be performed at the scheduled time. This could result in domains remaining in Pending Transfer status, or keeping inaccurate expiration dates.
  7. 4 points
    then the simplest solution would be to edit /templates/six (or custom)/includes/verifyemail.tpl and add the following to the end of the file... {if $clientsdetails.twofaenabled === false} <div class="email-verification"> <div class="container"> <div class="row"> <div class="col-xs-2 col-xs-push-10 col-sm-1 col-sm-push-11"> <button type="button" class="btn close"><span aria-hidden="true">×</span></button> </div> <div class="col-xs-10 col-xs-pull-2 col-sm-7 col-sm-pull-1 col-md-8"> <i class="fas fa-tablet-alt"></i> <span class="text">{$LANG.twofaactivationintro}</span> </div> <div class="col-xs-12 col-sm-4 col-md-3 col-sm-pull-1"> <a href="clientarea.php?action=security" class="btn btn-default btn-sm btn-block btn-resend-verify-email">{$LANG.twofaenable}</a> </button> </div> </div> </div> </div> {/if} i've used an existing 2FA language string as an example (though it's too long for this purpose), so you should probably create your own custom string using Language Overrides, or if your site is only using one language, use that directly in the template instead of a language string. also, remember that you'll need to update the template after each update if the auto-updater overwrites it.
  8. 4 points
    Impressive, @Matt. It's not every day the CEO of a software company personally attends to and responds to customer issues like this. I'm truly impressed in the dedication to our community.
  9. 3 points
    When displaying your payment options during the final stages of the checkout process, the available payment gateway options are shown as text – in a number of different ways based upon the order form template being used. If we wanted to make this more attractive, we could replace the text of any or all of the gateways, with an image or logo, by editing the viewcart.tpl template within the active order form template. In order to do this, we can use one of the WHMCS variables that we have access to during the checkout process - $gateway.sysname - the variable stores in lowercase, the unique name used by WHMCS for the payment gateway. This is not the value you entered for the gateway in the “Display Name” field in the “Payment Gateways” section of the Admin Area. The next step is to create or find images for each of the gateways that you wish to replace with a graphic, all in the same graphic format (PNG, JPG or GIF) and save them with a lowercase filename. For example, if you were using PNG format, then your “PayPal” image would be called ‘paypal.png’; your “Bank Transfer” image is called ‘banktransfer.png’; and the “Mail-In Payment” gateway (in the above example, named ‘Cheque’) would be ‘mailin.png’. I believe the filename to be used is based upon the filename of the gateway file in ‘modules/gateways’, but you should be able to find its value by viewing the source of your cart page in your browser... [<label><input type="radio" name="paymentmethod" value="paypal" onclick="hideCCForm()" /> <img src=images/paypal.png /> So the part of interest above is: value=”paypal”. You would then upload these images to your “images” directory within WHMCS. If you wanted to put them in their own folder within the “images” directory, you can – but you will need to adjust the URL in the code below to take account of the slightly different path (see end of tutorial). The images directory i'm using in these examples is whmcs/images - and not the template(s) images folder. The replacement code works by first creating a new variable to store the URL of the gateway logo, then it will check to see if the image exists in the “images” folder (remember that it must have a lowercase filename on the server otherwise it will not be found) – if the image exists, it will display the image; if no image is found, it will display the text (as it does now). In the examples above, I have only uploaded a ‘paypal’ logo and hence only that gateway is using a replacement image – if I were to upload logos for the other two gateways, they would also be used instead of their text names. So, I will now go through each of the eight existing order form templates and show the code to be replaced, the replacement code and an image of how the cart checkout page looks when the new code is added. Ajaxcart Replace.... <div class="cartbox">{foreach key=num item=gateway from=$gateways} <label><input type="radio" name="paymentmethod" value="{$gateway.sysname}" onclick="{if $gateway.type eq "CC"}showCCForm(){else}hideCCForm(){/if}"{if $selectedgateway eq $gateway.sysname} checked{/if} /> {$gateway.name}</label>{/foreach}</div> With... <div class="cartbox">{foreach key=num item=gateway from=$gateways} <label><input type="radio" name="paymentmethod" value="{$gateway.sysname}" onclick="{if $gateway.type eq "CC"}showCCForm(){else}hideCCForm(){/if}"{if $selectedgateway eq $gateway.sysname} checked{/if} /> {assign var="paylogo" value="images/`$gateway.sysname`.png"} {if file_exists($paylogo)} <img src={$paylogo} /> {else} {$gateway.name}{/if}</label> {/foreach}</div> Boxes Replace.... <p align="center">{foreach key=num item=gateway from=$gateways}<label><input type="radio" name="paymentmethod" value="{$gateway.sysname}" onclick="{if $gateway.type eq "CC"}showCCForm(){else}hideCCForm(){/if}"{if $selectedgateway eq $gateway.sysname} checked{/if} />{$gateway.name}</label> {/foreach}</p> With... <p align="center">{foreach key=num item=gateway from=$gateways}<label><input type="radio" name="paymentmethod" value="{$gateway.sysname}" onclick="{if $gateway.type eq "CC"}showCCForm(){else}hideCCForm(){/if}"{if $selectedgateway eq $gateway.sysname} checked{/if} /> {assign var="paylogo" value="images/`$gateway.sysname`.png"} {if file_exists($paylogo)} <img src={$paylogo} /> {else} {$gateway.name}</label> {/foreach}</p> Cart Replace... <p align="center">{foreach key=num item=gateway from=$gateways}<label><input type="radio" name="paymentmethod" value="{$gateway.sysname}" onclick="{if $gateway.type eq "CC"}showCCForm(){else}hideCCForm(){/if}"{if $selectedgateway eq $gateway.sysname} checked{/if} />{$gateway.name}</label> {/foreach}</p> With... <p align="center">{foreach key=num item=gateway from=$gateways}<label><input type="radio" name="paymentmethod" value="{$gateway.sysname}" onclick="{if $gateway.type eq "CC"}showCCForm(){else}hideCCForm(){/if}"{if $selectedgateway eq $gateway.sysname} checked{/if} />{assign var="paylogo" value="images/`$gateway.sysname`.png"} {if file_exists($paylogo)} <img src={$paylogo} /> {else} {$gateway.name}{/if}</label> {/foreach}</p> Comparison Replace... <p class="paymentmethods">{foreach key=num item=gateway from=$gateways}<label><input type="radio" name="paymentmethod" value="{$gateway.sysname}" onclick="{if $gateway.type eq "CC"}showCCForm(){else}hideCCForm(){/if}"{if $selectedgateway eq $gateway.sysname} checked{/if} />{$gateway.name}</label><br />{/foreach}</p> With... <p class="paymentmethods">{foreach key=num item=gateway from=$gateways}<label><input type="radio" name="paymentmethod" value="{$gateway.sysname}" onclick="{if $gateway.type eq "CC"}showCCForm(){else}hideCCForm(){/if}"{if $selectedgateway eq $gateway.sysname} checked{/if} />{assign var="paylogo" value="images/`$gateway.sysname`.png"} {if file_exists($paylogo)} <img src={$paylogo} /> {else} {$gateway.name}{/if}</label><br />{/foreach}</p> Modern Replace... {foreach key=num item=gateway from=$gateways}<label><input type="radio" name="paymentmethod" value="{$gateway.sysname}" id="pgbtn{$num}" onclick="{if $gateway.type eq "CC"}showCCForm(){else}hideCCForm(){/if}"{if $selectedgateway eq $gateway.sysname} checked{/if} /> {$gateway.name}</label> {/foreach} With... {foreach key=num item=gateway from=$gateways}<label><input type="radio" name="paymentmethod" value="{$gateway.sysname}" id="pgbtn{$num}" onclick="{if $gateway.type eq "CC"}showCCForm(){else}hideCCForm(){/if}"{if $selectedgateway eq $gateway.sysname} checked{/if} /> {assign var="paylogo" value="images/`$gateway.sysname`.png"} {if file_exists($paylogo)} <img src={$paylogo} /> {else} {$gateway.name}{/if}</label> {/foreach} Slider Replace... {foreach key=num item=gateway from=$gateways}<label><input type="radio" name="paymentmethod" value="{$gateway.sysname}" onclick="{if $gateway.type eq "CC"}showCCForm(){else}hideCCForm(){/if}"{if $selectedgateway eq $gateway.sysname} checked{/if} />{$gateway.name}</label> {/foreach} With... {foreach key=num item=gateway from=$gateways}<label><input type="radio" name="paymentmethod" value="{$gateway.sysname}" onclick="{if $gateway.type eq "CC"}showCCForm(){else}hideCCForm(){/if}"{if $selectedgateway eq $gateway.sysname} checked{/if} />{assign var="paylogo" value="images/`$gateway.sysname`.png"} {if file_exists($paylogo)} <img src={$paylogo} /> {else} {$gateway.name}{/if}</label> {/foreach} Verticalsteps Replace... <p align="center">{foreach key=num item=gateway from=$gateways}<input type="radio" name="paymentmethod" value="{$gateway.sysname}" id="pgbtn{$num}" onclick="{if $gateway.type eq "CC"}showCCForm(){else}hideCCForm(){/if}"{if $selectedgateway eq $gateway.sysname} checked{/if} /><label for="pgbtn{$num}">{$gateway.name}</label> {/foreach}</p> With... <p align="center">{foreach key=num item=gateway from=$gateways}<input type="radio" name="paymentmethod" value="{$gateway.sysname}" id="pgbtn{$num}" onclick="{if $gateway.type eq "CC"}showCCForm(){else}hideCCForm(){/if}"{if $selectedgateway eq $gateway.sysname} checked{/if} /><label for="pgbtn{$num}">{assign var="paylogo" value="images/`$gateway.sysname`.png"} {if file_exists($paylogo)} <img src={$paylogo} /> {else} {$gateway.name}{/if}</label> {/foreach}</p> Web20Cart Replace... <div class="cartbox">{foreach key=num item=gateway from=$gateways} <label><input type="radio" name="paymentmethod" value="{$gateway.sysname}" onclick="{if $gateway.type eq "CC"}showCCForm(){else}hideCCForm(){/if}"{if $selectedgateway eq $gateway.sysname} checked{/if} /> {$gateway.name}</label> {/foreach}</div> With... <div class="cartbox">{foreach key=num item=gateway from=$gateways} <label><input type="radio" name="paymentmethod" value="{$gateway.sysname}" onclick="{if $gateway.type eq "CC"}showCCForm(){else}hideCCForm(){/if}"{if $selectedgateway eq $gateway.sysname} checked{/if} /> {assign var="paylogo" value="images/`$gateway.sysname`.png"} {if file_exists($paylogo)} <img src={$paylogo} /> {else} {$gateway.name}{/if}</label> {/foreach}</div> Customised Order Form Templates If you are using a customised order form, perhaps supplied with a purchased WHMCS theme, this solution may still work with your template - in viewcart.tpl, you simply replace... {$gateway.name} With... {assign var="paylogo" value="images/`$gateway.sysname`.png"} {if file_exists($paylogo)} <img src={$paylogo} /> {else} {$gateway.name}{/if} In these examples, I have used .PNG images - if you wanted to use .JPG or .GIF instead, then you would replace .png in the code with .jpg or .gif - remember, they must all use the same format! if you wanted to put the gateway images in their own folder, e.g 'paylogos', then you would replace the code... {assign var="paylogo" value="images/`$gateway.sysname`.png"} with... {assign var="paylogo" value="images/paylogos/`$gateway.sysname`.png"} I hope this helps anyone who wants to replace their payment gateways text with images. I should also add that this is tested and working on the latest WHMCS release as of this tutorial - v5.3.3
  10. 3 points

    Version 1.0.0

    888 downloads

    The URL of the European Central Bank XML Feed appears to have been changed on 8th September 2018 without notice. This is the feed used by WHMCS to update the exchange rates and convert product prices. This results in an error when attempting to update exchange rates:
  11. 3 points
    Hi all, A hotfix has been published for this case. It can be downloaded from here: Thanks for your reports.
  12. 3 points
    errr... really? did anyone genuinely ask for such a feature... ?? feel free to point to a feature request where this occurred and received an overwhelming number of votes. it's an admin lookup tool, not a sales tool... if I want suggestions, I can get them in the client area... and nice to see the usual same old WHMCS trick of sneaking a new feature in between RC and GA, without the slightest hint of a mention of it in any of the previous two v7.6 betas... I couldn't find any obvious admin method to disable the output - nothing in general settings... only option seems to be going to domain pricing and removing the alternate TLDs from Standard Whois or WHMCS Namespinning... which then removes them from the clientarea searches too... absolutely ridiculous, but sadly not surprising. in the end, I wrote an admin hook to hide the suggestions output from that whois page... needless to say, there are no unique IDs used in the HTML, so using css in a custom css file wasn't an option(!)... if anyone wants the hook, feel free to PM me - but i'm not posting any code in a temporary community like this one. btw - did you decide not to fix the obvious twitter fontawesome icon bug that's been in twitterfeed.tpl since the first v7.6 beta.. <i class="fas fa-twitter fa-2x"></i> with it being a brand icon, shouldn't it be... <i class="fab fa-twitter fa-2x"></i> even though I did mention it to a WHMCS staff member on June 29 when the first beta was released, I guess it's easily missed by WHMCS - it's only visible on the front page of the client homepage that every (if twitter account enabled) v7.6 end-user will now see when they upgrade. oh boy.
  13. 3 points
    UnblockIP 2.13 is now available for download from our client area at https://www.serverping.net/clients/ What’s new? -Code has been updated to work with WHMCS 7.x and PHP 7.x -cPanel API Key support has been added -You no longer need to edit your clientareahome.tpl to use the auto unblock feature, a hook is used now instead. The output that is displayed can be modified in the templates/clientareaoutput.tpl file -Various bug fixes
  14. 3 points
    I wouldn't argue with one word of that... the stuff about bug tracking is interesting - i've been here too long and have just got used to CORE-xxxxx being top secret for staff eyes only.... but taking a step back and thinking about other software bug tracking, yes it should be more accessible.... I found it far better years ago when submitting bugs was done here in the f0rum - you could actually see where the bugs are, and so try to work around them.... with BT being outside of here, then only the person submitting the bug, and WHMCS, know about it - until the next maintenance release and you can see the changelog... that's no way to do it.... at least using older releases, you know where the bugs are and that no new ones will be added - with latest versions, it's Russian roulette where the bugs are and if you're going to hit one. feature requests is a joke (and sadly not a funny one) - as you say, why have a nice community hall where we can all gather together, but when we want to make a suggestion, we need to go to the little shed at the bottom of the lane and make a note of it in there... it's ridiculous... you get users making feature requests... that nobody else knows have been created... so they then don't receive many votes... so they don't get implemented by WHMCS... and so the frustration builds.... on so many levels, WHMCS is a company that enjoys to shoot itself in the foot by its own actions. ... and if WHMCS development slowed down any more it would be going backwards - but I know what you meant.... less new features, but get them right before launch. openness applies to communication too... there's no harm in pre-warning us what's going to be in a beta before the code has been released... there might be a crap idea that we can nip in the bud before any coding time is wasted (e.g removing the domain pricing tables and then having to put them back a year later).... once they've released something as a beta, then it's a hell of a task to get a feature removed before general release... and once released, it's in there and then you're left to the feature request path to get it removed... (or apparently just have a few words with some WHMCS employees!). it's the general pervasive attitude of only WHMCS knows best that does my head in (e.g let's change how invoices are calculated and not even disucss it first), and the subsequence lack of communication - when was the last time they ever did a full survey of it's userbase and ask them what they want in the future releases (I can't ever recall one).... and i'm not counting the requests system in that, because that's a flawed broken system that needs ditching asap. v8 should be designed from a blank sheet of paper - because if it's just going to be a slight evolution from v7.6, then they might as well call it v7.7 and we can all go and find something else to use.
  15. 3 points
    According to the error message, the table 'tblioncube_file_log' does not exist. Executing the following SQL query probably helps you: CREATE TABLE IF NOT EXISTS `tblioncube_file_log` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `filename` text COLLATE utf8_unicode_ci NOT NULL, `content_hash` varchar(512) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', `encoder_version` varchar(16) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', `bundled_php_versions` varchar(128) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', `loaded_in_php` varchar(128) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; Normally this table should be created when upgrading to version 7.5.0. Version 7.5.0 also did the following on upgrade: INSERT INTO `tbladminperms` (`roleid`, `permid`) VALUES (1, 146); It is probably in your interest to check if the permid 146 exists in your database. If not, something went wrong at the upgrade. Then i recommend to contact the WHMCS support.
  16. 3 points
    Hi there We first became aware of instances of the spam signups being discussed here towards the latter end of last week and since then our team has been monitoring the issue and investigating instances of it reported to us via support tickets. We understand how receiving a large number of spam orders can be inconvenient and frustrating and so in an effort to try to combat and prevent these orders from being successful, our team has worked to implement Google's invisible reCAPTCHA to the shopping cart checkout workflow through the use of the hooks system. This is being provided as a short term immediate solution for users affected by the recent spam order submissions until such time as we can release a product update with this functionality natively included. What is Google Invisible reCAPTCHA? Invisible reCAPTCHA is designed to be as inobtrusive to the regular user as possible. In most cases, users will not be prompted to solve a captcha. Only when Google detects suspicious behaviour or traffic will a captcha challenge be presented. The result is that while it may not prevent all spam signups, as soon as Google detects suspicious activity or patterns, further automated orders should be blocked. To learn more about how Invisible reCAPTCHA works, please visit https://developers.google.com/recaptcha/docs/invisible Installation Instructions To install the hook, follow the steps below. 1. Download the hook (attached at the bottom of this post) 2. Upload to the /includes/hooks/ directory of your WHMCS installation 3. The hook leverages the same Google reCAPTCHA configuration as defined in Setup > General Settings > Security. Therefore, please ensure the Captcha settings are configured there as follows: Captcha Form Protection: "Always On" or "Off when logged in" Captcha Type: reCAPTCHA (Google's reCAPTCHA system) reCAPTCHA Site Key & Secret Key: Provided Remember, Invisible reCAPTCHA may not block all spam submissions, but it should be effective in preventing repeated and high volume submission attempts. We're keen to hear how effective this change is at preventing the spam order submissions you’ve been experiencing recently so please let us know your experiences with the hook. Regards, Matt cart_recaptcha.php
  17. 2 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
  18. 2 points
    Hello there, On V 7.6 we now have the notifications NEW string ready for translation. Before having this option available, we decided to replace the text NEW by the number of notifications, as we think this can easily attract the user attention. On this minimalistic version, if the user don't have any notification the div is not displayed, we only show what needs to be shown 😉 Feel free to use it. {if count($clientAlerts) > 0} <div class="notifications"> <li> <a href="#" data-toggle="popover" id="accountNotifications" data-placement="bottom"> {$LANG.notifications} <span class="label label-info">{count($clientAlerts)}</span> <b class="caret"></b> </a> <div id="accountNotificationsContent" class="hidden"> <ul class="client-alerts"> {foreach $clientAlerts as $alert} <li> <a href="{$alert->getLink()}"> <i class="fas fa-fw fa-{if $alert->getSeverity() == 'danger'}exclamation-circle{elseif $alert->getSeverity() == 'warning'}exclamation-triangle{elseif $alert->getSeverity() == 'info'}info-circle{else}check-circle{/if}"></i> <div class="message">{$alert->getMessage()}</div> </a> </li> {foreachelse} <li class="none"> {$LANG.notificationsnone} </li> {/foreach} </ul> </div> </li></div>{else}<br /><br />{/if} Best regards, David Duarte
  19. 2 points
    they're not that bad - you just have to work out what type to use and where... the biggest handicap is that a lot of new features are totally undocumented - so next time WHMCS repeat the myth that there is terrific documentation provided, you have my permission to roll your eyes. this is one of those situations where it might be more hassle to use a hook than it would to edit a template... so in /templates/six (or custom)/store/promos/upsell.tpl you could change... <small><a href="{routePath($promotion->getLearnMoreRoute())}">Learn more...</a></small> to... <small><a href="{if $promotion->getLearnMoreRoute()|strstr:'sitelock'}sitelock.php{else}{routePath($promotion->getLearnMoreRoute())}{/if}">{lang key="learnmore"}...</a></small> which changes the link for the SiteLock promo, leaves the other links alone and uses the inbuilt translation string for Learn More...
  20. 2 points
    good luck using an official WHMCS community to discuss alternatives to WHMCS! 😮
  21. 2 points
    rkatz0, every issue I listed has been fixed in 7.6.1. I'm not aware of any outstanding font awesome issues with the templates we ship.
  22. 2 points
    I also agree with @yggdrasil slow down new feature release and work on only bug fix and about the marketplace am not sure they not going to change that because they making money 🙂 I agree with @ThemeMetro about this Font Awesome
  23. 2 points
    http://help.whmcs.com/m/updating/l/943515-troubleshooting-an-update-message-validation-issue-error
  24. 2 points
    EWAY have confirmed they will be rolling out a fix tomorrow morning. Not sure on the timing thou. Basically, they screwed up and are going to fix.
  25. 2 points
    An unfortunate trait of the internet is spam and automated bots disseminating that spam. As a business operator on the internet, you may also receive orders submitted in bulk by automated bots. There can be situations where you need to delete lots of clients with the same first name. This small script leverages the local API to cleanly delete all clients who match the specified term. This script is provided as-is, without warranty, and in the understanding for the potential to permanently and irreversibly delete data. Before running this script, please make a database backup: <?php /** * Delete spam clients where the firstname contains 5666Q.COM * using advanced database interaction and the DeleteClient API * * @link https://developers.whmcs.com/advanced/db-interaction/ * @link https://developers.whmcs.com/api-reference/deleteclient/ * * @author WHMCS Limited <development@whmcs.com> * @copyright Copyright (c) WHMCS Limited 2005-2018 * @license https://www.whmcs.com/eula/ WHMCS Eula */ require 'init.php'; use WHMCS\Database\Capsule; // Replace ADMIN_USERNAME with your admin username $adminUsername = 'ADMIN_USERNAME'; echo '<pre>'; // Loop through all clients where firstname contains 5666Q.COM foreach (Capsule::table('tblclients')->where('firstname', 'like', '%5666Q.COM%')->get() as $client) { // Delete the client with DeleteClient API $results = localAPI('DeleteClient', ['clientid' => $client->id], $adminUsername); // Check for errors if ($results['result'] == 'success') { echo "Deleted Client ID: " . $client->id; } else { echo "Error deleting Client ID: " . $client->id; } } echo '</pre>'; Begin by entering your adminstrator's username on line 19: $adminUsername = 'ADMIN_USERNAME'; Upload the script to your WHMCS directory, and visit in your browser. The script will search through all the clients matching the criteria specified in this line: 'firstname', 'like', '%5666Q.COM%' It will then properly and permanently delete matching clients and associated records. The last step is to show which clients are deleted, and if a problem was occurred. The file should then be deleted from your server. At the time of writing this post, this script was tested on the latest stable release of WHMCS 7.5.1 and should work with any that fall under Active Support as per the LTS schedule here: https://docs.whmcs.com/Long_Term_Support#WHMCS_Version_.26_LTS_Schedule If you have any feedback, questions, or concerns that I did not cover in this post, please feel free to reach out! delete_spam_clients.php
×

Important Information

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