The document provides documentation on creating WHMCS addon modules. It covers getting started, configuration, activation/deactivation, content output, sidebars, multi-language support, hooks, upgrades, and resources. Creating modules allows extending WHMCS with custom admin pages and hooks. Modules are managed through the Addon Modules interface in the WHMCS admin area.
This slide is prepared from an interview perspective, to help others answer the very famous question "Difference between Comparable and Comparator and when to use which?"
This slide is prepared from an interview perspective, to help others answer the very famous question "Difference between Comparable and Comparator and when to use which?"
Cartilha com dicas importantes sobre o SPED Fiscal ICMS/IPI elaborada pela SEFAZ de Goiás mas que pode ser útil a todos independente do Estado.
Chaves: CURSO SPED, TREINAMENTO SPED, PALESTRA SPED, SPED, SPED FISCAL, SPED CONTABIL, NOTA FISCAL ELETRONICA, SPED PIS COFINS, SPED FOLHA, FOPAG, SINTEGRA, ROBERTO DIAS DUARTE, EFD, ECD, NFE, ECF, PAF ECF, FISCO
Nhận viết luận văn Đại học , thạc sĩ - Zalo: 0917.193.864
Tham khảo bảng giá dịch vụ viết bài tại: vietbaocaothuctap.net
Download luận án tiến sĩ ngành văn học việt nam với đề tài: Nghiên cứu một số truyện thơ của dân tộc Thái ở Việt Nam có cùng đề tài với truyện thơ Nôm dân tộc Kinh, cho các bạn làm luận án tham khảo
Download luận án tiến sĩ ngành ngôn ngữ anh với đề tài: Các hoạt động ngôn ngữ nhằm phát triển năng lực ngôn ngữ của sinh viên năm thứ nhất tại đại học Thái Nguyên, cho các bạn làm luận án tham khảo
Cartilha com dicas importantes sobre o SPED Fiscal ICMS/IPI elaborada pela SEFAZ de Goiás mas que pode ser útil a todos independente do Estado.
Chaves: CURSO SPED, TREINAMENTO SPED, PALESTRA SPED, SPED, SPED FISCAL, SPED CONTABIL, NOTA FISCAL ELETRONICA, SPED PIS COFINS, SPED FOLHA, FOPAG, SINTEGRA, ROBERTO DIAS DUARTE, EFD, ECD, NFE, ECF, PAF ECF, FISCO
Nhận viết luận văn Đại học , thạc sĩ - Zalo: 0917.193.864
Tham khảo bảng giá dịch vụ viết bài tại: vietbaocaothuctap.net
Download luận án tiến sĩ ngành văn học việt nam với đề tài: Nghiên cứu một số truyện thơ của dân tộc Thái ở Việt Nam có cùng đề tài với truyện thơ Nôm dân tộc Kinh, cho các bạn làm luận án tham khảo
Download luận án tiến sĩ ngành ngôn ngữ anh với đề tài: Các hoạt động ngôn ngữ nhằm phát triển năng lực ngôn ngữ của sinh viên năm thứ nhất tại đại học Thái Nguyên, cho các bạn làm luận án tham khảo
Mageguru - magento custom module development Mage Guru
step by-step guide for magento module development. Hire dedicated magento 2 developers from mageguru with 5+ years experience, starting at just $18/hr to render highly robust, scalable and high-performance magento 2 compliment your business requisites.
Windows Presentation Foundation (WPF) allows developers to easily build and create visually enriched UI based applications. The classical UI elements or controls in other UI frameworks are also enhanced in WPF applications.
Odoo ERP is one of the best Open Source ERP until this year. Within this slide we are explain some of what we can enhance on the Odoo to get our goal on business requirements
The Flexibility of Drupal 8 | DCNLights 2017Michael Miles
In this session we will demonstrate the flexibility of Drupal by going over 8 different ways in Drupal 8 that data can be manipulated. From non-technical methods, "frontend" javascript & templating methods, to "Backend" methods such as building a custom module and overriding services. This session will demonstrate how to implement each one outlining their individual pros and cons, proving that no matter your skill sets you can make Drupal 8 do what you want.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™UiPathCommunity
In questo evento online gratuito, organizzato dalla Community Italiana di UiPath, potrai esplorare le nuove funzionalità di Autopilot, il tool che integra l'Intelligenza Artificiale nei processi di sviluppo e utilizzo delle Automazioni.
📕 Vedremo insieme alcuni esempi dell'utilizzo di Autopilot in diversi tool della Suite UiPath:
Autopilot per Studio Web
Autopilot per Studio
Autopilot per Apps
Clipboard AI
GenAI applicata alla Document Understanding
👨🏫👨💻 Speakers:
Stefano Negro, UiPath MVPx3, RPA Tech Lead @ BSP Consultant
Flavio Martinelli, UiPath MVP 2023, Technical Account Manager @UiPath
Andrei Tasca, RPA Solutions Team Lead @NTT Data
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
Welocme to ViralQR, your best QR code generator.ViralQR
Welcome to ViralQR, your best QR code generator available on the market!
At ViralQR, we design static and dynamic QR codes. Our mission is to make business operations easier and customer engagement more powerful through the use of QR technology. Be it a small-scale business or a huge enterprise, our easy-to-use platform provides multiple choices that can be tailored according to your company's branding and marketing strategies.
Our Vision
We are here to make the process of creating QR codes easy and smooth, thus enhancing customer interaction and making business more fluid. We very strongly believe in the ability of QR codes to change the world for businesses in their interaction with customers and are set on making that technology accessible and usable far and wide.
Our Achievements
Ever since its inception, we have successfully served many clients by offering QR codes in their marketing, service delivery, and collection of feedback across various industries. Our platform has been recognized for its ease of use and amazing features, which helped a business to make QR codes.
Our Services
At ViralQR, here is a comprehensive suite of services that caters to your very needs:
Static QR Codes: Create free static QR codes. These QR codes are able to store significant information such as URLs, vCards, plain text, emails and SMS, Wi-Fi credentials, and Bitcoin addresses.
Dynamic QR codes: These also have all the advanced features but are subscription-based. They can directly link to PDF files, images, micro-landing pages, social accounts, review forms, business pages, and applications. In addition, they can be branded with CTAs, frames, patterns, colors, and logos to enhance your branding.
Pricing and Packages
Additionally, there is a 14-day free offer to ViralQR, which is an exceptional opportunity for new users to take a feel of this platform. One can easily subscribe from there and experience the full dynamic of using QR codes. The subscription plans are not only meant for business; they are priced very flexibly so that literally every business could afford to benefit from our service.
Why choose us?
ViralQR will provide services for marketing, advertising, catering, retail, and the like. The QR codes can be posted on fliers, packaging, merchandise, and banners, as well as to substitute for cash and cards in a restaurant or coffee shop. With QR codes integrated into your business, improve customer engagement and streamline operations.
Comprehensive Analytics
Subscribers of ViralQR receive detailed analytics and tracking tools in light of having a view of the core values of QR code performance. Our analytics dashboard shows aggregate views and unique views, as well as detailed information about each impression, including time, device, browser, and estimated location by city and country.
So, thank you for choosing ViralQR; we have an offer of nothing but the best in terms of QR code services to meet business diversity!
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
3. WHMCS | Addon Module Documentation 3
Introduction
Addon modules allow you to create both admin pages and hooks to extend WHMCS further.
Modules can consist of just an admin page, or just hooks, or both. And they are all managed
through the Setup > Addon Modules interface.
Once activated, the modules will display in a dedicated “Addons” dropdown menu within
the admin area for quick & easy access from any page.
Management options consist of activating and deactivating of the modules, aswell as access
control which allows full admins to define exactly which of the administrator roles are
allowed to access each addon module.
Why would I use a module for a hook?
You might be asking why would I create an admin module when I could just create a hook?
And the answer to that would be that creating a module provides an easy way for users to
install and remove the addon through the dedicated addon modules
4. WHMCS | Addon Module Documentation 4
Getting Started
To get started, you need to begin by choosing a name for your module. This name should be
unique among all the modules in WHMCS, and should contain only letters & numbers, all
lowercase. Underscores are on the only special characters that are accepted. For example,
valid names would be:
mymodulename
my_module_name
my_module_v5
Once you have chosen your name, you need to create a directory and module file for it. The
directory should be in the format /modules/addons/your_module_name/ and then the key
module file within it should be named “your_module_name.php”.
We have created an example module file which you can use as a basis for all your custom
modules to help with getting started, and that can be found at the path
/modules/addons/addonexample/ within your WHMCS installation.
Now let’s move onto customising the module…
5. WHMCS | Addon Module Documentation 5
Configuration
The first step in the module is defining the configuration data. This includes the module
name, version number, author, description and any configuration fields that might be
needed. Below is an example of the config function function:
function your_module_name_config() {
$configarray = array(
'name' => 'Friendly Display Name Here',
'version' => '1.0',
'author' => 'Your Name Here',
'description' => 'Description of your Addon/Module Here',
'fields' => array(
'username' => array("FriendlyName" => "API Username", "Type" => "text", "Size" =>
"30", ),
'password' => array("FriendlyName" => "API Password", "Type" => "password", "Size"
=> "30", ),
'signature' => array("FriendlyName" => "API Signature", "Type" => "password", "Size"
=> "50", “Description” => “You will find this in your account settings“, ),
),
);
return $configarray;
}
The first 4 fields: name, version, author & description should all be fairly self-explanatory.
These just need to contain the name you want displaying within the admin area for your
module, version number, your name/company and a brief description of the addon.
The fields section is where you can define the input you need from end users to be able to
make the module work. In this example we are asking for some API related information.
Supported field types are “text”, “password”, “yesno” (checkboxes), “textarea” and
“dropdown”. If using the textarea option then you can add a “Rows” parameter to define
the height of the box, and if using the dropdown type, then you must specify an “Options”
parameter with a comma separated list of values.
There is an optional language variable you can also include if you will be using language files
for your module - we’ll look at those in more detail later on.
6. WHMCS | Addon Module Documentation 6
Activating/Deactivating
Modules can contain both activate and deactivate functions which run when an admin user
activates or deactivates the module in the Addon Modules configuration area.
These functions can be used to create custom tables, database entries, perform license
checks, or anything else you need to run at the time of initial activation or final deactivation.
The deactivation function should undo everything that the activation function does in order
to fully remove the module from the users system.
One point to note is that there will already be an active database connection when the
module is run, so to access the WHMCS database you won’t need to reconnect to the
database.
So for example, the activate and deactivate functions could create and drop a table for use
by the custom module as below:
function your_module_name_activate() {
$query = "CREATE TABLE `mod_customtable` (`id` INT( 1 ) NOT NULL AUTO_INCREMENT
PRIMARY KEY ,`key` VARCHAR( 16 ) NOT NULL ,`value` TEXT NOT NULL )";
mysql_query($query);
}
function your_module_name_deactivate() {
$query = "DROP TABLE `mod_customtable`";
mysql_query($query);
}
7. WHMCS | Addon Module Documentation 7
Content/Output
Output from the modules needs to be defined in the function your_module_name_output
and should be actually output, (ie. echo’d) not returned.
All output will then be captured by WHMCS and displayed within the admin interface
template. The module name is automatically prefixed to the output.
Variables
The output function is passed all of the fields defined in your modules config, along with the
values users have set for them, aswell as a “modulelink” variable which you can use to link
back to the module.
Linking/Actions
Using the modulelink variable passed into the output function, you can then create links and
forms that post back to your module. The modulelink will be in the format
“addonmodules.php?module=xxxxxx” so for links you can then append “&var1=x&var2=y”
or with forms you can use the POST form method to receive user input.
Within the output function you can then check the $_GET or $_POST variables received in
the request in order to display other output or perform various tasks once links have been
followed.
Admin User Data
You can access the currently logged in admin ID should you need that within your module
using $_SESSION[‘adminid’] and from that can lookup any additional information you need
in tbladmins.
Example
function your_module_name_output($vars) {
$modulelink = $vars['modulelink'];
$username = $vars['username'];
$password = $vars['password'];
echo '<p>Your username is '.$username.'</p>';
}
8. WHMCS | Addon Module Documentation 8
Sidebar
An addon module can also define HTML code to be displayed in the sidebar. You can do
anything you want with this, but it is ideal for creating custom sub menus specific to a
custom module.
The function is passed all the same variables as the main content output function, and so
can be used like this:
function your_module_name_sidebar($vars) {
$modulelink = $vars['modulelink'];
$username = $vars['username'];
$password = $vars['password'];
$sidebar = '<span class="header"><img src="images/icons/addonmodules.png"
class="absmiddle" width="16" height="16" /> Sample</span>
<ul class="menu">
<li><a href="#">Sample Sidebar Link 1</a></li>
<li><a href="#">Sample Sidebar Link 2</a></li>
</ul>';
return $sidebar;
}
9. WHMCS | Addon Module Documentation 9
Multi-Language
Modules can be designed to support multiple languages should you wish.
For this, the addon module simply needs a lang subfolder creating within it, and within that
language files can be created matching the names of the main WHMCS admin area language
files located in the /admin/lang/ folder.
The language variables for custom modules are kept separate in language files within the
module’s own folder to make installation and updating easier.
If language files exist, WHMCS will then automatically load these whenever the custom
module is accessed, automatically selecting the appropriate language file based on the
currently logged in administrators language profile setting. If no matching language file
exists within the custom module’s folder for the language the admin is using then it will
simply fall back to the default language you set in the module’s config array.
The language variables are then passed into both the _output and _sidebar functions
variables array using “_lang”.
Please refer to the example addon modules language file located in
/modules/addons/addonexample/lang/english.php for the format to use for your custom
language variables.
Below is a demonstration of how you specify the default language for your module in the
config array.
function your_module_name_config() {
$configarray = array(
'name' => 'Friendly Display Name Here',
'version' => '1.0',
'author' => 'Your Name Here',
'description' => 'Description of your Addon/Module Here',
'language' => 'english',
'fields' => array(
etc…
10. WHMCS | Addon Module Documentation 10
Hooks
To create hooks that your module should define within WHMCS, you simply need to create
a file named “hooks.php” within your custom module folder, and that will then be
automatically detected and any hooks loaded on every page of WHMCS.
The hook functions within that file should be defined in exactly the same way as normal.
Please refer to http://wiki.whmcs.com/Hooks for more information on creating hooks.
11. WHMCS | Addon Module Documentation 11
Upgrades
Releasing updates and upgrades to your custom modules is likely something you will want
to do at some point in time. And if those require modifying the database structure or
performing other functions that would otherwise be performed in the _activate function
when being activated for the first time, then you need some way of handling that.
With the Addon Modules system, this is a breeze with the upgrade function. The upgrade
function is called the first time a module is accessed following an update. The update is
detected by a change of version number in the _config array of the module, and so if a
change is detected, the _upgrade function will be called. The upgrade function is passed the
previous version number so that you can then decide what updates you need to run within
that function to bring it up to date with your latest version.
An example of how this function can be used is demonstrated below:
function your_module_name_upgrade($vars) {
$version = $vars['version'];
if ($version=="1.0") {
$query = "ALTER TABLE mod_customtable ADD extrafield TEXT NOT NULL;";
mysql_query($query);
}
}
12. WHMCS | Addon Module Documentation 12
Useful Resources
Here are some code samples for how to match the styles of WHMCS within your custom
code.
Data Table
Used to output a table of data
<div class="tablebg">
<table class="datatable" width="100%" border="0" cellspacing="1" cellpadding="3">
<tr><th>Col 1</th><th>Col 2</th><th>Col 3</th></tr>
<tr><td>Data Row 1</td><td>Data Row 1</td><td>Data Row 1</td></tr>
<tr><td>Data Row 2</td><td>Data Row 2</td><td>Data Row 2</td></tr>
</table>
</div>
Fields Table
Used to output form fields
<table class="form" width="100%" border="0" cellspacing="2" cellpadding="3">
<tr><td width="20%" class="fieldlabel">Field Name 1</td><td class="fieldarea">Field
Contents</td></tr>
<tr><td class="fieldlabel">Field Name 2</td><td class="fieldarea">Field Contents</td></tr>
</table>