Как добавить действие ловушку для порядка whmcs - PullRequest
0 голосов
/ 09 октября 2019

Я только что заметил, что столбцы ns1 и ns2 в tblhosting пустые. Может ли кто-нибудь дать мне код, который добавит ns в базы данных, как только заказ будет принят? Для 2 сервисов я использую разные сервера имен.

расшарил:

ns1.shared.com

ns2.shared.com

для реселлера.

ns1.reseller.com

ns2.reseller.com

Надеюсь, мне помогут с этим. заранее спасибо.

Я пытаюсь создать что-то вроде ловушки,

function ns($vars){
if ($vars['groupname'] == "Shared Hosting") {
    $groupname = $vars['groupname'].
    return array("groupname" => $groupname);
}

, а затем запрос sqlно не уверен, как добавить SQL-запрос здесь.

Я ожидаю запись в столбцах tblhosting >> ns1 и ns2. Использование UPDATE через SQL-запрос. но не уверен, как это сделать.

Ответы [ 2 ]

0 голосов
/ 14 октября 2019

Поля tblhosting ns1 + ns2 используются для продуктов серверного типа, например, VPS. При правильной настройке они должны содержать значения, введенные при заказе услуги

Для доменов серверы имен сохраняются в таблице tblorders (поле серверов имен).

0 голосов
/ 09 октября 2019
  • Одним из решений является создание серверного модуля. Серверные модули

  • Реализация метода _CreateAccount .

  • Настройте продукт для использования этого модуля.

    Cofigure Product

  • Введите следующий код в файл:

\ modules \ Servers \ test \ test.php


<?php
// if(!defined("WHMCS"))exit("This file cannot be accessed directly");
// see: https://developers.whmcs.com/domain-registrars/function-index/
// see: https://developers.whmcs.com/provisioning-modules/supported-functions/
// See: https://github.com/WHMCS/sample-provisioning-module/blob/master/modules/servers/provisioningmodule/provisioningmodule.php L443
// "Create", "Suspend","Unsuspend", "Terminate"
require_once(ROOTDIR . '/includes/dbfunctions.php');
require_once(ROOTDIR . '/includes/functions.php');
require_once(ROOTDIR . '/includes/clientfunctions.php');

function test_MetaData()
{
    return array("DisplayName"=>"Test Module","APIVersion"=>"1.0","RequiresServer"=>true);
}

function test_CreateAccount($params)
{
    $serviceid=$params['serviceid'];
    $my_ns1="ns1.shared.com";
    $my_ns2="ns2.shared.com";
    $qr=update_query('tblhosting',array("ns1"=>$my_ns1,"ns2"=>$my_ns2),array('id' => $serviceid));
    if(!$qr) throw new Exception("Cannot Update data");
    return "success";
}

?>

-------- ОБНОВЛЕНИЕ 1 ------------

Если вы хотите создать хук для 'AcceptOrder', поместите ваш код в файл:

\ includes \ hooks \ test_hook.php

<?php
    use Illuminate\Database\Capsule\Manager as Capsule;
add_hook('AcceptOrder', 1, function($vars) {
    $orderid=$vars['orderid'];
    $my_packageid=10; //hardCoded
    $my_ns1="ns1.shared.com";
    $my_ns2="ns2.shared.com";

    $res=Capsule::table('tblhosting')->where('orderid',$orderid)->get();
    foreach($res as $row)
    {
        if($row->packageid==$my_packageid)
        {
            $up=Capsule::table('tblhosting')->where('id',$row->id)->update(['ns1'=>$my_ns1,'ns2'=>$my_ns2]);
        }
    }

});
?>

Но вы должны установить идентификатор продукта в этом примере жестко закодированным // 10.

-------- ОБНОВЛЕНИЕ 2 ------------

для группы пользователей необходимо выполнить объединение нескольких таблиц.

<?php
    use Illuminate\Database\Capsule\Manager as Capsule;
    add_hook('AcceptOrder',1,function($vars){
        $orderid=$vars['orderid'];
        $my_packageid=10; //hardCoded
        $my_gid=1; //hardCoded
        $my_ns1="ns1.shared.com";
        $my_ns2="ns2.shared.com";
        //$res=Capsule::table('tblhosting')->where('orderid',$orderid)->get();
        $res=Capsule::select("SELECT packageid , gid ,tblhosting.id AS hostingid ,tblhosting.orderid FROM tblhosting INNER JOIN tblproducts ON tblhosting.packageid=tblproducts.id LEFT OUTER JOIN tblproductgroups ON tblproducts.gid=tblproductgroups.id WHERE tblhosting.orderid={$orderid}");
        foreach($res as $row)
        {
            if($row->gid==$my_gid)
            {
                $up=Capsule::table('tblhosting')->where('id',$row->hostingid)->update(['ns1'=>$my_ns1,'ns2'=>$my_ns2]);
            }
        }

});
?>
...