This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
khosb/modules/account/account_xmlrpc.php
2008-11-26 14:50:40 -08:00

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();
?>