/** * shopp_add_order_event - log an order event * * @api * @since 1.2 * * @param int $order (conditionally required default:false) Will be false for purchase events, but needs the order id otherwise. * @param string $type (required) the order event type * @param array $message (optional default:array()) the event message protocol * @return bool true on success, false on error **/ function shopp_add_order_event($order = false, $type = false, $message = array()) { if (false !== $order && !shopp_order_exists($order)) { shopp_debug(__FUNCTION__ . " '{$type}' failed: Invalid order id."); return false; } if (!$type || !OrderEvent::handler($type)) { shopp_debug(__FUNCTION__ . " failed: Missing or invalid order event type"); return false; } return OrderEvent::add($order, $type, $message); }
/** * Callback for loading concrete OrderEventMesssage objects from a record set * * @author Jonathan Davis * @since 1.2 * * @param array $records A reference to the loaded record set * @param object $record Result record data object * @return void **/ public function loader(array &$records, &$record, $type = false, $index = 'id', $collate = false) { if ($type !== false && isset($record->{$type}) && class_exists(OrderEvent::handler($record->{$type}))) { $OrderEventClass = OrderEvent::handler($record->{$type}); } elseif (isset($this)) { if ('id' == $index) { $index = $this->_key; } $OrderEventClass = get_class($this); } $index = isset($record->{$index}) ? $record->{$index} : '!NO_INDEX!'; $Object = new $OrderEventClass(false); $Object->msgprops(); $Object->populate($record); if (method_exists($Object, 'expopulate')) { $Object->expopulate(); } if ($collate) { if (!isset($records[$index])) { $records[$index] = array(); } $records[$index][] = $Object; } else { $records[$index] = $Object; } }