Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


Everything posted by steven99

  1. Have not tested fully but you can change the user labeled as owner's email and name via the manage user button and that likely would be enough for them to do a password reset. Though your method works also and is a good workaround that should not be needed.
  2. I think you will need a hook to remove the options and a hook for checkout validation to confirm there are no domain registrations being sneaked in.
  3. Err, wait what? Under the Client's summary page -> Users tab in your WHMCS admin, there is a user with "Owner" next to the name, correct? That user should be able to login to the client area and go to the account menu -> Change Password. That owner should match the account profile, however, looks like the user's name and email address do not update the user's name and email when updating the profile via the admin -- and likely via API / class calls.
  4. Well, two issues right off for a developer: 1. they call their API in beta stage and 2. the API docs have a lot of content missing. Sure it could be figured out by the name and params but some info would be nice. Like what does rebuild do exactly? What does set as default do? Seems to set a web app as a server's default app but I am guessing and if I am guessing and testing and figuring out, then I am not writing. With both of those issues, I could see a potential for constant random breakages and as such updates and constant monitoring of those API pages. Help the developers and they will help you. In terms of integrating it, I don't see cloning API calls or cache controls or other options beyond PHP version changes . I could have missed those in the quick look around. Did not see any thing right off that could stop an WHMCS server module from working. There are some aspects that would have to be though of. Like how to handle servers and selecting them for new services.
  5. If you're using API keys and not users, change username to identifier and password to secret per https://developers.whmcs.com/api/authentication/
  6. So, just to confirm the setup, you have: Custom page in a directory that is country specific el_GR/productdescription.php?pid=347 fr_FR/productdescription.php?pid=33 etc You want to set the currency per country So two options, Set the currency within each productdescription.php file in each country folder If for some reason you can't, where is $WEB_ROOT defined at and are you sure it is being set to those? If each country directory has their own productdescription.php, one method to getting the currency would be: $country_currencies = ['en_GB'=>1,"zz_top"=>2,"xx-zz"=>5,"whatever"=>42]; $country = baesname(__DIR__); $currency_id = (array_key_exists($country, $country_currencies) : $country_currencies[$country] : false ); if ($currency_id) { //Currency ID found //Set the currency..... Session::set('currency', $currency_id) } All that can be stuffed in to a function in a common file that all custom pages include and feed the function the country using the same method of getting it.
  7. The email marketer (Under utilities) should be able to do that.
  8. What are you trying to do exactly? IIRC, the domain contacts and fields are done by the registrar module's GetContactDetails function. Are you at that point or trying to customize a registrar module further or?
  9. SupportPal handles multi-branding very well and you can customize email templates.
  10. Using ClientAlert hook, you could check the products of the passed client and see if the packageid is the one you want to alert for and then return the alert.
  11. You could use the same API keys but I would advise against it and use a new key for the separate system just to have a bit of isolation . Would check with accountant on the invoice number question.
  12. Oh, you mean to the checkout page on the client area? Using the ShoppingCartCheckoutOutput hook, returning HTML with javascript to place the note element where you want it would do the trick.
  13. So just to confirm, when you print_r($response) it shows nothing? Also, are you using this within an external app or like a module in whmcs? If a module, hook, etc, use the internal API (locapi example it gives) instead as you don't need to worry about the login bits and I suspect that is the issue here.
  14. What type of note exactly? A client note, service note, admin notes, to do, activity log?
  15. If you read my second option it gives you that but you know what you figure it out.
  16. Would be best to talk to the dev for that module as any solution would require coding. Using the ClientAreaSecondarySidebar hook and getting deleting the sidebar's element should be possible. You just need the id/name, should be in the id value of sidebar container, and look for it in the sidebar children array. and just do $menu->delete('useless_sidebar"); .
  17. What are you maxmind settings under the fraud protection page? Even if it passes maxmind, there are some options there that could reject it - like high risk country or proxy network.
  18. Two options really: Place whmcs in to a sub directory - clients, billing, whatever you want Use .htaccess redirect to take accesses without a file to the landing page RedirectMatch 301 ^/$ /landing.php Personally I would go for sub directory or sub domain instead of mixing the two .
  19. It is funny in some cases WHMCS checks for an active invoice and denies an action, like upgrading, but yet I guess it doesn't check status for the redemption and active invoice? Ugh. A hook that checks for an unpaid invoice for the domain and prevents the renewal from getting to the cart or checking out from the cart would be needed.
  20. I don't think it supports logic but rather just output there. One option off the top is to use a variable to store the content in and breakout to do the loops and output to the same string. So for example: $HTML = <<<HTML <p>some html</p><table> HTML; foreach($items as $item) { $HTML .= <<<HTML <tr><td>{$item}</td></tr> HTML; } return $HTML; (I rarely use <<< so just doing by what i recall and have seen recently in some modules ) Or just do what I do and have smarty deal with all the view stuff and have it fetch the template and return it instead of displaying. function fetchTemplateContents($template) { $file = __DIR__ . "/templates/$template.tpl"; $smarty = new \Smarty(); $smarty->assign("some_items", $items); $HTML = $smarty->fetch($file); return $HTML; } NOTES: it only has the variables you feed it -- no language overrides or standard merges unless you give it. Template file needs to be absolute path and not a relative path -- thus the usage of __DIR__ to get your in to the current script's running directory .
  21. Why are you using a custom page instead of the server module's clientarea function to provide that information? If you do not have access to the server module's code, then using an ClientAreaProductDetailsOutput hook would be your next best option . That hook will provide the service ID as well as should prevent users from accessing other users services without duplicating that functionality in the custom page. You then return HTML for any additional output you may want. This works with any server module and using javascript you can move the output to any where on the page that is needed.
  22. Should be able to get the module settings via the WHMCS\Product\Product class . https://classdocs.whmcs.com/8.3/WHMCS/Product/Product.html . Should just be able to do Product::find($product_id) to get the object.
  23. Under the server settings (whmcs system settings -> servers -> the server ) there is an expense field you can use . If you mean like expense for a control panel license that is an addon or configurable option to a service, that isn't possible out of the box. You can use the transactions log to track expenses but that isn't its purpose and I think there is a addon around that does have some expense tracking.
  24. If you change the price within the product editing page under system settings, then no that does not affect any existing services. New services would have that new price. Existing services only get the new price via the bulk updater or when saving a specific service and having "Recalc" checkbox checked.
  • Create New...

Important Information

By using this site, you agree to our Terms of Use & Guidelines and understand your posts will initially be pre-moderated