Initial Commit of AgileBill Open Source
This commit is contained in:
155
modules/account/account_xmlrpc.php
Normal file
155
modules/account/account_xmlrpc.php
Normal file
@@ -0,0 +1,155 @@
|
||||
<?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();
|
||||
|
||||
?>
|
Reference in New Issue
Block a user