Order helper

You can view the source on GitHub.

Will probably also want to look at the payment helper.


Example setup

$order = new order();
$order->select_open();

Item count - quick summary for a basket count

echo $order->item_count();

Add an item

$order->item_add(array(
        'item_id' => $id,
        'item_code' => $code,
        'item_name' => $name,
        'price' => $price,
    ));

Edit basket with 'remove' links (CSRF issue)

$order->items_update();

$table_html = $order->table_get_html(array(
        'quantity_edit' => array('type' => 'link'),
    ));

Edit basket with 'quantity' select or input fields

//--------------------------------------------------
// Controller

    $form = new form();

    if ($form->submitted() && $form->valid()) {

        $order->items_update();

        if (strtolower(trim(strval(request('button')))) == 'update totals') {
            redirect(url('/basket/'));
        } else {
            redirect(url('/basket/checkout/'));
        }

    }

    $table_html = $order->table_get_html(array(
            'quantity_edit' => array('type' => 'select'), // or 'input'
        ));

    $response->set('form', $form);
    $response->set('table_html', $table_html);
    $response->set('empty_basket', ($order->item_count() == 0));

//--------------------------------------------------
// View

    <?= $form->html_start(); ?>
        <fieldset>

            <?= $form->html_error_list(); ?>

            <?= $order_table_html; ?>

            <?php if (!$empty_basket) { ?>

                <div class="submit">
                    <input type="submit" name="button" value="Update totals" />
                    <input type="submit" name="button" value="Checkout" />
                </div>

            <?php } ?>

        </fieldset>
    <?= $form->html_end(); ?>

Checkout page

$order = new order();

if (!$order->select_open()) {
    redirect(url('/basket/'));
}

$form = $order->form_get();
$form->form_class_set('basic_form');
$form->form_button_set('Continue');

$form->print_group_start('Payment details');
$form->field_get('payment_name');
$form->field_get('payment_address_1');
$form->field_get('payment_address_2');
$form->field_get('payment_address_3');
$form->field_get('payment_town_city');
$form->field_get('payment_region');
$form->field_get('payment_postcode');
$form->field_get('payment_country');
$form->field_get('payment_telephone');

$form->print_group_start('Delivery details');
$form->field_get('delivery_different');
$form->field_get('delivery_name');
$form->field_get('delivery_address_1');
$form->field_get('delivery_address_2');
$form->field_get('delivery_address_3');
$form->field_get('delivery_town_city');
$form->field_get('delivery_region');
$form->field_get('delivery_postcode');
$form->field_get('delivery_country');
$form->field_get('delivery_telephone');

if ($form->submitted()) {

    $result = $order->save();

    if ($result) {
        redirect(url('/basket/payment/'));
    }

} else {

    // Defaults

}

$response->set('form', $form);

Admin access

config::set('order.user_privileged', ADMIN_LOGGED_IN);