<?php
# A Collection of functions that are used throughout the MusicWeb
# E-commerce Application.
#
# Created by David Levermore, leverd@rpi.edu for
# Information Technologies and Systems for E-Business, DSES 6570
# Cheng Hsu, Professor - Decision Sciences and Engineering Systems
# Rensselaer Polytechnic Institute, 110 Eighth St. Troy, NY 12180
#


# If the cart is not created create one and register it with the
# session

function createCart()
{
    
# Cart is placed in global scope and is available
    # to all functions.
    
global $cart
    
    
# Cart created as an array to "keep things neat"
    
$cart = array(); 
    
    
# Register the cart with the session    
    
session_register("cart");

    
# Exit the function and return nothing
    
return;
}

# Cart size is needed in multiple places so create a function
# to determine this

function getCartSize()
{
    global 
$cart;

    
# Check if the cart exists and if it does, return the cart
    # size - if not cart size is zero and return zero
    
    
if(!isset($cart))
        
$cart_size 0;
    else
        
$cart_size sizeof($cart);
        
    return 
$cart_size;            
}


# A function to add items to the cart. Function arguments is an array
# of variables.       
            
function addToCart(&$post_args)    
{
    global 
$cart$notify# $notify added to global scope
    
    # We first check to see if the item is already in the cart.
    # We iterate through each item in the cart (remember cart is
    # an array) and compares the product ID in the cart to that
    # in the argument passed in the function.  Returns FALSE and
    # exits function if the item is already in the cart.

    
while(list(,$v)=each($cart))
    {
        if(
$post_args["ProductID"]==$v["ProductID"]) 
        {
            
$notify "<font color=\"FF0000\">Item already in Cart!</font>";
            return 
FALSE;
        }
    }

    
# Checks to see if the cart is full.  Full is 12 items.
    # Returns FALSE and exits function if the cart is full.
    
    
if(getCartSize()==12)
    {
        
$notify "<font color=\"FF0000\">CD Full!</font>";
        return 
FALSE;
    }
    
    
# Creates a new array of items. That is, the product ID and quantity
    # of products.  Takes the product ID obtained from the function arguments.
    
    
$new_item = array("ProductID"=>$post_args["ProductID"],"Quantity"=>1);
    
    
# Adds the new item to the cart.  Places this new item at the end of the
    # cart.
    
    
array_push($cart$new_item);
  
    return 
TRUE;
}

# A function to update items in the cart. Function arguments is an array
# of variables.       

function updateCart($post_args)
{
    global 
$cart;
    
    
# Iterate through the cart looking for the specific item to be deleted.
    # when this item is found we assign the cart number to the variable $i.
    # Once out of the loop we can then delete the cart number and moves the 
    # start pointer back to the beginning of the cart array and then return TRUE
    # once this is done.     

    
while(list($k,$v)=each($cart) )
    {
       if(
$post_args["ProductID"]==$v["ProductID"]) 
       {
           
$i=$k;
       }
    }
    unset(
$cart[$i]);
    
reset($cart);
    return 
TRUE;
}


# toc() is used to create the menu of categories on each page of the website.

function toc() 
{
    global 
$category# may not be safe!
    
    # Write a SQl query to retrieve the data from the database. Get the category
    # name and ID but order the data returned by the ID.

    
$sql "SELECT CategoryName FROM CategoryFamily WHERE ParentCategory = 'All' ".
         
"ORDER BY CategoryName";
           
    
# db_query is our own user-defined function that abstracts the database used
    # even though we alternate between this and specific function calls.  See 
    # database_odbc.php.  db_query returns an identifier to the results.
               
    
$result db_query($sql);
    
    
# If nothing returned in result, exit the function.
    
    
if( !$result ) return FALSE;
    else 
    {
        
        
# Start to create a HTML table to hold the product details.
    
        
print '<table width="100%" cellpadding="2" cellspacing="0" border="0">'.
                
'<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;<b>'.
                
'<font face="Tahoma,Verdana,Arial,Helvetica" size="2">'.
                
'[ <a href=/>HOME</a> ]</font></b></td></tr>';
              
        
# Contine building the HTML table by populating rows with data obtained
        # through calls to the result set using odbc_fetch_row.  Once the row is
        # obtained we can access the field contents through odbc_result.              
                    
        
while(odbc_fetch_row($result)) 
        {
            
$cat odbc_result($result,"CategoryName");
            
$id str_replace(" ","_",$cat);
            
            
# Print the HTML row.            

            
print('<tr><td><font face="Tahoma,Verdana,Arial,Helvetica" size="2">'.
                
'&nbsp;&nbsp;&#149;&nbsp;<a href="prodlist.php?category='.$id.'">');
            
            
# Enables the option of bold menu text.  Compares the category ID in the
            # URL with the category ID returned from the result set.  If they are equal
            # it makes the text bold, if not it prints regular text.
                
            
print(isset($category) && $id==$category '<b>'.$cat.'</b>' $cat);
            
            print 
'</font></a></td></tr>'# Finishes the row creation.
        
}
                
        print 
'<td>&nbsp;</td></table>';  # Closes the table.
        
return TRUE;
    }            
}

# If the addtocart button was pressed on any of the pages on which it exists, then
# process the addtocart function.
    
if(isset($HTTP_POST_VARS["addtocart"])) 
{
    
# If no cart exists, then create the cart
    
    
if(!isset($HTTP_SESSION_VARS["cart"])) { createCart(); }
    
    
# add the item to the cart.
    
addToCart($HTTP_POST_VARS);
}

# if the delete (X) button was pressed on the remove cart page, then process the
# updateCart function.

if(isset($HTTP_POST_VARS["remove_from_cart"])) 
    
updateCart($HTTP_POST_VARS);

?>