Skip to content

Instantly share code, notes, and snippets.

@jesussuarz
Last active December 26, 2023 06:37
Show Gist options
  • Save jesussuarz/160fa727866797fd389f07572dd272e2 to your computer and use it in GitHub Desktop.
Save jesussuarz/160fa727866797fd389f07572dd272e2 to your computer and use it in GitHub Desktop.

Script para cerrar completamente WHMCS y usarlo solo como DASHBOARD

Como el titulo lo dice, les comparto un script que programe para para cerrar completamente WHMCS y usarlo como DASHBOARD.

En otras palabras, siempre fui participe de usar WHMCS como pagina principal, en mi empresa vamos a cambiar esto, puesto a que usaremos un sitio propio que estamos programando basados en el API de WHMCS. La idea era usar el whmcs solo como dashboard o panel de usuario, moverlo a una carpeta por separado, pero los clientes deben realizar los pedidos mediante el sitio web principal y no directamente desde el carro de compras.

Entonces mi script ¿que hace?

  • Redirecciona atrás, todas las páginas que no sean: login.php, dologin (pagina de salir), clientarea.php, pwreset.php, register.php, contact.php
  • Redirecciona atrás, la página de inicio o homepage (index.php) puesto a que no se necesita, ya que cuando se logean va hacia clientarea.php
  • Redirecciona atrás, si no hay ninguna variable get o post añadida para cart.php, en otras palabras debe ser cart.php?var (por ejemplo), de lo contrario redirecciona.
  • Redirecciona atrás, si no hay ningún producto o dominio agregado al carrito
  • Redirecciona atrás, si no esta logeado, pero si esta logeado entonces si le muestra el carrito. (esto como forma de que los pedidos vengan desde el sitio principal)

Cuando me refiero "redirecciona atrás", quiero decir que si por ejemplo tenemos un dominio llamado empresa-host.com y hemos movido el whmcs a empresa-host.com/whmcs, entonces el script cuando cumpla con alguna de esas funciones redirecciona de empresa-host.com/whmcs/cart.php hacia empresa-host.com/ de esta forma se le daria mayor uso al sitio principal y se usaría el whmcs solo como panel para los clientes.

Ahora para instalar el script, simplemente deben ir a la carpeta de su whmcs/includes/hooks/ y crear un archivo llamado: forceeveryonetologin.php

Luego pegar el siguiente script:

<?php
if (!defined("WHMCS"))
    die("This file cannot be accessed directly");

function hook_ForceEveryoneToLogin($vars)
{
    $clientID = intval($_SESSION['uid']);
    $adminID  = intval($_SESSION['adminid']);
    // redirect si no es ninguna de las paginas declaradas
    if ($adminID === 0) {
        if (!in_array($vars['filename'], array(
            "login",
            "dologin",
            "clientarea",
            "pwreset",
            "register",
            "contact"
        )) && $clientID === 0 && $pagetemplate == 'knowledgebase') {
            header("Location: ../");
            exit;
        }
    }
    // redirect si es la home page
    if ($vars['templatefile'] == "homepage") {
        header("Location: clientarea.php");
        exit;
    }
    // redirect si es el carrito y esta vacio y/o no tiene productos/ servicios añadidos y/o no hay ninguna variable get
    global $CONFIG;
    if ($vars['filename'] == 'cart') {
        // redireccionar si no hay variable get o post
      
        if (count($_GET) == '0' && count($_POST) == '0' && count($_SESSION['cart']['domains']) == '0' && count($_SESSION['cart']['products']) == '0' && empty($vars['client']) ) {
            header("Location: ../");
            exit;
        }

        // final
    }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment