Одним из решений является создание серверного модуля. Серверные модули
Реализация метода _CreateAccount .
Настройте продукт для использования этого модуля.
![Cofigure Product](https://i.stack.imgur.com/KZ1UG.png)
Введите следующий код в файл:
\ 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]);
}
}
});
?>