-
Posts
33 -
Joined
-
Last visited
-
Days Won
2
Content Type
Profiles
Forums
Events
Hotfixes
Everything posted by Slaweally
-
Thank you mate, it needs to be developed more, it still has deficiencies, for this reason I shared it on github, let anyone who wants to develop it
-
Whmcs Cloudflare Manager Modules Whmcs Cloudflare DNS Mnager is a simple and useful module made for DNS control operations of domains in Cloudflare in Whmcs. Installation: Install the module in Whmcs/modules/addons/cloudflaremanager, activate it from the additional modules section in the Whmcs control panel. To create an api: https://dash.cloudflare.com/profile/api-tokens --> Edit zone DNS --> Select zones as in the photo : https://github.com/Megabre/CloudflareManager/blob/main/cf-token.png Create DNS Zone api token in Cloudflare and enter the api key in the installation area of the module (Leave the mail address blank) Then you can start using the module. Github: Whmcs Cloudflare module Thank you for the star rating, like and fork
-
<?php use WHMCS\Database\Capsule; add_hook('AfterModuleCreate', 1, function($vars) { // Get the service ID and product ID $serviceId = $vars['serviceid']; $productId = $vars['pid']; // Check if the product matches the target product ID (e.g., 3-day free trial product) $targetProductId = 123; // Replace with your trial product's ID if ($productId == $targetProductId) { // Define how many renew cycles you want (e.g., 2 renews = 3 + 3 + 3 days = 9 days total) $renewCycles = 2; for ($i = 0; $i < $renewCycles; $i++) { try { // Trigger the ModuleRenew command localAPI('ModuleRenew', [ 'serviceid' => $serviceId, ]); logActivity("Renewal successful for Service ID: {$serviceId} (Cycle: " . ($i + 1) . ")."); } catch (Exception $e) { logActivity("Renewal failed for Service ID: {$serviceId} (Cycle: " . ($i + 1) . "): " . $e->getMessage()); } } } });
-
There is nothing you can do in this case, the Website owner has to pay the bill.
-
Free WHMCS module for Hetzner, Vultr, DigitalOcean!
Slaweally replied to caasify's topic in Commercial Modules and Addons
It looks very nice, I will definitely try it when I have time. Thank you for sharing. Can you also make a module for ilkbyte.com, it would be really useful 🙂 -
Hello, I did the upgrade and I did not have a problem with what you mentioned?
-
My statements in this way do not mean that I hate WHMCS :) Since I am here yet, I am using whmcs. What I'm talking about is that whmcs thinks itself indispensable in this sector and risks losing its customers at the expense of making a little more money. I mean, they are not focusing on the needs of real users, but on what can make them money. but the truth of the matter is that it has always been real users who bring them money.
-
I agree with your example, for example, they released a big update like 8.12 and look at the new features; What's new in WHMCS 8.12 This version includes the following new features and functionality: Scheduled Actions for Support Tickets - Simplify and automate your support ticket follow-ups with scheduled actions Support Ticket Pinning - Keep priority support tickets at the top of your ticket queues Admin Invites - Simplify onboarding and increase security with the ability to invite new team members MarketConnect SSL Promotional Updates - Changes to client area promotional content and messaging that increases sales and conversions Scaling Quantities API Updates - Improved support for scaling quantities in products and addons OPcache Warnings - Proactive warnings when OPcache is enabled They really make fun of existing users. They don't care about those who have been on the wish list for years.
-
They don't realize that they are losing users while gaining shareholders. maybe they are trying to keep the profit rate stable by putting the power they lost on the customers they retained because many users now hated whmcs and switched to alternatives. This migration is increasing day by day. I don't know about other systems, but Wisecp has started to have a lot of influence in this market and they care more about their customers than whmcs, which has become a monopoly. I can honestly say that whmcs is bringing its own end every year with this kind of price increase and no development.
-
How can I embed a YouTube video in a Product Group Tagline?
Slaweally replied to HostMaria's topic in Using WHMCS
Dear HostMaria, I saw this message the other day and wrote a hook for you. I created a video embed input field in the whmcs product properties section, but I could never show this field through the theme. I also could not send the data I added here to the database. maybe those who are much better than me in this business can explain how to do this. -
Having Trouble Updating to 8.11
Slaweally replied to R3tr0's topic in Installation, Upgrade, and Import Support
There is a typo in configuration.php 2 lines, you need to fix it. For example, a variable like $Jay may have been accidentally defined or left missing. -
It's good to see that I wasn't the one who thought that whmcs started to deteriorate after it was sold years ago. Years ago, when I saw that cPanel whmcs plesk was all connected to the same company, I wrote a comment on Twitter and they blocked me 🙂 If we come to the subject, I think whmcs will now continue on the marketplace, and even gradually force users to completely attract users to the market. In short, for users, I think they are applying intimidation and hate policy. Maybe they are doing it unconsciously, but users think about it.
-
I thank you for your nice comments. I uploaded it to GitHub so that anyone who wants to take it and develop and continue.
-
Wordpress - WHMCS Products integration.
Slaweally replied to widiman's topic in Service Offers & Requests
Yes, you can use a hook for this, with this hook you can export products with json using api; <?php use WHMCS\Database\Capsule; add_hook('ClientAreaPage', 1, function ($vars) { if ($_GET['action'] === 'getProducts') { header('Content-Type: application/json'); $products = Capsule::table('tblproducts') ->join('tblpricing', 'tblproducts.id', '=', 'tblpricing.relid') ->where('tblpricing.type', 'product') ->select('tblproducts.*', 'tblpricing.currency', 'tblpricing.msetupfee', 'tblpricing.monthly') ->get(); echo json_encode($products); exit; } }); This hook will return product information from WHMCS in JSON format when the /index.php?action=getProducts URL is accessed. WordPress Side: Product Display with Shortcode: We show products dynamically by writing a shortcode in WordPress. Shortcode Example: function fetch_whmcs_products() { $response = wp_remote_get('https://your-whmcs-url.com/index.php?action=getProducts'); if (is_wp_error($response)) { return 'Unable to retrieve products.'; } $products = json_decode(wp_remote_retrieve_body($response), true); if (!$products) { return 'No products found.'; } $output = '<div class="whmcs-products">'; foreach ($products as $product) { $output .= '<div class="product">'; $output .= '<h2>' . esc_html($product['name']) . '</h2>'; $output .= '<p>' . esc_html($product['description']) . '</p>'; $output .= '<p>Price: ' . esc_html($product['monthly']) . ' ' . esc_html($product['currency']) . '</p>'; $output .= '</div>'; } $output .= '</div>'; return $output; } add_shortcode('whmcs_products', 'fetch_whmcs_products'); You can show products using [whmcs_products] shortcodes in WordPress content. Update and improve the codes according to yourself, this is just an example. -
Add a .user.ini File to the /help Directory: Create a new file in your /help folder and name it .user.ini. Add OPCache Setting to the file: opcache.enable=0 Apply Changes: Make sure that the necessary configurations for your server to read .user.ini files are enabled. If necessary, restart PHP-FPM or the web server: sudo systemctl restart php-fpm sudo systemctl restart apache2 # or nginx Conclusion: These steps will allow you to keep OPCache enabled on the main area of your WordPress site by simply disabling OPCache in the /help directory. This way, you can maintain your WordPress performance while remaining compatible with WHMCS 8.12.
-
Whmcs yeni sürümle birlikte tr karakter sorunu yaşamaya başlamıştık, bunu nginx için çözdüm ve gerekli kuralları paylaşıyorum, kendinize göre düzenleyin ve kullanın. server { listen 80; listen [::]:80; listen 443 ssl http2; listen [::]:443 ssl http2; {{ssl_certificate_key}} {{ssl_certificate}} server_name www.orneksite.com; return 301 https://orneksite.com$request_uri; } server { listen 80; listen [::]:80; listen 443 ssl http2; listen [::]:443 ssl http2; {{ssl_certificate_key}} {{ssl_certificate}} server_name orneksite.com www1.orneksite.com; {{root}} charset utf-8; {{nginx_access_log}} {{nginx_error_log}} # Redirect directories to an address with slash if (-d $request_filename) { return 301 $uri/; } # Transliterate Türkçe karakterler içeren URL'leri ASCII karşılıklarıyla yeniden yazma rewrite ^/(.*)ç(.*)$ /$1c$2 permanent; rewrite ^/(.*)Ç(.*)$ /$1C$2 permanent; rewrite ^/(.*)ğ(.*)$ /$1g$2 permanent; rewrite ^/(.*)Ğ(.*)$ /$1G$2 permanent; rewrite ^/(.*)ı(.*)$ /$1i$2 permanent; rewrite ^/(.*)İ(.*)$ /$1I$2 permanent; rewrite ^/(.*)ş(.*)$ /$1s$2 permanent; rewrite ^/(.*)Ş(.*)$ /$1S$2 permanent; rewrite ^/(.*)ö(.*)$ /$1o$2 permanent; rewrite ^/(.*)Ö(.*)$ /$1O$2 permanent; rewrite ^/(.*)ü(.*)$ /$1u$2 permanent; rewrite ^/(.*)Ü(.*)$ /$1U$2 permanent; # HTTP'den HTTPS'ye yönlendirme if ($scheme != "https") { return 301 https://$host$request_uri; } location ~ /.well-known { auth_basic off; allow all; } {{settings}} try_files $uri $uri/ /index.php?$args; index index.php index.html; location / { error_page 404 /index.php?$query_string; try_files $uri $uri/ /index.php?$query_string; } # WHMCS managed rules - Nginx uyarlaması # BEGIN - WHMCS managed rules - DO NOT EDIT BETWEEN WHMCS MARKERS ### # WHMCS için özel yönlendirme kuralları location ~ ^/(announcements|download|knowledgebase|store/ssl-certificates|store/sitelock|store/website-builder|store/order|cart/domain/renew|account/paymentmethods|password/reset|account/security|subscription|auth/provider/google_signin/finalize)/?(.*)$ { rewrite ^/(.*)$ /index.php?rp=/$1/$2 last; } # WHMCS admin panel için özel yönlendirme kuralları location ~ ^/AdminPanel/(addons|apps|search|domains|help/license|services|setup|utilities/system/php-compat)/?(.*)$ { rewrite ^/AdminPanel/(.*)$ /AdminPanel/index.php?rp=/admin/$1 last; } location ~ ^/AdminPanel/client/(.*)/paymethods/(.*)$ { rewrite ^/AdminPanel/client/(.*)/paymethods/(.*)$ /AdminPanel/index.php?rp=/client/$1/paymethods/$2 last; } location ~ ^/AdminPanel/setup/auth/(.*)$ { rewrite ^/AdminPanel/setup/auth/(.*)$ /AdminPanel/index.php?rp=/setup/auth/$1 last; } location ~ ^/AdminPanel/client/(.*)/tickets/(.*)$ { rewrite ^/AdminPanel/client/(.*)/tickets/(.*)$ /AdminPanel/index.php?rp=/client/$1/tickets/$2 last; } location ~ ^/AdminPanel/client/(.*)/invoice/(.*)/capture/(.*)$ { rewrite ^/AdminPanel/client/(.*)/invoice/(.*)/capture/(.*)$ /AdminPanel/index.php?rp=/client/$1/invoice/$2/capture/$3 last; } location ~ ^/AdminPanel/account/security/two-factor/(.*)$ { rewrite ^/AdminPanel/account/security/two-factor/(.*)$ /AdminPanel/index.php?rp=/admin/account/security/two-factor/$1 last; } location ~ ^/AdminPanel/search/intellisearch/(.*)$ { rewrite ^/AdminPanel/search/intellisearch/(.*)$ /AdminPanel/index.php?rp=/search/intellisearch/$1 last; } # END - WHMCS managed rules - DO NOT EDIT BETWEEN WHMCS MARKERS ### location ^~ /vendor/ { deny all; return 403; } location ~ \.php$ { include fastcgi_params; fastcgi_intercept_errors on; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; try_files $uri =404; fastcgi_read_timeout 3600; fastcgi_send_timeout 3600; fastcgi_param HTTPS $fastcgi_https; fastcgi_pass 127.0.0.1:{{php_fpm_port}}; fastcgi_param PHP_VALUE "{{php_settings}}"; } location ~* ^.+\.(css|js|jpg|jpeg|gif|png|ico|gz|svg|svgz|ttf|otf|woff|woff2|eot|mp4|ogg|ogv|webm|webp|zip|swf)$ { add_header Access-Control-Allow-Origin "*"; expires max; access_log off; } if (-f $request_filename) { break; } } kaynak:
-
I apologize, I made it for my own use, then I wanted everyone to use it and shared it, but I forgot to add the language 🙂 Now I translated it into English so everyone can use it https://github.com/SLW-CMS/Whmcsdbmanager/
-
Thank you, you should be careful when using
-
I don't know, it would be better to ask them this question
-
Tips for connecting to GSuite for sending mail
Slaweally replied to WHMCS ChrisD's topic in Troubleshooting Issues
Dear friends, I got this loader error a few months ago while making whmcs smtp settings, I talked to the whmcs support team many times, they gave me answers stating that it was caused by our nonsense theme, as they could not find the error in any way. Actually, the source of the problem was much simpler, it was the Admin language file. Change the admin language file to English and clean the browser and the problem should be solved. If the language file is in English, choose a different language, the source of the problem is the language file 🙂 -
Yes, I had a lifetime license of whmcs and since I could not get support, it was no longer useful to me and I transferred it. Wisecp, on the other hand, still sells a lifetime license and the price is really quite reasonable. so as someone who is bored and overwhelmed in whmcs right now, I can switch to wisecp at any moment, but my habits and the transition process are ruining me :)
-
It is much more convenient to buy a lifetime licence and at least they take into account the customers and update by accepting their requests. You may think that I use wisecp because I told you so, but I still use whmcs because habits are not easily left
-
I've looked at so many comments, wisecp is the first time I've seen it. and I don't understand how it's still not used. we know that it's much better and much cheaper than whmcs, but I have a doubt again. they also get regular updates every month and add new features 🙂
-
<?php use WHMCS\Session; use Illuminate\Database\Capsule\Manager as Capsule; add_hook('ClientLogin', 1, function($vars) { $clientId = $vars['userid']; logActivity("Client logged in: $clientId"); }); add_hook('AfterModuleCreate', 1, function($vars) { $clientId = $vars['userid']; $productId = $vars['serviceid']; logActivity("New product created. Client ID: $clientId, Product ID: $productId"); $client = Capsule::table('tblclients')->where('id', $clientId)->first(); if ($client) { logActivity("Client Name: {$client->firstname} {$client->lastname}"); } }); add_hook('ClientAreaPage', 1, function($vars) { $clientId = Session::get('uid'); if ($clientId) { logActivity("Page loaded. Session Client ID: $clientId"); } else { logActivity("Page loaded. No client logged in."); } }); ?> ?> Yes, you can do this by using a hook, but what you will do afterwards is also important. I shared a sample hook above, you can improve it according to yourself.
