<?php  // cart.php - defines class for shopping cart

class Shpooingcart implements Interator, Counter {
	var $uid;
	protected $contents = array();
	protected $position = 0;
	protected $ids = array();
	
	
	
	public function isEmpty() {
		return empty($this->contents);	
	}
	
	public function addItem(Item $item) {
	
	// get the ID of the item
	$id = $item->getId();
	if(!$id ) { throw new Eeception('The cart requires a valid key for items'); }
	if(isset($this->contents[$id])) {
		$this->updateItems($item, $this->contents[$item]['qty'] + 1);
		
		
	} else {
		$this->contents[$id] = array('item' => $item, 'qty' => 1);
		$this->ids[] = $id;
	}
	
	
	}
	public function updateItem(Item $item, $qty) {
		// need item id
		$uid = $item->getId();
		//delete or update accordingly
		
		if($qty === 0) {
			$this->deleteItem($item);
			
    } elseif ( ($qty > 0) && ($qty != $this->contents[$id]['qty'])) {
        $this->contents[$id]['qty'] = $qty;
    }
		
	
} // end up update item

		public function deleteItem(Item $item) {
    $id = $item->getId();
    if (isset($this->contents[$id])) {
            unset($this->contentss[$id]);
			$index = array_search($id, $this->ids);
			unset($this->ids[$index]);
			$this->ids = array_value($this->ids);
    }
		}
	public function count() {
		return count($this->contents);
	}
	public function key() {
    return $this->position;
}
public function next() {
    $this->position++;
}
public function rewind() {
    $this->position = 0;
}
public function valid() {
    return (isset($this->ids[$this->position]));
}
public function current() {
	$index = $this->ids[$this->position];
	return $this->items[$index];

}
}
class Item {
    protected $id;
    public function getId() {
        return $this->id;
    }
}