OSB enhancements to date
This commit is contained in:
@@ -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:
|
||||
|
Reference in New Issue
Block a user