2009-08-03 04:10:16 +00:00
< ? php
/*
* osBilling - Open Billing Software
*
* This program is free software : you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation , either version 3 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program . If not , see < http :// www . gnu . org / licenses />.
*
* Originally authored by Deon George
*
* @ author Deon George < deonATleenooksDOTnet >
* @ copyright 2009 Deon George
* @ link http :// osb . leenooks . net
* @ license http :// www . gnu . org / licenses /
* @ package AgileBill
* @ subpackage Import
*/
DEFINE ( 'WHMCS_DIR' , '/var/www/whmcs/' );
include_once WHMCS_DIR . 'includes/functions.php' ;
/**
* WHMCS import module
*
* @ package AgileBill
* @ subpackage Import
*/
class import_plugin extends import {
private $encryption_key ;
public function __construct () {
# Configure the database name, host, and login:
$this -> host = 'localhost' ;
$this -> db = '' ;
$this -> user = '' ;
$this -> pass = '' ;
$this -> type = 'mysql' ;
# If importing CC details, enter the gateway plugin to use for recurring charges:
$this -> gateway = 'AUTHORIZE_NET' ;
# Do not change anything past this line:
$this -> name = 'WHMCS' ;
$this -> plugin = 'WHMCS' ;
$this -> select_limit = 50 ;
$this -> instructions = '
< b > Preliminary Instructions :</ b >< br />< br />
< ol >
< li > Open '. __FILE__ .' and edit the database settings , and the location to your WHMCS_DIR ...</ li >
< li > If you will be importing credit card details , paste the Checkout Plugin name from the checkout plugin list page to the " $this->gateway " value
that will be used to process all recurring charges ... this should be a gateway such as AUTHORIZE_NET or LINKPOINT .</ li >
< li > Make sure you have your TLD configurations set , before importing domains .</ li >
< li > HINT : Before importing products , ensure that you have configured your map file , this will set the SKU , and will save you changing this data if you need to undo and re - import .</ li >
</ ol > ' ;
array_push ( $this -> actions , array (
'name' => 'test' ,
'desc' => '<b>Step 1:</b> Test the database connection' ,
'depn' => false
));
array_push ( $this -> actions , array (
'name' => 'product_cat' ,
'desc' => '<b>Step 2:</b> Import the Product Categories' ,
'depn' => array ( 'test' )
));
array_push ( $this -> actions , array (
'name' => 'products' ,
'desc' => '<b>Step 3:</b> Import the Products' ,
'depn' => array ( 'test' , 'product_cat' )
));
array_push ( $this -> actions , array (
'name' => 'accounts' ,
'desc' => '<b>Step 4:</b> Import the Accounts' ,
'depn' => array ( 'test' )
));
array_push ( $this -> actions , array (
'name' => 'pre_services' ,
'desc' => '<b>Step 5:</b> Edit the Products (update the SKU details if necessary) then click Ready' ,
'depn' => array ( 'products' )
));
array_push ( $this -> actions , array (
'name' => 'services' ,
'desc' => '<b>Step 6:</b> Import the Services' ,
'depn' => array ( 'pre_services' , 'accounts' )
));
array_push ( $this -> actions , array (
'name' => 'pre_tld' ,
'desc' => '<b>Step 7:</b> Set up your TLD then click Ready' ,
'depn' => array ( 'test' )
));
array_push ( $this -> actions , array (
'name' => 'domains' ,
'desc' => '<b>Step 8:</b> Import the Domains' ,
'depn' => array ( 'pre_tld' , 'accounts' )
));
array_push ( $this -> actions , array (
'name' => 'invoices' ,
'desc' => '<b>Step 9:</b> Import the Invoices' ,
'depn' => array ( 'services' , 'accounts' )
));
array_push ( $this -> actions , array (
'name' => 'invoice_items' ,
'desc' => '<b>Step 10:</b> Import the Invoices Items' ,
'depn' => array ( 'invoices' )
));
2010-11-29 22:41:08 +00:00
array_push ( $this -> actions , array (
'name' => 'payments' ,
'desc' => '<b>Step 11:</b> Import the Payments' ,
'depn' => array ( 'invoices' )
));
2009-08-03 04:10:16 +00:00
}
protected function pre_services () {
$this -> pre_test ();
}
protected function pre_tld () {
$this -> pre_test ();
}
/**
* Product Categories
*/
protected function product_cat () {
global $VAR , $C_debug ;
# Connect to the remote DB
$dbr = & NewADOConnection ( $this -> type );
$dbr -> Connect ( $this -> host , $this -> user , $this -> pass , $this -> db );
# Determine the offset for the account
if ( empty ( $VAR [ 'offset' ]))
$VAR [ 'offset' ] = 0 ;
$offset = sprintf ( '%s,%s' , $VAR [ 'offset' ], $this -> select_limit );
$remote_table = 'tblproductgroups' ;
$ab_table = 'product_cat' ;
# Select
$sql = sprintf ( 'SELECT * FROM %s' , $remote_table );
$rs = $dbr -> SelectLimit ( $sql , $this -> select_limit , $offset );
if ( $rs === false ) {
$C_debug -> alert ( sprintf ( 'Query to the table "%s" failed!' , $remote_table ));
return false ;
}
if ( $rs -> RecordCount () == 0 ) {
$C_debug -> alert ( 'No more records to process!' );
printf ( " <script type='text/javascript' language=javascript>setTimeout('document.location= \ '?_page=import:import&plugin=%s \ '',1500);</script> " , $VAR [ 'plugin' ]);
return ;
}
$msg = sprintf ( 'Processing %s Records...<br/>' , $rs -> RecordCount ());
$map = array ();
$map [ 'name' ] = 'name' ;
$map [ 'position' ] = 'order' ;
# Loop through each remote item
while ( ! $rs -> EOF ) {
$msg .= sprintf ( '<br/>Processing : %s...' , $rs -> fields [ 'name' ]);
# Start a new transaction for the insert:
$db = & DB ();
$db -> StartTrans ();
$update = array ();
foreach ( $map as $a => $b )
$update [ $a ] = $rs -> fields [ $b ];
$update [ 'parent_id' ] = 0 ;
$update [ 'group_avail' ] = serialize ( array ( '0' => '0' ));
$update [ 'template' ] = 'Paged Listing' ;
$update [ 'notes' ] = 'Imported from WHMCS' ;
$update [ 'thumbnail' ] = '' ;
$update [ 'image' ] = '' ;
$update [ 'max' ] = '10' ;
if ( $rs -> fields [ 'hidden' ] == 'on' )
$update [ 'status' ] = 0 ;
else
$update [ 'status' ] = 1 ;
# Import the item
$db -> Execute ( sqlInsert ( $db , $ab_table , $update ));
$id = $db -> Execute ( sqlSelect ( $db , $ab_table , 'id' , $update , '' , '0,1' ));
# Insert the import record
$this -> import_transaction ( $this -> plugin , $VAR [ 'action' ], $ab_table , $id -> fields [ 'id' ], $remote_table , $rs -> fields [ 'id' ], $db );
# Complete the transaction
$db -> CompleteTrans ();
$rs -> MoveNext ();
}
$C_debug -> alert ( $msg );
printf ( " <script type='text/javascript' language=javascript>setTimeout('document.location= \ '?_page=core:blank&offset=%s&action=%s&plugin=%s&do[]=import:do_action \ '', 1200);</script> " ,
$VAR [ 'offset' ] + $this -> select_limit , $VAR [ 'action' ], $VAR [ 'plugin' ]);
}
/**
* Products
*/
protected function products () {
global $VAR , $C_debug ;
# Connect to the remote DB
$dbr = & NewADOConnection ( $this -> type );
$dbr -> Connect ( $this -> host , $this -> user , $this -> pass , $this -> db );
# Determine the offset for the account
if ( empty ( $VAR [ 'offset' ]))
$VAR [ 'offset' ] = 0 ;
$offset = sprintf ( '%s,%s' , $VAR [ 'offset' ], $this -> select_limit );
$remote_table = 'tblproducts' ;
$ab_table = 'product' ;
# Select
$sql = sprintf ( 'SELECT * FROM %s' , $remote_table );
$rs = $dbr -> SelectLimit ( $sql , $this -> select_limit , $offset );
if ( $rs === false ) {
$C_debug -> alert ( sprintf ( 'Query to the table "%s" failed!' , $remote_table ));
return false ;
}
if ( $rs -> RecordCount () == 0 ) {
$C_debug -> alert ( 'No more records to process!' );
printf ( " <script type='text/javascript' language=javascript>setTimeout('document.location= \ '?_page=import:import&plugin=%s \ '',1500);</script> " , $VAR [ 'plugin' ]);
return ;
}
# Load Categories Imported
$db = & DB ();
$imprs = $db -> Execute ( sqlSelect ( $db , 'import' , 'ab_id,remote_id' , sprintf ( 'plugin=::%s:: AND action=::%s::' , $this -> plugin , 'product_cat' )));
while ( ! $imprs -> EOF ) {
$cat [ $imprs -> fields [ 'remote_id' ]] = $imprs -> fields [ 'ab_id' ];
$imprs -> MoveNext ();
}
$msg = sprintf ( 'Processing %s Records...<br/>' , $rs -> RecordCount ());
# If there is a map file, open it
$pmap = $this -> read_map ();
# Table mapping
$map = array ();
$map [ 'price_setup' ] = 'msetupfee' ;
$map [ 'price_base' ] = 'monthly' ;
# Loop through each remote item
while ( ! $rs -> EOF ) {
$msg .= sprintf ( '<br/>Processing : %s...' , $rs -> fields [ 'name' ]);
# Start a new transaction for the insert:
$db = & DB ();
$db -> StartTrans ();
$update = array ();
foreach ( $map as $a => $b )
$update [ $a ] = $rs -> fields [ $b ];
$update [ 'date_last' ] = time ();
$update [ 'sku' ] = sprintf ( 'IMPORT-%s' , $rs -> fields [ 'id' ]);
$update [ 'taxable' ] = 1 ;
$update [ 'group_avail' ] = serialize ( array ( '0' => '0' ));
$update [ 'avail_category_id' ] = serialize ( array ( '0' => $cat [ $rs -> fields [ 'gid' ]]));
$update [ 'price_type' ] = 1 ;
$update [ 'price_recurr_default' ] = 1 ;
$update [ 'price_recurr_weekday' ] = 1 ;
$update [ 'price_recurr_week' ] = 1 ;
$update [ 'price_recurr_schedule' ] = 0 ;
$update [ 'price_recurr_type' ] = 1 ;
if ( $rs -> fields [ 'hidden' ] == 'on' )
$update [ 'active' ] = 0 ;
else
$update [ 'active' ] = 1 ;
# Pricing
$pricing = array ();
# * Weekly
$pricing [ 0 ][ 'show' ] = '0' ;
$pricing [ 0 ][ 0 ][ 'price_base' ] = '0' ;
$pricing [ 0 ][ 0 ][ 'price_setup' ] = '0' ;
# * Monthly
$pricing [ 1 ][ 'show' ] = $rs -> fields [ 'monthly' ] > 0 ? '1' : '0' ;
$pricing [ 1 ][ 0 ][ 'price_base' ] = $rs -> fields [ 'monthly' ];
$pricing [ 1 ][ 0 ][ 'price_setup' ] = $rs -> fields [ 'msetupfee' ];
# * Quarterly
$pricing [ 2 ][ 'show' ] = $rs -> fields [ 'quarterly' ] > 0 ? '1' : '0' ;
$pricing [ 2 ][ 0 ][ 'price_base' ] = $rs -> fields [ 'quarterly' ];
$pricing [ 2 ][ 0 ][ 'price_setup' ] = $rs -> fields [ 'qsetupfee' ];
# * 6 Months
$pricing [ 3 ][ 'show' ] = $rs -> fields [ 'semiannual' ] > 0 ? '1' : '0' ;
$pricing [ 3 ][ 0 ][ 'price_base' ] = $rs -> fields [ 'semiannual' ];
$pricing [ 3 ][ 0 ][ 'price_setup' ] = $rs -> fields [ 'ssetupfee' ];
# * 12 Months
$pricing [ 4 ][ 'show' ] = $rs -> fields [ 'annual' ] > 0 ? '1' : '0' ;
$pricing [ 4 ][ 0 ][ 'price_base' ] = $rs -> fields [ 'annual' ];
$pricing [ 4 ][ 0 ][ 'price_setup' ] = $rs -> fields [ 'asetupfee' ];
# * 24 Months
$pricing [ 5 ][ 'show' ] = $rs -> fields [ 'biennial' ] > 0 ? '1' : '0' ;
$pricing [ 5 ][ 0 ][ 'price_base' ] = $rs -> fields [ 'biennial' ];
$pricing [ 5 ][ 0 ][ 'price_setup' ] = $rs -> fields [ 'bsetupfee' ];
# * 36 Months
$pricing [ 6 ][ 'show' ] = '0' ;
$pricing [ 6 ][ 0 ][ 'price_base' ] = '0' ;
$pricing [ 6 ][ 0 ][ 'price_setup' ] = '0' ;
$update [ 'price_group' ] = serialize ( $pricing );
# Get the fixed items in the map table.
if ( isset ( $pmap [ $ab_table ][ $rs -> fields [ 'id' ] * 1 ]))
foreach ( $pmap [ $ab_table ][ $rs -> fields [ 'id' ] * 1 ] as $field => $value )
$update [ $field ] = $value ;
# Import the item
$db -> Execute ( sqlInsert ( $db , $ab_table , $update ));
$id = $db -> Execute ( sqlSelect ( $db , $ab_table , 'id' , $update , '' , '0,1' ));
# Insert the import record
$this -> import_transaction ( $this -> plugin , $VAR [ 'action' ], $ab_table , $id -> fields [ 'id' ], $remote_table , $rs -> fields [ 'id' ], $db );
# Add translations
$submap = array ();
$submap [ 'name' ] = 'name' ;
$submap [ 'description_short' ] = 'name' ;
$submap [ 'description_full' ] = 'description' ;
$update = array ();
foreach ( $submap as $a => $b )
$update [ $a ] = $rs -> fields [ $b ];
$update [ 'language_id' ] = DEFAULT_LANGUAGE ;
$update [ 'product_id' ] = $id -> fields [ 'id' ];
# @todo For some reason sqlInsert() generates an error, so we need to produce the SQL and run it normally
$update [ 'site_id' ] = DEFAULT_SITE ;
# @todo It seems translations are referenced by 'id', rather than 'product_id'
$update [ 'id' ] = $id -> fields [ 'id' ];
$sql = sprintf ( " INSERT INTO %s (%s) VALUES ('%s') " , AGILE_DB_PREFIX . 'product_translate' , implode ( ',' , array_keys ( $update )), implode ( " ',' " , $update ));
$pdrs = $db -> Execute ( $sql );
if ( ! $pdrs && $db -> _errorMsg ) {
printf ( " <pre>* %s \n %s</pre> " , $db -> _errorMsg , $sql );
}
$this -> import_transaction ( $this -> plugin , $VAR [ 'action' ], 'product_translate' , $update [ 'id' ], '' , $rs -> fields [ 'id' ], $db );
# Complete the transaction
$db -> CompleteTrans ();
$rs -> MoveNext ();
}
$C_debug -> alert ( $msg );
printf ( " <script type='text/javascript' language=javascript>setTimeout('document.location= \ '?_page=core:blank&offset=%s&action=%s&plugin=%s&do[]=import:do_action \ '', 1200);</script> " ,
$VAR [ 'offset' ] + $this -> select_limit , $VAR [ 'action' ], $VAR [ 'plugin' ]);
}
/**
* Accounts
*/
protected function accounts () {
global $VAR , $C_debug ;
# Files to your WHMCS installation (required to decrypt encrypted fields)
include_once WHMCS_DIR . 'dbconnect.php' ;
# Connect to the remote DB
$dbr = & NewADOConnection ( $this -> type );
$dbr -> Connect ( $this -> host , $this -> user , $this -> pass , $this -> db );
# Determine the offset for the account
if ( empty ( $VAR [ 'offset' ]))
$VAR [ 'offset' ] = 0 ;
$offset = sprintf ( '%s,%s' , $VAR [ 'offset' ], $this -> select_limit );
$remote_table = 'tblclients' ;
$ab_table = 'account' ;
# Select
$sql = sprintf ( 'SELECT * FROM %s' , $remote_table );
$rs = $dbr -> SelectLimit ( $sql , $this -> select_limit , $offset );
if ( $rs === false ) {
$C_debug -> alert ( sprintf ( 'Query to the table "%s" failed!' , $remote_table ));
return false ;
}
if ( $rs -> RecordCount () == 0 ) {
$C_debug -> alert ( 'No more records to process!' );
printf ( " <script type='text/javascript' language=javascript>setTimeout('document.location= \ '?_page=import:import&plugin=%s \ '',1500);</script> " , $VAR [ 'plugin' ]);
return ;
}
$msg = sprintf ( 'Processing %s Records...<br/>' , $rs -> RecordCount ());
$map = array ();
$map [ 'username' ] = 'email' ;
#$map['email'] = 'email';
$map [ 'first_name' ] = 'firstname' ;
$map [ 'last_name' ] = 'lastname' ;
$map [ 'company' ] = 'companyname' ;
$map [ 'address1' ] = 'address1' ;
$map [ 'address2' ] = 'address2' ;
$map [ 'city' ] = 'city' ;
$map [ 'state' ] = 'state' ;
$map [ 'zip' ] = 'postcode' ;
# Loop through each remote item
while ( ! $rs -> EOF ) {
$msg .= sprintf ( '<br/>Processing : %s...' , $rs -> fields [ 'email' ]);
# Start a new transaction for the insert:
$db = & DB ();
$db -> StartTrans ();
$update = array ();
foreach ( $map as $a => $b )
$update [ $a ] = $rs -> fields [ $b ];
2010-11-29 22:41:08 +00:00
$update [ 'date_orig' ] = time ();
2009-08-03 04:10:16 +00:00
$update [ 'date_last' ] = time ();
$update [ 'language_id' ] = DEFAULT_LANGUAGE ;
# @todo Work out currency based on country address
$update [ 'country_id' ] = '36' ;
$update [ 'currency_id' ] = '6' ;
$update [ 'theme_id' ] = DEFAULT_THEME ;
$update [ 'email_type' ] = '1' ;
$update [ 'invoice_delivery' ] = '1' ;
$update [ 'invoice_show_itemized' ] = '1' ;
$update [ 'invoice_grace' ] = '0' ;
$update [ 'invoice_advance_gen' ] = '0' ;
if ( $rs -> fields [ 'status' ] == 'Active' )
$update [ 'status' ] = 1 ;
else
$update [ 'status' ] = 0 ;
$update [ 'password' ] = md5 ( decrypt ( $rs -> fields [ 'password' ], $encryption_key ));
# Import the item
$db -> Execute ( sqlInsert ( $db , $ab_table , $update ));
$id = $db -> Execute ( sqlSelect ( $db , $ab_table , 'id' , $update , '' , '0,1' ));
# Insert the import record
$this -> import_transaction ( $this -> plugin , $VAR [ 'action' ], $ab_table , $id -> fields [ 'id' ], $remote_table , $rs -> fields [ 'id' ], $db );
# Complete the transaction
$db -> CompleteTrans ();
$rs -> MoveNext ();
}
$C_debug -> alert ( $msg );
printf ( " <script type='text/javascript' language=javascript>setTimeout('document.location= \ '?_page=core:blank&offset=%s&action=%s&plugin=%s&do[]=import:do_action \ '', 1200);</script> " ,
$VAR [ 'offset' ] + $this -> select_limit , $VAR [ 'action' ], $VAR [ 'plugin' ]);
}
/**
* Services
*/
protected function services () {
global $VAR , $C_debug ;
# Files to your WHMCS installation (required to decrypt encrypted fields)
include_once WHMCS_DIR . 'dbconnect.php' ;
# Connect to the remote DB
$dbr = & NewADOConnection ( $this -> type );
$dbr -> Connect ( $this -> host , $this -> user , $this -> pass , $this -> db );
# Determine the offset for the account
if ( empty ( $VAR [ 'offset' ]))
$VAR [ 'offset' ] = 0 ;
$offset = sprintf ( '%s,%s' , $VAR [ 'offset' ], $this -> select_limit );
$remote_table = 'tblhosting' ;
$ab_table = 'service' ;
# Select
$sql = '
SELECT tblhosting . id as id , userid , packageid , domainstatus , domain , amount , regdate , lastupdate , billingcycle , username , password , nextinvoicedate , tblproducts . name as product
FROM tblhosting , tblproducts where tblhosting . packageid = tblproducts . id ' ;
$rs = $dbr -> SelectLimit ( $sql , $this -> select_limit , $offset );
if ( $rs === false ) {
$C_debug -> alert ( sprintf ( 'Query to the table "%s" failed!' , $remote_table ));
return false ;
}
if ( $rs -> RecordCount () == 0 ) {
$C_debug -> alert ( 'No more records to process!' );
printf ( " <script type='text/javascript' language=javascript>setTimeout('document.location= \ '?_page=import:import&plugin=%s \ '',1500);</script> " , $VAR [ 'plugin' ]);
return ;
}
$db = & DB ();
# Load Products Imported
$imprs = $db -> Execute ( sqlSelect ( $db , 'import' , 'ab_id,remote_id' , sprintf ( 'plugin=::%s:: AND action=::%s:: AND remote_table=::%s::' , $this -> plugin , 'products' , 'tblproducts' )));
while ( ! $imprs -> EOF ) {
$prod [ $imprs -> fields [ 'remote_id' ]] = $imprs -> fields [ 'ab_id' ];
$imprs -> MoveNext ();
}
# Load Accounts Imported
$imprs = $db -> Execute ( sqlSelect ( $db , 'import' , 'ab_id,remote_id' , sprintf ( 'plugin=::%s:: AND action=::%s:: AND remote_table=::%s::' , $this -> plugin , 'accounts' , 'tblclients' )));
while ( ! $imprs -> EOF ) {
$account [ $imprs -> fields [ 'remote_id' ]] = $imprs -> fields [ 'ab_id' ];
$imprs -> MoveNext ();
}
$msg = sprintf ( 'Processing %s Records...<br/>' , $rs -> RecordCount ());
$map = array ();
# @todo This amount includes tax, and needs to exclude it.
$map [ 'price' ] = 'amount' ;
# Loop through each remote item
while ( ! $rs -> EOF ) {
$msg .= sprintf ( '<br/>Processing : %s...' , $rs -> fields [ 'id' ]);
# Start a new transaction for the insert:
$db = & DB ();
$db -> StartTrans ();
$update = array ();
foreach ( $map as $a => $b )
$update [ $a ] = $rs -> fields [ $b ];
# @todo This amount includes tax, and needs to work out tax.
$update [ 'price' ] = sprintf ( '%3.2f' , $update [ 'price' ] / 11 * 10 );
if ( preg_match ( '/^ADSL/' , $rs -> fields [ 'product' ])) {
$update [ 'prod_plugin_name' ] = 'ADSL' ;
$update [ 'type' ] = 'product' ;
$sql = sprintf ( " SELECT fieldname,value FROM tblcustomfieldsvalues,tblcustomfields WHERE tblcustomfieldsvalues.fieldid=tblcustomfields.id AND tblcustomfieldsvalues.relid=%s AND tblcustomfields.relid=%s AND type='product' " , $rs -> fields [ 'id' ], $rs -> fields [ 'packageid' ]);
$plugin = array ();
$update [ 'prod_attr' ] = '' ;
# Connect to the remote DB
$dbr = NewADOConnection ( $this -> type );
$dbr -> Connect ( $this -> host , $this -> user , $this -> pass , $this -> db );
$adsl = $dbr -> Execute ( $sql );
if ( $adsl && $adsl -> RecordCount ()) {
while ( ! $adsl -> EOF ) {
if ( trim ( $adsl -> fields [ 'value' ])) {
$plugin [ $adsl -> fields [ 'fieldname' ]] = $adsl -> fields [ 'value' ];
$update [ 'prod_attr' ] .= sprintf ( " %s==%s \r \n " , $adsl -> fields [ 'fieldname' ], $adsl -> fields [ 'value' ]);
$update [ 'host_username' ] = $rs -> fields [ 'username' ];
$update [ 'host_password' ] = decrypt ( $rs -> fields [ 'password' ], $encryption_key );
}
$adsl -> MoveNext ();
}
$update [ 'prod_plugin_data' ] = serialize ( $plugin );
}
} elseif ( $rs -> fields [ 'domain' ]) {
$update [ 'type' ] = 'host' ;
$update [ 'domain_name' ] = $rs -> fields [ 'domain' ];
$update [ 'host_username' ] = $rs -> fields [ 'username' ];
$update [ 'host_password' ] = decrypt ( $rs -> fields [ 'password' ], $encryption_key );
}
# Strip the leading zeros
$rs -> fields [ 'packageid' ] *= 1 ;
$rs -> fields [ 'userid' ] *= 1 ;
$update [ 'product_id' ] = $prod [ $rs -> fields [ 'packageid' ]];
$update [ 'account_id' ] = $account [ $rs -> fields [ 'userid' ]];
$db = & DB ();
$sku = $db -> Execute ( sqlSelect ( $db , 'product' , 'sku' , sprintf ( 'id=%s' , $update [ 'product_id' ]), '' , '0,1' ));
$update [ 'sku' ] = $sku -> fields [ 'sku' ];
if ( $rs -> fields [ 'domainstatus' ] == 'Active' )
$update [ 'active' ] = 1 ;
else
$update [ 'active' ] = 0 ;
$update [ 'taxable' ] = 1 ;
$update [ 'recur_schedule_change' ] = 0 ;
$update [ 'suspend_billing' ] = 0 ;
$update [ 'recur_cancel' ] = 0 ;
$update [ 'recur_modify' ] = 0 ;
switch ( $rs -> fields [ 'billingcycle' ]) {
case 'Annually' :
$update [ 'recur_schedule' ] = 4 ; //monthly
$update [ 'recur_type' ] = 0 ;
break ;
case 'Monthly' :
$update [ 'recur_schedule' ] = 1 ; //monthly
$update [ 'recur_type' ] = 1 ;
$update [ 'recur_type' ] = 1 ;
$update [ 'recur_weekday' ] = 1 ;
break ;
case 'Quarterly' :
$update [ 'recur_schedule' ] = 2 ; //quarterly
$update [ 'recur_type' ] = 1 ;
$update [ 'recur_weekday' ] = 1 ;
break ;
case 'Biennially' :
$update [ 'recur_schedule' ] = 5 ; //two-years
$update [ 'recur_type' ] = 0 ;
break ;
default :
$update [ 'recur_schedule' ] = 0 ; //free?
$update [ 'recur_type' ] = 0 ;
};
$update [ 'date_next_invoice' ] = strtotime ( $rs -> fields [ 'nextinvoicedate' ]);
$update [ 'date_orig' ] = strtotime ( $rs -> fields [ 'regdate' ]);
$update [ 'date_last' ] = strtotime ( $rs -> fields [ 'lastupdate' ]);
# Import the item
$db -> Execute ( sqlInsert ( $db , $ab_table , $update ));
$id = $db -> Execute ( sqlSelect ( $db , $ab_table , 'id' , $update , '' , '0,1' ));
# Insert the import record
$this -> import_transaction ( $this -> plugin , $VAR [ 'action' ], $ab_table , $id -> fields [ 'id' ], $remote_table , $rs -> fields [ 'id' ], $db );
# Complete the transaction
$db -> CompleteTrans ();
$rs -> MoveNext ();
}
$C_debug -> alert ( $msg );
printf ( " <script type='text/javascript' language=javascript>setTimeout('document.location= \ '?_page=core:blank&offset=%s&action=%s&plugin=%s&do[]=import:do_action \ '', 1200);</script> " ,
$VAR [ 'offset' ] + $this -> select_limit , $VAR [ 'action' ], $VAR [ 'plugin' ]);
}
/**
* Domains
*/
protected function domains () {
global $VAR , $C_debug ;
# Files to your WHMCS installation (required to decrypt encrypted fields)
include_once WHMCS_DIR . 'dbconnect.php' ;
# Connect to the remote DB
$dbr = & NewADOConnection ( $this -> type );
$dbr -> Connect ( $this -> host , $this -> user , $this -> pass , $this -> db );
# Determine the offset for the account
if ( empty ( $VAR [ 'offset' ]))
$VAR [ 'offset' ] = 0 ;
$offset = sprintf ( '%s,%s' , $VAR [ 'offset' ], $this -> select_limit );
$remote_table = 'tbldomains' ;
$ab_table = 'service' ;
# Select
$sql = sprintf ( 'SELECT * FROM %s' , $remote_table );
$rs = $dbr -> SelectLimit ( $sql , $this -> select_limit , $offset );
if ( $rs === false ) {
$C_debug -> alert ( sprintf ( 'Query to the table "%s" failed!' , $remote_table ));
return false ;
}
if ( $rs -> RecordCount () == 0 ) {
$C_debug -> alert ( 'No more records to process!' );
printf ( " <script type='text/javascript' language=javascript>setTimeout('document.location= \ '?_page=import:import&plugin=%s \ '',1500);</script> " , $VAR [ 'plugin' ]);
return ;
}
$db = & DB ();
# Load Accounts Imported
$imprs = $db -> Execute ( sqlSelect ( $db , 'import' , 'ab_id,remote_id' , sprintf ( 'plugin=::%s:: AND action=::%s:: AND remote_table=::%s::' , $this -> plugin , 'accounts' , 'tblclients' )));
while ( ! $imprs -> EOF ) {
$account [ $imprs -> fields [ 'remote_id' ]] = $imprs -> fields [ 'ab_id' ];
$imprs -> MoveNext ();
}
$msg = sprintf ( 'Processing %s Records...<br/>' , $rs -> RecordCount ());
$map = array ();
$map [ 'domain_term' ] = 'registrationperiod' ;
# Loop through each remote item
while ( ! $rs -> EOF ) {
$msg .= sprintf ( '<br/>Processing : %s...' , $rs -> fields [ 'domain' ]);
# Start a new transaction for the insert:
$db = & DB ();
$db -> StartTrans ();
$update = array ();
foreach ( $map as $a => $b )
$update [ $a ] = $rs -> fields [ $b ];
# @todo Determine price from register details
$update [ 'price' ] = 45 * $update [ 'domain_term' ];
$update [ 'type' ] = 'domain' ;
$update [ 'sku' ] = 'DOMAIN-RENEW' ;
# Strip the leading zeros
$rs -> fields [ 'userid' ] *= 1 ;
$update [ 'account_id' ] = $account [ $rs -> fields [ 'userid' ]];
if ( $rs -> fields [ 'status' ] == 'Active' )
$update [ 'active' ] = 1 ;
else
$update [ 'active' ] = 0 ;
$update [ 'price_type' ] = 0 ;
$update [ 'taxable' ] = 1 ;
$update [ 'domain_date_expire' ] = strtotime ( $rs -> fields [ 'expirydate' ]);
switch ( $rs -> fields [ 'type' ]) {
case 'Register' :
default :
$update [ 'domain_type' ] = 'register' ;
break ;
}
$update [ 'date_next_invoice' ] = strtotime ( $rs -> fields [ 'nextinvoicedate' ]);
$update [ 'date_orig' ] = strtotime ( $rs -> fields [ 'registrationdate' ]);
$update [ 'date_last' ] = time ();
# Work out TLD and REGISTER PLUGIN
$arr = explode ( '.' , strtolower ( $rs -> fields [ 'domain' ]));
$update [ 'domain_tld' ] = '' ;
$update [ 'domain_name' ] = $arr [ 0 ];
for ( $i = 1 ; $i < count ( $arr ); $i ++ )
$update [ 'domain_tld' ] .= sprintf ( '.%s' , $arr [ $i ]);
# Chop off the initial .
$update [ 'domain_tld' ] = preg_replace ( '/^\./' , '' , $update [ 'domain_tld' ]);
# Determine the tld_id
$tldrs = $db -> Execute ( sqlSelect ( $db , 'host_tld' , 'id,registrar_plugin_id' , sprintf ( 'name=::%s::' , $update [ 'domain_tld' ])));
$update [ 'domain_host_tld_id' ] = $tldrs -> fields [ 'id' ];
$update [ 'domain_host_registrar_id' ] = $tldrs -> fields [ 'registrar_plugin_id' ];
# Import the item
$db -> Execute ( sqlInsert ( $db , $ab_table , $update ));
$id = $db -> Execute ( sqlSelect ( $db , $ab_table , 'id' , $update , '' , '0,1' ));
# Insert the import record
$this -> import_transaction ( $this -> plugin , $VAR [ 'action' ], $ab_table , $id -> fields [ 'id' ], $remote_table , $rs -> fields [ 'id' ], $db );
# Complete the transaction
$db -> CompleteTrans ();
$rs -> MoveNext ();
}
$C_debug -> alert ( $msg );
printf ( " <script type='text/javascript' language=javascript>setTimeout('document.location= \ '?_page=core:blank&offset=%s&action=%s&plugin=%s&do[]=import:do_action \ '', 1200);</script> " ,
$VAR [ 'offset' ] + $this -> select_limit , $VAR [ 'action' ], $VAR [ 'plugin' ]);
}
/**
* Invoices
*/
protected function invoices () {
global $VAR , $C_debug ;
# Connect to the remote DB
$dbr = & NewADOConnection ( $this -> type );
$dbr -> Connect ( $this -> host , $this -> user , $this -> pass , $this -> db );
# Determine the offset for the account
if ( empty ( $VAR [ 'offset' ]))
$VAR [ 'offset' ] = 0 ;
$offset = sprintf ( '%s,%s' , $VAR [ 'offset' ], $this -> select_limit );
$remote_table = 'tblinvoices' ;
$ab_table = 'invoice' ;
# Select
$sql = sprintf ( 'SELECT * FROM %s' , $remote_table );
$rs = $dbr -> SelectLimit ( $sql , $this -> select_limit , $offset );
if ( $rs === false ) {
$C_debug -> alert ( sprintf ( 'Query to the table "%s" failed!' , $remote_table ));
return false ;
}
if ( $rs -> RecordCount () == 0 ) {
$C_debug -> alert ( 'No more records to process!' );
printf ( " <script type='text/javascript' language=javascript>setTimeout('document.location= \ '?_page=import:import&plugin=%s \ '',1500);</script> " , $VAR [ 'plugin' ]);
return ;
}
$db = & DB ();
# Load Accounts Imported
$imprs = $db -> Execute ( sqlSelect ( $db , 'import' , 'ab_id,remote_id' , sprintf ( 'plugin=::%s:: AND action=::%s:: AND remote_table=::%s::' , $this -> plugin , 'accounts' , 'tblclients' )));
while ( ! $imprs -> EOF ) {
$account [ $imprs -> fields [ 'remote_id' ]] = $imprs -> fields [ 'ab_id' ];
$imprs -> MoveNext ();
}
$msg = sprintf ( 'Processing %s Records...<br/>' , $rs -> RecordCount ());
$map = array ();
# Our invoice ID should be preserved
$map [ 'tax_amt' ] = 'tax' ;
$map [ 'total_amt' ] = 'total' ;
# Loop through each remote item
while ( ! $rs -> EOF ) {
$msg .= sprintf ( '<br/>Processing : %s...' , $rs -> fields [ 'id' ]);
# Start a new transaction for the insert:
$db = & DB ();
$db -> StartTrans ();
$update = array ();
foreach ( $map as $a => $b )
$update [ $a ] = $rs -> fields [ $b ];
# Strip the leading zeros
$rs -> fields [ 'userid' ] *= 1 ;
$update [ 'account_id' ] = $account [ $rs -> fields [ 'userid' ]];
# @todo Might be nice to automatically work out the currency
$update [ 'billed_currency_id' ] = 6 ;
$update [ 'actual_billed_currency_id' ] = 6 ;
$update [ 'type' ] = 1 ;
$update [ 'date_orig' ] = strtotime ( $rs -> fields [ 'date' ]);
$update [ 'due_date' ] = strtotime ( $rs -> fields [ 'duedate' ]);
$update [ 'refund_status' ] = 0 ;
$update [ 'total_amt' ] += $rs -> fields [ 'credit' ];
switch ( $rs -> fields [ 'status' ]) {
case 'Unpaid' :
$update [ 'billed_amt' ] = 0 ;
$update [ 'process_status' ] = 1 ;
$update [ 'billing_status' ] = 0 ;
$update [ 'status' ] = 1 ;
break ;
case 'Paid' :
$update [ 'billed_amt' ] = $rs -> fields [ 'total' ] + $rs -> fields [ 'credit' ];
$update [ 'process_status' ] = 1 ;
$update [ 'billing_status' ] = 1 ;
$update [ 'status' ] = 1 ;
break ;
case 'Cancelled' :
$update [ 'billed_amt' ] = 0 ;
$update [ 'process_status' ] = 0 ;
$update [ 'billing_status' ] = 0 ;
$update [ 'status' ] = 0 ;
break ;
}
# Import the item
$db -> Execute ( sqlInsert ( $db , $ab_table , $update , $rs -> fields [ 'id' ]));
# Insert the import record
$this -> import_transaction ( $this -> plugin , $VAR [ 'action' ], $ab_table , $rs -> fields [ 'id' ], $remote_table , $rs -> fields [ 'id' ], $db );
# Complete the transaction
$db -> CompleteTrans ();
$rs -> MoveNext ();
}
$C_debug -> alert ( $msg );
printf ( " <script type='text/javascript' language=javascript>setTimeout('document.location= \ '?_page=core:blank&offset=%s&action=%s&plugin=%s&do[]=import:do_action \ '', 1200);</script> " ,
$VAR [ 'offset' ] + $this -> select_limit , $VAR [ 'action' ], $VAR [ 'plugin' ]);
}
/**
* Invoice Items
*/
protected function invoice_items () {
global $VAR , $C_debug ;
# Connect to the remote DB
$dbr = & NewADOConnection ( $this -> type );
$dbr -> Connect ( $this -> host , $this -> user , $this -> pass , $this -> db );
# Determine the offset for the account
if ( empty ( $VAR [ 'offset' ]))
$VAR [ 'offset' ] = 0 ;
$offset = sprintf ( '%s,%s' , $VAR [ 'offset' ], $this -> select_limit );
$remote_table = 'tblinvoiceitems' ;
$ab_table = 'invoice_item' ;
# Select
$sql = sprintf ( 'SELECT * FROM %s' , $remote_table );
$rs = $dbr -> SelectLimit ( $sql , $this -> select_limit , $offset );
if ( $rs === false ) {
$C_debug -> alert ( sprintf ( 'Query to the table "%s" failed!' , $remote_table ));
return false ;
}
if ( $rs -> RecordCount () == 0 ) {
$C_debug -> alert ( 'No more records to process!' );
printf ( " <script type='text/javascript' language=javascript>setTimeout('document.location= \ '?_page=import:import&plugin=%s \ '',1500);</script> " , $VAR [ 'plugin' ]);
return ;
}
$db = & DB ();
# Load Products Imported
$imprs = $db -> Execute ( sqlSelect ( $db , 'import' , 'ab_id,remote_id' , sprintf ( 'plugin=::%s:: AND action=::%s:: AND remote_table=::%s::' , $this -> plugin , 'services' , 'tblhosting' )));
while ( ! $imprs -> EOF ) {
$service [ $imprs -> fields [ 'remote_id' ]] = $imprs -> fields [ 'ab_id' ];
$imprs -> MoveNext ();
}
# Load Accounts Imported
$imprs = $db -> Execute ( sqlSelect ( $db , 'import' , 'ab_id,remote_id' , sprintf ( 'plugin=::%s:: AND action=::%s:: AND remote_table=::%s::' , $this -> plugin , 'accounts' , 'tblclients' )));
while ( ! $imprs -> EOF ) {
$account [ $imprs -> fields [ 'remote_id' ]] = $imprs -> fields [ 'ab_id' ];
$imprs -> MoveNext ();
}
# Load Domains Imported
$imprs = $db -> Execute ( sqlSelect ( $db , 'import' , 'ab_id,remote_id' , sprintf ( 'plugin=::%s:: AND action=::%s:: AND remote_table=::%s::' , $this -> plugin , 'domains' , 'tbldomains' )));
while ( ! $imprs -> EOF ) {
$domain [ $imprs -> fields [ 'remote_id' ]] = $imprs -> fields [ 'ab_id' ];
$imprs -> MoveNext ();
}
# Load Products Imported
$imprs = $db -> Execute ( sqlSelect ( $db , 'import' , 'ab_id,remote_id' , sprintf ( 'plugin=::%s:: AND action=::%s:: AND remote_table=::%s::' , $this -> plugin , 'products' , 'tblproducts' )));
while ( ! $imprs -> EOF ) {
$prod [ $imprs -> fields [ 'remote_id' ]] = $imprs -> fields [ 'ab_id' ];
$imprs -> MoveNext ();
}
$msg = sprintf ( 'Processing %s Records...<br/>' , $rs -> RecordCount ());
$map = array ();
# Our invoice ID should be preserved
$map [ 'invoice_id' ] = 'invoiceid' ;
$map [ 'product_name' ] = 'description' ;
# Loop through each remote item
while ( ! $rs -> EOF ) {
$msg .= sprintf ( '<br/>Processing : %s...' , $rs -> fields [ 'id' ]);
# Start a new transaction for the insert:
$db = & DB ();
$db -> StartTrans ();
$update = array ();
foreach ( $map as $a => $b )
$update [ $a ] = $rs -> fields [ $b ];
# Strip the leading zeros
$rs -> fields [ 'relid' ] *= 1 ;
$rs -> fields [ 'userid' ] *= 1 ;
$update [ 'account_id' ] = $account [ $rs -> fields [ 'userid' ]];
$update [ 'item_type' ] = 3 ;
$update [ 'price_type' ] = 0 ;
$product = '' ;
switch ( $rs -> fields [ 'type' ]) {
case 'Addon' :
break ;
case 'Domain' :
if ( isset ( $domain [ $rs -> fields [ 'relid' ]]))
$update [ 'service_id' ] = $domain [ $rs -> fields [ 'relid' ]];
$update [ 'sku' ] = 'DOMAIN-REGISTER' ;
break ;
default :
if ( isset ( $service [ $rs -> fields [ 'relid' ]]))
$update [ 'service_id' ] = $service [ $rs -> fields [ 'relid' ]];
# Get the Product
$dbr = & NewADOConnection ( $this -> type );
$dbr -> Connect ( $this -> host , $this -> user , $this -> pass , $this -> db );
$tldrs = $dbr -> Execute ( sprintf ( 'SELECT packageid FROM tblhosting WHERE id=%s' , $rs -> fields [ 'relid' ]));
if ( isset ( $tldrs -> fields [ 'packageid' ])) {
$tldrs -> fields [ 'packageid' ] *= 1 ;
$update [ 'product_id' ] = $prod [ $tldrs -> fields [ 'packageid' ]];
$db = & DB ();
$sku = $db -> Execute ( sqlSelect ( $db , 'product' , 'sku' , sprintf ( 'id=%s' , $update [ 'product_id' ]), '' , '0,1' ));
$update [ 'sku' ] = $sku -> fields [ 'sku' ];
$prod_name = $dbr -> Execute ( sprintf ( 'SELECT name,paytype from tblproducts WHERE id=%s' , $tldrs -> fields [ 'packageid' ]));
$product = $prod_name -> fields [ 'name' ];
if ( $prod_name -> fields [ 'paytype' ] == 'recurring' ) {
$update [ 'price_type' ] = 1 ;
$update [ 'item_type' ] = 0 ;
}
}
}
# Detect the dates and domain from the product_name
if ( $update [ 'product_name' ]) {
# Chop of the dates.
$reg = '/\s+\(([0-9]+\/[0-9]+\/[0-9]+)\s+-\s+([0-9]+\/[0-9]+\/[0-9]+)\)$/' ;
$matches = array ();
if ( preg_match ( $reg , $update [ 'product_name' ], $matches )) {
$update [ 'date_start' ] = strtotime ( str_replace ( '/' , '-' , $matches [ 1 ]));
$update [ 'date_stop' ] = strtotime ( str_replace ( '/' , '-' , $matches [ 2 ]));
$update [ 'product_name' ] = str_replace ( $matches [ 0 ], '' , $update [ 'product_name' ]);
# Find the domain portion
if ( isset ( $product ) && $product ) {
$product_reg = str_replace ( '/' , '\/' , $product );
if ( preg_match ( " /^ { $product_reg } \ s+/ " , $update [ 'product_name' ])) {
$aaa = preg_replace ( " /^ { $product_reg } \ s+- \ s+/ " , '' , $update [ 'product_name' ]);
if ( $update [ 'product_name' ] != $product ) {
$update [ 'domain_name' ] = $aaa ;
$update [ 'product_name' ] = preg_replace ( " / \ s+- \ s+ { $aaa } / " , '' , $update [ 'product_name' ]);
}
}
}
}
}
$update [ 'quantity' ] = 1 ;
$update [ 'tax_amt' ] = sprintf ( '%3.2f' , $rs -> fields [ 'amount' ] / 11 );
$update [ 'total_amt' ] = $rs -> fields [ 'amount' ] - $update [ 'tax_amt' ];
$update [ 'price_base' ] = $rs -> fields [ 'amount' ] - $update [ 'tax_amt' ];
# Import the item
$db = & DB ();
$id = sqlGenID ( $db , $ab_table );
$result = $db -> Execute ( sqlInsert ( $db , $ab_table , $update , $id ));
# Insert the import record
$this -> import_transaction ( $this -> plugin , $VAR [ 'action' ], $ab_table , $id , $remote_table , $rs -> fields [ 'id' ], $db );
# Complete the transaction
$db -> CompleteTrans ();
$rs -> MoveNext ();
}
$C_debug -> alert ( $msg );
printf ( " <script type='text/javascript' language=javascript>setTimeout('document.location= \ '?_page=core:blank&offset=%s&action=%s&plugin=%s&do[]=import:do_action \ '', 1200);</script> " ,
$VAR [ 'offset' ] + $this -> select_limit , $VAR [ 'action' ], $VAR [ 'plugin' ]);
}
2010-11-29 22:41:08 +00:00
/**
* Payments
*/
protected function payments () {
global $VAR , $C_debug ;
# Connect to the remote DB
$dbr = & NewADOConnection ( $this -> type );
$dbr -> Connect ( $this -> host , $this -> user , $this -> pass , $this -> db );
# Determine the offset for the account
if ( empty ( $VAR [ 'offset' ]))
$VAR [ 'offset' ] = 0 ;
$offset = sprintf ( '%s,%s' , $VAR [ 'offset' ], $this -> select_limit );
$remote_table = 'tblaccounts' ;
$ab_table = 'payment' ;
# Select
$sql = sprintf ( 'SELECT * FROM %s' , $remote_table );
$rs = $dbr -> SelectLimit ( $sql , $this -> select_limit , $offset );
if ( $rs === false ) {
$C_debug -> alert ( sprintf ( 'Query to the table "%s" failed!' , $remote_table ));
return false ;
}
if ( $rs -> RecordCount () == 0 ) {
$C_debug -> alert ( 'No more records to process!' );
printf ( " <script type='text/javascript' language=javascript>setTimeout('document.location= \ '?_page=import:import&plugin=%s \ '',1500);</script> " , $VAR [ 'plugin' ]);
return ;
}
# Load Checkout Plugins
$db = & DB ();
$imprs = $db -> Execute ( sqlSelect ( $db , 'checkout' , 'id,checkout_plugin' , '' ));
while ( ! $imprs -> EOF ) {
$co [ $imprs -> fields [ 'checkout_plugin' ]] = $imprs -> fields [ 'id' ];
$imprs -> MoveNext ();
}
# Load Accounts Imported
$imprs = $db -> Execute ( sqlSelect ( $db , 'import' , 'ab_id,remote_id' , sprintf ( 'plugin=::%s:: AND action=::%s:: AND remote_table=::%s::' , $this -> plugin , 'accounts' , 'tblclients' )));
while ( ! $imprs -> EOF ) {
$account [ $imprs -> fields [ 'remote_id' ]] = $imprs -> fields [ 'ab_id' ];
$imprs -> MoveNext ();
}
$msg = sprintf ( 'Processing %s Records...<br/>' , $rs -> RecordCount ());
# If there is a map file, open it
$pmap = $this -> read_map ();
# Table mapping
$map = array ();
$map [ 'notes' ] = 'description' ;
$map [ 'total_amt' ] = 'amountin' ;
$map [ 'fees_amt' ] = 'fees' ;
# Loop through each remote item
while ( ! $rs -> EOF ) {
$msg .= sprintf ( '<br/>Processing : %s...' , $rs -> fields [ 'invoiceid' ]);
# Start a new transaction for the insert:
$db = & DB ();
$db -> StartTrans ();
$update = array ();
foreach ( $map as $a => $b )
$update [ $a ] = $rs -> fields [ $b ];
$update [ 'account_id' ] = $account [ $rs -> fields [ 'userid' ] * 1 ];
$update [ 'checkout_plugin_id' ] = $account [ $rs -> fields [ 'userid' ] * 1 ];
$update [ 'date_payment' ] = strtotime ( $rs -> fields [ 'date' ]);
$update [ 'date_orig' ] = strtotime ( $rs -> fields [ 'date' ]);
if ( $rs -> fields [ 'transid' ])
$update [ 'checkout_plugin_data' ] = serialize ( array ( 'transid' => $rs -> fields [ 'transid' ]));
# Get the fixed items in the map table.
if ( isset ( $pmap [ $ab_table ][ $rs -> fields [ 'gateway' ]])) {
foreach ( $pmap [ $ab_table ][ $rs -> fields [ 'gateway' ]] as $field => $value ) {
if ( isset ( $co [ $value ]))
$update [ $field ] = $co [ $value ];
else {
$update [ $field ] = sprintf ( 'NOMAP-%s' , $rs -> fields [ 'gateway' ]);
}
}
}
# Import the item
$db -> Execute ( $r = sqlInsert ( $db , $ab_table , $update ));
$id = $db -> Execute ( $q = sqlSelect ( $db , $ab_table , 'id' , $update , '' , '0,1' ));
# Insert the import record
$this -> import_transaction ( $this -> plugin , $VAR [ 'action' ], $ab_table , $id -> fields [ 'id' ], $remote_table , $rs -> fields [ 'id' ], $db );
$update = array ();
$update [ 'date_orig' ] = strtotime ( $rs -> fields [ 'date' ]);
$update [ 'payment_id' ] = $id -> fields [ 'id' ];
$update [ 'invoice_id' ] = $rs -> fields [ 'invoiceid' ];
$update [ 'alloc_amt' ] = $rs -> fields [ 'amountin' ];
$db -> Execute ( $r = sqlInsert ( $db , 'payment_item' , $update ));
$pi = $db -> Execute ( $q = sqlSelect ( $db , 'payment_item' , 'id' , $update , '' , '0,1' ));
$this -> import_transaction ( $this -> plugin , $VAR [ 'action' ], 'payment_item' , $pi -> fields [ 'id' ], '' , null , $db );
# Complete the transaction
$db -> CompleteTrans ();
$rs -> MoveNext ();
}
$C_debug -> alert ( $msg );
printf ( " <script type='text/javascript' language=javascript>setTimeout('document.location= \ '?_page=core:blank&offset=%s&action=%s&plugin=%s&do[]=import:do_action \ '', 1200);</script> " ,
$VAR [ 'offset' ] + $this -> select_limit , $VAR [ 'action' ], $VAR [ 'plugin' ]);
}
2009-08-03 04:10:16 +00:00
}
?>