3

When adding custom php code for a conditional action, drupal/ubercart provides two php variables ($order and $account) that hold information about the order and account for the checkout that was just completed.

I can't find anywhere on the internet documentation about how these objects are structured...anyone know where this documentation is or how these objects are setup???

thanks

DrHeiter
  • 31
  • 2
  • Documentation does seem to be lacking...can you `var_dump` the structures in your test environment? – brian_d Dec 24 '10 at 15:01

2 Answers2

4

Here's what the $order object looks like on a fairly standard install (might be a bit different depending on your installation. Of course the products in the order dictate what the items section looks like:

stdClass Object
(
    [order_id] => 123
    [uid] => 456
    [order_status] => payment_received
    [order_total] => 100
    [product_count] => 1
    [primary_email] => test@example.com
    [delivery_first_name] => Test
    [delivery_last_name] => Customer
    [delivery_phone] => 123-123-1234
    [delivery_company] => ABC Company, Inc.
    [delivery_street1] => 123 Easy St.
    [delivery_street2] => 
    [delivery_city] => Anytown
    [delivery_zone] => 39
    [delivery_postal_code] => 12345
    [delivery_country] => 840
    [billing_first_name] => Test
    [billing_last_name] => Customer
    [billing_phone] => 123-123-1234
    [billing_company] => ABC Company, Inc.
    [billing_street1] => 123 Easy St.
    [billing_street2] => 
    [billing_city] => Anytown
    [billing_zone] => 39
    [billing_postal_code] => 12345
    [billing_country] => 840
    [payment_method] => credit
    [data] => Array
        (
            [cc_data] => ***encrypted credit card data***
        )

    [created] => 1295455508
    [modified] => 1295457962
    [host] => 127.0.0.1
    [products] => Array
        (
            [0] => stdClass Object
                (
                    [order_product_id] => 245
                    [order_id] => 123
                    [nid] => 5
                    [title] => Test Product
                    [manufacturer] => 
                    [model] => TEST-PRODUCT-SKU
                    [qty] => 1
                    [cost] => 100.00000
                    [price] => 100.00000
                    [weight] => 0
                    [data] => Array
                        (
                            [attributes] => Array
                                (
                                )

                            [shippable] => 1
                            [module] => uc_product
                        )

                    [order_uid] => 456
                )

        )

    [payment_details] => 
    [quote] => Array
        (
            [method] => flatrate_1
            [accessorials] => 0
            [rate] => 7.00000
            [quote_form] => 
        )

    [line_items] => Array
        (
            [0] => Array
                (
                    [line_item_id] => subtotal
                    [type] => subtotal
                    [title] => Subtotal
                    [amount] => 100
                    [weight] => 0
                    [data] => 
                )

            [1] => Array
                (
                    [line_item_id] => 194
                    [type] => shipping
                    [title] => Flat Rate Shipping
                    [amount] => 7.00000
                    [weight] => 1
                    [data] => 
                )

        )

)
UberSteve
  • 161
  • 3
2
  • $account is the user object.
  • $order is the ubercart order object.

There are some minimum defined values for both of these objects, but they can contain anything really. The reason is, that Drupal will allow modules to expand the user object, while ubercart will allow modules to expand the order object.

The best thing to do in such situations is to inspect the objects to figure out how to get to what you need.

The devel module will allow you to pretty print variables using dsm() or dump the variable t a log file using dd(). Those are two ways to get to the variable info.

googletorp
  • 33,075
  • 15
  • 67
  • 82
  • +1: dsm() or dpm() are the way to do this. There's no single source of documentation about what's in these variables, since they might be modified by any number of module hooks – anschauung Dec 28 '10 at 19:41