155 lines
5.1 KiB
PHP
155 lines
5.1 KiB
PHP
<?php
|
|
|
|
/**
|
|
* AgileBill - Open Billing Software
|
|
*
|
|
* This body of work is free software; you can redistribute it and/or
|
|
* modify it under the terms of the Open AgileBill License
|
|
* License as published at http://www.agileco.com/agilebill/license1-4.txt
|
|
*
|
|
* For questions, help, comments, discussion, etc., please join the
|
|
* Agileco community forums at http://forum.agileco.com/
|
|
*
|
|
* @link http://www.agileco.com/
|
|
* @copyright 2004-2008 Agileco, LLC.
|
|
* @license http://www.agileco.com/agilebill/license1-4.txt
|
|
* @author Tony Landis <tony@agileco.com>
|
|
* @package AgileBill
|
|
* @version 1.4.93
|
|
*/
|
|
|
|
ob_start();
|
|
|
|
include_once('../../config.inc.php');
|
|
require_once(PATH_ADODB . 'adodb.inc.php');
|
|
require_once(PATH_CORE . 'database.inc.php');
|
|
require_once(PATH_CORE . 'setup.inc.php');
|
|
require_once(PATH_CORE . 'vars.inc.php');
|
|
require_once(PATH_CORE . 'translate.inc.php');
|
|
require_once(PATH_CORE . 'xml.inc.php');
|
|
include_once(PATH_INCLUDES . "xml-rpc/xml-rpc.php");
|
|
$C_debug = new CORE_debugger;
|
|
$C_setup = new CORE_setup;
|
|
$C_translate= new CORE_translate;
|
|
|
|
class AccountServer extends IXR_Server {
|
|
|
|
var $account_id;
|
|
var $account_parent_id=false;
|
|
var $username;
|
|
var $password;
|
|
var $login_error;
|
|
|
|
function AccountServer() {
|
|
$this->IXR_Server(array(
|
|
'account.details' => 'this:getAccountDetails'
|
|
));
|
|
}
|
|
|
|
function getAccountDetails($args) {
|
|
$this->username = $args[0];
|
|
$this->password = $args[1];
|
|
if(!$this->getAccountAuth()) return array('auth'=> false, 'reason'=>$this->login_error);
|
|
$return = array(
|
|
'auth' => true,
|
|
'acct' => $this->account_id,
|
|
'info' => $this->getAccountInfo(),
|
|
'skus' => $this->getAccountSKUs(),
|
|
'grps' => $this->getAccountGroups()
|
|
);
|
|
return $return;
|
|
}
|
|
|
|
function getAccountAuth() {
|
|
// select from account where username = $this_username and password = $this->password
|
|
include_once(PATH_CORE.'login.inc.php');
|
|
$login = new CORE_login_handler();
|
|
if(!$login->login(array("_username"=> $this->username, "_password"=> $this->password), true)) {
|
|
$this->login_error = $login->error;
|
|
return false;
|
|
} else {
|
|
$db=&DB();
|
|
$rs = $db->Execute(sqlSelect($db,"account","id","username = ::$this->username::"));
|
|
$this->account_id = $rs->fields['id'];
|
|
return true;
|
|
}
|
|
}
|
|
|
|
function getAccountInfo() {
|
|
$db=&DB();
|
|
$rs = $db->Execute(sqlSelect($db,"account","*","id = ::$this->account_id::"));
|
|
if(!empty($rs->fields['parent_id'])) $this->account_parent_id = $rs->fields['parent_id'];
|
|
$ret = Array(
|
|
'company' => $rs->fields['company'],
|
|
'first_name' => $rs->fields['first_name'],
|
|
'last_name' => $rs->fields['last_name'],
|
|
'address1' => $rs->fields['address1'],
|
|
'address2' => $rs->fields['address2'],
|
|
'city' => $rs->fields['city'],
|
|
'state' => $rs->fields['state'],
|
|
'zip' => $rs->fields['zip'],
|
|
'email' => $rs->fields['email'],
|
|
'acct_parent_id' => $rs->fields['parent_id']
|
|
);
|
|
$rs = $db->Execute(sqlSelect($db,"module","id","name=::account::"));
|
|
$account_module=$rs->fields['id'];
|
|
/* get custom fields*/
|
|
$sql = "SELECT DISTINCT A.value, B.name FROM ".AGILE_DB_PREFIX."static_var as B
|
|
LEFT JOIN ".AGILE_DB_PREFIX."static_var_record as A on (B.id=A.static_var_id AND A.record_id = ".$db->qstr($this->account_id).")
|
|
WHERE A.module_id=$account_module ";
|
|
$rs=$db->Execute($sql);
|
|
if($rs &&$rs->RecordCount()) {
|
|
while(!$rs->EOF) {
|
|
$fld = substr(strtolower(ereg_replace(" ",'_', $rs->fields['name'])),0,32);
|
|
@$ret["$fld"]=$rs->fields['value'];
|
|
$rs->MoveNext();
|
|
}
|
|
}
|
|
return $ret;
|
|
}
|
|
|
|
function getAccountSKUs() {
|
|
// select from invoice_item where id = $this->account_id
|
|
$db=&DB();
|
|
$p=AGILE_DB_PREFIX;
|
|
$s=DEFAULT_SITE;
|
|
$arr=false;
|
|
$q = "SELECT DISTINCT A.sku FROM {$p}invoice_item A
|
|
JOIN {$p}invoice B on ((B.account_id={$this->account_id} ";
|
|
if($this->account_parent_id)
|
|
$q.= " OR B.account_id = {$this->account_parent_id} ";
|
|
$q.= ") AND B.id=A.invoice_id AND B.site_id={$s} AND billing_status=1 AND process_status=1)
|
|
WHERE A.site_id = {$s}";
|
|
$rs = $db->Execute($q);
|
|
if($rs && $rs->RecordCount()) {
|
|
while(!$rs->EOF) {
|
|
$arr[] = $rs->fields['sku'];
|
|
$rs->MoveNext();
|
|
}
|
|
}
|
|
return $arr;
|
|
}
|
|
|
|
function getAccountGroups() {
|
|
// select from account_group where account_id = $this->account_id
|
|
$db=&DB();
|
|
$p=AGILE_DB_PREFIX;
|
|
$s=DEFAULT_SITE;
|
|
$arr=false;
|
|
$q = "SELECT DISTINCT group_id FROM {$p}account_group WHERE account_id={$this->account_id} AND site_id={$s} AND (active=1 OR active!='' or active!=0 or active is not null)";
|
|
$rs = $db->Execute($q);
|
|
if($rs && $rs->RecordCount()) {
|
|
while(!$rs->EOF) {
|
|
$arr[] = $rs->fields['group_id'];
|
|
$rs->MoveNext();
|
|
}
|
|
}
|
|
return $arr;
|
|
}
|
|
|
|
}
|
|
$server = new AccountServer();
|
|
|
|
ob_end_flush();
|
|
|
|
?>
|