OSB enhancements to date

This commit is contained in:
Deon George
2010-11-30 09:41:08 +11:00
parent 8715a2059b
commit ec6a542bc3
478 changed files with 23423 additions and 9309 deletions

View File

@@ -29,16 +29,6 @@
* @subpackage Module:Cart
*/
class cart extends OSB_module {
var $account_id;
var $session_id;
/**
* How many associated product levels to check for products to grant?
*
* @var int
*/
var $module='cart';
/**
* Admin View Cart Contents
*/
@@ -188,148 +178,49 @@ class cart extends OSB_module {
/**
* Get cart contents and return adodb rs
*/
public function get_contents() {
$db = &DB();
$sql = sprintf('SELECT DISTINCT c.* FROM %scart as c',AGILE_DB_PREFIX);
if (! empty($this->account_id)) {
$sql .= sprintf(' LEFT JOIN %ssession AS s ON (s.site_id=%s AND s.account_id=%s) WHERE (c.account_id=%s OR c.session_id=s.id) ',
AGILE_DB_PREFIX,DEFAULT_SITE,$this->account_id,$this->account_id);
} else {
$sql .= sprintf(' WHERE c.session_id=%s',$db->qstr(SESS));
$this->account_id = SESS_ACCOUNT;
}
$sql .= sprintf(' AND c.site_id=%s AND (c.cart_parent_id=0 OR c.cart_parent_id IS NULL) ORDER BY c.cart_type,c.date_orig',DEFAULT_SITE);
$result = $db->Execute($sql);
return $result;
}
/**
* Convert cart contents into invoice object & get smarty data
*/
public function put_contents_invoice(&$result,&$invoice) {
$db = &DB();
# get parent cart items
$i = 0;
$smart = array();
while (! $result->EOF) {
$id = $result->fields['id'];
$this->addInvoiceItem($id,$result,$invoice,$smart,$i);
switch ($result->fields['cart_type']) {
# AD HOC
case 3:
$smart[$i]['price'] = $invoice->invoice_item[$id]['total_amt'];
break;
# Domain
case 2:
$smart[$i]['price'] = $invoice->invoice_item[$id]['total_amt'];
$smart[$i]['tld_arr'] = $invoice->tld_arr[$id];
$smart[$i]['sku'] = sprintf('DOMAIN-%s',strtoupper($result->fields['host_type']));
break;
# Product
default:
@$smart[$i]['price'] = $invoice->price_arr[$id];
}
# Get the product attributes
$smart[$i]['attr'] = '';
if (! empty($invoice->invoice_item[$id]['product_attr_cart'])) {
@$attrib = explode("\r\n",$invoice->invoice_item[$id]['product_attr_cart']);
foreach($attrib as $attr) {
$attributei = explode('==',$attr);
if (! empty($attributei[0]) && !empty($attributei[1]))
$smart[$i]['attr'] .= sprintf('<span style="text-decoration: underline;">%s</span> : %s<br/>',$attributei[0],$attributei[1]);
}
}
# Get all children of this item
$ii = 0;
$resultassoc = $db->Execute(sqlSelect($db,'cart','*',sprintf('cart_parent_id=%s AND id !=%s',$result->fields['id'],$result->fields['id'])));
if ($resultassoc && $resultassoc->RecordCount()) {
while (!$resultassoc->EOF) {
$id = $resultassoc->fields['id'];
$this->addInvoiceItem($id,$resultassoc,$invoice,$smart,$i,$ii,true);
# Domain
if ($resultassoc->fields['cart_type'] == 2 ) {
$smart[$i]['assoc'][$ii]['price'] = $invoice->invoice_item[$id]['total_amt'];
$smart[$i]['assoc'][$ii]['tld_arr'] = $invoice->tld_arr[$id];
$smart[$i]['assoc'][$ii]['sku'] = sprintf('DOMAIN-%s',strtoupper($result->fields['host_type']));
}
$resultassoc->MoveNext();
}
}
$result->MoveNext();
$i++;
}
return $smart;
public function sGetContents() {
return $this->sql_GetRecords(array('where'=>array('session_id'=>SESS)));
}
/**
* View Cart Contents
*
* @uses invoice
*/
public function user_view($VAR) {
global $smarty;
# Get cart contents RS
$result = $this->get_contents();
if (! $result || $result->RecordCount() == 0) {
# Get cart contents
if (! count($results = $this->sGetContents())) {
$smarty->assign('result','0');
return false;
}
// init invoice object
include_once(PATH_MODULES.'invoice/invoice.inc.php');
$invoice = new invoice;
$invoice->initNew(0);
$invoice->taxable=false;
$invoice->discount=false;
$invoice->setRecordAttr('account_id',SESS_ACCOUNT);
$smart = $this->put_contents_invoice($result,$invoice);
$smarty->assign('results',count($invoice->invoice_item));
$smarty->assign('cart',$smart);
}
/**
* Run a cart item through the invoice class to retrieve totals, discounts, taxes, attributes, etc.
*
* @param int $id
* @param array $result
* @param object $invoice
* @param array $smart
* @param int $i
* @param int $assoc
*/
private function addInvoiceItem($id,&$result,&$invoice,&$smart,$i,$ii=false,$assoc=false) {
$invoice->addItem(
$id,
$result
);
if (! $assoc) {
@$smart[$i] = $result->fields;
@$smart[$i]['product'] = $invoice->product[$id];
@$smart[$i]['price_base'] = $invoice->invoice_item[$id]['price_base'];
@$smart[$i]['price_setup'] = $invoice->invoice_item[$id]['price_setup'];
} else {
@$smart[$i]['assoc'][$ii] = $result->fields;
@$smart[$i]['assoc'][$ii]['product'] = $invoice->product[$id];
@$smart[$i]['assoc'][$ii]['price_base'] = $invoice->invoice_item[$id]['price_base'];
@$smart[$i]['assoc'][$ii]['price_setup'] = $invoice->invoice_item[$id]['price_setup'];
foreach ($results as $result) {
$invoice->aaddItem(array(
'cart_id'=>$result['id'],
'domain_name'=>$result['domain_name'],
'domain_term'=>$result['domain_term'],
'domain_tld'=>$result['domain_tld'],
'domain_type'=>$result['domain_type'],
'item_type'=>0,
'product_id'=>$result['product_id'],
'quantity'=>$result['quantity'],
'recurr_schedule'=>$result['recurr_schedule'],
'product_attr'=>$result['product_attr'],
'product_attr_cart'=>$result['product_attr'],
'host_type'=>$result['host_type'],
'type'=>in_array($result['host_type'],array('register')) ? 'domain' : null
));
}
$smarty->assign('results',$invoice->sCountItems());
$smarty->assign('cart',$invoice->getItems());
}
/**
@@ -761,7 +652,6 @@ class cart extends OSB_module {
# Make sure this service is not in the cart
$sql = 'DELETE FROM ' . AGILE_DB_PREFIX . 'cart WHERE site_id='.$db->qstr(DEFAULT_SITE).' AND service_id='.$db->qstr($VAR['service_id']) ;
echo '<PRE>';print_r(array($sql=>$sql,'q'=>sqlDelete($db,'cart',array('service_id'=>$VAR['service_id']))));die();
$rs = $db->Execute($sql);
# Make sure this service has no outstanding invoices: