Internal overhaul of Cart/Checkout and other minor fixes
This commit is contained in:
@@ -16,10 +16,6 @@ class Cart {
|
||||
$this->id = is_null($id) ? Session::instance()->id() : $id;
|
||||
}
|
||||
|
||||
public static function instance($id=NULL) {
|
||||
return new Cart($id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a list of items in the cart
|
||||
*/
|
||||
@@ -29,6 +25,20 @@ class Cart {
|
||||
->find_all();
|
||||
}
|
||||
|
||||
public function checkout() {
|
||||
$result = array();
|
||||
|
||||
$checkout = ORM::factory('Checkout')->where_active()->find_all()->as_array();
|
||||
|
||||
foreach ($this->contents() as $cio)
|
||||
$checkout = array_intersect($checkout,$cio->checkout()->as_array());
|
||||
|
||||
foreach ($checkout as $cko)
|
||||
$result[$cko->id] = $cko->name;
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function delete() {
|
||||
foreach (ORM::factory('Cart')->where('session_id','=',$this->id)->find_all() as $co)
|
||||
$co->delete();
|
||||
@@ -46,6 +56,10 @@ class Cart {
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
public static function instance($id=NULL) {
|
||||
return new Cart($id);
|
||||
}
|
||||
|
||||
public function total($format=FALSE) {
|
||||
$total = 0;
|
||||
|
||||
@@ -54,43 +68,5 @@ class Cart {
|
||||
|
||||
return $format ? Currency::display($total) : $total;
|
||||
}
|
||||
|
||||
/**
|
||||
* Print an HTML cart list
|
||||
*
|
||||
* @param bool $detail List a detailed cart or a summary cart
|
||||
*/
|
||||
public function cart_block() {
|
||||
// @todo To implement.
|
||||
return '';
|
||||
// If the cart is empty, we'll return here.
|
||||
if (! count($this->contents()))
|
||||
return 'The cart is empty.';
|
||||
|
||||
Style::add(array(
|
||||
'type'=>'file',
|
||||
'data'=>'css/cart_blocklist.css',
|
||||
));
|
||||
|
||||
$output = '<table class="cart_blocklist" border="0">';
|
||||
foreach ($this->contents() as $item) {
|
||||
$ppa = $item->product->get_price_array();
|
||||
$pdata = Period::details($item->recurr_schedule,$item->product->price_recurr_weekday,time(),TRUE);
|
||||
|
||||
$output .= View::factory('cart/block_list')
|
||||
->set('item',$item)
|
||||
->set('price_setup',$item->quantity*$ppa[$item->recurr_schedule]['price_setup'])
|
||||
->set('price_firstinvoice',$item->quantity*$ppa[$item->recurr_schedule]['price_base']*$pdata['prorata']);
|
||||
}
|
||||
|
||||
$output .= '<tr class="submit">';
|
||||
$output .= sprintf('<td colspan="3">%s %s</td>',
|
||||
Form::button('checkout','Checkout',array('type' => 'submit')),
|
||||
Form::button('empty','Empty',array('type' => 'submit')));
|
||||
$output .= '</tr>';
|
||||
$output .= '</table>';
|
||||
|
||||
return $output;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
Reference in New Issue
Block a user