函数hook_order()位于uc_order.module模块中:
<?php
hook_order($op, &$arg1, $arg2)
?>
描述:
在Übercart中,一个订单代表着一个单独的交易。订单是在结算过程中创建的,此时,它们在数据库中的状态为在结帐。当客户完成结算时,订单的状态也会随着进行更新,已反映交易的进行状况。一旦订单创建以后,甚至在订单创建的过程中,其它的模块都可以向订单中添加额外的信息。每当对订单进行某项操作时,都会出发钩子hook_order(),从而让你的模块知道当前发生了什么,而你的模块根据当前情况,进行一些相应的处理。
参数:
· $op -当前进行的动作
· &$arg1 -这个是订单对象,或者指向订单的引用,下面有进一步的说明。
· $arg2 -这个变量将在下面的表格中说明
$op |
用途 |
new |
当一个订单创建时调用。$arg1 是对新订单对象的引用,所以模块可以在订单的创建时期添加或者修改订单。 |
save |
当订单对象被保存时,这个钩子将触发这个操作,以让其它模块保存相应的信息。$arg1为订单对象的引用 |
load |
当订单加载时,在订单和产品数据从数据库中加载以后,调用。$arg1为订单对象的引用,所以其它模块可以在订单对象加载时对其进行修改。 |
submit |
当销售正在完成时,并且客户点击了结算页面的提交订单按钮,这个钩子将触发这个操作。这给了其它模块一个机会,来决定订单是否允许被提交。一个示例是,当订单提交时,信用卡模块试图处理支付,如果支付失败的话,将返回一个失败信息。 为了阻止订单提交的通过,你必须返回一个包含错误信息的数组,其格式如下所示: <?php |
can_update |
在订单的状态改变以前调用,从而确定订单是否可被更新。$arg1是订单对象,带有旧的订单状态ID($arg1->order_status),而$arg2就是新的订单状态ID。如果由于某些原因,可以返回FALSE来停止订单的状态更新。 |
update |
当订单状态更新时调用。$arg1是订单对象,带有旧的订单状态ID($arg1->order_status),而$arg2就是新的订单状态ID。 |
can_delete |
在订单被删除以前调用,以确认当前订单可被删除。返回FALSE可以阻止删除的发生。(例如,当订单已经受到付款时,支付模块默认返回FALSE) |
delete |
当订单被删除时,而其它的订单相关信息还没有被从数据库中删除以前调用。$arg1代表着订单对象,使用它你的模块可以删除与之相关的信息。 |
total |
当产品的总计添加以后,计算订单的总计时调用。$arg1为订单对象。期望能够返回一个值(正值或者负值),来修改订单的总计。 |
返回值:
没有返回值。
示例:
<?php
function uc_payment_order($op, &$arg1, $arg2) {
switch ($op) {
case 'save':
// Do something to save payment info!
break;
}
}
?>