我只是注意到tblhosting中的ns1和ns2列为空。接受订单后,有人可以给我代码将在数据库中添加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列中有一个条目。
通过SQL查询使用UPDATE
。但不确定如何做。
答案 0 :(得分:0)
一种解决方案是创建服务器模块。 Server Modules
实施 _CreateAccount 方法。
配置您的产品以使用此模块。
在文件中放置以下代码:
\ 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]);
}
}
});
?>
但是您必须在此示例中将产品ID设置为硬编码// 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]);
}
}
});
?>
答案 1 :(得分:0)
tblhosting ns1 + ns2字段用于服务器类型的产品,例如VPS。如果配置正确,则它们应包含订购服务时输入的值
对于域,名称服务器保存在tblorders表(“名称服务器”字段)中。