Jump to content

Search the Community

Showing results for tags 'php'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


WHMCS.Community

  • The Latest from the WHMCS Team
    • News & Announcements
    • Get to know the new WHMCS.Community
  • The WHMCS.Community
    • Community Announcements
    • Introduce Yourself
  • Using WHMCS
    • Pre-Sales Questions
    • Admin & Configuration Questions
    • Installation, Upgrade, and Import Support
    • Using WHMCS
    • Troubleshooting Issues
    • Vendor Discussions
  • WHMCS Beta Program
  • WHMCS Showcase
    • Showcase Your Site
    • Share Your Best Practices & Tips
  • Developing & Extending WHMCS
    • Third Party Add-ons
    • Service Offers & Requests
    • Developer Corner
    • Building Modules
    • Share Ideas for WHMCS Modules
  • Community Competitions
    • Competitions
  • General Discussions
    • General Discussion
  • General Feedback & Assistance
  • Turkish International Discussions's Topics
  • Russian International Discussions's Topics
  • Spanish International Discussions's Topics
  • Portuguese International Discussions's Topics
  • French International Discussions's Topics
  • Italian International Discussions's Topics
  • German International Discussions's Topics
  • Third Party Developers's Topics
  • WHMCS Brasil's Topics
  • WHMCS Brasil's Tópicos
  • ModulesGarden Club's Topics
  • Hungarian International Discussions's Segítség

Calendars

  • Community Calendar

Categories

  • Articles

