Leaderboard
Popular Content
Showing content with the highest reputation since 02/07/25 in all areas
-
@Dkuzik in $_CONFIG you will get "MailConfig" element, You need to decrypt() the value of MailConfig. The decrypted value will return JSON containing SMTP setting. You can use the API to decrypt Data https://developers.whmcs.com/api-reference/decryptpassword/1 point
-
1 point
-
Oh boy, didn't even read this until I posted. Negative -$1 deactivates the option. I'll show myself out!1 point
-
Look for something common, like a .ru domain, and block that at the TLD level (unless you have customers using those). Trying to block all spammers by individual email addresses is a game you won't ever win. More effectively, you can disallow tickets by non logged-in users. Public facing things like this are abused all the time, and recaptcha only helps a little.1 point
-
After A/B testing with a different payment solution I can tell you that it is absolutely a WHMCS issue. Long story short: we moved card payments to a different billing system. Even with the added cost is still saves us money.1 point
-
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.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
-
Lagom WHMCS Client Theme has been updated to 2.0 version! Order Now Changelog Documentation Services Contact Different Styles & Colors Lagom WHMCS Client Area Theme consists of 4 unique styles. There are 5 different color schemes available for each style. Modern Futuristic Default Depth Style Manager Provides essential tools used to manage Lagom theme colors and styles without having any technical know-how. You will be empowered to apply various Styles and Color Schemes to tailor our theme to your brand style. Learn More Menu Manager From now on, you do not need to create complicated WHMCS hooks to modify the Lagom theme navigation. Menu Manager delivers a super convenient option to set up the menu items from the WHMCS addon. Learn More Multiple Layouts Make full use of 5 unique layouts for the main menu navigation and 2 various layouts for the footer. Other Lagom Features Login Based Layouts Display different menu and footer layouts based on the customer's login status. Learn More Basic SEO Management Manage SEO for selected theme pages. Assign your custom page title, description, and social image. Learn More Custom Layout for Pages Assign a unique Lagom Layout to specific pages and overwrite settings made in Layout Manager. Learn More Affix Theme Navigation Affix the top Lagom theme navigation when a customer scrolls your website up. Learn More Multiple Element Styles Using a few simple clicks you can choose from 3 different styles available for particular Lagom elements. Learn More Multiple Page Templates Define various templates for selected Lagom theme pages and configure its settings. Learn More Different Fonts Change Font Family used in the Lagom theme with a few simple clicks. Learn More Affix Theme Sidebars Affix theme sidebars to the top of the browser window. Learn More Hide Sidebars Hide Lagom theme sidebars for selected pages in Page Manager. Learn More1 point
-
WHMCS users and client accounts have separate contact information and they require separate updates to change details like the email addresses. The user management system allows a single user to access multiple client accounts. This separates authentication and authorization from services, billing, and support. To learn how to change the client account and the user account email address so they match please review this help guide: https://help.whmcs.com/m/managing/l/1681243-updating-user-and-client-account-details With this hook added to your WHMCS installation the system will now "Sync" the Client Account Email Address to match the User Account Email Address only when the change is made under the Account Details page via the client area. This hook adds a little "Note" under the Email Address field under the Hello Client! > Account Details section of the client area to inform that when this Email Address is changed, they will be logged out and they will need to log back in using the new Email Address they just set since this hook is updating both the client account and user account email addresses. Here is an example of the Account Details page Email Address field with this note: Via the Admin Area, when a client does this change and the hook was used it will make a log entry just like this: This entry indicates that the Client/User Email Sync Script hook was a success. Now both the Client Account Email Address and the User Account Email Address match for that client account. If there are multiple Users associated with the Client Account, this will only change the Email Address of the Owner of the account. <?php /* This script will update both the Client Account Profile email address and the user account email address when the change is made to the Account Details page for the email address field. Otherwise, you would have to update the email in both places and follow this article: https://help.whmcs.com/m/managing/l/1681243-updating-user-and-client-account-details Upload this file to your /includes/hooks directory of your WHMCS installation. There will be a Log entry when this script runs. @WHMCSDanny */ add_hook('ClientAreaHeadOutput', 1, function($vars) { // Only run if the on the Account Details page via the client area. // The action is going to be "details". This will make sure this message does not show anywhere else. $action = $_GET['action']; if($action == "details") { //Input the message under the Email Address field that they will be logged out after making the change. return <<<HTML <script type="text/javascript"> $(document).ready(function() { jQuery("input[name='email']").after('<span style="color:red; font-size:9pt;"><b>Note:</b> Changing your email address here will sync the email with your User Account. You will be logged out after you change the email. You must login using the new email address you just set.</span>'); }); </script> HTML; }; }); // prevent file from being loaded directly if (!defined("WHMCS")) { die("This file cannot be accessed directly."); } else { function clientowneruseremailsync_changeUserEmail(int $client_id, string $client_email){ // call the API and grab the owner user ID $command = 'GetClientsDetails'; $postData = array( 'clientid' => $client_id, 'stats' => false, ); $results = localAPI($command, $postData); if ($results['result'] == 'success') { // success! $client_owner_user_id = $results['client']['owner_user_id']; if (is_numeric($client_owner_user_id)){ // got a number, so it should be a valid owner user ID // now to perform the update to the user account to match the email set for the client account $command = 'UpdateUser'; $postData = array( 'user_id' => $client_owner_user_id, 'email' => $client_email, ); $results = localAPI($command, $postData); if ($results['result'] == 'success') { logActivity("Client/User Email Sync Script - Emails Successfully Changed and Synced. The e-mail address is set to $client_email for the Client Account and the Owners User ID: $client_owner_user_id", $client_id); } else { logActivity("Client/User Email Sync Script - Failed to change the e-mail address to $client_email for the Owners User ID: $client_owner_user_id . Results: ". $results, $client_id); } } } else { logActivity("Client/User Email Sync Script - Failed to verify that an e-mail change occurred on the clients profile. Results: ". $results, $client_id); } } add_hook('ClientEdit', 1, function($vars) { // Only run if the clients account profile email address is being changed. if ($vars['email'] != $vars['olddata']['email']){ // email is being changed. Update owning user accordingly. // get the client ID. It should be $vars['userid'] $client_id = $vars['userid']; // get the new e-mail address $client_email = $vars['email']; // call our helper function clientowneruseremailsync_changeUserEmail($client_id, $client_email); } }); } ?> Enhanced Version - Added a checkbox and tooltip In this new updated version of this hook, I added a checkbox/tooltip for the end-users to decide if they want to use this option to sync the Email Address under the Profile page too. Otherwise, nothing happens and WHMCS works as normal. The checkbox needs to be checked before it will run the same hook code to update both email addresses in both locations. (Account Details and Profile sections via the client area) <?php /* This hook script will update both the Client Account Profile email address and the User Account email address When the change is made to the Account Details page for the email address field only. It does not work for the Profile page. This version adds a new checkbox with a tooltip to let the end-user decide if they want to use this option or not. The checkbox needs to be checked for the hook to execute. If the checkbox does not get checked WHMCS works as expected and updates just the Account email. The Profile email account will still need to be updated if they want it to be the same. Otherwise, you would have to update the email in both places and follow this article: https://help.whmcs.com/m/managing/l/1681243-updating-user-and-client-account-details Upload this file to your /includes/hooks directory of your WHMCS installation. There will be a Log entry in the admin area when this script executes. @WHMCSDanny */ add_hook('ClientAreaHeadOutput', 1, function($vars) { // Only run if the on the Account Details page via the client area. // The page action is "details". This will make sure this message does not show anywhere else. $action = $_GET['action']; if($action == "details") { //Input the checkbox and tooltip under the Email Address field return <<<HTML <script type="text/javascript"> $(document).ready(function() { jQuery("input[name='email']").after('<input type="checkbox" name="syncEmails" id="syncEmails"> <span style="color:red; font-size:9pt;"><b>Sync Email with your User Account Email</b></span><span class="form-group"> <i class="far fa-question-circle" data-toggle="tooltip" data-placement="top" title="This option will sync your Email Address Here with your Profile Email Address. You will be logged out and will need to login with your new email address. If you do not check this option you will need to update it under the Your Profile page as well"></i></span>'); }); </script> HTML; }; }); // Prevent file from being loaded directly if (!defined("WHMCS")) { die("This file cannot be accessed directly."); } else { if (isset($_POST['syncEmails'])) { // Checkbox is checked // Perform actions and the logic to check the emails and replace them with the new one function clientowneruseremailsync_changeUserEmail(int $client_id, string $client_email){ // call the API and grab the owner user ID $command = 'GetClientsDetails'; $postData = array( 'clientid' => $client_id, 'stats' => false, ); $results = localAPI($command, $postData); if ($results['result'] == 'success') { // Success we have the owners user ID from the database! $client_owner_user_id = $results['client']['owner_user_id']; if (is_numeric($client_owner_user_id)){ // We have the ID number, so it should be a valid owner user ID // Perform the update to the user account to match the email set for the client account $command = 'UpdateUser'; $postData = array( 'user_id' => $client_owner_user_id, 'email' => $client_email, ); $results = localAPI($command, $postData); if ($results['result'] == 'success') { logActivity("Client/User Email Sync Script - Emails Successfully Changed and Synced. The e-mail address is set to $client_email for the Client Account and the Owners User ID: $client_owner_user_id", $client_id); } else { logActivity("Client/User Email Sync Script - Failed to change the e-mail address to $client_email for the Owners User ID: $client_owner_user_id . Results: ". $results, $client_id); } } } else { logActivity("Client/User Email Sync Script - Failed to verify that an e-mail change occurred on the clients profile. Results: ". $results, $client_id); } } add_hook('ClientEdit', 1, function($vars) { // Only run if the clients account detaoils email address field is being changed. if ($vars['email'] != $vars['olddata']['email']){ // Wmail is being changed. // Get the client ID. It should be $vars['userid'] $client_id = $vars['userid']; // Get the new e-mail address $client_email = $vars['email']; // Call the helper function to make the change clientowneruseremailsync_changeUserEmail($client_id, $client_email); } }); } } ?> At the time of writing this post, this process was tested on the latest stable release of WHMCS 8.9.0 I hope you find this useful. If you have any feedback or questions, please feel free to reply to this thread! WHMCSDanny1 point
-
there's no equivalent simple hook method with these home page tiles... you can adapt other hook points to change certain aspects of these tiles, but generally to keep things simple, you're looking at either editing the clientareahome.tpl template (which determines which tiles are shown based on the general settings). or you use CSS in a custom CSS file, e.g if you want to adjust styling. for example, in Six, if you wanted to remove the Tickets tile and adjust the width of the other tiles to take up the full width (if you don't adjust, then it will just show three tiles and leave a space), then you could use... .tiles .tile:nth-child(3) {display: none !important; } .tiles .col-sm-3 {width: 33.33% !important; } you could do something similar in 21, but the css would be different... .tiles .col-6:nth-child(3) {display: none !important; } .tiles .col-xl-3 {max-width: 33.33% !important; flex: 33.33% !important;}1 point
-
This is an old issue. I got a total of 5 votes on my feature request, not enough to draw your attention and it still is causing me problems sometimes. To provide more information, the From address in my case cannot be changed because only one is valid with my email provider. Their SMTP server would refuse to deliver the email when I put another From address. Using a reply-to address is therefore the only way to get replies on an alternative desired address. Isn't there a hack to add the extra email header? Or could you please include my feature request in the next version?1 point
-
.tiles .tile:nth-child(1) { background-color: #f0f8ff; } .tiles .tile:nth-child(1) .fa-cube {color: #5bc0de; } .tiles .tile:nth-child(2) { background-color: #d8fcdb; } .tiles .tile:nth-child(2) .fa-globe, .tiles .tile:nth-child(2) .fa-shopping-cart, .tiles .tile:nth-child(2) .fa-file-alt {color: #5cb85c; } .tiles .tile:nth-child(3) { background-color: #ffe7e7; } .tiles .tile:nth-child(3) .fa-comments {color: #d9534f; } .tiles .tile:nth-child(4) { background-color: #fff7e7; } .tiles .tile:nth-child(4) .fa-credit-card {color: #f0ad4e; }1 point
-
Hi @zomex, Please also copy the viewcart.tpl template into your child order form template. In order to have a custom checkout.tpl, you must bring over the viewcart.tpl as well due to the inclusion of this template within it. This has always been the case with child order form templates.1 point
-
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
-
Sure. Here is a SMALL selection of things you copied from our site without even worrying about using the same exact phrases (I highlighted some - scroll down). But that's not about using the same phrases. Try reading our article and your article. Same topic, same concepts, same phrases and expressions even used in the same order. It's obvious the the author the same (me, not you). There are probably millions of articles about SEO on the internet and I can't find two that look so similar. Is it a coincidence? Of course not as you repeated the same dirty copy/paste job for other articles we published. It is so cringe. You're telling people «don't do X, do Y instead» while in your own site you are doing X. This clearly doesn't come from you. Here is the fun part. I noticed you were copying us long time ago. I even saw you doing it in real time from Chatstack and Google Analytics. You spent like 700 hours on our site idling on articles you copied. As if it wasn't enough, I also noticed clicks coming from your site. Why? Because when you were copying contents from our site, you inadvertedly clicked on some links that were included in the article. Next. Few weeks ago the "E" on my keyboard started to not work consistently (I had to press "E" harder). When I noticed that, it was already too late. I updated some articles with more text and there were some missing "E". Guess what? I noticed the same problem on your site in the same paragraphs I had to fix. I respect all my competitors to the point that I have no problem in recommending them to visitors of our site (source). I even have a list of competitors that I'm ready to include in this list as soon as their websites are fully functional (I don't want to link "Coming soon" sites). Same goes for my own customers. I "sold" tens of NicIT and EurID modules by Modulesgarden and some Zomex/WSA plugins. This includes some of your modules. I do not expect anything in return. I just want my customers to "be happy". Frankly I don't know how you can come here to say that you didn't copy anything 😐 Now I understand what brian was saying about you few years ago. Katamaze WGS ATTACK! Thanks! ❤️❤️ ❤️❤️ I noticed now that I wrote "attack" instead of "attract". You're even copying my typos 😂 Katamaze WGS Katamaze WGS Katamaze WGS Katamaze WGS1 point
-
Dear Kian, There is nothing we have copied in here, the titles are same because there is nothing extra we can add in these blogs because WHMCS do not have much to highlight, SEO have basic things and we have to add them all. We have launched Hetzner Module, AWS modules, OVH modules, with same and extra features team Modules Garden have launched, we will not call them as they have copied our modules. The billing extension here we are talking about the default billing module whmcs is using so there is nothing to do with your billing extension. Please share your thoughts. Thanks Team WGS1 point
-
2018: WGS exposed for bad coding and (probably*) copy-pasting from stackoverflow. 2020: WGS exposed for copy-pasting blog articles. Normally I stay out of competitor bashing, but I couldn't resist... * I don't remember exactly the expose letters.1 point
-
the easiest way would be a css entry in templates/six (or custom)/css/custom.css #order-premium_comparison .price-table-container .price-table { width: 250px !important; min-width: 250px !important; } if you wanted 5 columns, you'd change them both to 190px or less..1 point
-
Yes, you have to edit the admin template "viewticket.tpl". I hacked this code myself: {if !$numcustomfields} <div align="center">{$_ADMINLANG.support.nocustomfields}</div> {else} <table width="100%" border="0" cellspacing="1" cellpadding="5" bgcolor="#cccccc"> {foreach from=$customfields item=customfield} <tr bgcolor="{cycle values="#F4F4F4,#F8F8F8"}"><td width="200">{$customfield.name}</td><td><strong>{$customfield.value}</strong></td></tr> {/foreach} </table> {/if} There's probably a more elegant solution but that works.1 point
-
0 points
-
Hello. It sounds like you’re encountering an issue with the ‘none’ option in your custom field within WHMCS. This could be due to a recent update or change in the WHMCS system that has affected how custom fields are validated. One possible solution is to check if there have been any changes to the validation rules for custom fields. You can do this by navigating to Configuration > System Settings > Custom Fields in WHMCS and reviewing the settings for the specific custom field. Ensure that the ‘none’ option is not set as a default value and that the field is marked as required, which should prompt clients to select a valid option. If this doesn’t resolve the issue, it might be helpful to look into recent updates or community discussions for similar issues. For instance, after certain updates, some users have reported that disabling and re-enabling custom fields and making small changes, like removing spaces after commas, can sometimes resolve similar problems. If you continue to face difficulties, consider reaching out to WHMCS support for more personalized assistance. They may provide insights specific to your version and setup, or there might be a patch or workaround available for this issue.-1 points
-
Thank u very much. I can extract data. Now let's see if I can make it work for me. For some reason decryptpassword() didn't work for me. decrypt () worked-1 points