vtigerossez/soap/wordplugin.php

432 lines
16 KiB
PHP
Raw Permalink Normal View History

2013-01-30 22:15:41 -05:00
<?php
/*********************************************************************************
** The contents of this file are subject to the vtiger CRM Public License Version 1.0
* ("License"); You may not use this file except in compliance with the License
* The Original Code is: vtiger CRM Open Source
* The Initial Developer of the Original Code is vtiger.
* Portions created by vtiger are Copyright (C) vtiger.
* All Rights Reserved.
*
********************************************************************************/
require_once("config.php");
require_once('include/logging.php');
require_once('include/nusoap/nusoap.php');
require_once('include/database/PearDatabase.php');
$log = &LoggerManager::getLogger('wordplugin');
error_reporting(0);
$NAMESPACE = 'http://www.vtiger.com/products/crm';
$server = new soap_server;
$accessDenied = "You are not permitted to perform this action";
$server->configureWSDL('vtigersoap');
$server->wsdl->addComplexType(
'contact_column_detail',
'complexType',
'array',
'',
array(
'email_address' => array('name'=>'email_address','type'=>'xsd:string'),
'first_name' => array('name'=>'first_name','type'=>'xsd:string'),
'last_name' => array('name'=>'last_name','type'=>'xsd:string'),
'primary_address_city' => array('name'=>'primary_address_city','type'=>'xsd:string'),
'account_name' => array('name'=>'account_name','type'=>'xsd:string'),
'id' => array('name'=>'id','type'=>'xsd:string'),
'salutation' => array('name'=>'salutation','type'=>'xsd:string'),
'title'=> array('name'=>'title','type'=>'xsd:string'),
'phone_mobile'=> array('name'=>'phone_mobile','type'=>'xsd:string'),
'reports_to'=> array('name'=>'reports_to','type'=>'xsd:string'),
'primary_address_city'=> array('name'=>'primary_address_city','type'=>'xsd:string'),
'primary_address_street'=> array('name'=>'primary_address_street','type'=>'xsd:string'),
'primary_address_state'=> array('name'=>'primary_address_state','type'=>'xsd:string'),
'primary_address_postalcode'=> array('name'=>'primary_address_postalcode','type'=>'xsd:string'),
'primary_address_country'=> array('name'=>'primary_address_country','type'=>'xsd:string'),
'alt_address_city'=> array('name'=>'alt_address_city','type'=>'xsd:string'),
'alt_address_street'=> array('name'=>'alt_address_street','type'=>'xsd:string'),
'alt_address_state'=> array('name'=>'alt_address_state','type'=>'xsd:string'),
'alt_address_postalcode'=> array('name'=>'alt_address_postalcode','type'=>'xsd:string'),
'alt_address_country'=> array('name'=>'alt_address_country','type'=>'xsd:string'),
)
);
$server->wsdl->addComplexType(
'account_column_detail',
'complexType',
'array',
'',
array(
'accountid' => array('name'=>'accountid','type'=>'xsd:string'),
'accountname' => array('name'=>'accountname','type'=>'xsd:string'),
'parentid' => array('name'=>'parentid','type'=>'xsd:string'),
'account_type' => array('name'=>'account_type','type'=>'xsd:string'),
'industry' => array('name'=>'industry','type'=>'xsd:string'),
'annualrevenue' => array('name'=>'annualrevenue','type'=>'xsd:string'),
'rating'=> array('name'=>'rating','type'=>'xsd:string'),
'ownership' => array('name'=>'ownership','type'=>'xsd:string'),
'siccode' => array('name'=>'siccode','type'=>'xsd:string'),
'tickersymbol' => array('name'=>'tickersymbol','type'=>'xsd:string'),
'phone' => array('name'=>'phone','type'=>'xsd:string'),
'otherphone' => array('name'=>'otherphone','type'=>'xsd:string'),
'email1' => array('name'=>'email1','type'=>'xsd:string'),
'email2' => array('name'=>'email2','type'=>'xsd:string'),
'website' => array('name'=>'website','type'=>'xsd:string'),
'fax' => array('name'=>'fax','type'=>'xsd:string'),
//'employees' => array('name'=>'employees','type'=>'xsd:string'),
)
);
$server->wsdl->addComplexType(
'lead_column_detail',
'complexType',
'array',
'',
array(
'id' => array('name'=>'id','type'=>'xsd:string'),
'date_entered' => array('name'=>'date_entered','type'=>'xsd:string'),
'date_modified' => array('name'=>'date_modified','type'=>'xsd:string'),
'modified_user_id' => array('name'=>'modified_user_id','type'=>'xsd:string'),
'assigned_user_id' => array('name'=>'assigned_user_id','type'=>'xsd:string'),
'salutation' => array('name'=>'salutation','type'=>'xsd:string'),
'first_name' => array('name'=>'first_name','type'=>'xsd:string'),
'last_name' => array('name'=>'last_name','type'=>'xsd:string'),
'company' => array('name'=>'company','type'=>'xsd:string'),
'designation' => array('name'=>'designation','type'=>'xsd:string'),
'lead_source' => array('name'=>'lead_source','type'=>'xsd:string'),
'industry' => array('name'=>'industry','type'=>'xsd:string'),
'annual_revenue' => array('name'=>'annual_revenue','type'=>'xsd:string'),
'license_key' => array('name'=>'license_key','type'=>'xsd:string'),
'phone' => array('name'=>'phone','type'=>'xsd:string'),
'mobile' => array('name'=>'mobile','type'=>'xsd:string'),
'fax' => array('name'=>'fax','type'=>'xsd:string'),
'email' => array('name'=>'email','type'=>'xsd:string'),
'secondaryemail' => array('name'=>'secondaryemail','type'=>'xsd:string'),
'website' => array('name'=>'website','type'=>'xsd:string'),
'lead_status' => array('name'=>'lead_status','type'=>'xsd:string'),
'rating' => array('name'=>'rating','type'=>'xsd:string'),
'employees' => array('name'=>'employees','type'=>'xsd:string'),
'address_street' => array('name'=>'address_street','type'=>'xsd:string'),
'address_city' => array('name'=>'address_city','type'=>'xsd:string'),
'address_state' => array('name'=>'address_state','type'=>'xsd:string'),
'address_postalcode' => array('name'=>'address_postalcode','type'=>'xsd:string'),
'address_country' => array('name'=>'address_country','type'=>'xsd:string'),
'description' => array('name'=>'description','type'=>'xsd:string'),
'deleted' => array('name'=>'deleted','type'=>'xsd:string'),
'converted' => array('name'=>'converted','type'=>'xsd:string'),
)
);
$server->wsdl->addComplexType(
'user_column_detail',
'complexType',
'array',
'',
array(
'firstname' => array('name'=>'firstname','type'=>'xsd:string'),
'lastname' => array('name'=>'lastname','type'=>'xsd:string'),
'username' => array('name'=>'username','type'=>'xsd:string'),
'secondaryemail' => array('name'=>'secondaryemail','type'=>'xsd:string'),
'title' => array('name'=>'title','type'=>'xsd:string'),
'workphone' => array('name'=>'workphone','type'=>'xsd:string'),
'department' => array('name'=>'department','type'=>'xsd:string'),
'mobilephone' => array('name'=>'mobilephone','type'=>'xsd:string'),
'otherphone'=> array('name'=>'otherphone','type'=>'xsd:string'),
'fax' => array('name'=>'fax','type'=>'xsd:string'),
'email' => array('name'=>'email','type'=>'xsd:string'),
'homephone' => array('name'=>'homephone','type'=>'xsd:string'),
'otheremail' => array('name'=>'otheremail','type'=>'xsd:string'),
'street' => array('name'=>'street','type'=>'xsd:string'),
'city' => array('name'=>'city','type'=>'xsd:string'),
'state' => array('name'=>'state','type'=>'xsd:string'),
'code' => array('name'=>'code','type'=>'xsd:string'),
'country' => array('name'=>'country','type'=>'xsd:string'),
)
);
$server->wsdl->addComplexType(
'tickets_list_array',
'complexType',
'array',
'',
array(
'ticketid' => array('name'=>'ticketid','type'=>'xsd:string'),
'title' => array('name'=>'title','type'=>'xsd:string'),
'groupname' => array('name'=>'groupname','type'=>'xsd:string'),
'firstname' => array('name'=>'firstname','type'=>'xsd:string'),
'lastname' => array('name'=>'lastname','type'=>'xsd:string'),
'parent_id' => array('name'=>'parent_id','type'=>'xsd:string'),
'productid' => array('name'=>'productid','type'=>'xsd:string'),
'productname' => array('name'=>'productname','type'=>'xsd:string'),
'priority' => array('name'=>'priority','type'=>'xsd:string'),
'severity' => array('name'=>'severity','type'=>'xsd:string'),
'status' => array('name'=>'status','type'=>'xsd:string'),
'category' => array('name'=>'category','type'=>'xsd:string'),
'description' => array('name'=>'description','type'=>'xsd:string'),
'solution' => array('name'=>'solution','type'=>'xsd:string'),
'createdtime' => array('name'=>'createdtime','type'=>'xsd:string'),
'modifiedtime' => array('name'=>'modifiedtime','type'=>'xsd:string'),
)
);
$server->register(
'get_contacts_columns',
array('user_name'=>'xsd:string','session'=>'xsd:string'),
array('return'=>'tns:contact_column_detail'),
$NAMESPACE);
$server->register(
'get_accounts_columns',
array('user_name'=>'xsd:string','session'=>'xsd:string'),
array('return'=>'tns:account_column_detail'),
$NAMESPACE);
$server->register(
'get_leads_columns',
array('user_name'=>'xsd:string','session'=>'xsd:string'),
array('return'=>'tns:lead_column_detail'),
$NAMESPACE);
$server->register(
'get_user_columns',
array('user_name'=>'xsd:string','session'=>'xsd:string'),
array('return'=>'tns:user_column_detail'),
$NAMESPACE);
$server->register(
'get_tickets_columns',
array('user_name'=>'xsd:string','session'=>'xsd:string'),
array('return'=>'tns:tickets_list_array'),
$NAMESPACE);
$server->register(
'create_session',
array('user_name'=>'xsd:string','password'=>'xsd:string','version'=>'xsd:string'),
array('return'=>'xsd:string','session'=>'xsd:string'),
$NAMESPACE);
$server->register(
'end_session',
array('user_name'=>'xsd:string'),
array('return'=>'xsd:string'),
$NAMESPACE);
function get_tickets_columns($user_name, $session)
{
if(!validateSession($user_name,$session))
return null;
global $current_user,$log;
require_once("modules/Users/Users.php");
$seed_user=new Users();
$user_id=$seed_user->retrieve_user_id($user_name);
$current_user=$seed_user;
$current_user->retrieve_entity_info($user_id, 'Users');
if(isPermitted("HelpDesk","index") == "yes")
{
require_once('modules/HelpDesk/HelpDesk.php');
$helpdesk = new HelpDesk();
$log->debug($helpdesk->getColumnNames_Hd());
return $helpdesk->getColumnNames_Hd();
}
else
{
$return_array = array();
return $return_array;
}
}
function get_contacts_columns($user_name, $session)
{
if(!validateSession($user_name,$session))
return null;
global $current_user,$log;
require_once("modules/Users/Users.php");
$seed_user=new Users();
$user_id=$seed_user->retrieve_user_id($user_name);
$current_user = $seed_user;
$current_user->retrieve_entity_info($user_id, 'Users');
if(isPermitted("Contacts","index") == "yes")
{
require_once('modules/Contacts/Contacts.php');
$contact = new Contacts();
$log->debug($contact->getColumnNames());
return $contact->getColumnNames();
}
else
{
$return_array = array();
return $return_array;
}
}
function get_accounts_columns($user_name, $session)
{
if(!validateSession($user_name,$session))
return null;
global $current_user,$log;
require_once("modules/Users/Users.php");
$seed_user=new Users();
$user_id=$seed_user->retrieve_user_id($user_name);
$current_user=$seed_user;
$current_user->retrieve_entity_info($user_id, 'Users');
if(isPermitted("Accounts","index") == "yes")
{
require_once('modules/Accounts/Accounts.php');
$account = new Accounts();
$log->debug($account->getColumnNames_Acnt());
return $account->getColumnNames_Acnt();
}
else
{
$return_array = array();
return $return_array;
}
}
function get_leads_columns($user_name, $session)
{
if(!validateSession($user_name,$session))
return null;
global $current_user,$log;
require_once("modules/Users/Users.php");
$seed_user=new Users();
$user_id=$seed_user->retrieve_user_id($user_name);
$current_user=$seed_user;
$current_user->retrieve_entity_info($user_id, 'Users');
if(isPermitted("Leads","index") == "yes")
{
require_once('modules/Leads/Leads.php');
$lead = new Leads();
$log->debug($lead->getColumnNames_Lead());
return $lead->getColumnNames_Lead();
}
else
{
$return_array = array();
return $return_array;
}
}
function get_user_columns($user_name, $session)
{
if(!validateSession($user_name,$session))
return null;
global $current_user;
require_once('modules/Users/Users.php');
$seed_user=new Users();
$user_id=$seed_user->retrieve_user_id($user_name);
$current_user=$seed_user;
$current_user->retrieve_entity_info($user_id, 'Users');
$user = new Users();
return $user->getColumnNames_User();
}
function create_session($user_name, $password,$version)
{
global $log,$adb;
require_once('modules/Users/Users.php');
include('vtigerversion.php');
/* Make 5.0.4 plugins compatible with 5.1.0 */
if(version_compare($version,'5.0.4', '>=') === 1) {
return array("VERSION",'00');
}
$return_access = array("FALSES",'00');
$objuser = new Users();
if($password != "")
{
$objuser->column_fields['user_name'] = $user_name;
$objuser->load_user($password);
if($objuser->is_authenticated())
{
$userid = $objuser->retrieve_user_id($user_name);
$sessionid = makeRandomPassword();
unsetServerSessionId($userid);
$sql="insert into vtiger_soapservice values(?,?,?)";
$result = $adb->pquery($sql, array($userid,'Office',$sessionid));
$return_access = array("TRUE",$sessionid);
}else
{
$return_access = array("FALSE",'00');
}
}else
{
//$server->setError("Invalid username and/or password");
$return_access = array("LOGIN",'00');
}
$objuser = $objuser;
return $return_access;
}
function end_session($user_name)
{
return "Success";
}
function unsetServerSessionId($id)
{
global $adb;
$adb->println("Inside the function unsetServerSessionId");
$id = (int) $id;
$adb->query("delete from vtiger_soapservice where type='Office' and id=$id");
return;
}
function validateSession($username, $sessionid)
{
global $adb,$current_user;
$adb->println("Inside function validateSession($username, $sessionid)");
require_once("modules/Users/Users.php");
$seed_user = new Users();
$id = $seed_user->retrieve_user_id($username);
$server_sessionid = getServerSessionId($id);
$adb->println("Checking Server session id and customer input session id ==> $server_sessionid == $sessionid");
if($server_sessionid == $sessionid)
{
$adb->println("Session id match. Authenticated to do the current operation.");
return true;
}
else
{
$adb->println("Session id does not match. Not authenticated to do the current operation.");
return false;
}
}
function getServerSessionId($id)
{
global $adb;
$adb->println("Inside the function getServerSessionId($id)");
//To avoid SQL injection we are type casting as well as bound the id variable. In each and every function we will call this function
$id = (int) $id;
$query = "select * from vtiger_soapservice where type='Office' and id={$id}";
$sessionid = $adb->query_result($adb->query($query),0,'sessionid');
return $sessionid;
}
/* Begin the HTTP listener service and exit. */
if (!isset($HTTP_RAW_POST_DATA)){
$HTTP_RAW_POST_DATA = file_get_contents('php://input');
}
$server->service($HTTP_RAW_POST_DATA);
exit();
?>