Found 22 results

  1. Hello everyone, Hope you guys doing good. I came up with something new or maybe old . I want to implement whmcs lang from English to Hindi. for my indian customers. So i will convert each and every English Words to hindi words. Already 50% done. but please anyone tell me how to Add a extension ex- Hindi in header dropdown menu and target it to my Hindi lang File. Check the screenshot for more info, So i have added a Hindi.php file in Lang directory but in dropdown its showing English 2 times. Sorry for my Bad English. Here is all. Thanks Bagful International
  2. Anyone have idea, how to show other domain registration in modern tpl? Thanks Madan Malhotra
  3. I have two WHMCS installations, both using google apps gmail as the support mail. For the sake of discussion let's call them system1.com and system2.com. Both are configured identically as far as I can see, using the pop.php script. For all normal purposes it seems to work fine, customers can mail to the google apps mail accounts, the mail is imported with the pop.php scripts, no problems. The odd thing is, I get a mail sent to the admin email account when there are tickets, and for one installation I can directly reply through email, and the reply is entering into the ticket system. For the other, the mail arrives in the google apps email account, but is never imported into the ticket system. The util > mail log shows nothing, there are no entries for this mail. When I run the pop.php script manually, one account comes up like this: 2$ php -q /home/system1/crons/pop.php POP Import Log Date: 15/08/2017 13:01:10 --- Host: pop.gmail.com Email: [email protected]system1.com Mailbox is empty --- Host: pop.gmail.com Email: [email protected] Mailbox is empty --- The other one comes out like this: $ php -q /home/system2/crons/pop.php POP Import Log Date: 15/08/2017 14:35:51 --- Host: pop.gmail.com<br>Email: [email protected]<br>-bash-4.2$ So, 2 odd things: 1) system1 outputs in standard txt mode, system2 outputs in HTML (br tags) 2) both systems have both a sales and support email account, but whereas system1 reads both, system2 seems to crash and exit after checking the first account. If I go to setup > support > support departments and change the order of the emails, the exact same thing happens just with the [email protected] mail account. md5sum reports same value for the two pop.php scripts - 5314ac613216da7ac7e76a7b64f87600 - so the output *ought* to be the same? I've been digging in this for a couple of hours already and are kinda pulling my non-existing hair out. Any ideas?
  4. Hi! I am looking for a FREE panel, that have the opportunity to disable PHP, since cPanel/WHM doesn't support it. Do you have any idea how to archieve that? Tried ISPConfig 3 but unfortunately got many errors with the module. I could only able to create the client's account via WHMCS inside ISPConfig 3 but no the hosting plus others. So basically do you know any nice panel with suppoting disable PHP? Thank you!
  5. Hello! I having some issue with integrating WP header into WHMCS.. What I already did ... https://billing.brohosting.eu/?systpl=brohosting As you can see looks almost great, but WHMCS menu is missing. Should be related to some JS or something. Can you please help me? If you need any information just tell me! Regards, Marcell
  6. So, I've been looking into this a little bit... Diving into it. The "fraud" module is kind of laid out like a module. Noticed the following functions: getConfigArray() return configarray() doFraudCheck($params) return results() getResultsArray($results) resultarray() When I configured the getConfigArray() and setup the array as such: function getConfigArray() { $configarray = array( "Enable" => array( "Type" => "yesno", "Description" => "Tick to enable My Fraud Module" ), ); return $configarray; } //end configArray when I select the fraud module from the list, it wont display the option. Any help?
  7. PHP on CentOS-6.7 with Plesk-12.5.20

    I'm attempting to install WHMCS-6.3.1 on Plesk-12.5.30 on CentOS-6.7 but the WHMCS installer complains that the currently installed version of PHP (i.e., PHP-5.3.3) is inadequate. (WHMCS-6.x requires PHP >= 5.3.7.) [[email protected] whmcs]# php -v PHP 5.3.3 (cli) (built: Jul 9 2015 17:39:00) Copyright (c) 1997-2010 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies with the ionCube PHP Loader (enabled) + Intrusion Protection from ioncube24.com (unconfigured) v5.0.12, Copyright (c) 2002-2015, by ionCube Ltd. [[email protected] whmcs]# yum upgrade php <<<snip>>> --> Running transaction check ---> Package php.x86_64 0:5.3.3-46.el6_6 will be updated ---> Package php.x86_64 0:5.3.3-47.el6 will be an update AFAICT, three versions of PHP are currently installed: [[email protected] whmcs]# rpm -qa | grep php | sort php-5.3.3-46.el6_6.x86_64 php5-ioncube-loader-5.0.12-centos6.15081418.x86_64 php-cli-5.3.3-46.el6_6.x86_64 php-common-5.3.3-46.el6_6.x86_64 php-gd-5.3.3-46.el6_6.x86_64 php-imap-5.3.3-46.el6_6.x86_64 php-mbstring-5.3.3-46.el6_6.x86_64 php-mysql-5.3.3-46.el6_6.x86_64 php-pdo-5.3.3-46.el6_6.x86_64 php-xml-5.3.3-46.el6_6.x86_64 plesk-php56-5.6.24-centos6.16072212.x86_64 plesk-php56-bcmath-5.6.24-centos6.16072212.x86_64 plesk-php56-cli-5.6.24-centos6.16072212.x86_64 plesk-php56-dba-5.6.24-centos6.16072212.x86_64 plesk-php56-enchant-5.6.24-centos6.16072212.x86_64 plesk-php56-fpm-5.6.24-centos6.16072212.x86_64 plesk-php56-gd-5.6.24-centos6.16072212.x86_64 plesk-php56-imagick-3.1.2-centos6.15081011.x86_64 plesk-php56-imap-5.6.24-centos6.16072212.x86_64 plesk-php56-intl-5.6.24-centos6.16072212.x86_64 plesk-php56-ioncube-loader-5.0.18-centos6.15101214.x86_64 plesk-php56-ldap-5.6.24-centos6.16072212.x86_64 plesk-php56-mbstring-5.6.24-centos6.16072212.x86_64 plesk-php56-mcrypt-5.6.24-centos6.16072212.x86_64 plesk-php56-mysql-5.6.24-centos6.16072212.x86_64 plesk-php56-odbc-5.6.24-centos6.16072212.x86_64 plesk-php56-opcache-5.6.24-centos6.16072212.x86_64 plesk-php56-pdo-5.6.24-centos6.16072212.x86_64 plesk-php56-pear-1.9.4-centos6.16072212.noarch plesk-php56-pgsql-5.6.24-centos6.16072212.x86_64 plesk-php56-process-5.6.24-centos6.16072212.x86_64 plesk-php56-pspell-5.6.24-centos6.16072212.x86_64 plesk-php56-redis-2.2.5-centos6.15081011.x86_64 plesk-php56-release-5.6.24-centos6.16072212.x86_64 plesk-php56-snmp-5.6.24-centos6.16072212.x86_64 plesk-php56-soap-5.6.24-centos6.16072212.x86_64 plesk-php56-tidy-5.6.24-centos6.16072212.x86_64 plesk-php56-xdebug-2.2.3-centos6.15081011.x86_64 plesk-php56-xml-5.6.24-centos6.16072212.x86_64 plesk-php56-xmlrpc-5.6.24-centos6.16072212.x86_64 plesk-php70-7.0.9-centos6.16072211.x86_64 plesk-php70-bcmath-7.0.9-centos6.16072211.x86_64 plesk-php70-cli-7.0.9-centos6.16072211.x86_64 plesk-php70-dba-7.0.9-centos6.16072211.x86_64 plesk-php70-enchant-7.0.9-centos6.16072211.x86_64 plesk-php70-fpm-7.0.9-centos6.16072211.x86_64 plesk-php70-gd-7.0.9-centos6.16072211.x86_64 plesk-php70-imagick-3.4.1-centos6.16063012.x86_64 plesk-php70-imap-7.0.9-centos6.16072211.x86_64 plesk-php70-intl-7.0.9-centos6.16072211.x86_64 plesk-php70-ldap-7.0.9-centos6.16072211.x86_64 plesk-php70-mbstring-7.0.9-centos6.16072211.x86_64 plesk-php70-mcrypt-7.0.9-centos6.16072211.x86_64 plesk-php70-mysql-7.0.9-centos6.16072211.x86_64 plesk-php70-odbc-7.0.9-centos6.16072211.x86_64 plesk-php70-opcache-7.0.9-centos6.16072211.x86_64 plesk-php70-pdo-7.0.9-centos6.16072211.x86_64 plesk-php70-pear-1.10.1-centos6.16072211.noarch plesk-php70-pgsql-7.0.9-centos6.16072211.x86_64 plesk-php70-process-7.0.9-centos6.16072211.x86_64 plesk-php70-pspell-7.0.9-centos6.16072211.x86_64 plesk-php70-release-7.0.9-centos6.16072211.x86_64 plesk-php70-snmp-7.0.9-centos6.16072211.x86_64 plesk-php70-soap-7.0.9-centos6.16072211.x86_64 plesk-php70-tidy-7.0.9-centos6.16072211.x86_64 plesk-php70-xml-7.0.9-centos6.16072211.x86_64 plesk-php70-xmlrpc-7.0.9-centos6.16072211.x86_64 psa-php5-configurator-1.7.0-cos6.build1205150820.19.x86_64 psa-phpmyadmin-4.6.0-cos6.build1205160427.18.noarch psa-phppgadmin-5.1-cos6.build1205150814.17.noarch How can I fix this?
  8. Stop scroll in cart

    Hello, I come to you to see if anyone is how the scroll Stope at some point. I joined the js code, in hope to have your help thank you in advance cordially $(document).ready(function () { var $orderSummaryEl = jQuery("#scroll"); if ($orderSummaryEl.length) { var offset = jQuery("#scrollingPanelContainer").parent('.row').offset(); //var maxTopOffset = jQuery("#scrollingPanelContainer").parent('.row').outerHeight() - 35; var maxTopOffset = jQuery("#scrollingPanelContainer").parent('.row'); var topPadding = 15; jQuery(window).resize(function() { offset = jQuery("#scrollingPanelContainer").parent('.row').offset(); //maxTopOffset = jQuery("#scrollingPanelContainer").parent('.row').outerHeight() - 35; maxTopOffset = jQuery("#scrollingPanelContainer").parent('.row'); repositionScrollingSidebar(); }); jQuery(window).scroll(function() { repositionScrollingSidebar(); }); repositionScrollingSidebar(); } function repositionScrollingSidebar() { if (jQuery("#scrollingPanelContainer").css('float') != 'left') { $orderSummaryEl.stop().css('margin-top', '0'); return false; } var heightOfOrderSummary = $orderSummaryEl.outerHeight(); var newTopOffset = jQuery(window).scrollTop() - offset.top + topPadding; if (newTopOffset > maxTopOffset - heightOfOrderSummary) { newTopOffset = maxTopOffset - heightOfOrderSummary; } if (jQuery(window).scrollTop() > offset.top) { $orderSummaryEl.stop().animate({ marginTop: newTopOffset }); } else { $orderSummaryEl.stop().animate({ marginTop: 0 }); } } });
  9. Hey, Today ionCube released v4.5.0 which compatible with PHP 5.5.X. So I updated my PHP 5.4.x to 5.5.x and installed the new loaders but when I try to access to the Administrator panel I got this error: Please know that before you update to PHP 5.5.x because WHMCS team need to the update WHMCS files in order support the new ionCube loaders.
  10. Hi guys, I've tried searching for this in Google and all I see are other people's web sites that have the same issue On my cart page (cart.php) I get the following error: array_key_exists() expects parameter 2 to be array, null given in /path/to/orderfunctions.php In my configuration.php I have $display_errors set to E_ALL ^ E_NOTICE. If I add ^ E_WARNING then the errors go. So maybe the real question here is, should I be hiding warnings on production? Thanks for any advice on the issue.
  11. PDF-Invoice template # Clients Details $addressypos = $pdf->GetY(); $pdf->SetFont($pdfFont, '', 12); $pdf->SetFillColor(59,78,135); $pdf->SetTextColor(255,255,255); $pdf->Cell(50, 6, strtoupper(Lang::trans('supportticketsclient')), 0, 1, 'L', true); How to make that cell to show UpperCase letters for the translated word "supportticketsclient" I tried with strtoupper command, but still the word is with small letters.
  12. Hi, I'm not sure if this has already been done but I use Sticky Notes to record additional work that needs to be invoiced at a later date but kept on forgetting who I'd done extra work for. So I've created a widget for the Admin Summary page that displays all the Sticky Notes with links through to the Customers Note and also the customer summary. Just create a new file in modules/widgets and paste this code in. Then head over to Setup > Staff Management > Administrator Roles > Edit and scroll down to Widgets and then tick yours (in this example it's called "Display Customer\'s Sticky Notes". This was created in Version: 5.3.11 and is still working in 6.1.1 but it if breaks yours or makes the sky fall down, I'm not liable... ?php # WHMCS Widget to display sticky notes on the Admin Summary # Hedley Phillips - Digital Essence if (!defined("WHMCS")) die("This file cannot be accessed directly"); function widget_display_sticky_notes() { $content = '<table bgcolor="#cccccc" align="center" style="margin-bottom:5px;width:100%;" cellspacing="1"> <tr bgcolor="#efefef" style="text-align:center;font-weight:bold;"><td>Customer</td><td>Note</td><td>Modified</td></tr>'; $x=1; $range = "<= 364"; $result = mysql_query("SELECT * FROM `tblnotes` JOIN tblclients ON tblclients.id=tblnotes.userid WHERE `sticky` = '1'"); while ($data = @mysql_fetch_array ($result)) { $noteid = $data["id"]; $userid = $data["userid"]; $firstname = $data["firstname"]; $lastname = $data["lastname"]; $note = $data["note"]; $date = $data["modified"]; $content .= '<tr bgcolor="#ffffff" style="text-align:center;"><td><a href="/whmcsadmin/clientssummary.php?userid='.$userid.'">'.$firstname. ' ' .$lastname.'</a></td><td><a href="/whmcsadmin/clientsnotes.php?userid='.$userid.'&action=edit&id='.$noteid.'">'.$note.'</a></td><td>'.$date.'</td></tr>'; $x=0; } if($x) $content = '<tr bgcolor="#ffffff" style="text-align:center;"><td colspan="7">No Sticky Notes to display</td></tr>'; $content .= '</table>'; return array( 'title' => 'Display Customer\'s Sticky Notes', 'content' => $content ); } add_hook("AdminHomeWidgets",1,"widget_display_sticky_notes"); ?> NOTE: What I can't get to work and am looking for input from others on is the edit function. I'm using: <a href="/whmcsadmin/clientsnotes.php?userid='.$userid.'&action=edit&id='.$noteid.'"> where: $noteid = $data["id"]; $userid = $data["userid"]; but it keeps on putting the customer id in both $userid and $noteid and I can't work out why.
  13. I know this is a shot in the dark. I am using a custom addon that won't work with whmcs 6, it's pretty straightforward and basically checks hosted sites for a certain html code and returns with a list of site that does or doesn't have the code installed, the sites the do not have the code should be terminated be the module but this is not happening. Here's the code and any help would be much appreciated. <?php if (!defined("WHMCS")) die("This file cannot be accessed directly"); /** * get "need banner" hosting types list * */ function _bannersforfree_get_banner_hosting_list2() { $db_result = full_query("SELECT b.*, h.name as hosting_name FROM `mod_banners_hosting_types` as b LEFT JOIN `tblproducts` h ON b.hid = h.id WHERE h.type='hostingaccount' ORDER BY `id` DESC"); $result_array = array(); while ($row = mysql_fetch_array($db_result, MYSQL_ASSOC)) { $result_array[] = $row; } return $result_array; } /** * get hosting data by order id * */ function _bannersforfree_get_hosting_data_by_order_id($order_id = 0) { $db_result = full_query("SELECT * FROM `tblhosting` WHERE orderid='$order_id' LIMIT 1"); $result_array = array(); while ($row = mysql_fetch_array($db_result, MYSQL_ASSOC)) { $result_array = $row; return $result_array; } return false; } /** * get free hosting users list counter * */ function _bannersforfree_get_hosting_user_counter2($free_package_ids) { $ids = join(',', $free_package_ids); $db_result = full_query("SELECT count(*) as counter FROM `tblhosting` WHERE packageid IN ($ids) AND domainstatus = 'Active' ORDER BY `id`"); $result_row = array(); while ($row = mysql_fetch_array($db_result, MYSQL_ASSOC)) { $result_row = $row; return $result_row['counter']; break; } return 0; } /** * get free hosting users list * */ function _bannersforfree_get_hosting_users2($free_package_ids, $start_from, $page_size) { $ids = join(',', $free_package_ids); $db_result = full_query("SELECT * FROM `tblhosting` WHERE packageid IN ($ids) AND domainstatus = 'Active' ORDER BY `id` LIMIT $start_from, $page_size"); $result_array = array(); while ($row = mysql_fetch_array($db_result, MYSQL_ASSOC)) { $result_array[] = $row; } return $result_array; } /** * Update banner * */ function _bannersforfree_update_hosting($id, $status, $suspendedto) { return full_query("UPDATE `tblhosting` SET `domainstatus` = '$status', `overidesuspenduntil` = '$suspendedto' WHERE `id` = '$id' "); } /** * Get banners * */ function _bannersforfree_get_banners2() { $db_result = full_query("SELECT * FROM `mod_banners_banners` ORDER BY `id` DESC"); $result_array = array(); while ($row = mysql_fetch_array($db_result, MYSQL_ASSOC)) { $result_array[] = $row; } return $result_array; } /** * set setting value by slug * */ function _bannersforfree_set_setting2($slug, $value = '') { return full_query("UPDATE `mod_banners_config` SET `value`='" . $value . "' WHERE `slug` = '" . $slug . "' LIMIT 1"); } /** * Get setting value by slug * */ function _bannersforfree_get_setting2($slug = '') { $db_result = full_query("SELECT * FROM `mod_banners_config` WHERE `slug` = '" . $slug . "' LIMIT 1"); $result = false; while ($row = mysql_fetch_array($db_result, MYSQL_ASSOC)) { $result = $row; break; } return $result; } /** * Get user * */ function _bannersforfree_get_user($uid) { $db_result = full_query("SELECT * FROM `tblclients` WHERE `id` = '$uid' LIMIT 1"); $result = false; while ($row = mysql_fetch_array($db_result, MYSQL_ASSOC)) { $result = $row; break; } return $result; } /** * Get email template * */ function _bannersforfree_get_email_template_by_name($name) { $db_result = full_query("SELECT * FROM `tblemailtemplates` WHERE `name` = '$name' LIMIT 1"); $result = false; while ($row = mysql_fetch_array($db_result, MYSQL_ASSOC)) { $result = $row; break; } return $result; } /** * Sending curl post * */ function _curl_post_sender($postfields) { // Get website URL $table = "tblconfiguration"; $fields = "value"; $where = array("setting" => "SystemURL"); $result = select_query($table, $fields, $where); $urldata = mysql_fetch_assoc($result); $url = $urldata['value'] . 'includes/api.php'; // Get username and pass to use in api $table = "tbladmins"; $fields = "id,username,password"; $where = ''; $result = select_query($table, $fields, $where); $data = mysql_fetch_assoc($result); $postfields["username"] = $data['username']; $postfields["password"] = $data['password']; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 100); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields); $data = curl_exec($ch); curl_close($ch); return $data; } /** * Make domain suspended * */ function _suspend_domain($domain_id) { $postfields["action"] = "modulesuspend"; $postfields["accountid"] = $domain_id; _curl_post_sender($postfields); } /** * Mail sending * */ function _bannersforfree_mail($uid) { error_reporting(E_ALL); $query = full_query("SELECT value FROM `mod_banners_config` WHERE `slug` = 'cron_email_tpl' LIMIT 1"); $templateid = mysql_fetch_assoc($query); $table = "tblemailtemplates"; $fields = "name"; $where = array("id" => $templateid['value']); $result = select_query($table, $fields, $where); $data = mysql_fetch_assoc($result); $postfields["messagename"] = $data['name']; $postfields["action"] = "sendemail"; $postfields["id"] = $uid; _curl_post_sender($postfields); } /** * Banners cron process * */ function _bannersforfree_cron() { echo "<b>Start checking free hostings</b><br />"; # getting cron settings $cron_limit_array = _bannersforfree_get_setting2('cron_limit'); $cron_last_id_array = _bannersforfree_get_setting2('cron_last_id'); $cron_limit = $cron_limit_array['value']; $cron_last_id = $cron_last_id_array['value']; if (!$cron_limit) { $cron_limit = 100; } if (!$cron_last_id) { $cron_last_id = 0; } echo "<i>Getting settings</i>"; echo "<i>( limit = $cron_limit, start from row# $cron_last_id)</i><br />"; # getting free hosting types $free_hosting_types = _bannersforfree_get_banner_hosting_list2(); $free_ids = array(); foreach ($free_hosting_types as $hosting_free) { $free_ids[] = $hosting_free['hid']; } $free_hostings_list = _bannersforfree_get_hosting_users2($free_ids, $cron_last_id, $cron_limit); $free_hosting_counter = _bannersforfree_get_hosting_user_counter2($free_ids); echo "<i>Getting hosting list...</i><br />"; # save hosting pointer if (($cron_limit + $cron_last_id) < $free_hosting_counter) { _bannersforfree_set_setting2('cron_last_id', $cron_limit + $cron_last_id); } else { _bannersforfree_set_setting2('cron_last_id', 0); } # checking websites $banners = _bannersforfree_get_banners2(); if (!empty($free_hostings_list)) { foreach ($free_hostings_list as $hosting) { $url = $hosting['domain']; echo "Checking <b>$url</b> html<br />"; # getting hosting website html $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_HEADER, 0); $website_html = curl_exec($ch); curl_close($ch); # compare website html with banners html $banner_founded = false; foreach ($banners as $banner) { $banner_html = htmlspecialchars_decode($banner['html']); if (strpos($website_html, $banner_html) !== false) { $banner_founded = true; break; } } # changing hosting status if banner not found if (!$banner_founded) { //_bannersforfree_update_hosting($hosting['id'], 'Suspended', date("Y-m-d", time() + 60*60*24*3 )); // suspended for 3 days _suspend_domain($hosting['id']); _bannersforfree_mail($hosting['userid']); echo "<i style='color:red'>AD not found</i><br />"; } else { echo "<i style='color:green'>AD found</i><br />"; } } } die('<b>done</b>'); } /** * Hook running before checkout complete page shows * */ function bannersforfree_hook1($vars) { $order_id = $vars['orderid']; $free_hosting_types = _bannersforfree_get_banner_hosting_list2(); $free_ids = array(); foreach ($free_hosting_types as $hosting_free) { $free_ids[] = $hosting_free['hid']; } $current_hosting = _bannersforfree_get_hosting_data_by_order_id($order_id); # if hosting type "may have banner" if (in_array($current_hosting['packageid'], $free_ids)) { # redirect to the banners list header("Location: index.php?m=bannersforfree&ordernumber=" . $vars['ordernumber']); } } if (isset($_GET['action'])) { # banners list on product details page if ($_GET['action'] == "productdetails") { $product_id = (int) $_GET['id']; $current_hosting = _bannersforfree_get_hosting_data_by_order_id($product_id); $free_hostings_array = _bannersforfree_get_banner_hosting_list2(); $free_ids = array(); foreach ($free_hostings_array as $hosting_free) { $free_ids[] = $hosting_free['hid']; } if (in_array($current_hosting['packageid'], $free_ids)) { $_LANG['freehosting'] = 1; } else { $_LANG['freehosting'] = 0; } $banners_list = _bannersforfree_get_banners2(); $output = "<table class='datatable' width='100%' cellspacing='3' cellpadding='3' border='0'>"; $output .= "<tr><th>View</th><th>Code</th></tr>"; foreach ($banners_list as $banner) { $b_id = $banner['id']; $output .= "<tr>"; $output .= "<td>"; $output .= "<div style='width:300px;overflow:auto'>" . htmlspecialchars_decode($banner['html']) . "</div>"; $output .= "</td>"; $output .= "<td>"; $output .= '<textarea cols="40" rows="12" name="banners[' . $b_id . ']">' . $banner['html'] . '</textarea>'; $output .= "</td>"; $output .= "</tr>"; } $output .= "</table>"; $_LANG['bannerslist'] = $output; } # banners cron if ($_GET['action'] == "bannerscron") { _bannersforfree_cron(); } } add_hook("ShoppingCartCheckoutCompletePage", 1, "bannersforfree_hook1"); ?> - - - Updated - - - There's also this file and thats all there is to the addon. <?php if (!defined("WHMCS")) die("This file cannot be accessed directly"); /** * Addon config hook **/ function bannersforfree_config() { $configarray = array( "name" => "for Hosting", "description" => "", "version" => "1.1", "author" => "", "language" => "english", ); return $configarray; } /** * Plugin activation hook **/ function bannersforfree_activate(){ $query = "CREATE TABLE IF NOT EXISTS `mod_banners_banners` ( `id` INT NOT NULL AUTO_INCREMENT, `html` TEXT NOT NULL, PRIMARY KEY ( `id` ))"; $result1 = full_query($query); $query = "CREATE TABLE IF NOT EXISTS `mod_banners_config` ( `id` INT NOT NULL AUTO_INCREMENT, `slug` VARCHAR (255) NOT NULL, `value` VARCHAR (255) NOT NULL, PRIMARY KEY ( `id` ))"; $result2 = full_query($query); $query = "CREATE TABLE IF NOT EXISTS `mod_banners_hosting_types` ( `id` INT NOT NULL AUTO_INCREMENT, `hid` INT NOT NULL, PRIMARY KEY ( `id` ))"; $result3 = full_query($query); # set default value for cron limit $query = "INSERT INTO `mod_banners_config` VALUES (NULL, 'cron_limit', '100')"; $result4 = full_query($query); $query = "INSERT INTO `mod_banners_config` VALUES (NULL, 'cron_last_id', '0')"; $result5 = full_query($query); $query = "INSERT INTO `mod_banners_config` VALUES (NULL, 'cron_email_tpl', '56')"; $result6 = full_query($query); if(!$result1 || !$result2 || !$result3 || !$result4 || !$result5 || !$result6){ return array('status'=>'error', 'description'=>'There was an error occurred on addon activation'); } else{ return array('status'=>'success', 'description'=>'"Forced Ads for Hosting" addon activated successfully'); } } /** * Addon deactivation hook **/ function bannersforfree_deactivate() { $query = "DROP TABLE IF EXISTS `mod_banners_banners`"; $result1 = full_query($query); $query = "DROP TABLE IF EXISTS `mod_banners_config`"; $result2 = full_query($query); $query = "DROP TABLE IF EXISTS `mod_banners_hosting_types`"; $result3 = full_query($query); if(!$result1 || !$result2 || !$result3){ return array('status'=>'error', 'description'=>'There was an error occurred on addon deactivation'); } else{ return array('status'=>'success', 'description'=>'"Forced Ads for Hosting" addon deactivated successfully'); } } function bannersforfree_clientarea($vars){ if(isset($_GET['ordernumber'])){ $ordernumber = $_GET['ordernumber']; } else{ $ordernumber = 0; } $banners_list = _bannersforfree_get_banners(); foreach($banners_list as $key => $banner){ $banners_list[$key] = htmlspecialchars_decode( $banners_list[$key]['html'] ); } $LANG = $vars['_lang']; return array( 'pagetitle' => 'Banners list', 'breadcrumb' => array('index.php?m=bannersforfree'=>'Banners list'), 'templatefile' => 'clientbannerslist', 'requirelogin' => true, # or false 'vars' => array( 'ordernumber' => $ordernumber, 'banners' => $banners_list, 'text' => $vars['_lang'], ), ); } /** * Addon's admin-sde page **/ function bannersforfree_output(){ # saving data if(!empty($_POST)){ # add new banner if(isset($_POST['newbanner'])){ $new_banner_html = trim( $_POST['newbanner'] ); _bannersforfree_add_banner($new_banner_html); } # update banner if(isset($_POST['banners'])){ if(!empty($_POST['banners'])){ foreach($_POST['banners'] as $b_id => $b_html){ _bannersforfree_update_banner($b_id, $b_html); } } } # remove banner if(isset($_POST['banners'])){ if(!empty($_POST['banners'])){ foreach($_POST['deletebanners'] as $b_id => $flag){ _bannersforfree_remove_banner($b_id); } } } # new "must have banner" hosting if(isset($_POST['newhosting'])){ $hosting_id = (int)$_POST['newhosting']; _bannersforfree_add_banner_hosting($hosting_id); } # delete hosting from "must have banner" list if(isset($_POST['deletehosting'])){ if(!empty($_POST['deletehosting'])){ foreach($_POST['deletehosting'] as $h_id => $flag){ _bannersforfree_remove_banner_hosting($h_id); } } } # set cron limit if(isset($_POST['settings'])){ if(!empty($_POST['settings'])){ foreach($_POST['settings'] as $slug => $value){ _bannersforfree_set_setting($slug, $value); } } } } # new banner form $output = '<form action="addonmodules.php?module=bannersforfree" method="post">'; $output .= '<textarea style="width:100%; height:80px" name="newbanner">Place the HTML code of the AD</textarea><br /><br />'; $output .= '<input type="submit" class="btn btn-success" value="Add New AD" name="msave_bannersforfree" />'; $output .= '</form>'; # banners list $output .= '<br><h2 style="border-bottom: 1px dashed #CCCCCC;font-weight: bold;padding-bottom: 10px;">ADS list</h3>'; # getting banners list $banners_list = _bannersforfree_get_banners(); if(!empty($banners_list)){ $output .= '<form action="addonmodules.php?module=bannersforfree" method="post">'; $output .= "<table class='datatable' width='100%' cellspacing='3' cellpadding='3' border='0'>"; $output .= "<tr><th>Delete</th><th>View</th><th>Code</th></tr>"; foreach($banners_list as $banner){ $b_id = $banner['id']; $output .= "<tr>"; $output .= "<td>"; $output .= "<input type='checkbox' value='1' name='deletebanners[$b_id]' />"; $output .= "</td>"; $output .= "<td>"; $output .= "<div style='width:100%;'>".htmlspecialchars_decode($banner['html'])."</div>"; $output .= "</td>"; $output .= "<td>"; $output .= '<textarea style="width:100%; height:80px" name="banners['.$b_id.']">'.$banner['html'].'</textarea>'; $output .= "</td>"; $output .= "</tr>"; } $output .= "</table>"; $output .= "<br><input type='submit' class='btn primary' value='Update' name='msave_bannersforfree' />"; $output .= "</form>"; } else{ $output .= "<p>Empty list</p>"; } $output .= "<br /><hr /><br />"; $output .= '<br><h2 style="border-bottom: 1px dashed #CCCCCC;font-weight: bold;padding-bottom: 10px;">Hosting Plans</h3>'; # Hosting list # Current "need banner" hosting list $output .= "<div style='float:left; width:50%; margin-right:50px'><h3>List of hosting plans that should has a forced ads.</h3>"; $hosting_with_banner_list = _bannersforfree_get_banner_hosting_list(); if(!empty($hosting_with_banner_list)){ $output .= '<form action="addonmodules.php?module=bannersforfree" method="post">'; $output .= "<table class='datatable' width='100%' cellspacing='3' cellpadding='3' border='0'>"; $output .= "<tr><th width='20'>Delete</th><th>Hosting name</th></tr>"; foreach($hosting_with_banner_list as $hosting){ $h_id = $hosting['id']; $output .= "<tr>"; $output .= "<td>"; $output .= "<input type='checkbox' value='1' name='deletehosting[$h_id]' />"; $output .= "</td>"; $output .= "<td>"; $output .= '<a href="configproducts.php?action=edit&id='.$hosting['id'].'">'.$hosting['hosting_name'].'</a>'; $output .= "</td>"; $output .= "</tr>"; } $output .= "</table>"; $output .= '<br><input type="submit" class="btn primary" value="Update" name="msave_bannersforfree" />'; $output .= '</form>'; } else{ $output .= "<p>Empty list</p>"; } $output .= "</div><div style='float:left; width:40%'>"; # Add new hosting to "need banner" list $output .= "<h3>Add new hosting plan</h3>"; $output .= '<form action="addonmodules.php?module=bannersforfree" method="post">'; $hosting_list = _bannersforfree_get_hosting_types_list(); foreach($hosting_list as $key => $hosting_type){ foreach($hosting_with_banner_list as $h_with_banner){ if($hosting_type['id'] == $h_with_banner['hid']){ unset($hosting_list[$key]); break; } } } if(!empty($hosting_list)){ $output .= '<select name="newhosting">'; foreach($hosting_list as $htype){ $output .= "<option value='".$htype['id']."'>".$htype['name']."</>"; } $output .= '</select>'; $output .= '<br /><br />'; $output .= '<input type="submit" class="btn btn btn-success" value="Add" name="msave_bannersforfree" />'; } else{ $output .= "<p>Hosting types list is empty</p>"; } $output .= '</form></div>'; $output .= "<div style='clear:both'><br /></div>"; //_bannersforfree_get_email_template_list $output .= "<br /><hr /><br />"; # Hosting users list $output .= '<h2 style="border-bottom: 1px dashed #CCCCCC;font-weight: bold;padding-bottom: 10px;">Suspended Websites</h2>'; $free_ids = array(); foreach($hosting_with_banner_list as $hosting_free){ $free_ids[] = $hosting_free['hid']; } if(isset($_GET['host-page'])){ $current_host_page = $_GET['host-page']; } else{ $current_host_page = 1; } if(!empty($free_ids)){ $host_list = _bannersforfree_get_hosting_users($free_ids, $current_host_page); if(!empty($host_list)){ $output .= "<table class='datatable' width='100%' cellspacing='3' cellpadding='3' border='0'>"; # paginator logic $total_hosts = _bannersforfree_get_hosting_user_counter( $free_ids ); $total_hosts_pages = (int) ($total_hosts / 10 ); //$left_link = "<a href='addonmodules.php?module=bannersforfree&host-page=".($current_host_page-1)."'>Prev</a>"; if($current_host_page != 1){ $left_link = "<a href='addonmodules.php?module=bannersforfree&host-page=".($current_host_page-1)."'>Prev</a>"; } else{ $left_link = ''; } //$right_link = "<a href='addonmodules.php?module=bannersforfree&host-page=".($current_host_page+1)."'>Next</a>"; if($current_host_page <= $total_hosts_pages){ $right_link = "<a href='addonmodules.php?module=bannersforfree&host-page=".($current_host_page+1)."'>Next</a>"; } else{ $right_link = ''; } $output .= "<tr><th>Domain</th><th>Status</th><th>Suspend until</th></tr>"; foreach($host_list as $host){ $output .= "<tr>"; $output .= "<td align='center'><a href='clientsservices.php?userid=".$host['userid']."&id=".$host['id']."'>".$host['domain']."</a></td>"; $output .= "<td align='center'>".$host['domainstatus']."</td>"; if($host['domainstatus'] == "Suspended" && $host['overidesuspenduntil'] != "0000-00-00"){ $susp_until_value = $host['overidesuspenduntil']; } else{ $susp_until_value = ''; } $output .= "<td align='center'>".$susp_until_value."</td>"; $output .= "</tr>"; } //if(!empty($left_link)) $output .= "<tr><td align='center' colspan='3'>$left_link $right_link</td></tr>"; $output .= "</table>"; } else{ $output .= "<p>Empty list</p>"; } } else{ $output .= "<p>Empty list</p>"; } # Settings Area $current_cron_limit_array = _bannersforfree_get_setting('cron_limit'); $current_cron_limit = $current_cron_limit_array['value']; $mail_tpl_list = _bannersforfree_get_email_template_list(); $current_cron_tpl_array = _bannersforfree_get_setting('cron_email_tpl'); $current_cron_tpl = $current_cron_tpl_array['value']; # Form $output .= "<br /><hr /><br />"; $output .= '<h2 style="border-bottom: 1px dashed #CCCCCC;font-weight: bold;padding-bottom: 10px;">Addon Settings</h2>'; $output .= '<form action="addonmodules.php?module=bannersforfree" method="post">'; # Cron limit $output .= '<lable for="cron-limit">Set users limit per cron:</label><br /><br />'; $output .= '<input id="cron-limit" type="text" name="settings[cron_limit]" value="'.$current_cron_limit.'" /><br /><br />'; # Choosing email template $output .= '<lable for="cron-email-tpl">Choose email template to send to suspended customers:</label><br /><br />'; if(!empty($mail_tpl_list)){ $output .= "<select id='cron-email-tpl' name='settings[cron_email_tpl]'>"; foreach($mail_tpl_list as $tpl){ $selected = ($current_cron_tpl == $tpl['id']) ? "selected" : ""; $output .= "<option $selected value='".$tpl['id']."'>".$tpl['name']."</option>"; } $output .= "</select>"; } else{ $output .= "<p>Empty list</p>"; } # Submit form $output .= '<br /><br /><input type="submit" class="btn btn-success" value="Save" name="msave_bannersforfree" style="float:left; margin-right:10px"/>'; $output .= '</form>'; # Cron link $output .= " <script> $(document).ready(function(){ $('#cron-popup-link').click(function(){ var cron_load_href = $(this).attr('href'); $('#cron-popup').load( cron_load_href ); $('#cron-popup').dialog(); return false; }); }); </script> <div style='display:none' id='cron-popup' title='Cron'> <p>Cron running...</p> </div> "; $output .= "<a id='cron-popup-link' target='_blank' href='../clientarea.php?action=bannerscron'><input type='button' class='btn-info' value='Run CRON' /></a>"; $output .= "<br />"; echo $output; } /** * get free hosting users list counter **/ function _bannersforfree_get_hosting_user_counter($free_package_ids){ $page_size = 30; $ids = join(',', $free_package_ids); $query = "SELECT count(*) as counter FROM `tblhosting` WHERE packageid IN ($ids) ORDER BY `id`"; $db_result = full_query($query); $result_row = array(); while($row = mysql_fetch_array($db_result, MYSQL_ASSOC)){ $result_row = $row; return $result_row['counter']; break; } return 0; } /** * get free hosting users list **/ function _bannersforfree_get_hosting_users($free_package_ids, $page_number = 1){ $page_size = 10; $ids = join(',', $free_package_ids); $a = $page_number * $page_size - $page_size; $b = $page_number * $page_size; $query = "SELECT * FROM `tblhosting` WHERE packageid IN ($ids) AND domainstatus!='Cancelled' GROUP BY `domain` ORDER BY `id` DESC LIMIT $a, $page_size"; $db_result = full_query($query); $result_array = array(); while($row = mysql_fetch_array($db_result, MYSQL_ASSOC)){ $result_array[] = $row; } return $result_array; } /** * set setting valueby slug **/ function _bannersforfree_set_setting($slug, $value = ''){ $query = "UPDATE `mod_banners_config` SET `value`='".$value."' WHERE `slug` = '".$slug."' LIMIT 1"; return full_query($query); } /** * Get setting value by slug **/ function _bannersforfree_get_setting($slug = ''){ $query = "SELECT * FROM `mod_banners_config` WHERE `slug` = '".$slug."' LIMIT 1"; $db_result = full_query($query); $result = false; while($row = mysql_fetch_array($db_result, MYSQL_ASSOC)){ $result = $row; break; } return $result; } /** * Remove banner **/ function _bannersforfree_remove_banner_hosting($id = 0){ $query = "DELETE FROM `mod_banners_hosting_types` WHERE `id` = '".$id."' LIMIT 1"; return full_query($query); } /** * Add banner hosting **/ function _bannersforfree_add_banner_hosting($id = ''){ $query = "INSERT INTO `mod_banners_hosting_types` VALUES (NULL, '".$id."')"; return full_query($query); } /** * search hosting in "need banner" list by hosting id **/ function _bannersforfree_search_banner_hosting($id=0){ $query = "SELECT * FROM `mod_banners_hosting_types` ORDER BY `id` DESC LIMIT 1"; $db_result = full_query($query); $result_array = array(); while($row = mysql_fetch_array($db_result, MYSQL_ASSOC)){ $result_array[] = $row; break; } return $result_array; } /** * get "need banner" hosting types list **/ function _bannersforfree_get_banner_hosting_list(){ $query = "SELECT b.*, h.name as hosting_name FROM `mod_banners_hosting_types` as b LEFT JOIN `tblproducts` h ON b.hid = h.id WHERE h.type='hostingaccount' ORDER BY `id` DESC"; $db_result = full_query($query); $result_array = array(); while($row = mysql_fetch_array($db_result, MYSQL_ASSOC)){ $result_array[] = $row; } return $result_array; } /** * get hosting types list **/ function _bannersforfree_get_hosting_types_list(){ $query = "SELECT * FROM `tblproducts` WHERE type='hostingaccount' ORDER BY `id` DESC"; $db_result = full_query($query); $result_array = array(); while($row = mysql_fetch_array($db_result, MYSQL_ASSOC)){ $result_array[] = $row; } return $result_array; } /** * Update banner **/ function _bannersforfree_update_banner($id, $html = ''){ $query = "UPDATE `mod_banners_banners` SET `html` = '".$html."' WHERE `id` = '".$id."' "; return full_query($query); } /** * Remove banner **/ function _bannersforfree_remove_banner($id = 0){ $query = "DELETE FROM `mod_banners_banners` WHERE `id` = '".$id."' LIMIT 1"; return full_query($query); } /** * Add banner **/ function _bannersforfree_add_banner($html_code = ''){ $query = "INSERT INTO `mod_banners_banners` VALUES (NULL, '".$html_code."')"; return full_query($query); } /** * Get email template (only general type) **/ function _bannersforfree_get_email_template_list(){ $query = "SELECT * FROM `tblemailtemplates` WHERE `type` = 'general'"; $db_result = full_query($query); $result = array(); while($row = mysql_fetch_array($db_result, MYSQL_ASSOC)){ $result[] = $row; } return $result; } /** * Get banners **/ function _bannersforfree_get_banners(){ $query = "SELECT * FROM `mod_banners_banners` ORDER BY `id` DESC"; $db_result = full_query($query); $result_array = array(); while($row = mysql_fetch_array($db_result, MYSQL_ASSOC)){ $result_array[] = $row; } return $result_array; } ?>
  14. How can I post the billing password?

    Hi, I have a custom create module for my program and I'm wondering how I can have the WHMCS password post to my create module. So if a new user types "test" as their WHMCS password, I would like it to be posted to my create script so they will have the same password in my program. Right now I'm using a randomly generated password and it's confusing users with 2 different passwords. Thanks, Christian
  15. I am trying to modify a template using code that always worked in version 5 and before but doesn't work in 6. This sample from the documentation doesn't work, it crashes. {php} $userid = $this->_tpl_vars['clientsdetails']['userid']; echo 'User ID is '. $userid ; {/php} This code is working now in 5.3.13 but crashes in 6.0 {php} $cldetails=$this->get_template_vars("clientsdetails"); echo 'Users ID is '. $cldetails['userid']; {/php} What am I doing wrong? This is in /templates/mytemplate/clientareaproductdetails.tpl
  16. I am not familiar with WHMCS system. Can I just create a system for my site visitors to login and add their own domain ( if possible purchase from godaddy api ) against a new application instance( a folder with domain name just like when you add domain from cpanel ) that will be created when user registers to the system? I just can't understand if I can do this WHMCS or not!!! I will buy this if this works for me!
  17. Hi I try to make a login page. But i don't relly know how to check if the username and password is correct. I tried this but it relly dont work: http://pastebin.com/2FMR5iJW The statements where it check if the user have typed something inside the boxes work fine. Its only the part when i have to check the username and email. Thank you.
  18. Hi I try to make my own login page, but i have some problems. I cant check the email field i dont relly know why it dosnt work on WHMCS. It works fine on my own page without WHMCS. WHMCS login page: http://pastebin.com/xk6aqvYQ In the bottom i have a javascript but dont mind that. The page with normal PHP: http://pastebin.com/GsEQTGAD
  19. Hello there, We are looking to hire a person for WHMCS development. Kindly contact us in skype: wooservers Thank you, Andrew WooServers.com
  20. Hi Everyone, I'm continuing my epic quest to get all the client area account details tabs on one page. I need to retrieve the list of security questions via php so i can assign them to the correct smarty variable from clientareadetails.tpl Something like this would go in the tpl file: {php} $securityquestions = $whatever_php_is_needed_to_get_the_questions; $this->assign('securityquestions', $securityquestions; {/php} As WHMCS is not open source I can't find out how to retrieve things via php, I assume there is some sort of get function for retrieving things, or would it involve writing my own database query? So really I have two questions: 1. How do I retrieve the security questions from the database and 2. How do I go about finding out how to add to WHMCS using php (I know it's possible because people write 3rd party plugins!) Thanks in advance
  21. API (error Authentication Failed)

    I've been trying to access WHMCS using the External API. I've seen a few threads on the forum regarding this, and as far as I can see I'm doing everything right. But if someone can point out what I may be missing I'd be grateful. My PHP (from the WHMCS example) is as follows: <?php /* *** WHMCS XML API Sample Code *** */ $url = "https://mydomain.com/includes/api.php"; # URL to WHMCS API file goes here $username = "adminusername"; # Admin username goes here $password = "adminpassword"; # Admin password goes here $postfields = array(); $postfields["username"] = $username; $postfields["password"] = md5( $password ); $postfields["accesskey"] = "random_string"; <-- Have tried both with and without an access key. $postfields["action"] = "getproducts"; $postfields["pid"] = "2"; $postfields["responsetype"] = "xml"; $query_string = ""; foreach ($postfields AS $k=>$v) $query_string .= "$k=".urlencode($v)."&"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $query_string); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); $xml = curl_exec($ch); if (curl_error($ch) || !$xml) $xml = '<whmcsapi><result>error</result>'. '<message>Connection Error</message><curlerror>'. curl_errno($ch).' - '.curl_error($ch).'</curlerror></whmcsapi>'; curl_close($ch); $arr = whmcsapi_xml_parser($xml); # Parse XML print_r($arr); # Output XML Response as Array /* Debug Output - Uncomment if needed to troubleshoot problems echo "<textarea rows=50 cols=100>Request: ".print_r($postfields,true); echo "\nResponse: ".htmlentities($xml)."\n\nArray: ".print_r($arr,true); echo "</textarea>"; */ function whmcsapi_xml_parser($rawxml) { $xml_parser = xml_parser_create(); xml_parse_into_struct($xml_parser, $rawxml, $vals, $index); xml_parser_free($xml_parser); $params = array(); $level = array(); $alreadyused = array(); $x=0; foreach ($vals as $xml_elem) { if ($xml_elem['type'] == 'open') { if (in_array($xml_elem['tag'],$alreadyused)) { $x++; $xml_elem['tag'] = $xml_elem['tag'].$x; } $level[$xml_elem['level']] = $xml_elem['tag']; $alreadyused[] = $xml_elem['tag']; } if ($xml_elem['type'] == 'complete') { $start_level = 1; $php_stmt = '$params'; while($start_level < $xml_elem['level']) { $php_stmt .= '[$level['.$start_level.']]'; $start_level++; } $php_stmt .= '[$xml_elem[\'tag\']] = $xml_elem[\'value\'];'; @eval($php_stmt); } } return($params); } ?> I've ensured that my IP is listed in the API IP Access Restriction section of the Security tab in General Settings. And I've also double checked that my admin user has API access set in the Administrator Roles settings. I've tried accessing the API via the access key method as well, but this didn't wok either. So I cannot think of anything else that may causing the `error Authentication Failed` error. Checking the Admin & Activity Logs show nothing, plus I've also checked the webserver error logs, but no joy. Anyone got any ideas on what I'm missing, or where I can find a log of what error is happening?
  22. Could you share your settings for PHP memory limit and max execution time, as well as any other setting that you think is necessary for good WHMCS performance? I have a memory limit of 1024M and max_execution_time of 120, just increased it to 300 to troubleshoot an issue. The 1024M limit was necessary with the old domain sync system, which would process all domains on every pass, and I've left it that way. I'm managing a few thousand domains. Also - do you know of any way to check for memory or execution time errors?
×

Important Information

By using this site, you agree to our Terms of Use & Guidelines