Search the Community
Showing results for tags 'php'.
Found 62 results
-
I recently upgraded to WHMCS 8.6.1., upon scanning for PHP 8.1 compatibility I get these files flagged (screenshot attached). I'm running ionCube Loader Version: 12.0.2 currently. Any info on how to rectify would be appreciated. Thanks
-
php/ioncube Issues: Encoding Compatibility Unknown
waltr100 posted a topic in Troubleshooting Issues
Hello, I’m trying to use a suite of WHMCS/WordPress integration plugins called WHMpress. Sadly I've run into some issues and the developer support is subpar so, I'm looking to you guys to hopefully help me. The plugins communicate with WHMCS via a module addon. This is the where all of the issues stem from. This is the error I see under the PHP Version Compatibility page for two files (modules/addons/whmpress/library.php and modules/addons/whmpress/whmp_functions.php): Files encoded using the V9 or V10 encoder (without bundling) cannot be differentiated and it is therefore not possible for us to confirm compatibility. If the files were obtained prior to March 2018, it is likely that they are encoded using ionCube V9 or earlier, and will not be compatible with the selected PHP version. We recommend contacting the original vendor to confirm file compatibility before upgrading. This is the error I see under the error logs: Error: Whoops\Exception\ErrorException: The file /home2/rws28837/rws.richtopco.com/modules/addons/whmpress/whmp_functions.php encoded as type [1/71] cannot be decoded by this version of the ionCube Loader. in Unknown:0 Stack trace: #0 /home2/rws28837/rws.richtopco.com/vendor/whmcs/whmcs-foundation/lib/Utility/Error/Run.php(0): WHMCS\Utility\Error\Run->handleError(16, 'The file /home2...', 'Unknown', 0) #1 [internal function]: WHMCS\Utility\Error\Run->handleShutdown() #2 {main} I'm using a shared hosting server so I don't have root access. My sites are using php7.4 and ionCube24 v10.4.5. If I update to a newer version of php then the ioncube loader is outdated and I get an error screen while trying to access my WHMCS admin page. Can I do anything to fix this? Thanks for any help! -
1. QuickBooks Desktop For WHMCS 1.5.0In search of a solution that would seamlessly connect all financial data between the QuickBooks Desktop platform and the WHMCS system? No need to look any further, as we have just significantly upgraded the exact module you want – QuickBooks Desktop For WHMCS!The 1.5.0 version, released just today, contains various enhancements that boost the performance of this unique module. A brand new cron job synchronization argument allows automatic export of all existing clients from WHMCS to QuickBooks!Additionally, this famous piece of software has received a whole new scope of compatibility, featuring: WHMCS V8.6 and the latest V8.7, PHP 8.1, QuickBooks Desktop 2003 Pro/Premier/Enterprise latest releases. You’re more than welcome to take an even closer look at QuickBooks Desktop For WHMCS 1.5.0 on our website – make sure you take advantage of the notable 10% discount!Read more about QuickBooks Desktop For WHMCS 1.5.0!Are you a proud QuickBooks Online user? Make sure to check our specially designed module, which has also obtained WHMCS V8.7 support!2. Payment Gateway Charges For WHMCS 2.2.2We have one more piece of great news regarding the extended compatibility progress of our products: the enthusiastically anticipated upgrade of Payment Gateway Charges For WHMCS has just dropped!The module’s latest 2.2.2 version empowers you to include additional discounts and fees for the usage of different payment gateways not only in WHMCS V8.6, but also the most recent V8.7!Read more about Payment Gateway Charges For WHMCS 2.2.2!3. Elevate your customer relationships with the new EasyDCIM business guide!The web hosting industry consists of a great number of businesses that offer innovative solutions and high-end technology, but it’s not uncommon for many to struggle to retain customers in the long term. The issue is a lot simpler than it may seem: the most critical aspect is often overlooked, which is customer satisfaction!This doesn’t have to be the case with your enterprise, especially with so many ways available to make clients content. But what are the best ones? The EasyDCIM team has the answer, having compiled a list of 10 most effective methods to show your clientele how much you value them.The whole guide can be found on their Blog, so if you’re interested in building a customer-centric business model, be sure to stop by for a quick break from professional duties!Find out more on the EasyDCIM Blog!Need Custom Software Development For Your Business? Get Your Free Quote Now! Specially for you we will adapt an application and its design to your own needs, create a new module or even a completely new system built from scratch!
-
- QuickBooks
- QuickBooks Desktop
- (and 7 more)
-
1. It’s Christmas time - 10% OFF storewide!The bells can already be heard jingling, so allow us to express the kindest wishes to you all, dearest clients! May your Christmas be a wonderful time of delight, happiness and peacefulness, spent with family and friends. Cheers from the whole ModulesGarden team!We’re excited to let you know that one more gift is waiting for you, as our Christmas Promotion has just begun – each WHMCS module you can find on our marketplace has been touched by a 10% discount! Before you start browsing, take a quick stop at our Blog and get the jolly promo code, which can be used until January 8th, 2023.Make the atmosphere even more magical!2. CRM For WHMCS 2.9.0Completely absorbed by the recent workflow, our developers have crafted a huge update to our well-known module, famous for the automated management of customer relationships. Precisely, we’re calling out CRM For WHMCS!By means of the 2.9.0 release, your business connections will get substantially improved by means of as many as 10 spanking new features! We’ll put just a few under the microscope right away: Set “Pending”, “Confirmed”, “Closed” or any other custom status with defined color to follow-ups, Modify the email subject and the content when the email template, that is about to be sent, is loaded, Tag staff members using the “@” sign in the notes in order to notify them if they have been mentioned. Crowning the unbelievable advancement, that is CRM For WHMCS 2.9.0, is the flawless compatibility with the latest WHMCS V8.6 and PHP 8.1. Discover its whole extent on our website along with a little surprise!Read more about CRM For WHMCS 2.9.0!3. OpenStack Projects For WHMCS 1.5.0On the other hand, you may want to start the search for a perfect gift with a detailed look at our popular module, crafted to allow the provisioning of OpenStack projects in a completely automated manner. Configuring resource bundles and assigning user roles remotely? This description fits only one piece of software – OpenStack Projects For WHMCS.The just released 1.5.0 version is a perfect idea for a Christmas gift this year, with its support for OpenStack "Zed" and the immaculate compatibility with WHMCS V8.6 and PHP 8.1. The changelog doesn’t however end there, so discover it in its entirety and make this Christmas even more memorable!Read more about OpenStack Projects For WHMCS 1.5.0!4. Office 365 For WHMCS 3.1.0You are not mistaken, this is the third major update that our developers have conjured just recently! Provisioning Microsoft Office 365 plans in your WHMCS has now become even more advanced, all thanks to the upgraded Office 365 For WHMCS.Owing to the impeccable support for WHMCS V8.6 and PHP 8.1 in combination with a set of extensive improvements, the 3.1.0 version is ready to amaze you even more than it already could.Read more about Office 365 For WHMCS 3.1.0!5. GoGetSSL For WHMCS 2.8.1 & Latest UpdatesThese past days have been all about upgrades, resulting in another refinement to our free toolkit designed for the provisioning of SSL certificates. Take a closer look at GoGetSSL For WHMCS 2.8.1 and find out about the news we have introduced this week!The ongoing task to equip all our modules with impeccable support for the latest WHMCS V8.6 has resulted in another set of updates, laid out below for your comfort: Domain & Email Forwarding For WHMCS - v1.4.4 IP Manager For WHMCS - v2.5.14 Product Free Trial Manager For WHMCS - v1.0.1 R1Soft Backups For WHMCS - v1.1.12 Unban Center For WHMCS - v2.3.8 Zimbra Email For WHMCS - 2.1.10 Need Custom Software Development For Your Business? Get Your Free Quote Now! Specially for you we will adapt an application and its design to your own needs, create a new module or even a completely new system built from scratch!
-
1. OpenStack VPS & Cloud For WHMCS 2.2.0It’s no secret that Christmas is getting closer with each day that passes, but have you already included yourself in the gift shopping spree? If you’re unsure what your heart desires, let us solve the mystery by announcing this week’s news – an update to OpenStack VPS & Cloud For WHMCS!The 2.2.0 version of this popular module for the provisioning of OpenStack virtual servers has a few exciting tricks up its sleeve, so let’s take a closer look at some of them: OpenStack "Zed" support, Setting the "Availability Zone" as the configurable option, Running scheduled tasks manually from the admin area, without waiting for the cron job. Worth highlighting is also the introduced WHMCS V8.6 and PHP 8.1 support - why don't you take a look at the whole changelog and stick around to grab a special 10% discount?Read more about OpenStack VPS & Cloud For WHMCS 2.2.0!2. Under the microscope: Email Notifications Organizer For WHMCS!Even though we have crafted an abundance of practical modules so far, we’re constantly thinking of new solutions that would make daily life easier for you and your clients. This was exactly the case with our latest creation – Email Notifications Organizer For WHMCS!So as to display its features in as much detail as possible, we have uploaded a fresh entry on our Blog, which will also show you the benefits that you and your customers will experience thanks to this module. Reduced carbon footprint and well-organized inbox are just two examples!Read more about Email Notifications Organizer For WHMCS!3. New EasyDCIM business guide: How to make clients feel cared forYou surely know that in order for a web hosting business to thrive, a lot of different aspects need to be focused on, however particularly one of them should by all means become the priority: the customer.Putting your clientele in the center of attention by building a customer-centric business model is a subject close to the heart of EasyDCIM team, who have decided to share their knowledge in a recent Blog post, displaying 10 ways how to best appeal to clients!So, if you were looking for ways to ensure the success of your web hosting enterprise, perhaps this is the direction you as a provider should take. There is only one way to find out – start reading!Continue on the EasyDCIM Blog!Need Custom Software Development For Your Business? Get Your Free Quote Now! Specially for you we will adapt an application and its design to your own needs, create a new module or even a completely new system built from scratch!
-
1. DNS Manager For WHMCS 3.2.0Continuing on the recent trend we’ve established, another big player that has been subject to over a decade of active development has just been significantly enhanced - you love it because it allows the provisioning of DNS and rDNS zones with a large number of instruments. Ring any bells already? Right on, as DNS Manager For WHMCS should!You surely remember well when the migration of the module's addon to V3 came about. The official transfer of "DNS Zones" section, as well as "Servers" and "Record Sets" settings took place in the 3.1.0 update not too long ago, but the next part is already here!In today’s 3.2.0 release you will find a total of 4 crucial sections migrated to the module V3 addon: Global Settings Packages Blocked Strings Logs Furthermore, you are now empowered to export DNS zones to TXT files in BIND format! You’ll definitely be pleased to know that DNS Manager For WHMCS 3.2.0 features impeccable support for WHMCS V8.6 and PHP 8.1 – all 24 points of the changelog are waiting to be discovered!Read more about DNS Manager For WHMCS 3.2.0!2. Polish Language Translation For WHMCS 2.5.0Are you surprised by the traffic generated by your polish speaking customers? Maybe you speak polish yourself and have already wondered about a way to translate your system for a while? In both cases, you will highly benefit from the just updated Polish Language Translation For WHMCS 2.5.0!We’re excited to share that the hard work of our language and tech specialists has resulted in as many as 60 new or revised lines added to both the client and admin area! All that to deliver the best possible experience in the most recent WHMCS V8.6.1.Read more about Polish Language Translation For WHMCS 2.5.0!Another week passing means that we’ve rolled out another share of WHMCS V8.6 compatibility updates – see for yourself: EURid Registrar For WHMCS – v1.4.2 Freshservice For WHMCS – v1.0.3 GoDaddy Domain Registrar For WHMCS -v3.3.13 Kayako For WHMCS – v1.1.6 MX Registrar For WHMCS – v1.5.14 NIC IT Registrar For WHMCS – v1.4.2 WordPress Manager For WHMCS – v1.8.1 Zendesk For WHMCS – v2.4.1 Need Custom Software Development For Your Business? Get Your Free Quote Now! Specially for you we will adapt an application and its design to your own needs, create a new module or even a completely new system built from scratch!
-
1. Email Notifications Organizer For WHMCS - 25% OFF!Our team never misses the opportunity to enhance an already existing product, but creating a fresh piece of software entirely from scratch is especially rewarding. Let’s welcome another member of our marketplace – Email Notifications Organizer For WHMCS!Now you can introduce a whole new level of convenience to your clientele, by sending them data from multiple email notifications about unpaid invoices or expiring domains in the form of single messages. You will be able to set a custom template and delivery time for such notifications and see summaries of blocked and delivered emails for a chosen time period. Quite extraordinary, isn’t it? You'll optimize the usage of your server resources and immediately notice extra space, not to mention the reduced carbon footprint of your entire enterprise.It’s also been equipped with support for the latest WHMCS V8.6 and PHP 8.1, so go ahead and add a unique boost to your business now at a phenomenal 25% discount!Read more about Email Notifications Organizer For WHMCS!2. Another Set of WHMCS V8.6 Compatibility Updates WHMCS V8.6 has just been promoted to General Availability, meaning it’s now the recommended version for all installations and updates. Right after having heard the news, we’ve focused completely on equipping our products with impeccable support! Report Generator For WHMCS 4.3.0 with ACL is certainly a highlight, but let’s check what other products have also joined the official compatibility list of late: Client Area Popup For WHMCS – v1.3.5 DirectAdmin Extended For WHMCS – v3.9.1 Google Cloud Virtual Machines For WHMCS – v1.3.1 Hetzner VPS For WHMCS – v1.7.1 Product Feedback Center For WHMCS – v2.1.1 3. GoGetSSL For WHMCS 2.7.9We’re closing in on this week’s set of news by sharing one more update, this time to our completely free toolkit designed to supply your clients with SSL certificates – GoGetSSL For WHMCS 2.7.9. View the changelog and see what’s new!Read more about GoGetSSL For WHMCS 2.7.9!Need Custom Software Development For Your Business? Get Your Free Quote Now! Specially for you we will adapt an application and its design to your own needs, create a new module or even a completely new system built from scratch!
-
- ModulesGarden
- Modules Garden
- (and 19 more)
-
Hi, I hope everybody will be fine. I have setup domain pricing on custom page using WHMCS Feeds. However, it is showing all TLDs in just one page only. Please refer to this post, how it is possible to display these TLDs as 25 rows per page via pagination? Regards
-
Hi, I hope everybody will be fine. I have setup domain pricing on custom page using WHMCS Feeds. However, it is showing all TLDs in just one page. How it is possible to display these TLDs as 25 rows per page via pagination. Thanks in advance. Regards
-
Hello, I would like to use https://www.stopforumspam.com/usage to block spammers, current reCaptcha does not seem to be effective for contact form SPAM tickets. So any idea how to implement it, for example to WHMCS 6.x? v6 hcaptcha module? My other idea was firewall and mod security. But that is just a theory.
- 1 reply
-
- spam control
- php
-
(and 1 more)
Tagged with:
-
Hello there, Is it possible for http request using PUT method in addon module ? If possible, any ideas how to use it ? Please help me Thank you
-
- addon module
- php
-
(and 3 more)
Tagged with:
-
I'm running WHMCS v8.4.1 (current as of this post) and PHP v7.4.28. In the System Health Status there is the following warning: The next version of PHP is 8, which WHMCS does not support. So I can't figure out why is WHMCS throwing a warning for this? I'm using the most current version of PHP supported by WHMCS and there is nothing I can do. This seems ludicrous.
- 1 reply
-
- php
- System Health Status
-
(and 1 more)
Tagged with:
-
Hi, I have a few custom pages created and they all end with .PHP extension of course. What i want to do is, remove .PHP extension only on custom pages, not entire WHMCS site. Ex. domain.com/page.php to domain.com/page And, at the end if i type website.com/page.php to be redirected to domain.com/page and still to be able to access domain.com/page directly. I've been searching for this for a very long time and i can't find any solution. Any idea, feedback, help will be much appreciated.
-
I have change php version 7.3 to 7.4 from cPanel. I also edit cron job command and change opt/alt/php73/usr/bin/php -q /*****/****/****/crons/cron.php to opt/alt/php74/usr/bin/php -q /*****/****/****/crons/cron.php but I got error on system health check page on my WHMCS. How can I solve this issue?
-
I hope someone has knowledge about this .. I find very little information about it. I hope someone helps me. I am trying to prevent users from being able to change some fields in their profile. I found the following function: https://developers.whmcs.com/hooks-reference/everything-else/#customfieldsave <?php add_hook('CustomFieldSave', 1, function($vars) { return array('value' => 'overridden value',); }); this prevents any field from being editable, however, how can I select a specific field? img: someone posted an idea in 2019. however it doesn't work, because fieldid and relid return NULL from $vars any idea? I just need to select the fields that I want to prevent from being edited.
-
Hello, I am designing a custom order form for myself in whmcs. I changed the domain name selection part when purchasing hosting. I did as in the attached image. The transfer part is not working. In the transfer part, it performs the domain inquiry part. However, when I click the continue button, the domain configuration page does not appear. In other words, the page where I will enter the transfer code does not open, it transfers it directly to the cart. The domain name I selected for the product does not appear in the cart. I will show them all in the appendices below. If it is a javascript-related problem, if there is javascript code that I need to share, if you let me know in the comments, I will share it. I don't know exactly what is causing the problem. I would be glad if you help. Thanks in advance..
-
whmcs dismisses the best ideas? for developers trying to create a better ecosystem for whmcs "they discard the best ideas" to get into context, some time ago while working with the whmcs API, I noticed that whmcs does not allow including "custom files within /includes/api" I'll leave a link on what I had to do to achieve it: which is absurd if you think about it. if they allowed to include files (within the api roles) they would allow other developers to join the project and add new functions that WHMCS does not yet have. now I take it that someone posted the exact same question but it was discarded: https://requests.whmcs.com/idea/custom-api-support it is very obnoxious that the WHMCS team does not allow one to create their own api functions. it is unfortunate that they do not listen to users. It is unfortunate that the vision of whmcs is not to allow the use of its software as a means of administration, but that we generate our own functions for our projects (in the case of my company, a laravel project). I wonder if the WHMCS team really listens to users. I wonder if they ever have ... I am very disappointed that whmcs does not allow the newly added files to appear in the api folder as shown in these images: as you can see from the images, we are unable to assign the role of the new file. instead I had to modify the table: tblapi_roles within my database directly to manually give the file permissions. WHMCS DOES NOT LISTEN TO ITS CUSTOMERS, WHMCS IS NOT INTERESTED IN THAT WE DO BETTER PROJECT, NOR THAT THE ECOSYSTEM IS IMPROVED! If an admin reads this topic, please understand that I am looking for WHMCS to be used more by developers. Currently we live very limited, the documentation and all the files written in / includes/api lack many features that we developers could include. We could provide more external functionalities. and we would have the ability to develop our own characteristics. this would open the doors much more for new customers to join in purchasing whmcs licenses. In addition to increasing sales of whmcs, it would also allow the possibility of writing our own characteristics, developing new modules that we would publish in the marketplace ecosystem, increasing the number of modules and characteristics that WHMCS currently has. I hope this topic has relevance to both whmcs and external developers. my point of view is that if they allow "Role Management" to detect the files included in /includes/api as roles. (similar to how it works when we add modules and plugins that automatically appear in the whmcs module manager). it would open new doors for developers. I am sure that this functionality could be done with a few lines and in a short time. as a developer I know that this would not take too much work. I hope they understand me. my english is not very good. 🙂
-
this is a snippet of my quote/contract script it seems to know the recurring but not the onetime, it shows the "unit price" but no the "total price I need to have the one time and payments show up in the contract the 2 hooks you need to add in //term is the call // 1 displays the number of months [term: 1] [recur:36] <?php $pdf->Image(ROOTDIR.'/assets/img/rwclogo.png', 63,10,75,'c'); $pdf->MultiCell(170,5,""); $pdf->SetFont('freesans','B',11); $pdf->Cell(175,40,"CONTRACT FOR $subject ONLINE MARKETING SERVICES",25,1,'C'); $total_onetime = 0; $total_recur = array(); foreach ($lineitems AS $item) { $description = $item["description"]; # find term $matches = array(); preg_match('/\[term:(.*?)\]/i', $description, $matches); if (empty($matches)) { $term = ''; } else { $term = strtolower(trim($matches[1])); $description = str_replace($matches[0], '', $description); } # find recur $matches = array(); preg_match('/\[recur:(.*?)\]/i', $description, $matches); if (empty($matches)) { $recur = ''; } else { $recur = strtolower(trim($matches[1])); $description = trim(str_replace($matches[0], '', $description)); } # get unit price and total price $matches = array(); preg_match('/\d+\.\d+/', $item['unitprice'], $matches); $item_unitprice = (float)$matches[0]; $matches = array(); preg_match('/\d+\.\d+/', $item['total'], $matches); $item_total = (float)$matches[0]; # add onetime and recurring totals if ($recur == '') { $total_onetime += $item_total; } else { if (!array_key_exists($recur, $total_recur)) { $total_recur[$recur] = 0; } $total_recur[$recur] += $item_total; } } $pdf->SetFont('freesans','B',9); if ($total_onetime > 0) { } foreach (array('monthly', 'quarterly', 'semi-annually', 'annually', 'biennially') as $recur) { if (isset($total_recur[$recur]) && $total_recur[$recur] > 0) { } unset($total_recur[$recur]); } # any remaining recurs foreach ($total_recur as $recur => $amount) { } #========================================================================== # determine weather to show the ONE TIME payment or not #if ( $total_onetime < 100 ) { #$ot_show = false; #} #else { #$ot_show = true; #} #========================================================================== # determines weather or not to split the initial payment in half #if ( $total_onetime >= 10000 ) { #$bulk = $total_onetime / 2; #$addtl_payment_msg = 'and the second half of $' .$bulk. ', will be due within 60 days. '; #} else { #$bulk = $total_onetime; #$addtl_payment_msg = ''; } #========================================================================== #calculate One time payment using monthly pymts as a varible #========================================================================== #$otpp = ( $total_recur[$recur] * $recur ); #$ots = ( $otpp * .1); #$ots = round( $ots, 2, PHP_ROUND_HALF_UP ); #$otp = $otpp - ($otpp * .1); #$otp = round( $otp, 2, PHP_ROUND_HALF_UP ); #========================================================================== #calculate One time payment and monthly payment to come up with a total #$totalot = ( $total_recur[$recur] * $recur + $bulk ); #$totalot10 = ( $totalot - $ots ); #========================================================================== $pdf->SetDrawColor(255); $pdf->SetFillColor(255); $pdf->SetFont('freesans','B',9); $pdf->Cell(170,5,"Authorization:",0,0,'L'); $pdf->SetFont('freesans','',9); $pdf->MultiCell(170,5,""); $pdf->SetFont('freesans','',9,C); $pdf->MultiCell(170,5," This document defines the TERMS AND CONDITIONS (T&C) of our working relationship. All projects or services (“the work”) that AGENCY (or “we”) RWC ME 04401 may be contracted to produce or provide for CLIENT ($clientsdetails[companyname]) will be subject to and you the undersigned agree to the following: The CLIENT authorizes the AGENCY access CLIENT's current website, webhost, and all digital materials to transfer as needed from the CLIENT for the purposes of completeing the work on the domain $subject. The CLIENT authorizes use of CLIENT's logo and all brand identification in the creation of the website. The CLIENT understands they are entering into a$pdf->Cell $recur month contract with THE AGENCY. The Agency will only begin work after CLIENT’s approval of the project authorization to proceed,(ATP) and the terms and conditions,(T&C) and after receipt of payment of the initial invoice $".$total_onetime. ". Your signature/execution of the ATP and the T&C will constitute an AGREEMENT between us. "); $pdf->MultiCell(170,5,""); $pdf->SetFont('freesans','B',9); $pdf->Cell(170,5,"Description of the work:",0,0,'L'); $pdf->SetFont('freesans','',9); $pdf->MultiCell(170,5,""); $pdf->SetFont('freesans','',9,L); $pdf->MultiCell(170,5,"$notes",0,1,'C'); if ($proposal) { $pdf->MultiCell(170,5,""); $pdf->SetFont('freesans','B',9); $pdf->Cell(170,5,"Installment Plan:",0,0,'L'); $pdf->SetFont('freesans','',9); $pdf->MultiCell(170,5,""); $pdf->SetFont('freesans','',9,L); $pdf->MultiCell(170,5,$proposal ); } $pdf->AddPage(); $pdf->MultiCell(170,5,""); $pdf->SetFont('freesans','B',9); $pdf->Cell(170,5,"Approvals:",0,0,'L'); $pdf->SetFont('freesans','',9); $pdf->MultiCell(170,5,""); $pdf->SetFont('freesans','',9,L); $pdf->MultiCell(170,5," $pdf->MultiCell(170,5,""); $pdf->SetFont('freesans','B',9); $pdf->Cell(170,5,"Additions and Alterations:",0,0,'L'); $pdf->SetFont('freesans','',9); $pdf->MultiCell(170,5,""); $pdf->SetFont('freesans','',9,C); $pdf->MultiCell(170,5," "); $pdf->MultiCell(170,5,""); $pdf->SetFont('freesans','B',9); $pdf->Cell(170,5,"Payments:",0,0,'L'); $pdf->SetFont('freesans','',9); $pdf->MultiCell(170,5,""); $pdf->SetFont('freesans','',9,L); $pdf->MultiCell(170,5,"The AGENCY is providing Online Marketing Services in advance of total payment. The CLIENT will have an initial down payment of $" . $bulk . ". that is due at the signing of this contract, " .$addtl_payment_msg. "Then an ongoing payment of $pdf->Cell $$total_recur[$recur], on a monthly basis for the following$pdf->Cell $recur months, starting from the date of signing this agreement. " ); $pdf->MultiCell(170,5,""); $pdf->AddPage(); $pdf->Image(ROOTDIR.'/assets/img/rwclogo.png', 63,10,75,'c'); $pdf->SetFont('freesans','B',11); $pdf->Ln(); $pdf->SetFont('freesans','B',9); $pdf->Ln(); $pdf->SetFont('freesans','',9); $pdf->MultiCell(39,5,""); $pdf->Ln(); $pdf->SetFont('freesans','B',9); $pdf->SetDrawColor(200); $pdf->SetFillColor(239); $pdf->SetFont('freesans','',9); $pdf->Cell(10,6,"Qty",1,0,'C','1'); $pdf->Cell(80,6,"Description",1,0,'C','1'); $pdf->Cell(20,6,"Recur",1,0,'C','1'); $pdf->Cell(20,6,"Term",1,0,'C','1'); $pdf->Cell(20,6,"Unit Price",1,0,'C','1'); $pdf->Cell(20,6,"Total",1,0,'C','1'); $pdf->Ln(); $pdf->SetFont('freesans','B',9); $total_onetime = 0; $total_recur = array(); foreach ($lineitems AS $item) { $description = $item["description"]; #========================================================================== # find term #========================================================================== $matches = array(); preg_match('/\[term:(.*?)\]/i', $description, $matches); if (empty($matches)) { $term = ''; } else { $term = strtolower(trim($matches[1])); $description = str_replace($matches[0], '', $description); } #========================================================================== # find recur #========================================================================== $matches = array(); preg_match('/\[recur:(.*?)\]/i', $description, $matches); if (empty($matches)) { $recur = ''; } else { $recur = strtolower(trim($matches[1])); $description = trim(str_replace($matches[0], '', $description)); } #========================================================================== # get unit price and total price #========================================================================== $matches = array(); preg_match('/\d+\.\d+/', $item['unitprice'], $matches); $item_unitprice = (float)$matches[0]; $matches = array(); preg_match('/\d+\.\d+/', $item['total'], $matches); $item_total = (float)$matches[0]; #========================================================================== # add onetime and recurring totals #========================================================================== if ($recur == '') { $total_onetime += $item_total; } else { if (!array_key_exists($recur, $total_recur)) { $total_recur[$recur] = 0; } $total_recur[$recur] += $item_total; } #========================================================================== # display line items #========================================================================== $numlines = ceil(strlen($description)/55); $cellheight = $numlines * 8; $pdf->MultiCell(10,$cellheight,$item["qty"],1,'C','',0); $pdf->MultiCell(80,$cellheight,$description,1,'L','',0); $pdf->MultiCell(20,$cellheight,$recur,'1','C','',0); $pdf->MultiCell(20,$cellheight,$term,'1','C','',0); $pdf->MultiCell(20,$cellheight,sprintf('$%.2f',$item_unitprice),1,'C','',0); $pdf->MultiCell(20,$cellheight,sprintf('$%.2f',$item_total),1,'C','',1); } $pdf->SetFont('freesans','B',9); /* $pdf->Cell(145,6,"Subtotal",1,0,'R','1'); $pdf->Cell(25,6,$currencysymbol.$subtotal,1,0,'C','1'); $pdf->Ln(); if ($taxlevel1["rate"]>0) { $pdf->Cell(145,6,$taxlevel1["name"]." @ ".$taxlevel1["rate"]."%",1,0,'R','1'); $pdf->Cell(25,6,$currencysymbol.$tax1,1,0,'C','1'); $pdf->Ln(); } if ($taxlevel2["rate"]>0) { $pdf->Cell(145,6,$taxlevel2["name"]." @ ".$taxlevel2["rate"]."%",1,0,'R','1'); $pdf->Cell(25,6,$currencysymbol.$tax2,1,0,'C','1'); $pdf->Ln(); } $pdf->Cell(145,6,"Total",1,0,'R','1'); $pdf->Cell(25,6,$currencysymbol.$total,1,0,'C','1'); $pdf->Ln(); */ if ($total_onetime > 0) { $pdf->Cell(150,6,'Pre-Pay',1,0,'R',1); $pdf->Cell(20,6,sprintf('$%.2f',$total_onetime),1,0,'C',1); $pdf->Ln(); } foreach (array('monthly', 'quarterly', 'semi-annually', 'annually', 'biennially') as $recur) { if (isset($total_recur[$recur]) && $total_recur[$recur] > 0) { $pdf->Cell(150,6,ucfirst($recur) . ' Monthly Payments',1,0,'R',1); $pdf->Cell(20,6,sprintf('$%.2f',$total_recur[$recur]),1,0,'C',1); $pdf->Ln(); } unset($total_recur[$recur]); } #========================================================================== # any remaining recurs #========================================================================== foreach ($total_recur as $recur => $amount) { $pdf->Cell(150,6,ucfirst($recur) . ' Monthly Payments',1,0,'R',1); $pdf->Cell(20,6,sprintf('$%.2f',$amount),1,0,'C',1); $pdf->Ln(); } $pdf->SetFont('freesans','',9,l); $pdf->MultiCell(170,5,"
-
while working with the api I realized that getproducts (https://developers.whmcs.com/api-reference/getproducts/) does not bring up the field to know if the product is active or not. I saw someone post a similar idea several years ago: so with a little engineer I made my own version of getproducts and uploaded it to /includes/api/ Request Parameters "GetProductsActive" Parameter Type Description Required action string “GetProductsActive” Required pid int string Obtain a specific product id configuration. Can be a list of ids comma separated gid int Retrieve products in a specific group id Optional Response Parameters Parameter Type Description result string The result of the operation: success or error totalresults int The total number of results available startnumber int The starting number for the returned results numreturned int The number of results returned products array An array of products matching the criteria passed I will leave the file called: getproductsactive.php however this may throw an api error, you have to give access in the table tblapi_roles in database, in the field: permissions add: ,"getproductsactive": 1 before closing }, This modification is due to WHMCS not showing the files added in includes/api as a role. (I do not know why). With this you can get the field: hidden which defines 0 if it is visible and 1 if it is hidden. (true or false also works) my code is a copy of includes/api/getproduct.php just add to show the hidden field (, "hidden" => $data["hidden"]), this would have been easier if WHMCS implemented it, it only took me 2 minutes to show this field. <?php if (!defined("WHMCS")) { exit("This file cannot be accessed directly"); } if (!function_exists("getCustomFields")) { require ROOTDIR . "/includes/customfieldfunctions.php"; } if (!function_exists("getCartConfigOptions")) { require ROOTDIR . "/includes/configoptionsfunctions.php"; } global $currency; $currency = getCurrency(); $pid = $whmcs->get_req_var("pid"); $gid = $whmcs->get_req_var("gid"); $module = $whmcs->get_req_var("module"); $where = array(); if ($pid) { if (is_numeric($pid)) { $where[] = "tblproducts.id=" . (int) $pid; } else { $pids = array(); foreach (explode(",", $pid) as $p) { $p = (int) trim($p); if ($p) { $pids[] = $p; } } if ($pids) { $where[] = "tblproducts.id IN (" . implode(",", $pids) . ")"; } } } if ($gid) { $where[] = "gid=" . (int) $gid; } if ($module && preg_match("/^[a-zA-Z0-9_\\.\\-]*\$/", $module)) { $where[] = "servertype='" . db_escape_string($module) . "'"; } $result = select_query("tblproducts", "tblproducts.*", implode(" AND ", $where), "tblproductgroups`.`order` ASC, `tblproductgroups`.`id` ASC, `tblproducts`.`order` ASC, `tblproducts`.`id", "ASC", "", "tblproductgroups ON tblproducts.gid = tblproductgroups.id"); $apiresults = array("result" => "success", "totalresults" => mysql_num_rows($result)); while ($data = mysql_fetch_array($result)) { $pid = $data["id"]; $productarray = array("pid" => $data["id"], "gid" => $data["gid"], "type" => $data["type"], "name" => $data["name"], "description" => $data["description"], "module" => $data["servertype"], "paytype" => $data["paytype"], "hidden" => $data["hidden"]); if ($language = $whmcs->get_req_var("language")) { $productarray["translated_name"] = WHMCS\Product\Product::getProductName($data["id"], $data["name"], $language); $productarray["translated_description"] = WHMCS\Product\Product::getProductDescription($data["id"], $data["description"], $language); } if ($data["stockcontrol"]) { $productarray["stockcontrol"] = "true"; $productarray["stocklevel"] = $data["qty"]; } $result2 = select_query("tblpricing", "tblcurrencies.code,tblcurrencies.prefix,tblcurrencies.suffix,tblpricing.msetupfee,tblpricing.qsetupfee,tblpricing.ssetupfee,tblpricing.asetupfee,tblpricing.bsetupfee,tblpricing.tsetupfee,tblpricing.monthly,tblpricing.quarterly,tblpricing.semiannually,tblpricing.annually,tblpricing.biennially,tblpricing.triennially", array("type" => "product", "relid" => $pid), "code", "ASC", "", "tblcurrencies ON tblcurrencies.id=tblpricing.currency"); while ($data = mysql_fetch_assoc($result2)) { $code = $data["code"]; unset($data["code"]); $productarray["pricing"][$code] = $data; } $customfieldsdata = array(); $customfields = getCustomFields("product", $pid, "", "", "on"); foreach ($customfields as $field) { $customfieldsdata[] = array("id" => $field["id"], "name" => $field["name"], "description" => $field["description"], "required" => $field["required"]); } $productarray["customfields"]["customfield"] = $customfieldsdata; $configoptiondata = array(); $configurableoptions = getCartConfigOptions($pid, array(), "", "", "", true); foreach ($configurableoptions as $option) { $options = array(); foreach ($option["options"] as $op) { $pricing = array(); $result4 = select_query("tblpricing", "code,msetupfee,qsetupfee,ssetupfee,asetupfee,bsetupfee,tsetupfee,monthly,quarterly,semiannually,annually,biennially,triennially", array("type" => "configoptions", "relid" => $op["id"]), "", "", "", "tblcurrencies ON tblcurrencies.id=tblpricing.currency"); while ($oppricing = mysql_fetch_assoc($result4)) { $currcode = $oppricing["code"]; unset($oppricing["code"]); $pricing[$currcode] = $oppricing; } $options["option"][] = array("id" => $op["id"], "name" => $op["name"], "rawName" => $op["rawName"], "recurring" => $op["recurring"], "required" => $op["required"], "pricing" => $pricing); } $configoptiondata[] = array("id" => $option["id"], "name" => $option["optionname"], "type" => $option["optiontype"], "options" => $options); } $productarray["configoptions"]["configoption"] = $configoptiondata; $apiresults["products"]["product"][] = $productarray; } $responsetype = "xml"; ?> Hope this helps others to show the field they need to show files and hidden products. getproductsactive.php
-
php users online (no current user) (php, cookie, sessions)
JesusSuarz posted a topic in Developer Corner
Hello, I'm trying to get some way to query if a user is online. I don't want to know the current user. if not something you can define for example $clientid or $userid or $emailclient ... I am making an external site. and i need to work with user sessions. (I am making a remote connection with the api). this function does not currently exist in the api available. I've been seeing this: https://developers.whmcs.com/advanced/authentication/ however I do not see that it allows to define the user. I was also seeing this: https://docs.whmcs.com/Sessions I was able to save the cookie in the database, however I can't find any way to identify the one that belongs to each user. any idea how I can get (which users are online?) .. (please nothing to do with smarty, only php). postdata: forget to tell the method I use to get user authentication in my application. create the following code for my application: I first make a connection to the api: https://developers.whmcs.com/api/authentication/ soon ValidateLogin: https://developers.whmcs.com/api-reference/validatelogin/ soon GetClientsDetails: https://developers.whmcs.com/api-reference/getclientsdetails/ soon CreateSsoToken: https://developers.whmcs.com/api-reference/createssotoken/ // validar usuario $command = 'ValidateLogin'; $postData = array( 'email' => $email_user, //post 'password2' => $password_user, //post ); $api_login = localAPI($command, $postData); //var de id de usuario: $api_login["userid"]; // si se encuentra el user entonces traer detalles del usuario via email $clientid = array(); // array que tiene el id del cliente if ($api_login["userid"] == true) { $command = 'GetClientsDetails'; $postData = array( 'email' => $email_user, // email login ); $details_client = localAPI($command, $postData); $clientid[] = $details_client["client_id"]; } // variable del clientid es: $clientid[0]; // crear token de session $command = 'CreateSsoToken'; $postData = array( 'client_id' => $clientid[0], ); $results_ssotoken = localAPI($command, $postData); echo '<pre>'; var_dump($results_ssotoken); echo '</pre>'; this will create the url with (CreateSsoToken) where the user will be redirected for autologin, however the cookie is created only after entering the client area. that's why I don't know how to get the cookie, or identify the user. @brian! would you help me with this? -
Hello I have a variable that is printed with {debug} in the tpl template. however I want to get the result in php of this variable. I need to get $customfields from a hook. how could you access $customfields that is printed inside a product @brian! could you help me?
-
1. Plesk Extended For WHMCS 3.5.0 Because your system can never suffer from too many user-friendly features, today we are storming ahead with a solid update of Plesk Extended For WHMCS 3.5.0 that is about to nurture your web hosting business in more than a few different ways: Take maximum advantage of the newly introduced support for WHMCS V8.1 and "Twenty-One" theme. In order to limit the system resources consumed by PHP scripts, your clients are now allowed to use a custom PHP version and configurations per website. While in the comfy surroundings of the client area, let us also move a bit further to the new "Log Rotation" section where your customers can manage conditions for the log files to be cleaned up once they are too old or too big. Be sure to enjoy the full changelog available on our website! 2. SMS Center For WHMCS 3.8.0 Just as much deserving of a special mention is SMS Center For WHMCS, specifically because of its spanking-new 3.8.0 update! The module’s scope of support has been broadened to integrate well with as many as five all-new SMS gateways. Thanks to it, the official list of available SMS gateways now includes 51 providers in total! Additionally, the product has also received a series of tweak-ups so as to secure its rock-solid compatibility with both WHMCS V8.1 and "Twenty-One" system theme. Keep in touch with your customers no matter the time and place! 3. Under the Microscope: MetricsCube Live Dashboard for WHMCS Reading through your business data feels as though you were reading a foreign language? Live Dashboard for WHMCS that forms a central part of MetricsCube communicates crucial metrics in a visual format to make all complex relationships in your data self-explanatory. Drop by the MetricsCube blog as soon as you can to get a close-up look at every single report and graph illustrating the real-time performance of your WHMCS business down to the last detail. Take an insightful stroll through the data-filled confines of Live Dashboard! Need Custom Software Development For Your Business? Get Your Free Quote Now! Specially for you we will adapt an application and its design to your own needs, create a new module or even a completely new system built from scratch!
-
- ModulesGarden
- Plesk
- (and 10 more)
-
Hi, How do I make a registration in html (php) sending a request to WHMCS? Example: <form action="{$systemsslurl}dologin.php?goto=clientarea.php" method="post" name="frmlogin"> <label>Email address</label> <input type="email" name="username" placeholder="Your Email"> <label>Password</label> <input type="password" name="password"> <button type="submit">Login</button> </form> <a href="/pwreset.php" >Forgotten your Password? Click Here</a> But how do I implement this for registration? is it possible to do this?
-
sometimes the client can have 2 emails. one for your account details and one for the account owner. I need to know if the account owner's email is verified. The var: $client = Menu::context("client"); gets the email that the customer has in the account details, however this is not the email owner of the account. I hope to make myself understood correctly.
-
Hi, Sorry if this has been asked before but i can seem to find any solution for it! I am looking for a way to display a "Network Status" icon/ css on the home page of my website based on the WHMCS network status rss feed (https://portal.whmcs.com/networkstatusrss.php). The concept is to have the icon/css auto change when one of the following network issues are opened rather then having to change it manually. Low Medium High Critical Attached is an illustration of what i am looking at doing. PS: I already wrote the css to have pluse icons, just need to implement the second part. Thank you in advance! 😁
-
- whmcs 7
- network status
-
(and 3 more)
Tagged with: